技能 继续

This commit is contained in:
2024-09-25 11:01:43 +08:00
parent 033bccfc1a
commit 3870bdec50
9 changed files with 4559 additions and 1029 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -13,22 +13,21 @@ import { UIID } from "../common/config/GameUIConfig";
import { smc } from "../common/SingletonModuleComp"; import { smc } from "../common/SingletonModuleComp";
import { RoleModelComp } from "./RoleModelComp"; import { RoleModelComp } from "./RoleModelComp";
import { RoleSpine } from "./RoleSpine"; import { RoleSpine } from "./RoleSpine";
import { MoveToComp } from "../common/ecs/position/MoveTo";
import { RoleViewComp } from "./RoleViewComp"; import { RoleViewComp } from "./RoleViewComp";
import { BoxSet } from "../common/config/BoxSet"; import { BoxSet } from "../common/config/BoxSet";
import { HeroModelComp } from "../hero/HeroModelComp";
/** 角色实体 */ /** 角色实体 */
@ecs.register(`Role`) @ecs.register(`Role`)
export class Role extends ecs.Entity { export class Role extends ecs.Entity {
// 数据层 // 数据层
RoleModel!: RoleModelComp; RoleModel!: RoleModelComp;
RoleMoveTo!: MoveToComp; // 移动 HeroModel!: HeroModelComp;
// 视图层 // 视图层
RoleView!: RoleViewComp; RoleView!: RoleViewComp;
protected init() { protected init() {
this.addComponents<ecs.Comp>( this.addComponents<ecs.Comp>(
RoleModelComp); RoleModelComp,HeroModelComp);
} }
destroy(): void { destroy(): void {
@@ -62,20 +61,20 @@ export class Role extends ecs.Entity {
rv.st_boncus=1+smc.vm_data.talent[15].bonus*smc.vm_data.talent[15].lv; rv.st_boncus=1+smc.vm_data.talent[15].bonus*smc.vm_data.talent[15].lv;
rv.s_boncus=1+smc.vm_data.talent[16].bonus*smc.vm_data.talent[16].lv; rv.s_boncus=1+smc.vm_data.talent[16].bonus*smc.vm_data.talent[16].lv;
rv.power = role.power; rv.power = role.power;
rv.skills = role.skills; rv.skill1 = role.skill1;
for (let i = 0; i < rv.skills.length; i++) { rv.skill1.cd=rv.skill1.cd_max=1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv
rv.skills[i].cd*(1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv) rv.skill2 = role.skill2;
} rv.skill2.cd=rv.skill2.cd_max=1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv
rv.skill3 = role.skill3;
rv.skill3.cd=rv.skill3.cd_max=1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv
rv.skill4 = role.skill4;
rv.skill4.cd=rv.skill4.cd_max=1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv
rv.skill5 = role.skill5;
rv.skill5.cd=rv.skill5.cd_max=1-smc.vm_data.talent[4].bonus*smc.vm_data.talent[4].lv
rv.skill = role.skill; rv.skill = role.skill;
rv.box_group = BoxSet.HERO; rv.box_group = BoxSet.HERO;
this.add(rv); this.add(rv);
} }
move(target: Vec3) {
var move = this.get(MoveToComp) || this.add(MoveToComp);
move.target = target;
move.node = this.RoleView.node;
move.speed = 300;
}
} }

View File

@@ -59,6 +59,11 @@ export class RoleViewComp extends CCComp {
power_speed: number = 1; //能量回复速度每0.1秒回复量 power_speed: number = 1; //能量回复速度每0.1秒回复量
skill:8001; skill:8001;
skills:any=[] skills:any=[]
skill1:any=[]
skill2:any=[]
skill3:any=[]
skill4:any=[]
skill5:any=[]
st_boncus: number = 1; //技能持续时间加成 st_boncus: number = 1; //技能持续时间加成
s_boncus: number = 1; //技能效果加成 s_boncus: number = 1; //技能效果加成
buff_atks:any = []; buff_atks:any = [];
@@ -179,16 +184,23 @@ export class RoleViewComp extends CCComp {
this.check_enemys() this.check_enemys()
} }
skill_cds(dt:number){ skill_cds(dt:number){
this.skills.forEach((e:any) => { this.skill1.cd -= dt;
if(e.cd > 0&&e.alive){ if(this.skill1.cd <= 0){
e.cd -= dt; this.shoot(this.skill1.uuid);
if(e.cd <= 0){ this.skill1.cd=this.skill1.cd_max
this.shoot(e.uuid); console.log("shoot uuid :"+this.skill1.uuid);
e.cd=smc.skills[e.uuid].cd }
console.log("shoot uuid :"+e.uuid);
} // this.skills.forEach((e:any) => {
} // if(e.cd > 0&&e.alive){
}); // e.cd -= dt;
// if(e.cd <= 0){
// this.shoot(e.uuid);
// e.cd=smc.skills[e.uuid].cd
// console.log("shoot uuid :"+e.uuid);
// }
// }
// });
// console.log(this.skills); // console.log(this.skills);
} }
check_enemys(){ check_enemys(){
@@ -460,6 +472,8 @@ export class RoleViewComp extends CCComp {
} }
dead(){ dead(){
oops.message.dispatchEvent("minssion_defeat");
var path = "game/skills/dead"; var path = "game/skills/dead";
var prefab: Prefab = oops.res.get(path, Prefab)!; var prefab: Prefab = oops.res.get(path, Prefab)!;
var node = instantiate(prefab); var node = instantiate(prefab);

View File

@@ -77,16 +77,22 @@ export class SingletonModuleComp extends ecs.Comp {
gems: 4, gems: 4,
unlock:5, unlock:5,
mission:{ mission:{
victory:0,
once:6, //每波刷新怪物数量 once:6, //每波刷新怪物数量
total:120, //总怪物数 total:120, //总怪物数
m_less:0,
m_alive:120,
g_level:1,
g_time:0,
reward:20, //怪物死亡奖励数量 reward:20, //怪物死亡奖励数量
reward_num:0, //怪物死亡数 reward_num:0, //怪物死亡数
coin:100, coin:200,
coin_add:1, coin_add:1,
coin_reward_add:1, coin_reward_add:1,
normal_cost:10, normal_cost:10,
better_cost:20, better_cost:20,
best_cost:30, best_cost:30,
enhancement_cost:100,
normal_lv:1, normal_lv:1,
better_lv:1, better_lv:1,
best_lv:1, best_lv:1,
@@ -94,9 +100,6 @@ export class SingletonModuleComp extends ecs.Comp {
t_dps:0, t_dps:0,
h_dps:0, h_dps:0,
m_dps:0, m_dps:0,
g_level:1,
g_time:0,
m_less:0,
hero:{ hero:{
atk:1, atk:1,
atk_cd:1, atk_cd:1,
@@ -124,13 +127,12 @@ export class SingletonModuleComp extends ecs.Comp {
next_exp:100, next_exp:100,
power:300, power:300,
skill:1004, skill:1004,
skills:[ skill1:{uuid:1001,cd:3,cd_max:3,alive:true },
{uuid:0,cd:2,alive:false }, skill2:{uuid:1001,cd:3,cd_max:3,alive:false},
{uuid:0,cd:3,alive:false}, skill3:{uuid:1001,cd:3,cd_max:3,alive:false},
{uuid:0,cd:4,alive:false}, skill4:{uuid:1001,cd:3,cd_max:3,alive:false},
{uuid:0,cd:0,alive:false}, skill5:{uuid:1001,cd:3,cd_max:3,alive:false},
{uuid:0,cd:0,alive:false},
],
}, },
talent:{ talent:{

View File

@@ -36,7 +36,11 @@ export class CardControllerComp extends CCComp {
reward_lv = 0; reward_lv = 0;
protected onLoad(): void { protected onLoad(): void {
oops.message.on("do_reward", this.do_reward, this) // oops.message.on("do_reward", this.do_reward, this)
oops.message.on("minssion_victory", this.do_minssion_victory, this)
oops.message.on("minssion_defeat", this.do_minssion_defeat, this)
} }
start() { start() {
@@ -65,13 +69,24 @@ export class CardControllerComp extends CCComp {
} }
} }
do_minssion_victory(){
this.node.getChildByName("victory").active=true
}
do_minssion_defeat(){
this.node.getChildByName("defeat").active=true
}
end_mission(){
this.node.getChildByName("victory").active=false
this.node.getChildByName("defeat").active=false
console.log("end_mission")
}
normal_call(){ normal_call(){
if(smc.vm_data.mission.coin >= smc.vm_data.mission.normal_cost){ if(smc.vm_data.mission.coin >= smc.vm_data.mission.normal_cost){
smc.vm_data.mission.coin -= smc.vm_data.mission.normal_cost smc.vm_data.mission.coin -= smc.vm_data.mission.normal_cost
oops.message.dispatchEvent("normal_call"); oops.message.dispatchEvent("normal_call");
}else{ }else{
oops.gui.toast("铜币不"); oops.gui.toast("铜币不");
} }
} }
@@ -88,7 +103,11 @@ export class CardControllerComp extends CCComp {
do_reward(){ do_reward(){
if(!smc.vm_data.mission.coin >= smc.vm_data.mission.enhancement_cost) return
smc.vm_data.mission.coin -= smc.vm_data.mission.enhancement_cost
smc.vm_data.game_pause = true; smc.vm_data.game_pause = true;
this.reward_lv+=1 this.reward_lv+=1
this.rewards_set=JSON.parse(JSON.stringify(RewardSet[1])); this.rewards_set=JSON.parse(JSON.stringify(RewardSet[1]));
// console.log("rewards_set:",this.rewards_set,RewardSet[1]) // console.log("rewards_set:",this.rewards_set,RewardSet[1])

View File

@@ -71,7 +71,7 @@ export class MapMonsterComp extends CCComp {
this.boss_list = BossList[this.cur_mission] this.boss_list = BossList[this.cur_mission]
// console.log("当前关卡方案",this.cur_mission,this.mission_list) // console.log("当前关卡方案",this.cur_mission,this.mission_list)
this.refresh_timer= new Timer(smc.vm_data.shuaxin.max); this.refresh_timer= new Timer(smc.vm_data.shuaxin.max);
smc.vm_data.mission.m_less=this.total smc.vm_data.mission.m_less=smc.vm_data.mission.m_alive=JSON.parse(JSON.stringify(this.total));
this.monster_refresh() this.monster_refresh()
this.load_role() this.load_role()
this.load_boss() this.load_boss()
@@ -130,7 +130,7 @@ export class MapMonsterComp extends CCComp {
} }
is_reward(){ is_reward(){
if(smc.vm_data.mission.reward_num < smc.vm_data.mission.reward) return if(smc.vm_data.mission.reward_num < smc.vm_data.mission.reward) return
this.do_reward() // this.do_reward()
smc.vm_data.mission.reward_num = 0 smc.vm_data.mission.reward_num = 0
} }
do_reward(){ do_reward(){

View File

@@ -310,7 +310,6 @@ export class MonViewComp extends CCComp {
if(this.hp <= 0){ if(this.hp <= 0){
this.dead(); this.dead();
this.is_dead = true; this.is_dead = true;
smc.vm_data.mission.reward_num += 1;
setTimeout(() => { setTimeout(() => {
this.ent.destroy(); this.ent.destroy();
}, 15); }, 15);
@@ -389,7 +388,7 @@ export class MonViewComp extends CCComp {
let tip =ecs.getEntity<Tooltip>(Tooltip); let tip =ecs.getEntity<Tooltip>(Tooltip);
let pos = this.node.getPosition(); let pos = this.node.getPosition();
let node =this.node.parent let node =this.node.parent
pos.y=pos.y+60; pos.y=pos.y+50;
tip.load(pos,type,value,s_uuid,node); tip.load(pos,type,value,s_uuid,node);
} }
@@ -427,15 +426,20 @@ export class MonViewComp extends CCComp {
} }
dead(){ dead(){
let coin =(GameSet.MON_COIN_ADD*smc.vm_data.mission.coin_reward_add*(1+smc.vm_data.talent[6].bonus*smc.vm_data.talent[6].lv)).toFixed(0)
smc.vm_data.mission.coin += parseFloat(coin)
smc.vm_data.mission.reward_num += 1;
smc.vm_data.mission.m_alive -= 1;
if(smc.vm_data.mission.m_alive <= 0){
smc.vm_data.mission.victory = 1;
oops.message.dispatchEvent("minssion_victory");
}
var path = "game/skills/dead"; var path = "game/skills/dead";
var prefab: Prefab = oops.res.get(path, Prefab)!; var prefab: Prefab = oops.res.get(path, Prefab)!;
var node = instantiate(prefab); var node = instantiate(prefab);
node.setPosition(this.node.position.x,this.node.position.y+30,this.node.position.z); node.setPosition(this.node.position.x,this.node.position.y+30,this.node.position.z);
node.parent = this.node.parent; node.parent = this.node.parent;
let coin =(GameSet.MON_COIN_ADD*smc.vm_data.mission.coin_reward_add*(1+smc.vm_data.talent[6].bonus*smc.vm_data.talent[6].lv)).toFixed(0)
smc.vm_data.mission.coin += parseFloat(coin)
} }
toDestroy(){ toDestroy(){

View File

@@ -41,7 +41,7 @@ export class Tooltip extends ecs.Entity {
sv.stype = type; sv.stype = type;
sv.value = vaule; sv.value = vaule;
sv.s_uuid = s_uuid; sv.s_uuid = s_uuid;
sv.alive_time = cd; sv.alive_time = 0.3;
this.add(sv) this.add(sv)
} }
} }

View File

@@ -20,7 +20,7 @@ export class TooltipCom extends CCComp {
stype:number = 1; // 1:减少生命值2增加生命值3技能图标 stype:number = 1; // 1:减少生命值2增加生命值3技能图标
value:string = ""; value:string = "";
s_uuid:number = 1001; s_uuid:number = 1001;
alive_time:number = 1; alive_time:number = 0.2;
skill_name_time=0.5; skill_name_time=0.5;
start() { start() {
this.node.getChildByName("loss_life").active=false; this.node.getChildByName("loss_life").active=false;
@@ -33,7 +33,7 @@ export class TooltipCom extends CCComp {
this.node.getChildByName("loss_life").active=true; this.node.getChildByName("loss_life").active=true;
tween(this.node).to( tween(this.node).to(
this.alive_time, this.alive_time,
{position:v3(this.node.position.x+10,this.node.position.y+40), }, {position:v3(this.node.position.x,this.node.position.y+10), },
{ {
onComplete:()=>{ this.ent.destroy()}, onComplete:()=>{ this.ent.destroy()},
easing:"linear" easing:"linear"
@@ -45,7 +45,7 @@ export class TooltipCom extends CCComp {
this.node.getChildByName("add_life").active=true; this.node.getChildByName("add_life").active=true;
tween(this.node).to( tween(this.node).to(
this.alive_time, this.alive_time,
{position:v3(this.node.position.x+10,this.node.position.y+40), }, {position:v3(this.node.position.x,this.node.position.y+10), },
{ {
onComplete:()=>{ this.ent.destroy()}, onComplete:()=>{ this.ent.destroy()},
easing:"linear" easing:"linear"