|
|
@@ -275,6 +275,10 @@ export default class GameData {
|
|
|
getGeneralByID(id): GeneralVO {
|
|
|
return this.general_data[id];
|
|
|
}
|
|
|
+ getGeneralByIDInPack(id): GeneralVO {
|
|
|
+
|
|
|
+ return this.general_data[id];
|
|
|
+ }
|
|
|
|
|
|
getSkillByID(id): SkillVO {
|
|
|
return this.skill_data[id];
|
|
|
@@ -372,7 +376,7 @@ export default class GameData {
|
|
|
this.player.max_mission = data.mission_arrive;
|
|
|
this.player.current_mission = data.mission_arrive;
|
|
|
this.player.generals = [];
|
|
|
- this.player.generals_bag = [];
|
|
|
+ this.player.generals_bag = new Map<number,GeneralVO>();
|
|
|
|
|
|
this.updateBarrack(data.barrack);
|
|
|
|
|
|
@@ -380,42 +384,12 @@ export default class GameData {
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
let brr = arr[i].split(",");
|
|
|
let id = parseInt(brr[GENERALPROP.ID - GENERALPROP.PROP_START]);
|
|
|
- let config = this.getGeneralByID(id);
|
|
|
- let vo = new GeneralVO();
|
|
|
- //配置
|
|
|
- vo.id = config.id;
|
|
|
- vo.camp = config.camp;
|
|
|
- vo.cri = config.cri;
|
|
|
- vo.attack = config.attack;
|
|
|
- vo.acc = config.acc;
|
|
|
- vo.attSpeed = config.attSpeed;
|
|
|
- vo.atk_res = config.atk_res;
|
|
|
- vo.hit_res = config.hit_res;
|
|
|
- vo.color = config.color;
|
|
|
- vo.commander = config.commander;
|
|
|
- vo.intStar = config.intStar;
|
|
|
- vo.name = config.name;
|
|
|
- vo.resource = config.resource;
|
|
|
- vo.skillID = config.skillID;
|
|
|
- vo.upRatio = config.upRatio;
|
|
|
- vo.fragment_compose = config.fragment_compose;
|
|
|
- //服务器数据
|
|
|
- vo.lv = parseInt(brr[GENERALPROP.LV - GENERALPROP.PROP_START]);
|
|
|
- vo.pos = parseInt(brr[GENERALPROP.POS - GENERALPROP.PROP_START]);
|
|
|
- vo.star = parseInt(brr[GENERALPROP.STAR - GENERALPROP.PROP_START]);
|
|
|
- vo.fragment = parseInt(brr[GENERALPROP.FRAGMENT - GENERALPROP.PROP_START]);
|
|
|
- if (brr[GENERALPROP.FRAGMENT - GENERALPROP.PROP_START] == '1') {
|
|
|
- vo.status == GENERALSTATUS.GET;
|
|
|
- }
|
|
|
- else{
|
|
|
- vo.status = GENERALSTATUS.HAVE;
|
|
|
- }
|
|
|
- vo.exp = parseInt(brr[GENERALPROP.EXP - GENERALPROP.PROP_START]);
|
|
|
+ let vo: GeneralVO = this.createGeneralVO(id, 0, brr);
|
|
|
|
|
|
if (vo.pos >= 0 && vo.pos < 5) {
|
|
|
this.player.generals[vo.pos] = vo;
|
|
|
}
|
|
|
- this.player.generals_bag.push(vo);
|
|
|
+ this.player.generals_bag[vo.id] = vo;
|
|
|
|
|
|
if (this.player.max_mission < this.player.mission_open[i]) {
|
|
|
this.general_data[i] = -1;
|
|
|
@@ -428,6 +402,86 @@ export default class GameData {
|
|
|
GameController.loadMain();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @param type 0服务器数据 1整卡(只有整卡可以无视兵营) 2碎片
|
|
|
+ * @param arg type=0表示服务器数据 type=2表示碎片数量
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+ private createGeneralVO(id, type: number, arg = null): GeneralVO {
|
|
|
+ let vo = new GeneralVO();
|
|
|
+ let config = this.getGeneralByID(id);
|
|
|
+ //配置
|
|
|
+ vo.id = config.id;
|
|
|
+ vo.camp = config.camp;
|
|
|
+ vo.cri = config.cri;
|
|
|
+ vo.attack = config.attack;
|
|
|
+ vo.acc = config.acc;
|
|
|
+ vo.attSpeed = config.attSpeed;
|
|
|
+ vo.atk_res = config.atk_res;
|
|
|
+ vo.hit_res = config.hit_res;
|
|
|
+ vo.color = config.color;
|
|
|
+ vo.commander = config.commander;
|
|
|
+ vo.intStar = config.intStar;
|
|
|
+ vo.name = config.name;
|
|
|
+ vo.resource = config.resource;
|
|
|
+ vo.skillID = config.skillID;
|
|
|
+ vo.upRatio = config.upRatio;
|
|
|
+ vo.fragment_compose = config.fragment_compose;
|
|
|
+ if (type == 0) {
|
|
|
+ //服务器数据
|
|
|
+ vo.lv = parseInt(arg[GENERALPROP.LV - GENERALPROP.PROP_START]);
|
|
|
+ vo.pos = parseInt(arg[GENERALPROP.POS - GENERALPROP.PROP_START]);
|
|
|
+ vo.star = parseInt(arg[GENERALPROP.STAR - GENERALPROP.PROP_START]);
|
|
|
+ vo.fragment = parseInt(arg[GENERALPROP.FRAGMENT - GENERALPROP.PROP_START]);
|
|
|
+ if (arg[GENERALPROP.FRAGMENT - GENERALPROP.PROP_START] == '1') {
|
|
|
+ vo.status == GENERALSTATUS.GET;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ vo.status = this.updateGeneralStatus(vo);
|
|
|
+ }
|
|
|
+ vo.exp = parseInt(arg[GENERALPROP.EXP - GENERALPROP.PROP_START]);
|
|
|
+ }
|
|
|
+ else if (type == 1) {
|
|
|
+ vo.lv = 1;
|
|
|
+ vo.pos = -1;
|
|
|
+ vo.star = vo.intStar;
|
|
|
+ vo.fragment = 0;
|
|
|
+ vo.status = GENERALSTATUS.GET;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ vo.lv = 1;
|
|
|
+ vo.pos = -1;
|
|
|
+ vo.star = vo.intStar;
|
|
|
+ vo.fragment = arg;
|
|
|
+ vo.status = this.updateGeneralStatus(vo);
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+ private updateGeneralsStatus() {
|
|
|
+ for (let i in this.player.generals_bag) {
|
|
|
+ let vo = this.player.generals_bag[i];
|
|
|
+ vo.status = this.updateGeneralStatus(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private updateGeneralStatus(vo: GeneralVO): number {
|
|
|
+ if (vo.status == GENERALSTATUS.GET) {
|
|
|
+ return GENERALSTATUS.GET;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (this.player.open_generals_inbarracks.indexOf(vo.id) != -1) {
|
|
|
+ return GENERALSTATUS.HAVE;
|
|
|
+ }
|
|
|
+ else if (this.player.nextgenerals_inbarracks.indexOf(vo.id) != -1) {
|
|
|
+ return GENERALSTATUS.UNLOCK;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return GENERALSTATUS.LOCK;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private initScheduler() {
|
|
|
let self = this;
|
|
|
let count = 0;
|
|
|
@@ -460,6 +514,7 @@ export default class GameData {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ this.updateGeneralsStatus();
|
|
|
}
|
|
|
|
|
|
/** 更新武将阵位 */
|
|
|
@@ -467,8 +522,7 @@ export default class GameData {
|
|
|
const count = arr_embattle.length;
|
|
|
if (!count) return;
|
|
|
//
|
|
|
- const bag_count = this.player.generals_bag.length;
|
|
|
- for (let i = 0; i < bag_count; i++) {
|
|
|
+ for(let i in this.player.generals_bag){
|
|
|
let a_general = this.player.generals_bag[i];
|
|
|
let index = arr_embattle.indexOf(a_general);
|
|
|
if (index >= 0) {
|
|
|
@@ -483,6 +537,12 @@ export default class GameData {
|
|
|
XXEvent.emit(XXConst.UpdateGenerals, this.player.generals);
|
|
|
console.table(this.player.generals)
|
|
|
}
|
|
|
+ addGeneral(id) {
|
|
|
+ let v = this.getGeneralByID(id);
|
|
|
+ if (v) {
|
|
|
+ this.player.generals_bag[id] = this.createGeneralVO(id, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
// 更新武将属性
|
|
|
updateGeneral(arr_embattle: Array<GeneralVO> = []) {
|
|
|
const count = arr_embattle.length;
|