first commit
This commit is contained in:
185
assets/scripts/general/ArmyProxy.ts
Normal file
185
assets/scripts/general/ArmyProxy.ts
Normal file
@@ -0,0 +1,185 @@
|
||||
import DateUtil from "../utils/DateUtil";
|
||||
|
||||
/**军队命令*/
|
||||
export class ArmyCmd {
|
||||
static Idle: number = 0;//空闲
|
||||
static Attack: number = 1;//攻击
|
||||
static Garrison: number = 2;//驻军
|
||||
static Reclaim: number = 3;//屯田
|
||||
static Return: number = 4;//撤退
|
||||
static Conscript: number = 5;//征兵
|
||||
static Transfer: number = 6;//调动
|
||||
}
|
||||
|
||||
/**军队数据*/
|
||||
export class ArmyData {
|
||||
id: number = 0;
|
||||
cityId: number = 0;
|
||||
order: number = 0;
|
||||
generals: number[] = [];
|
||||
soldiers: number[] = [];
|
||||
conTimes: number[] = [];
|
||||
conCnts: number[] = [];
|
||||
cmd: number = 0;
|
||||
state: number = 0;
|
||||
fromX: number = 0;
|
||||
fromY: number = 0;
|
||||
toX: number = 0;
|
||||
toY: number = 0;
|
||||
startTime: number = 0;
|
||||
endTime: number = 0;
|
||||
x: number = 0;
|
||||
y: number = 0;
|
||||
|
||||
static createFromServer(serverData: any, armyData: ArmyData = null): ArmyData {
|
||||
let data: ArmyData = armyData;
|
||||
if (armyData == null) {
|
||||
data = new ArmyData();
|
||||
}
|
||||
data.id = serverData.id;
|
||||
data.cityId = serverData.cityId;
|
||||
data.order = serverData.order;
|
||||
data.generals = serverData.generals;
|
||||
data.soldiers = serverData.soldiers;
|
||||
|
||||
data.conTimes = serverData.con_times;
|
||||
data.conCnts = serverData.con_cnts;
|
||||
|
||||
data.state = serverData.state;
|
||||
data.cmd = serverData.cmd;
|
||||
if (data.cmd == ArmyCmd.Return) {
|
||||
//返回的时候 坐标是反的
|
||||
data.fromX = serverData.to_x;
|
||||
data.fromY = serverData.to_y;
|
||||
data.toX = serverData.from_x;
|
||||
data.toY = serverData.from_y;
|
||||
} else {
|
||||
data.fromX = serverData.from_x;
|
||||
data.fromY = serverData.from_y;
|
||||
data.toX = serverData.to_x;
|
||||
data.toY = serverData.to_y;
|
||||
}
|
||||
if (data.cmd == ArmyCmd.Idle || data.cmd == ArmyCmd.Conscript) {
|
||||
//代表是停留在城池中
|
||||
data.x = data.fromX;
|
||||
data.y = data.fromY;
|
||||
} else {
|
||||
data.x = data.toX;
|
||||
data.y = data.toY;
|
||||
}
|
||||
|
||||
data.startTime = serverData.start * 1000;
|
||||
data.endTime = serverData.end * 1000;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public isGenConEnd():boolean {
|
||||
for (let index = 0; index < this.conTimes.length; index++) {
|
||||
const conTime = this.conTimes[index];
|
||||
if (conTime == 0) {
|
||||
continue
|
||||
}
|
||||
if (DateUtil.isAfterServerTime(conTime*1000)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export default class ArmyProxy {
|
||||
protected _maxArmyCnt: number = 5;//一个城池最大军队数量
|
||||
//武将基础配置数据
|
||||
protected _armys: Map<number, ArmyData[]> = new Map<number, ArmyData[]>();
|
||||
|
||||
public clearData(): void {
|
||||
this._armys.clear();
|
||||
}
|
||||
|
||||
public getArmyList(cityId: number): ArmyData[] {
|
||||
if (this._armys.has(cityId) == false) {
|
||||
return null;
|
||||
}
|
||||
return this._armys.get(cityId);
|
||||
}
|
||||
|
||||
public updateArmys(cityId: number, datas: any[]): ArmyData[] {
|
||||
let list: ArmyData[] = this.getArmyList(cityId);
|
||||
if (list == null) {
|
||||
list = new Array(this._maxArmyCnt);
|
||||
this._armys.set(cityId, list);
|
||||
}
|
||||
for (var i = 0; i < datas.length; i++) {
|
||||
let armyData: ArmyData = ArmyData.createFromServer(datas[i]);
|
||||
list[armyData.order - 1] = armyData;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public updateArmy(cityId: number, data: any): ArmyData {
|
||||
let list: ArmyData[] = this.getArmyList(cityId);
|
||||
if (list == null) {
|
||||
list = new Array(this._maxArmyCnt);
|
||||
this._armys.set(cityId, list);
|
||||
}
|
||||
let armyData: ArmyData = list[data.order - 1];
|
||||
list[data.order - 1] = ArmyData.createFromServer(data, armyData);
|
||||
return list[data.order - 1];
|
||||
}
|
||||
|
||||
|
||||
public updateArmysNoCity(datas: any): ArmyData[] {
|
||||
let list: ArmyData[] = [];
|
||||
for(var i = 0; i < datas.length ;i++){
|
||||
let armyData: ArmyData = ArmyData.createFromServer(datas[i]);
|
||||
this.updateArmy(armyData.cityId,armyData);
|
||||
list.push(armyData)
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**根据id获取军队*/
|
||||
public getArmyById(id: number, cityId: number): ArmyData {
|
||||
let list: ArmyData[] = this.getArmyList(cityId);
|
||||
if (list) {
|
||||
for (let i: number = 0; i < list.length; i++) {
|
||||
if (list[i] && list[i].id == id) {
|
||||
return list[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**根据位置获取军队*/
|
||||
public getArmyByOrder(order: number, cityId: number): ArmyData {
|
||||
let list: ArmyData[] = this.getArmyList(cityId);
|
||||
console.log("getArmyByOrder", order, cityId, list);
|
||||
if (list) {
|
||||
return list[order - 1];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public getAllArmys(): ArmyData[] {
|
||||
let list:ArmyData[] = [];
|
||||
this._armys.forEach((datas:ArmyData[]) => {
|
||||
list = list.concat(datas);
|
||||
})
|
||||
return list;
|
||||
}
|
||||
|
||||
public getArmysByPos(x: number, y: number) {
|
||||
let list:ArmyData[] = [];
|
||||
this._armys.forEach((armys:ArmyData[]) => {
|
||||
armys.forEach(army => {
|
||||
if (army.fromX == x && army.fromY == y){
|
||||
list.push(army);
|
||||
}
|
||||
});
|
||||
})
|
||||
return list;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user