import { _decorator,Button,EventHandler,EventTouch,Label,NodeEventType,resources,Sprite,SpriteAtlas,tween,UITransform,v3, Vec3,Animation, UI } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { smc } from "../common/SingletonModuleComp"; import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; import { Missions} from "../common/config/Mission"; import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer"; import { VictoryComp } from "./VictoryComp"; import { CardControllerComp } from "./CardController"; import { GameEvent } from "../common/config/GameEvent"; import { HeroViewComp } from "../hero/HeroViewComp"; import { Hero } from "../hero/Hero"; import { TimerManager } from "db://oops-framework/core/common/timer/TimerManager"; import { HeroList } from "../common/config/heroSet"; const { ccclass, property } = _decorator; /** 视图层对象 */ @ccclass('MissionComp') @ecs.register('MissionComp', false) export class MissionComp extends CCComp { VictoryComp:any = null; reward:number = 0; reward_num:number = 0; GlodAddTimer:Timer = new Timer(1); mission_data:any={ gold:10,//金币 refresh_gold:1,//刷新金币 refrsh_time:1, //刷新时间 call_gold:3,//召唤金币 add_gold:1,//金币增加 change_gold:1,//金币变化 exp:0,//经验 skp:0,//技能点 box:0,//宝箱 energy:0,//能量 hp:0,//血量 ap:0,//攻击 } onLoad(){ this.on(GameEvent.MissionStart,this.mission_start,this) this.on(GameEvent.FightEnd,this.fight_end,this) this.on(GameEvent.MissionEnd,this.mission_end,this) } protected update(dt: number): void { if(!smc.mission.play||smc.mission.pause){ return } if(this.GlodAddTimer.update(dt)){ smc.vmdata.mission_data.gold+=smc.vmdata.mission_data.add_gold } } mission_start(){ /* todo 关卡设定完善*/ console.log("战斗开始 关卡怪物:",Missions[smc.mission.lv]) this.node.active=true this.data_init() this.hart_hero_load() let loading=this.node.parent.getChildByName("loading") loading.active=true this.scheduleOnce(()=>{ this.to_hero_skill_select() loading.active=false },0.5) } to_hero_skill_select(){ console.log("英雄技能选择") oops.message.dispatchEvent(GameEvent.HeroSkillSelect) } to_hero_select(){ oops.message.dispatchEvent(GameEvent.HeroSelect) } to_fight(){ oops.message.dispatchEvent(GameEvent.FightStart) } to_end_fight(){ oops.message.dispatchEvent(GameEvent.FightEnd) } fight_end(){ console.log("任务结束") // 延迟0.5秒后执行任务结束逻辑 this.scheduleOnce(() => { smc.mission.play=false smc.mission.pause=false this.cleanComponents() }, 0.5) } mission_end(){ this.node.active=false } data_init(){ //局内数据初始化 console.log("局内数据初始化") this.GlodAddTimer=new Timer(smc.vmdata.mission_data.refrsh_time) smc.mission.status=1 smc.mission.play = true; smc.mission.is_victory=false smc.mission.is_defeat=false smc.vmdata.mission_data ={...smc.vmdata.mission_data} } //角色初始化 hart_hero_load(){ let hero = ecs.getEntity(Hero); hero.hart_load() } card_init(){ oops.message.dispatchEvent(GameEvent.CardRefresh) } card_refresh(){ if(smc.vmdata.mission_data.gold< smc.vmdata.mission_data.refresh_gold){ oops.gui.toast("金币不足", false); return } oops.message.dispatchEvent(GameEvent.CardRefresh) smc.vmdata.mission_data.gold-=smc.vmdata.mission_data.refresh_gold } private cleanComponents() { ecs.query(ecs.allOf(HeroViewComp)).forEach(entity => {entity.remove(HeroViewComp);entity.destroy()}); } /** 视图层逻辑代码分离演示 */ /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ reset() { this.node.destroy(); } }