|
|
@@ -4,7 +4,7 @@ import CheckpointRedBagModle from "../module/checkpointRedBag/CheckpointRedBagMo
|
|
|
import FightData from "../module/fight/FightData";
|
|
|
import TaskModel from "../module/task/TaskModel";
|
|
|
import turntableModel from "../module/turntable/turntableModel";
|
|
|
-import HttpCommand, { UpdatePlayerProps } from "../net/HttpCommand";
|
|
|
+import HttpCommand, { MsgAddGeneralExp, UpdatePlayerProps } from "../net/HttpCommand";
|
|
|
import AddItemResponse from "../net/msg/AddItemResponse";
|
|
|
import BaseMsg from "../net/msg/BaseResponse";
|
|
|
import GeneralProp from "../net/msg/GeneralProp";
|
|
|
@@ -852,6 +852,68 @@ export default class GameData {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ getExpUpGeneral() {
|
|
|
+ //保护等级 INT[(上阵最大等级-兵营等级)/3+兵营等级],向下取整
|
|
|
+ let barracklv = this.player.getProp(PLAYERPROP.BARRACK);
|
|
|
+ let protectLv = Math.floor((this.getGeneralLvMax() - barracklv) / 3 + barracklv);
|
|
|
+ //选择武将
|
|
|
+ let g = this.getAddExpGeneral(protectLv);
|
|
|
+ if (g == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ //计算增加经验
|
|
|
+ let exp = 1 / Math.pow(2, g.lv - barracklv) * 100;
|
|
|
+ let lv = g.lv;
|
|
|
+ //未升级 直接加
|
|
|
+ if (g.exp + exp < 100) {
|
|
|
+ exp = g.exp + exp;
|
|
|
+ }
|
|
|
+ else {//升级溢出部分 /2加上
|
|
|
+ exp = (g.exp + exp - 100);
|
|
|
+ lv = g.lv + 1;
|
|
|
+ }
|
|
|
+ return { gui: g.id, exp: exp, lv: lv } as MsgAddGeneralExp;
|
|
|
+ }
|
|
|
+ private getGeneralLvMax() {
|
|
|
+ let lv = 0;
|
|
|
+ for (let i = 0; i < this.player.generals.length; i++) {
|
|
|
+ let ggg = this.player.generals[i];
|
|
|
+ if (ggg == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ let g = this.player.generals_bag[ggg.id];
|
|
|
+ if (g && g && g.lv > lv) {
|
|
|
+ lv = g.lv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return lv;
|
|
|
+ }
|
|
|
+ private getAddExpGeneral(protectlv: number): GeneralVO {
|
|
|
+ let arr = [];
|
|
|
+ let brr = [];
|
|
|
+ for (let i = 0; i < this.player.generals.length; i++) {
|
|
|
+ let ggg = this.player.generals[i];
|
|
|
+ if (ggg == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ let g = this.player.generals_bag[ggg.id];
|
|
|
+ if (g) {
|
|
|
+ if (g.lv < protectlv) {
|
|
|
+ arr.push(g);
|
|
|
+ }
|
|
|
+ brr.push(g);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (arr.length > 0) {
|
|
|
+ return arr[Math.floor(Math.random() * arr.length)];
|
|
|
+ }
|
|
|
+ if (brr.length > 0) {
|
|
|
+ return brr[Math.floor(Math.random() * brr.length)];
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
// 更新武将属性
|
|
|
updateGeneral(arr_embattle: Array<GeneralVO> = []) {
|
|
|
const count = arr_embattle.length;
|
|
|
@@ -892,8 +954,8 @@ export default class GameData {
|
|
|
*/
|
|
|
updateProp(type: PLAYERPROP, value, add: boolean = false, callback = null) {
|
|
|
//这两个后端无法处理,要求单独做接口
|
|
|
- if(type == PLAYERPROP.FOOD || type == PLAYERPROP.USESKILL_TIME){
|
|
|
- this.updatePropSpecial(type,value,add,callback);
|
|
|
+ if (type == PLAYERPROP.FOOD || type == PLAYERPROP.USESKILL_TIME) {
|
|
|
+ this.updatePropSpecial(type, value, add, callback);
|
|
|
return;
|
|
|
}
|
|
|
let prop = {} as UpdatePlayerProps;
|
|
|
@@ -903,12 +965,12 @@ export default class GameData {
|
|
|
this.updateProps([prop], callback);
|
|
|
}
|
|
|
|
|
|
- updatePropSpecial(type: PLAYERPROP, value, add: boolean = false, callback = null){
|
|
|
+ updatePropSpecial(type: PLAYERPROP, value, add: boolean = false, callback = null) {
|
|
|
//这两个后端无法处理,要求单独做接口
|
|
|
- if(type == PLAYERPROP.FOOD){
|
|
|
+ if (type == PLAYERPROP.FOOD) {
|
|
|
|
|
|
}
|
|
|
- else if(type == PLAYERPROP.USESKILL_TIME){
|
|
|
+ else if (type == PLAYERPROP.USESKILL_TIME) {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
@@ -924,7 +986,7 @@ export default class GameData {
|
|
|
let arr = data.data.playPropBackList;
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
let prop = arr[i];
|
|
|
- let v = typeof prop.propValue == 'string' ? parseInt(prop.propValue) : prop.propValue;
|
|
|
+ let v = typeof prop.propValue == 'string' ? parseInt(prop.propValue) : prop.propValue;
|
|
|
self.player.setProp(prop.propType, v);
|
|
|
}
|
|
|
|