first commit

This commit is contained in:
ytc1012
2025-11-18 18:38:53 +08:00
commit bea9db4488
1582 changed files with 335346 additions and 0 deletions

View File

@@ -0,0 +1,353 @@
import { ServerConfig } from "../config/ServerConfig";
import LoginCommand from "../login/LoginCommand";
import { MapCityData } from "../map/MapCityProxy";
import MapCommand from "../map/MapCommand";
import { NetManager } from "../network/socket/NetManager";
import ArmyProxy, { ArmyCmd, ArmyData } from "./ArmyProxy";
import GeneralCommand from "./GeneralCommand";
import { GenaralLevelConfig, GeneralConfig, GeneralData } from "./GeneralProxy";
import { EventMgr } from "../utils/EventMgr";
export default class ArmyCommand {
//单例
protected static _instance: ArmyCommand;
public static getInstance(): ArmyCommand {
if (this._instance == null) {
this._instance = new ArmyCommand();
}
return this._instance;
}
public static destory(): boolean {
if (this._instance) {
this._instance.onDestory();
this._instance = null;
return true;
}
return false;
}
//数据model
protected _proxy: ArmyProxy = new ArmyProxy();
constructor() {
EventMgr.on(ServerConfig.army_myList, this.onQryArmyList, this);
EventMgr.on(ServerConfig.army_myOne, this.onQryArmyOne, this);
EventMgr.on(ServerConfig.army_dispose, this.onGeneralDispose, this);
EventMgr.on(ServerConfig.army_conscript, this.onGeneralConscript, this);
EventMgr.on(ServerConfig.army_assign, this.onGeneralAssignArmy, this);
EventMgr.on(ServerConfig.army_push, this.onGeneralArmyStatePush, this);
EventMgr.on(ServerConfig.nationMap_scanBlock, this.onNationMapScanBlock, this);
//定时检测自己的军队是否有武将已经征兵完,如果是请求刷新
setInterval(() => {
let myCity: MapCityData = MapCommand.getInstance().cityProxy.getMyMainCity();
if (myCity != null){
let armyList: ArmyData[] = this.proxy.getArmyList(myCity.cityId);
if (armyList == null){
return
}
for (let i: number = 0; i < armyList.length; i++) {
var army = armyList[i];
if (army != null && army.isGenConEnd()){
console.log("有武将征兵完了");
this.qryArmyOne(army.cityId, army.order);
}
}
}
}, 1000);
}
public onDestory(): void {
EventMgr.targetOff(this);
}
public clearData(): void {
this._proxy.clearData();
}
public get proxy(): ArmyProxy {
return this._proxy;
}
/**军队列表回调*/
protected onQryArmyList(data: any, otherData: any): void {
console.log("onQryArmyList", data);
if (data.code == 0) {
let armyDatas: ArmyData[] = this._proxy.updateArmys(data.msg.cityId, data.msg.armys);
EventMgr.emit("update_army_list", armyDatas);
}
}
protected onQryArmyOne(data: any, otherData: any): void {
console.log("onQryArmyOne", data);
if (data.code == 0) {
let armyData = this._proxy.updateArmy(data.msg.army.cityId, data.msg.army);
let armyDatas: ArmyData[] = this._proxy.getArmyList(data.msg.army.cityId);
EventMgr.emit("update_army_list", armyDatas);
EventMgr.emit("update_army", armyData);
}
}
/**配置将领回调*/
protected onGeneralDispose(data: any, otherData: any): void {
console.log("onGeneralDispose", data);
if (data.code == 0) {
let armyData: ArmyData = this._proxy.updateArmy(data.msg.army.cityId, data.msg.army);
console.log("armyData", armyData);
EventMgr.emit("update_army", armyData);
}
}
/**征兵回调*/
protected onGeneralConscript(data: any, otherData: any): void {
console.log("onGeneralConscript", data);
if (data.code == 0) {
LoginCommand.getInstance().proxy.saveEnterData(data.msg);
EventMgr.emit("upate_my_roleRes");
let armyData: ArmyData = this._proxy.updateArmy(data.msg.army.cityId, data.msg.army);
EventMgr.emit("update_army", armyData);
EventMgr.emit("conscript_army_success");
}
}
/**出征回调*/
protected onGeneralAssignArmy(data: any, otherData: any): void {
console.log("onGeneralAssignArmy", data);
if (data.code == 0) {
let armyData: ArmyData = this._proxy.updateArmy(data.msg.army.cityId, data.msg.army);
EventMgr.emit("update_army", armyData);
EventMgr.emit("update_army_assign");
}
}
/**军队状态变更*/
protected onGeneralArmyStatePush(data: any): void {
console.log("onGeneralArmyState", data);
if (data.code == 0) {
let armyData: ArmyData = this._proxy.updateArmy(data.msg.cityId, data.msg);
EventMgr.emit("update_army", armyData);
}
}
protected onNationMapScanBlock(data: any): void {
if (data.code == 0) {
for (let i: number = 0; i < data.msg.armys.length; i++) {
let armyData: ArmyData = this._proxy.updateArmy(data.msg.armys[i].cityId, data.msg.armys[i]);
EventMgr.emit("update_army", armyData);
}
}
}
/**我的角色属性*/
public updateMyProperty(datas: any[]): void {
if (datas.length > 0) {
let armyDatas: ArmyData[] = this._proxy.updateArmys(datas[0].cityId, datas);
EventMgr.emit("update_army_list", armyDatas);
}
}
/**获取军队当前体力*/
public getArmyPhysicalPower(armyData: ArmyData): number {
let minPower: number = 100;
for (let i: number = 0; i < armyData.generals.length; i++) {
let general: GeneralData = GeneralCommand.getInstance().proxy.getMyGeneral(armyData.generals[i]);
if (general && minPower > general.physical_power) {
minPower = general.physical_power;
}
}
return minPower;
}
/**获取军队将领列表*/
public getArmyGenerals(armyData: ArmyData): GeneralData[] {
let list: GeneralData[] = [];
for (let i: number = 0; i < armyData.generals.length; i++) {
let general: GeneralData = GeneralCommand.getInstance().proxy.getMyGeneral(armyData.generals[i]);
list.push(general);
}
return list;
}
/**根据将领列表获取军队体力*/
public getArmyPhysicalPowerByGenerals(generals: GeneralData[]): number {
let minPower: number = 100;
for (let i: number = 0; i < generals.length; i++) {
if (generals[i] && minPower > generals[i].physical_power) {
minPower = generals[i].physical_power;
}
}
return minPower;
}
/**获取军队当前士兵数*/
public getArmyCurSoldierCnt(armyData: ArmyData): number {
let cnt: number = 0;
for (let i: number = 0; i < armyData.soldiers.length; i++) {
cnt += armyData.soldiers[i];
}
return cnt;
}
/**根据将领列表获取军队总士兵数*/
public getArmyTotalSoldierCntByGenerals(generals: GeneralData[]): number {
let cnt: number = 0;
let levelCfg: GenaralLevelConfig = null;
for (let i: number = 0; i < generals.length; i++) {
if (generals[i]) {
levelCfg = GeneralCommand.getInstance().proxy.getGeneralLevelCfg(generals[i].level);
cnt += levelCfg.soldiers;
}
}
return cnt;
}
/**获取速度**/
public getArmySpeed(generals: GeneralData[]): number {
let empyt: boolean = true;
let speed: number = 1000000;
let cfg: GeneralConfig = null;
for (let i: number = 0; i < generals.length; i++) {
if (generals[i]) {
cfg = GeneralCommand.getInstance().proxy.getGeneralCfg(generals[i].cfgId);
speed = Math.min(speed, GeneralData.getPrValue(cfg.speed, cfg.speed_grow*generals[i].level, generals[i].speed_added));
empyt = false;
}
}
if (empyt){
return 0;
}else{
return speed;
}
}
public getArmyDestroy(generals: GeneralData[]): number {
let empyt: boolean = true;
let destory: number = 0;
let cfg: GeneralConfig = null;
for (let i: number = 0; i < generals.length; i++) {
if (generals[i]) {
cfg = GeneralCommand.getInstance().proxy.getGeneralCfg(generals[i].cfgId);
destory += GeneralData.getPrValue(cfg.destroy, cfg.destroy_grow*generals[i].level, generals[i].destroy_added);
empyt = false;
}
}
if (empyt){
return 0;
}else{
return destory;
}
}
/**根据将领列表获取军队阵营*/
public getArmyCamp(generals: GeneralData[]): number {
let cnt: number = 0;
let lastCamp: number = 0;
for (let i: number = 0; i < generals.length; i++) {
if (generals[i] && (generals[i].config.camp == lastCamp || lastCamp == 0)) {
lastCamp = generals[i].config.camp;
cnt++;
} else {
break;
}
}
if (cnt >= 3) {
return lastCamp;
}
return 0;
}
public getArmyStateDes(armyData: ArmyData): string {
let stateStr: string = "";
if (armyData.state > 0) {
if (armyData.cmd == ArmyCmd.Return) {
stateStr = "[撤退]";
} else {
stateStr = "[行军]";
}
} else {
if (armyData.cmd == ArmyCmd.Idle) {
stateStr = "[待命]";
} else if (armyData.cmd == ArmyCmd.Reclaim) {
stateStr = "[屯田]";
} else if (armyData.cmd == ArmyCmd.Conscript) {
stateStr = "[征兵]";
} else if (armyData.cmd == ArmyCmd.Garrison) {
stateStr = "[驻守]";
}else {
stateStr = "[停留]";
}
}
return stateStr;
}
/**请求自己的军队信息*/
public qryArmyList(cityId: number): void {
let sendData: any = {
name: ServerConfig.army_myList,
msg: {
cityId: cityId
}
};
NetManager.getInstance().send(sendData);
}
public qryArmyOne(cityId: number, order: number): void {
let sendData: any = {
name: ServerConfig.army_myOne,
msg: {
cityId: cityId,
order:order,
}
};
NetManager.getInstance().send(sendData);
}
/**给军队配置将领*/
public generalDispose(cityId: number = 0, generalId: number = 0, order: number = 0, position: number = 0, otherData: any): void {
let sendData: any = {
name: ServerConfig.army_dispose,
msg: {
cityId: cityId,
generalId: generalId,
order: order,
position: position,
}
};
NetManager.getInstance().send(sendData, otherData);
}
/**给军队征兵*/
public generalConscript(armyId: number = 0, cnts: number[] = [], otherData: any): void {
let sendData: any = {
name: ServerConfig.army_conscript,
msg: {
armyId: armyId,
cnts: cnts,
}
};
NetManager.getInstance().send(sendData, otherData);
}
/**出兵*/
public generalAssignArmy(armyId: number = 0, cmd: number = 0, x: number = 0, y: Number = 0, otherData: any = null): void {
let sendData: any = {
name: ServerConfig.army_assign,
msg: {
armyId: armyId,
cmd: cmd,
x: x,
y: y,
}
};
NetManager.getInstance().send(sendData, otherData);
}
}