first commit
This commit is contained in:
353
assets/scripts/general/ArmyCommand.ts
Normal file
353
assets/scripts/general/ArmyCommand.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
11
assets/scripts/general/ArmyCommand.ts.meta
Normal file
11
assets/scripts/general/ArmyCommand.ts.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "a02fca78-a476-4f81-8f42-c990e2acb027",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"simulateGlobals": []
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
11
assets/scripts/general/ArmyProxy.ts.meta
Normal file
11
assets/scripts/general/ArmyProxy.ts.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "e294bf68-3877-4252-9b17-821521fdad8f",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"simulateGlobals": []
|
||||
}
|
||||
}
|
||||
234
assets/scripts/general/GeneralCommand.ts
Normal file
234
assets/scripts/general/GeneralCommand.ts
Normal file
@@ -0,0 +1,234 @@
|
||||
import { ServerConfig } from "../config/ServerConfig";
|
||||
import { NetManager } from "../network/socket/NetManager";
|
||||
import GeneralProxy from "./GeneralProxy";
|
||||
import { EventMgr } from "../utils/EventMgr";
|
||||
|
||||
export default class GeneralCommand {
|
||||
//单例
|
||||
protected static _instance: GeneralCommand;
|
||||
public static getInstance(): GeneralCommand {
|
||||
if (this._instance == null) {
|
||||
this._instance = new GeneralCommand();
|
||||
}
|
||||
return this._instance;
|
||||
}
|
||||
|
||||
public static destory(): boolean {
|
||||
if (this._instance) {
|
||||
this._instance.onDestory();
|
||||
this._instance = null;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//数据model
|
||||
protected _proxy: GeneralProxy = new GeneralProxy();
|
||||
|
||||
constructor() {
|
||||
EventMgr.on(ServerConfig.general_myGenerals, this.onMyGenerals, this);
|
||||
EventMgr.on(ServerConfig.general_push, this.onGeneralPush, this);
|
||||
EventMgr.on(ServerConfig.general_drawGeneral, this.onDrawGenerals, this);
|
||||
EventMgr.on(ServerConfig.general_composeGeneral, this.onComposeGeneral, this);
|
||||
EventMgr.on(ServerConfig.general_addPrGeneral, this.onAddPrGeneral, this);
|
||||
EventMgr.on(ServerConfig.general_convert, this.onGeneralConvert , this);
|
||||
EventMgr.on(ServerConfig.general_upSkill, this.onUpSkill, this);
|
||||
EventMgr.on(ServerConfig.general_downSkill, this.onDownSkill, this);
|
||||
EventMgr.on(ServerConfig.general_lvSkill, this.onLvSkill, this);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public onDestory(): void {
|
||||
EventMgr.targetOff(this);
|
||||
}
|
||||
|
||||
public clearData(): void {
|
||||
this._proxy.clearData();
|
||||
}
|
||||
|
||||
public get proxy(): GeneralProxy {
|
||||
return this._proxy;
|
||||
}
|
||||
|
||||
/**我的将领列表*/
|
||||
protected onMyGenerals(data: any): void {
|
||||
console.log("onMyGeneralsonMyGenerals ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.updateMyGenerals(data.msg.generals);
|
||||
EventMgr.emit("update_my_generals");
|
||||
}
|
||||
}
|
||||
|
||||
protected onGeneralPush(data: any): void {
|
||||
console.log("onGeneralPush ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.updateGeneral(data.msg);
|
||||
EventMgr.emit("update_general");
|
||||
}
|
||||
}
|
||||
|
||||
protected onDrawGenerals(data: any): void {
|
||||
console.log("onDrawGenerals ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.updateMyGenerals(data.msg.generals);
|
||||
EventMgr.emit("update_my_generals");
|
||||
EventMgr.emit("open_draw_result", data.msg.generals);
|
||||
}
|
||||
}
|
||||
|
||||
protected onComposeGeneral(data:any):void{
|
||||
console.log("onComposeGeneral ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.updateMyGenerals(data.msg.generals);
|
||||
EventMgr.emit("update_my_generals");
|
||||
EventMgr.emit("update_one_generals", data.msg.generals[data.msg.generals.length - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected onAddPrGeneral(data:any):void{
|
||||
console.log("onAddPrGeneral ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.updateGeneral(data.msg.general);
|
||||
EventMgr.emit("update_one_generals",data.msg.general);
|
||||
}
|
||||
}
|
||||
|
||||
protected onGeneralConvert(data:any):void{
|
||||
console.log("onGeneralConvert ", data);
|
||||
if (data.code == 0) {
|
||||
this._proxy.removeMyGenerals(data.msg.gIds);
|
||||
EventMgr.emit("general_convert", data.msg);
|
||||
}
|
||||
}
|
||||
|
||||
protected onUpSkill(data:any):void{
|
||||
console.log("onUpSkill ", data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected onDownSkill(data:any):void{
|
||||
console.log("onDownSkill ", data);
|
||||
|
||||
}
|
||||
|
||||
protected onLvSkill(data:any):void{
|
||||
console.log("onLvSkill ", data);
|
||||
}
|
||||
|
||||
|
||||
/**我的角色属性*/
|
||||
public updateMyProperty(datas: any[]): void {
|
||||
this._proxy.updateMyGenerals(datas);
|
||||
EventMgr.emit("update_my_generals");
|
||||
}
|
||||
|
||||
public qryMyGenerals(): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_myGenerals,
|
||||
msg: {
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 抽卡
|
||||
* @param drawTimes
|
||||
*/
|
||||
public drawGenerals(drawTimes:number = 1): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_drawGeneral,
|
||||
msg: {
|
||||
drawTimes:drawTimes
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param compId
|
||||
* @param gIds
|
||||
*/
|
||||
public composeGeneral(compId:number = 1,gIds:number[] = []): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_composeGeneral,
|
||||
msg: {
|
||||
compId:compId,
|
||||
gIds:gIds
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
|
||||
public addPrGeneral(compId:number = 1,force_add:number,strategy_add:number,defense_add:number,speed_add:number,destroy_add:number): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_addPrGeneral,
|
||||
msg: {
|
||||
compId:compId,
|
||||
forceAdd:force_add,
|
||||
strategyAdd:strategy_add,
|
||||
defenseAdd:defense_add,
|
||||
speedAdd:speed_add,
|
||||
destroyAdd:destroy_add
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
public convert(gIds:number[]): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_convert,
|
||||
msg: {
|
||||
gIds:gIds
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
public upSkill(gId:number, cfgId:number, pos:number): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_upSkill,
|
||||
msg: {
|
||||
gId:gId,
|
||||
cfgId:cfgId,
|
||||
pos:Number(pos)
|
||||
}
|
||||
};
|
||||
|
||||
console.log("send upSkill:", sendData);
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
public downSkill(gId:number, cfgId:number, pos:number): void {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_downSkill,
|
||||
msg: {
|
||||
gId:gId,
|
||||
cfgId:cfgId,
|
||||
pos:Number(pos)
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
|
||||
|
||||
public lvSkill(gId:number, pos:number) {
|
||||
let sendData: any = {
|
||||
name: ServerConfig.general_lvSkill,
|
||||
msg: {
|
||||
gId:gId,
|
||||
pos:Number(pos)
|
||||
}
|
||||
};
|
||||
NetManager.getInstance().send(sendData);
|
||||
}
|
||||
}
|
||||
11
assets/scripts/general/GeneralCommand.ts.meta
Normal file
11
assets/scripts/general/GeneralCommand.ts.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "c4f639d5-6166-491e-9150-f41d145c7395",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"simulateGlobals": []
|
||||
}
|
||||
}
|
||||
371
assets/scripts/general/GeneralProxy.ts
Normal file
371
assets/scripts/general/GeneralProxy.ts
Normal file
@@ -0,0 +1,371 @@
|
||||
|
||||
import { SpriteFrame } from "cc";
|
||||
|
||||
/**武将(配置)*/
|
||||
export class GeneralConfig {
|
||||
name: string = "";
|
||||
cfgId: number = 0;
|
||||
force: number = 0;
|
||||
strategy: number = 0;
|
||||
defense: number = 0;
|
||||
speed: number = 0;
|
||||
destroy: number = 0;
|
||||
cost: number = 0;
|
||||
|
||||
force_grow: number = 0;
|
||||
strategy_grow: number = 0;
|
||||
defense_grow: number = 0;
|
||||
speed_grow: number = 0;
|
||||
destroy_grow: number = 0;
|
||||
physical_power_limit: number = 0;
|
||||
cost_physical_power: number = 0;
|
||||
probability: number = 0;
|
||||
|
||||
star: number = 0;
|
||||
arms: number[] = [];
|
||||
camp: number = 0;
|
||||
}
|
||||
|
||||
/**武将等级配置*/
|
||||
export class GenaralLevelConfig {
|
||||
level: number = 0;
|
||||
exp: number = 0;
|
||||
soldiers: number = 0;
|
||||
}
|
||||
|
||||
/**武将阵营枚举*/
|
||||
export class GeneralCampType {
|
||||
static Han: number = 1;
|
||||
static Qun: number = 2;
|
||||
static Wei: number = 3;
|
||||
static Shu: number = 4;
|
||||
static Wu: number = 5;
|
||||
}
|
||||
|
||||
/**武将共有配置*/
|
||||
export class GeneralCommonConfig {
|
||||
physical_power_limit: number = 100;
|
||||
cost_physical_power: number = 10;
|
||||
recovery_physical_power: number = 10;
|
||||
reclamation_time: number = 3600;
|
||||
draw_general_cost: number = 0;
|
||||
}
|
||||
|
||||
export class gSkill {
|
||||
id: number = 0;
|
||||
lv: number = 0;
|
||||
cfgId: number = 0;
|
||||
}
|
||||
|
||||
/**武将数据*/
|
||||
export class GeneralData {
|
||||
id: number = 0;
|
||||
cfgId: number = 0;
|
||||
exp: number = 0;
|
||||
level: number = 0;
|
||||
physical_power: number = 0;
|
||||
order: number = 0;
|
||||
star_lv: number = 0;
|
||||
parentId: number = 0;
|
||||
state: number = 0;
|
||||
|
||||
hasPrPoint: number = 0;
|
||||
usePrPoint: number = 0;
|
||||
force_added: number = 0;
|
||||
strategy_added: number = 0;
|
||||
defense_added: number = 0;
|
||||
speed_added: number = 0;
|
||||
destroy_added: number = 0;
|
||||
config: GeneralConfig = new GeneralConfig();
|
||||
skills: gSkill[] = [];
|
||||
|
||||
|
||||
public static createFromServer(serverData: any, generalData: GeneralData = null, generalCfg: GeneralConfig): GeneralData {
|
||||
let data: GeneralData = generalData;
|
||||
if (data == null) {
|
||||
data = new GeneralData();
|
||||
}
|
||||
data.id = serverData.id;
|
||||
data.cfgId = serverData.cfgId;
|
||||
data.exp = serverData.exp;
|
||||
data.level = serverData.level;
|
||||
data.order = serverData.order;
|
||||
data.physical_power = serverData.physical_power;
|
||||
data.star_lv = serverData.star_lv;
|
||||
data.parentId = serverData.parentId;
|
||||
data.state = serverData.state;
|
||||
|
||||
data.hasPrPoint = serverData.hasPrPoint;
|
||||
data.usePrPoint = serverData.usePrPoint;
|
||||
data.force_added = serverData.force_added;
|
||||
data.strategy_added = serverData.strategy_added;
|
||||
data.defense_added = serverData.defense_added;
|
||||
data.speed_added = serverData.speed_added;
|
||||
data.destroy_added = serverData.destroy_added;
|
||||
data.config = generalCfg;
|
||||
data.skills = serverData.skills;
|
||||
|
||||
// console.log("createFromServer:", data);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public static getPrValue(pr: number = 0, group:number, add: number = 0): number {
|
||||
return (pr + group + add) / 100;
|
||||
}
|
||||
|
||||
public static getPrStr(pr: number = 0, add: number = 0, lv: number = 0, grow: number = 0): string {
|
||||
return (pr + add) / 100 + "+(" + lv * grow / 100 + ")";
|
||||
}
|
||||
}
|
||||
|
||||
export default class GeneralProxy {
|
||||
//武将基础配置数据
|
||||
protected _generalConfigs: Map<number, GeneralConfig> = new Map<number, GeneralConfig>();
|
||||
protected _levelConfigs: GenaralLevelConfig[] = [];
|
||||
protected _commonConfig: GeneralCommonConfig = new GeneralCommonConfig();
|
||||
protected _generalTexs: Map<number, SpriteFrame> = new Map<number, SpriteFrame>();
|
||||
protected _myGenerals: Map<number, GeneralData> = new Map<number, GeneralData>();
|
||||
|
||||
public clearData(): void {
|
||||
this._myGenerals.clear();
|
||||
}
|
||||
|
||||
public initGeneralConfig(cfgs: any[], bCost: any): void {
|
||||
let cfgData: any = null;
|
||||
let levelData: any = null;
|
||||
for (let i: number = 0; i < cfgs.length; i++) {
|
||||
console
|
||||
if (cfgs[i]._name == "general") {
|
||||
cfgData = cfgs[i].json.list;
|
||||
} else if (cfgs[i]._name == "general_basic") {
|
||||
levelData = cfgs[i].json.levels;
|
||||
}
|
||||
}
|
||||
|
||||
if (cfgData) {
|
||||
this._generalConfigs.clear();
|
||||
for (let i: number = 0; i < cfgData.length; i++) {
|
||||
var cfg: GeneralConfig = new GeneralConfig();
|
||||
cfg.cfgId = cfgData[i].cfgId;
|
||||
cfg.name = cfgData[i].name;
|
||||
cfg.force = cfgData[i].force;
|
||||
cfg.strategy = cfgData[i].strategy;
|
||||
cfg.defense = cfgData[i].defense;
|
||||
cfg.speed = cfgData[i].speed;
|
||||
cfg.destroy = cfgData[i].destroy;
|
||||
cfg.cost = cfgData[i].cost;
|
||||
|
||||
cfg.force_grow = cfgData[i].force_grow;
|
||||
cfg.strategy_grow = cfgData[i].strategy_grow;
|
||||
cfg.defense_grow = cfgData[i].defense_grow;
|
||||
cfg.speed_grow = cfgData[i].speed_grow;
|
||||
cfg.destroy_grow = cfgData[i].destroy_grow;
|
||||
cfg.physical_power_limit = bCost.general.physical_power_limit;
|
||||
cfg.cost_physical_power = bCost.general.cost_physical_power;
|
||||
|
||||
cfg.star = cfgData[i].star;
|
||||
cfg.arms = cfgData[i].arms;
|
||||
cfg.camp = cfgData[i].camp;
|
||||
this._generalConfigs.set(cfg.cfgId, cfg);
|
||||
}
|
||||
}
|
||||
|
||||
if (levelData) {
|
||||
this._levelConfigs.length = levelData.length;
|
||||
for (let i: number = 0; i < levelData.length; i++) {
|
||||
var levelCfg: GenaralLevelConfig = new GenaralLevelConfig();
|
||||
levelCfg.level = levelData[i].level;
|
||||
levelCfg.exp = levelData[i].exp;
|
||||
levelCfg.soldiers = levelData[i].soldiers;
|
||||
this._levelConfigs[levelCfg.level - 1] = levelCfg;
|
||||
}
|
||||
}
|
||||
|
||||
this._commonConfig.physical_power_limit = bCost.general.physical_power_limit;
|
||||
this._commonConfig.cost_physical_power = bCost.general.cost_physical_power;
|
||||
this._commonConfig.recovery_physical_power = bCost.general.recovery_physical_power;
|
||||
this._commonConfig.reclamation_time = bCost.general.reclamation_time;
|
||||
this._commonConfig.draw_general_cost = bCost.general.draw_general_cost;
|
||||
}
|
||||
|
||||
public initGeneralTex(texs: SpriteFrame[]): void {
|
||||
this._generalTexs.clear();
|
||||
for (let i: number = 0; i < texs.length; i++) {
|
||||
let id: number = Number(String(texs[i].name).split("_")[1]);
|
||||
this._generalTexs.set(id, texs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public updateMyGenerals(datas: any[]): void {
|
||||
for (var i = 0; i < datas.length; i++) {
|
||||
let data: GeneralData = GeneralData.createFromServer(datas[i], null, this._generalConfigs.get(datas[i].cfgId));
|
||||
this._myGenerals.set(data.id, data);
|
||||
}
|
||||
}
|
||||
|
||||
public updateGeneral(data: any) {
|
||||
if(data.state != 0){
|
||||
this._myGenerals.delete(data.id);
|
||||
}else{
|
||||
let ids: number[] = [];
|
||||
let general: GeneralData = GeneralData.createFromServer(data, this._myGenerals.get(data.id), this._generalConfigs.get(data.cfgId));
|
||||
this._myGenerals.set(general.id, general);
|
||||
ids.push(general.id);
|
||||
}
|
||||
}
|
||||
|
||||
public removeMyGenerals(ids: number[]) {
|
||||
ids.forEach(id => {
|
||||
this._myGenerals.delete(id);
|
||||
});
|
||||
}
|
||||
|
||||
/**武将配置*/
|
||||
public getGeneralCfg(cfgId: number): GeneralConfig {
|
||||
if (this._generalConfigs.has(cfgId)) {
|
||||
return this._generalConfigs.get(cfgId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public getGeneralAllCfg(): Map<number, GeneralConfig>{
|
||||
return this._generalConfigs
|
||||
}
|
||||
|
||||
/**武将等级配置*/
|
||||
public getGeneralLevelCfg(level: number): GenaralLevelConfig {
|
||||
if (level > 0 && level <= this._levelConfigs.length) {
|
||||
return this._levelConfigs[level - 1];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public getMaxLevel(): number {
|
||||
return this._levelConfigs.length;
|
||||
}
|
||||
|
||||
/**武将头像素材*/
|
||||
public getGeneralTex(cfgId: number): SpriteFrame {
|
||||
if (this._generalTexs.has(cfgId)) {
|
||||
return this._generalTexs.get(cfgId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public setGeneralTex(cfgId: number, frame: SpriteFrame) {
|
||||
this._generalTexs.set(cfgId, frame);
|
||||
}
|
||||
|
||||
/**武将相关公有配置*/
|
||||
public getCommonCfg(): GeneralCommonConfig {
|
||||
return this._commonConfig;
|
||||
}
|
||||
|
||||
|
||||
public getMyActiveGeneralCnt() {
|
||||
var arr = this.getMyGenerals()
|
||||
var cnt = 0
|
||||
arr.forEach(g => {
|
||||
if(g.state == 0){
|
||||
cnt += 1
|
||||
}
|
||||
});
|
||||
return cnt
|
||||
}
|
||||
|
||||
/**我的武将列表*/
|
||||
public getMyGenerals(): GeneralData[] {
|
||||
return Array.from(this._myGenerals.values());
|
||||
}
|
||||
|
||||
public getMyGeneralsNotUse(): GeneralData[] {
|
||||
var arr = Array.from(this._myGenerals.values());
|
||||
let generals: GeneralData[] = [];
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const obj = arr[i];
|
||||
if (obj.order == 0 && obj.state == 0){
|
||||
generals.push(obj);
|
||||
}
|
||||
}
|
||||
return generals;
|
||||
}
|
||||
|
||||
|
||||
/**我的武将*/
|
||||
public getMyGeneral(id: number): GeneralData {
|
||||
if (this._myGenerals.has(id)) {
|
||||
return this._myGenerals.get(id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**相同类型的武将id */
|
||||
public getGeneralIds(cfgId: number): number[] {
|
||||
let myGenerals: GeneralData[] = this.getMyGenerals();
|
||||
let tempGenerals: number[] = [];
|
||||
for (var i = 0; i < myGenerals.length; i++) {
|
||||
if (myGenerals[i].cfgId == cfgId) {
|
||||
tempGenerals.push(myGenerals[i].id)
|
||||
}
|
||||
}
|
||||
return tempGenerals;
|
||||
}
|
||||
|
||||
|
||||
protected sortStar(a: GeneralData, b: GeneralData): number {
|
||||
|
||||
if(a.config.star < b.config.star){
|
||||
return 1;
|
||||
}else if(a.config.star == b.config.star){
|
||||
return a.cfgId - b.cfgId;
|
||||
}else{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 排序 已经使用的
|
||||
*/
|
||||
public getUseGenerals(): GeneralData[] {
|
||||
var tempArr: GeneralData[] = this.getMyGenerals().concat();
|
||||
tempArr.sort(this.sortStar);
|
||||
var temp: GeneralData[] = [];
|
||||
|
||||
for (var i = 0; i < tempArr.length; i++) {
|
||||
if (tempArr[i].order > 0) {
|
||||
console.log("tempArr[i].order:",tempArr[i].order,tempArr[i].config.name)
|
||||
temp.push(tempArr[i]);
|
||||
tempArr.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < tempArr.length; i++) {
|
||||
if (tempArr[i].parentId > 0) {
|
||||
tempArr.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
temp = temp.concat(tempArr);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
public getComposeGenerals(cfgId: number = 0, id: number = 0): GeneralData[] {
|
||||
var temp: GeneralData[] = [];
|
||||
var tempArr: GeneralData[] = this.getMyGenerals().concat();
|
||||
|
||||
for (var i = 0; i < tempArr.length; i++) {
|
||||
if (tempArr[i].order > 0 || tempArr[i].id == id || tempArr[i].cfgId != cfgId || tempArr[i].parentId > 0) {
|
||||
continue
|
||||
}
|
||||
|
||||
temp.push(tempArr[i]);
|
||||
}
|
||||
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
11
assets/scripts/general/GeneralProxy.ts.meta
Normal file
11
assets/scripts/general/GeneralProxy.ts.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "9a494869-e1d0-43e7-b99a-735d5668fdd8",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"simulateGlobals": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user