Files
heros/assets/script/game/map/VictoryComp.ts
2024-11-04 13:05:30 +08:00

90 lines
3.8 KiB
TypeScript

import { _decorator, Label } 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 { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { smc } from "../common/SingletonModuleComp";
import { MonViewComp } from "../mon/MonViewComp";
import { HeroViewComp } from "../hero/HeroViewComp";
import { RoleViewComp } from "../Role/RoleViewComp";
import { BossViewComp } from "../Boss/BossViewComp";
import { RandomManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/random/RandomManager";
import { MissionReward } from "../common/config/MissionSet";
import { Items } from "../common/config/Items";
const { ccclass, property } = _decorator;
/** 视图层对象 */
@ccclass('VictoryComp')
@ecs.register('Victory', false)
export class VictoryComp extends CCComp {
reward_lv:number=1
reward_num:number=2
rerawd_item:any={}
/** 视图层逻辑代码分离演示 */
start() {
// console.log("VictoryComp start")
oops.message.on("minssion_victory", this.do_victiry, this);
oops.message.on("minssion_defeat", this.do_defeat, this);
}
private do_victiry() {
smc.vm_data.mission.play=false
if(smc.vm_data.role.mission%10==0){
smc.vm_data.role.mission_finish == true
}else{
smc.vm_data.role.mission += 1
}
this.node.getChildByName("Node").active = true;
this.getReward()
this.node.getChildByName("Node").getChildByName("defeat").active = false
this.node.getChildByName("Node").getChildByName("victory").active = true;
}
private do_defeat() {
smc.vm_data.mission.play=false
this.node.getChildByName("Node").active = true;
this.getReward()
this.node.getChildByName("Node").getChildByName("victory").active = false;
this.node.getChildByName("Node").getChildByName("defeat").active = true
}
getReward(){
let reward:any = RandomManager.instance.getRandomByObjectList(MissionReward[this.reward_lv], 1);
this.rerawd_item =Items[reward[0]]
// console.log("getReward:",this.rerawd_item)
this.node.getChildByName("Node").getChildByName("item3").getChildByName("num").getComponent(Label).string=this.reward_num.toString()
}
end_mission(){
this.node.getChildByName("Node").active=false
smc.vm_data.role.gold += smc.vm_data.mission.reward_gold
smc.vm_data.role.exp += smc.vm_data.mission.reward_exp
console.log("end_mission",this.rerawd_item,smc.vm_data.role.exp)
// smc.vm_data.role.items[this.rerawd_item.uuid].num += this.reward_num
smc.vm_data.mission.reward_gold=0
smc.vm_data.mission.reward_exp=0
this.empty_mission()
oops.message.dispatchEvent("to_mission")
console.log("end_mission",smc.vm_data.role.items)
}
empty_mission(){
let monsters:any= ecs.query(ecs.allOf(MonViewComp));
let heros:any= ecs.query(ecs.allOf(HeroViewComp));
let roles:any= ecs.query(ecs.allOf(RoleViewComp));
let boss:any= ecs.query(ecs.allOf(BossViewComp));
for(let i=0;i<monsters.length;i++){
monsters[i].MonView.ent.destroy()
}
for(let i=0;i<heros.length;i++){
heros[i].HeroView.ent.destroy()
}
for(let i=0;i<roles.length;i++){
roles[i].RoleView.ent.destroy()
}
for(let i=0;i<boss.length;i++){
boss[i].BossView.ent.destroy()
}
}
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */
reset() {
this.node.destroy();
}
}