| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import { _decorator, Component, Node, TERRAIN_SOUTH_INDEX, Button, Label, RichText, TERRAIN_HEIGHT_BASE, UITransform } from 'cc';
- import { BattleData } from '../battle/BattleData';
- import { Data } from '../core/data/Data';
- import { DataSystem } from '../core/data/DataSystem';
- import { Http, HttpResponseCode } from '../core/net/Http';
- import { OpenWindow } from '../core/ui/window/OpenWindow';
- import { WindowSystem } from '../core/ui/window/WindowSystem';
- import { ConfigData } from '../data/ConfigData';
- import { UserData } from '../data/UserData';
- import { UserHeroData } from '../hero/UserHeroData';
- import { Config } from '../launch/Config';
- import { MarshalData } from '../marshal/MarshalData';
- import { ReportThinking } from '../ReportThinking';
- const { ccclass, property, requireComponent } = _decorator;
- /**兵营UI */
- @ccclass('Barracks')
- @requireComponent(Http)
- export class Barracks extends Component {
- @property({ type: Label, tooltip: "当前兵营等级文本" }) nowLvLabel: Label;
- @property({ type: Label, tooltip: "下一次解锁新武将等级" }) nextUnLockGeneralLv: Label;
- @property({ type: Label, tooltip: "解锁新武将数量" }) numLabel: Label;
- @property({ type: Label, tooltip: "当前等级文本" }) lvLabel: Label;
- @property({ type: Label, tooltip: "下一级文本" }) nextLvLabel: Label;
- @property({ type: RichText, tooltip: "当前威望" }) prestigeLabel: RichText;
- @property({ type: Node, tooltip: "升级按钮节点" }) upCampLvNode: Node;
- @property({ type: Node, tooltip: "获取威望节点" }) getPrestigeNode: Node;
- @property({ type: Node, tooltip: "最大等级节点" }) MaxLvNode: Node;
- @property({ type: Node, tooltip: "等级信息" }) LvInfoNode: Node;
- @property({ type: Node, tooltip: "最大等级信息" }) MaxLvLabelNode: Node;
- @property({ type: Node, tooltip: "解锁武将信息节点" }) unlockGeneralNode: Node;
- @property({ type: Node, tooltip: "当前等级节点" }) nowLvNode: Node;
- @property({ type: OpenWindow, tooltip: "兵营升级窗口" }) barracksGradeUpWin: OpenWindow;
- @property({ type: OpenWindow, tooltip: "武将解锁窗口" }) unLockHeroWin: OpenWindow;
- private barrackConfig: any;
- private unLockGeneralLv: number = 0;
- private heroDatas = [];
- private showUnlock = false;
- private newUnLockHeros = [];
- onLoad() {
- this.barrackConfig = DataSystem.getData(ConfigData).get('barrack');
- this.setLvInfo();
- this.setPrestige();
- }
- update() {
- DataSystem.watch(UserData, 'campLv') && this.setLvInfo();
- DataSystem.watch(UserData, 'prestige') && this.setPrestige();
- }
- private setLvInfo() {
- let userData = DataSystem.getData(UserData);
- this.nowLvLabel.string = 'Lv.' + userData.campLv;
- this.lvLabel.string = 'Lv.' + userData.campLv;
- this.nextLvLabel.string = `Lv.${userData.campLv + 1}`;
- if (!this.barrackConfig[userData.campLv + 1]) {//已经最大等级
- this.LvInfoNode.active = this.upCampLvNode.active = this.getPrestigeNode.active = false;
- this.MaxLvLabelNode.active = this.MaxLvNode.active = true;
- } else {
- this.MaxLvLabelNode.active = this.MaxLvNode.active = false;
- }
- if (this.unLockGeneralLv <= userData.campLv) {
- let generalsStr = this.getUnLockGeneralLv();
- if (generalsStr) {
- this.heroDatas = generalsStr.split(",");
- this.nextUnLockGeneralLv.string = 'Lv.' + this.unLockGeneralLv;
- this.numLabel.string = this.heroDatas.length + '名';
- } else if (this.unlockGeneralNode.active) {
- this.unlockGeneralNode.active = false;
- this.nowLvNode.setPosition(160, 330, 0);
- }
- }
- }
- /**设置威望 */
- private setPrestige() {
- let userData = DataSystem.getData(UserData);
- if (this.MaxLvLabelNode.active) {
- this.prestigeLabel.string = `<b><color=#4D2C14><color=#0EC101>${userData.prestige}</c> /-</c></b>`;
- } else {
- let needPrestige = this.barrackConfig[userData.campLv].cost;
- if (userData.prestige >= needPrestige) {
- if (!this.upCampLvNode.active) {
- this.upCampLvNode.active = true;
- this.getPrestigeNode.active = false;
- }
- this.prestigeLabel.string = `<b><color=#4D2C14><color=#0EC101>${userData.prestige}</c> /${needPrestige} </c></b>`;
- } else {
- if (!this.getPrestigeNode.active) {
- this.upCampLvNode.active = false;
- this.getPrestigeNode.active = true;
- }
- this.prestigeLabel.string = `<b><color=#4D2C14><color=#D72800>${userData.prestige}</c> /${needPrestige} </c></b>`;
- }
- }
- }
- /*获取下次解锁神将数据 */
- private getUnLockGeneralLv() {
- let lv = DataSystem.getData(UserData).campLv;
- for (const key in this.barrackConfig) {
- if (Number(key) > lv && this.barrackConfig[key].unlockHero) {
- this.unLockGeneralLv = Number(key);
- return this.barrackConfig[key].unlockHero;
- }
- }
- return '';
- }
- /**升级 */
- private async upCampLv() {
- let result = await this.getComponent(Http).send("/api/user/upCamp");
- if (result && result.code == HttpResponseCode.Success) {
- let userData = DataSystem.getData(UserData);
- if (result.data.campLv == this.unLockGeneralLv) {
- this.newUnLockHeros = this.heroDatas.concat();
- this.showUnlock = true;
- }
- userData.campLv = result.data.campLv;
- ReportThinking.currency_decrease('prestige', userData.prestige, userData.prestige - result.data.prestige, result.data.prestige, 'upCamp');
- ReportThinking.base_levelup(userData.prestige - result.data.prestige);
- userData.prestige = result.data.prestige;
- this.barracksGradeUpWin.open({ nextLv: this.unLockGeneralLv });
- this.setHaveHerosData();
- this.setBattleHerosData();
- } else if (result && result.code == 111) {
- WindowSystem.showTips('威望不足');
- }
- }
- /**更新已获得武将等级*/
- private setHaveHerosData() {
- let userData = DataSystem.getData(UserData);
- let userHeroData = DataSystem.getData(UserHeroData);
- for (let i = 0; i < userHeroData.haveHeros.length; i++) {
- let hero = userHeroData.get(userHeroData.haveHeros[i])
- if (hero.server.lv < userData.campLv) {
- hero.server.lv = userData.campLv;
- userHeroData.set(userHeroData.haveHeros[i], hero);
- }
- }
- }
- /**更新战斗武将等级*/
- private setBattleHerosData() {
- let userData = DataSystem.getData(UserData);
- for (let i = 1; i < 6; i++) {
- let battleHeroData = DataSystem.getData(BattleData).heros.get(i);
- if (battleHeroData && battleHeroData.id) {
- if (battleHeroData.lv < userData.campLv) {
- battleHeroData.lv = userData.campLv;
- battleHeroData.lvProgress = 0;
- }
- }
- }
- }
- private onClose(closeCallback: () => void) {
- if (this.showUnlock) {
- this.unLockHeroWin.open({ heroDatas: this.newUnLockHeros });
- }
- closeCallback();
- }
- }
|