召唤逻辑改变

This commit is contained in:
2025-06-03 16:34:27 +08:00
parent b66c69d925
commit 899613c689
8 changed files with 943 additions and 804 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -507,7 +507,7 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": 0, "x": 968.7629999999999,
"y": 749.128, "y": 749.128,
"z": 0 "z": 0
}, },
@@ -616,7 +616,7 @@
], ],
"value": { "value": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -262.5, "x": -262.49999999999994,
"y": 0, "y": 0,
"z": 0 "z": 0
} }
@@ -757,7 +757,7 @@
], ],
"value": { "value": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": -87.5, "x": -87.49999999999994,
"y": 0, "y": 0,
"z": 0 "z": 0
} }
@@ -882,7 +882,7 @@
], ],
"value": { "value": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": 87.5, "x": 87.50000000000006,
"y": 0, "y": 0,
"z": 0 "z": 0
} }
@@ -1007,7 +1007,7 @@
], ],
"value": { "value": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": 262.5, "x": 262.50000000000006,
"y": 0, "y": 0,
"z": 0 "z": 0
} }
@@ -1080,8 +1080,8 @@
}, },
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": 15, "x": 15.000000000000057,
"y": -142.689, "y": -145,
"z": 0 "z": 0
}, },
"_lrot": { "_lrot": {
@@ -1440,7 +1440,7 @@
"_left": 0, "_left": 0,
"_right": 0, "_right": 0,
"_top": 1117.8839999999998, "_top": 1117.8839999999998,
"_bottom": -57.68899999999999, "_bottom": -60,
"_horizontalCenter": 0, "_horizontalCenter": 0,
"_verticalCenter": 0, "_verticalCenter": 0,
"_isAbsLeft": true, "_isAbsLeft": true,
@@ -1486,7 +1486,7 @@
}, },
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 720, "width": 719.9999999999999,
"height": 230 "height": 230
}, },
"_anchorPoint": { "_anchorPoint": {
@@ -1590,8 +1590,8 @@
}, },
"_alignFlags": 44, "_alignFlags": 44,
"_target": null, "_target": null,
"_left": 0, "_left": 968.763,
"_right": 0, "_right": -968.763,
"_top": 15, "_top": 15,
"_bottom": 634.128, "_bottom": 634.128,
"_horizontalCenter": 0, "_horizontalCenter": 0,
@@ -1613,7 +1613,7 @@
"fileId": "9aCFKx/N9E+6ZXbNILVsdG" "fileId": "9aCFKx/N9E+6ZXbNILVsdG"
}, },
{ {
"__type__": "62b36d9gpxMz5F8hFgkLiVf", "__type__": "3d183Ezxg1EwJM/pim+pDMx",
"_name": "", "_name": "",
"_objFlags": 0, "_objFlags": 0,
"__editorExtras__": {}, "__editorExtras__": {},
@@ -1628,7 +1628,7 @@
}, },
{ {
"__type__": "cc.CompPrefabInfo", "__type__": "cc.CompPrefabInfo",
"fileId": "bedhHO1z1PmoSjxrFpIT2A" "fileId": "50k4XLMJFH1qoYFgIga66D"
}, },
{ {
"__type__": "cc.PrefabInfo", "__type__": "cc.PrefabInfo",

View File

@@ -14,6 +14,7 @@ export enum GameEvent {
MSSelected = "MSSelected", MSSelected = "MSSelected",
CastSkill = "CastSkill", CastSkill = "CastSkill",
CardRefresh = "CardRefresh", CardRefresh = "CardRefresh",
CardRefreshEnd = "CardRefreshEnd",
UseCard = "UseCard", UseCard = "UseCard",
UseHeroCard = "UseHeroCard", UseHeroCard = "UseHeroCard",
UseSkillCard = "UseSkillCard", UseSkillCard = "UseSkillCard",
@@ -23,6 +24,10 @@ export enum GameEvent {
MissionWin = "MissionWin", MissionWin = "MissionWin",
MissionStart = "MissionStart", MissionStart = "MissionStart",
FightReady = "FightReady", FightReady = "FightReady",
HeroSkillSelect = "HeroSkillSelect",
HeroSkillSelectEnd = "HeroSkillSelectEnd",
HeroSelect = "HeroSelect",
HeroSelectEnd = "HeroSelectEnd",
FightStart = "FightStart", FightStart = "FightStart",
FightPause = "FightPause", FightPause = "FightPause",
FightResume = "FightResume", FightResume = "FightResume",

View File

@@ -20,40 +20,26 @@ export class CardComp extends CCComp {
is_used:boolean=false; is_used:boolean=false;
onLoad(){ onLoad(){
this.on(GameEvent.CardRefresh,this.onHandler,this) this.on(GameEvent.HeroSelect,this.onCardRefresh,this)
this.on(GameEvent.MissionStart,this.onHandler,this) this.on(GameEvent.HeroSkillSelect,this.onCardRefresh,this)
this.on(GameEvent.MissionEnd,this.onHandler,this) this.on(GameEvent.CardRefresh,this.onCardRefresh,this)
}
/** 全局消息逻辑处理 */
private onHandler(event: string, args: any) {
switch (event) {
case GameEvent.CardRefresh:
this.onCardRefresh(event,args)
break;
case GameEvent.MissionStart:
this.mission_start(event,args)
break;
case GameEvent.MissionEnd:
this.mission_end(event,args)
break;
}
} }
start() { start() {
this.init_card()
} }
init_card(){ init_card(){
this.is_used=true
this.node.getChildByName("Button").active=false this.node.getChildByName("Button").active=false
this.node.getChildByName("show").active=false this.node.getChildByName("show").active=false
} }
mission_start(event: string, args: any){ onHeroSelect(event: string, args: any){
} }
mission_end(event: string, args: any){ onHeroSkillSelect(event: string, args: any){
} }
onCardRefresh(event: string, args: any){ onCardRefresh(event: string, args: any){
this.is_used=false
let hero_list =HeroList let hero_list =HeroList
let x=RandomManager.instance.getRandomInt(0,hero_list.length,1) let x=RandomManager.instance.getRandomInt(0,hero_list.length,1)
this.c_uuid=hero_list[x] this.c_uuid=hero_list[x]
@@ -93,11 +79,9 @@ export class CardComp extends CCComp {
// return "替换" // return "替换"
// } // }
// } // }
return "召唤" return "选择"
} }
use_card(){ use_card(){
if(this.is_used) return
switch(this.c_type){ switch(this.c_type){
case 0: case 0:
if(smc.vmdata.mission_data.gold< smc.vmdata.mission_data.call_gold){ if(smc.vmdata.mission_data.gold< smc.vmdata.mission_data.call_gold){
@@ -114,9 +98,6 @@ export class CardComp extends CCComp {
oops.message.dispatchEvent(GameEvent.UseCard,{uuid:this.c_uuid}) oops.message.dispatchEvent(GameEvent.UseCard,{uuid:this.c_uuid})
break break
} }
this.node.getChildByName("show").active=false
this.is_used=true
this.node.getChildByName("Button").active=false
} }
reset() { reset() {
this.node.destroy(); this.node.destroy();

View File

@@ -1,4 +1,4 @@
import { _decorator } from "cc"; import { _decorator, v3 } from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { GameEvent } from "../common/config/GameEvent"; import { GameEvent } from "../common/config/GameEvent";
@@ -12,19 +12,25 @@ export class CardsCompComp extends CCComp {
/** 视图层逻辑代码分离演示 */ /** 视图层逻辑代码分离演示 */
start() { start() {
// var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象 // var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象
this.on(GameEvent.FightReady, this.onHandler, this); this.on(GameEvent.HeroSkillSelect, this.show, this);
this.on(GameEvent.HeroSkillSelectEnd, this.hide, this);
this.on(GameEvent.HeroSelect, this.show, this);
this.on(GameEvent.HeroSelectEnd, this.hide, this);
this.on(GameEvent.CardRefresh, this.show, this);
this.on(GameEvent.CardRefreshEnd, this.hide, this);
} }
/** 全局消息逻辑处理 */ show(){
private onHandler(event: string, args: any) { this.node.setPosition(v3(0,640,0))
switch (event) { }
case GameEvent.FightReady:
break; hide(){
} this.node.setPosition(v3(0,-1000,0))
} }
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */
reset() { reset() {
this.node.destroy(); this.node.destroy();
} }
} }

View File

@@ -2,7 +2,7 @@
"ver": "4.0.23", "ver": "4.0.23",
"importer": "typescript", "importer": "typescript",
"imported": true, "imported": true,
"uuid": "62b3677d-829c-4ccf-917c-8458242e255f", "uuid": "3d183133-c60d-44c0-933f-a629bea43331",
"files": [], "files": [],
"subMetas": {}, "subMetas": {},
"userData": {} "userData": {}

View File

@@ -12,6 +12,7 @@ import { HeroViewComp } from "../hero/HeroViewComp";
import { Hero } from "../hero/Hero"; import { Hero } from "../hero/Hero";
import { HartModelComp } from "../hero/HartModelComp"; import { HartModelComp } from "../hero/HartModelComp";
import { TimerManager } from "db://oops-framework/core/common/timer/TimerManager"; import { TimerManager } from "db://oops-framework/core/common/timer/TimerManager";
import { HeroList } from "../common/config/heroSet";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
/** 视图层对象 */ /** 视图层对象 */
@@ -52,17 +53,33 @@ export class MissionComp extends CCComp {
} }
to_end_fight(){
oops.message.dispatchEvent(GameEvent.FightEnd)
}
mission_start(){ mission_start(){
/* todo 关卡设定完善*/ /* todo 关卡设定完善*/
console.log("战斗开始 关卡怪物:",Missions[smc.mission.lv]) console.log("战斗开始 关卡怪物:",Missions[smc.mission.lv])
this.node.active=true this.node.active=true
this.data_init() this.data_init()
this.hero_init() this.hart_hero_load()
this.to_hero_skill_select()
} }
to_hero_skill_select(){
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(){ fight_end(){
console.log("任务结束") console.log("任务结束")
// 延迟0.5秒后执行任务结束逻辑 // 延迟0.5秒后执行任务结束逻辑
@@ -86,16 +103,15 @@ export class MissionComp extends CCComp {
} }
//角色初始化 //角色初始化
hero_init(){ hart_hero_load(){
let hero = ecs.getEntity<Hero>(Hero); let hero = ecs.getEntity<Hero>(Hero);
hero.hart_load() hero.hart_load()
this.scheduleOnce(() => {
this.card_init()
}, 0.3)
} }
card_init(){ card_init(){
oops.message.dispatchEvent(GameEvent.CardRefresh) oops.message.dispatchEvent(GameEvent.CardRefresh)
} }
card_refresh(){ card_refresh(){
if(smc.vmdata.mission_data.gold< smc.vmdata.mission_data.refresh_gold){ if(smc.vmdata.mission_data.gold< smc.vmdata.mission_data.refresh_gold){
oops.gui.toast("金币不足", false); oops.gui.toast("金币不足", false);
@@ -106,12 +122,12 @@ export class MissionComp extends CCComp {
} }
private cleanComponents() { private cleanComponents() {
ecs.query(ecs.allOf(HeroViewComp)).forEach(entity => {entity.remove(HeroViewComp);entity.destroy()}); ecs.query(ecs.allOf(HeroViewComp)).forEach(entity => {entity.remove(HeroViewComp);entity.destroy()});
} }
/** 视图层逻辑代码分离演示 */ /** 视图层逻辑代码分离演示 */
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */

View File

@@ -28,7 +28,7 @@ export class MissionHeroCompComp extends CCComp {
} }
current_hero_uuid:number=0 current_hero_uuid:number=0
onLoad(){ onLoad(){
this.on(GameEvent.UseHeroCard,this.show_heros_pos,this) this.on(GameEvent.UseHeroCard,this.call_hero,this)
} }
start() { start() {
// this.test_call() // this.test_call()
@@ -86,26 +86,28 @@ export class MissionHeroCompComp extends CCComp {
} }
} }
call_hero(event: string, args: any){ call_hero(event: string, args: any){
this.node.getChildByName("location").active=false // this.node.getChildByName("location").active=false
console.log("call_hero",args) // console.log("call_hero",args)
let fight_pos=args // let fight_pos=args
this.timer.reset() // this.timer.reset()
let hero_list =HeroList // let hero_list =HeroList
let x=RandomManager.instance.getRandomInt(0,hero_list.length,1) // let x=RandomManager.instance.getRandomInt(0,hero_list.length,1)
// let uuid=args.uuid // // let uuid=args.uuid
// console.log("call_hero",uuid) // // console.log("call_hero",uuid)
this.addHero(this.current_hero_uuid,fight_pos) this.addHero(args.uuid)
} }
/** 添加玩家 */ /** 添加英雄 */
private addHero(uuid:number=1001,fight_pos:number=0) { private addHero(uuid:number=1001,fight_pos:number=0) {
console.log("call_hero addHero",uuid) console.log("call_hero addHero",uuid)
let info:any=this.get_info_and_remove(fight_pos,uuid) let info:any=this.get_info_and_remove(fight_pos,uuid)
// let info:any={ap:0,hp:0,lv:0}
let hero = ecs.getEntity<Hero>(Hero); let hero = ecs.getEntity<Hero>(Hero);
let scale = 1 let scale = 1
let pos:Vec3 = this.start_pos[fight_pos].pos; let pos:Vec3 = this.start_pos[fight_pos].pos;
console.log("hero load0",pos,this.start_pos) console.log("hero load0",pos,this.start_pos)
hero.load(pos,scale,uuid,info,fight_pos); hero.load(pos,scale,uuid,info,fight_pos);
oops.message.dispatchEvent(GameEvent.HeroSelectEnd)
this.current_hero_uuid=0 this.current_hero_uuid=0
} }
@@ -125,20 +127,16 @@ export class MissionHeroCompComp extends CCComp {
// let s_hp_up = (HeroUpInfo[uuid] || {}).hp_up || 0 //替换 升级的英雄额外替换血量增长值 // let s_hp_up = (HeroUpInfo[uuid] || {}).hp_up || 0 //替换 升级的英雄额外替换血量增长值
// info.ap=Math.floor(hv.ap*(AP_UP_RATE+o_ap_rate+s_ap_rate)/100+o_ap+s_ap) // info.ap=Math.floor(hv.ap*(AP_UP_RATE+o_ap_rate+s_ap_rate)/100+o_ap+s_ap)
// info.hp=Math.floor(o_hp_up+s_hp_up) // info.hp=Math.floor(o_hp_up+s_hp_up)
if(hv.hero_uuid === uuid){ info.ap=hv.ap
info.ap=hv.ap info.hp=hv.hp_max
info.hp=hv.hp_max info.lv=hv.lv
info.lv=hv.lv
}else{
this.do_hero_change()
}
hero.destroy() hero.destroy()
return info return info
} }
} }
return info return info
} }
do_hero_change(){ do_hero_change(){
//金币加1 //金币加1
smc.vmdata.mission_data.gold+=1 smc.vmdata.mission_data.gold+=1