mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 02:36:14 +00:00
提交挂机
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import { GOnHookPet } from "../../../../../extensions/ngame/assets/ngame/message/proto";
|
||||
import NGameUtil from "../../../../../extensions/ngame/assets/ngame/util/NGameUtil";
|
||||
import { NSystemEvent } from "../../../../../extensions/ngame/assets/ngame/util/NSystem";
|
||||
import Singleton from "../../../../../extensions/ngame/assets/ngame/util/Singleton";
|
||||
import { app } from "../../../App";
|
||||
import { TD, app } from "../../../App";
|
||||
import GBattleModeManager, { BattleMode } from "../../../battle/GBattleModeManager";
|
||||
import { PlayerPetOV } from "../../../consts/API";
|
||||
import { TB } from "../../../config/data/schema";
|
||||
import { API, PlayerPetOV } from "../../../consts/API";
|
||||
import { GAPI } from "../../../consts/GAPI";
|
||||
import GOnHookData from "../../../data/GOnHookData";
|
||||
import PlayerPetData from "../../../data/PlayerPetData";
|
||||
@@ -16,7 +19,9 @@ export enum GOnHookManagerEvent{
|
||||
//重置数据
|
||||
RESET_DATA = "GOnHookManagerEvent_RESET_DATA",
|
||||
//删除死亡野怪
|
||||
UPDATE_MAP = "GOnHookManagerEvent_UPDATE_MAP"
|
||||
UPDATE_MAP = "GOnHookManagerEvent_UPDATE_MAP",
|
||||
//更新挂机状态
|
||||
UPDATE_ON_HOOK_STATE = "GOnHookManagerEvent_UPDATE_ON_HOOK_STATE"
|
||||
}
|
||||
|
||||
//游戏模式 OnHook 管理器
|
||||
@@ -42,6 +47,71 @@ export default class GOnHookManager extends Singleton{
|
||||
//已经死亡的野怪列表
|
||||
killSreeps:GOnHookPet[] = [];
|
||||
|
||||
//-------------------------- 挂机 ---------------------------------
|
||||
|
||||
//需要捕捉的宠物
|
||||
onHookCatchPets:TB.TbGRole[] = [];
|
||||
//需要主动吞噬的宠物 (主动吞噬其他 0星 宠物 升星)
|
||||
onHookEngulfPets:PlayerPetOV[] = [];
|
||||
|
||||
//是否挂机
|
||||
_isOnHook:boolean = false;
|
||||
get isOnHook(){return this._isOnHook}
|
||||
set isOnHook(value:boolean){
|
||||
this._isOnHook = value;
|
||||
//通知更新挂机状态
|
||||
app.event.emit(GOnHookManagerEvent.UPDATE_ON_HOOK_STATE);
|
||||
}
|
||||
|
||||
init(){
|
||||
app.event.on(NSystemEvent.UPDATE,this.onUpdate,this);
|
||||
}
|
||||
|
||||
destroy(): void {
|
||||
app.event.off(NSystemEvent.UPDATE,this.onUpdate,this);
|
||||
}
|
||||
|
||||
onUpdate(){
|
||||
this.onUpdateOnHook();
|
||||
}
|
||||
|
||||
//更新挂机
|
||||
onUpdateOnHook = NGameUtil.ThrottleASync((async () => {
|
||||
|
||||
//如果是挂机 则 出售不需要捕捉的宠物
|
||||
if(!this.isOnHook) return;
|
||||
|
||||
//捕捉 和 出售
|
||||
let pet = this.killSreeps[0];
|
||||
if(pet){
|
||||
if(this.onHookCatchPets.indexOf(TD.TbGRole.get(pet.petTbId)) >= 0){
|
||||
//捕捉
|
||||
await this.onCatchCreeps(pet)
|
||||
}else{
|
||||
//出售
|
||||
await this.onSellCreeps(pet)
|
||||
}
|
||||
}
|
||||
|
||||
//自动吞噬
|
||||
for (const item of this.onHookEngulfPets) {
|
||||
|
||||
//获取可吞噬的宠物
|
||||
let engulfs = PlayerPetData.getIns().getData()
|
||||
.filter(value => (value.petStar || 0) == 0 && item.petTbId == value.petTbId && item.petId != value.petId)
|
||||
.map(value => value.petId);
|
||||
|
||||
//吞噬
|
||||
if(engulfs.length){
|
||||
await API.PetUpStar(item.petId,engulfs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}).bind(this))
|
||||
|
||||
//生成野怪
|
||||
onSpawnSreeps(){
|
||||
|
Reference in New Issue
Block a user