This commit is contained in:
2024-08-12 17:16:39 +08:00
parent dedc020bbd
commit 825457fd0e
28 changed files with 766 additions and 383 deletions

View File

@@ -25,18 +25,14 @@ export class Main extends Root {
protected async run() {
smc.initialize = ecs.getEntity<Initialize>(Initialize);
smc.monsters = [
{prefab_path:'lang',name:'迅狼',speed:100},
{prefab_path:'hero',name:'火猴',speed:45},
{prefab_path:'lang',name:'m3',speed:40},
{prefab_path:'lang',name:'m4',speed:40},
{prefab_path:'lang',name:'m3',speed:40},
{prefab_path:'lang',name:'m4',speed:40},
]
smc.heros = [
{prefab_path:'lang',name:'迅狼',speed:110},
{prefab_path:'liubang',name:'刘邦',speed:110},
{prefab_path:'yinzheng',name:'嬴政',speed:110},
{uuid:1102},
{uuid:1102},
{uuid:1102},
{uuid:1201},
{uuid:1201},
{uuid:1201},
]
console.log("Game start");
smc.vmAdd()
}

View File

@@ -4,18 +4,45 @@
* @LastEditors: dgflash
* @LastEditTime: 2022-01-26 16:42:00
*/
export const CardType = {
1: "前排",
2: "后排",
}
export const CardList={
1:[1001,1002,1003,1102],
2:[1001,1002,1003,1004,1102,1201],
3:[1001,1002,1003,1004,1102,1201],
4:[1001,1002,1003,1004,1102,1201],
5:[1001,1002,1003,1004,1102,1201],
6:[1001,1002,1003,1004,1102,1201],
}
export const CardSet = {
1001:{
uuid:1001,
name:'护盾战士',
level:1,
prefab_path:'yinzheng',
atk:2,
hp:10,
power:50, //每0.1秒增加1能量
speed:50,
uuid:1001, name:'护盾战士', type:1, level:1,prefab_path:1001,atk:1,atk_cd:1.5, hp:20, power:50, speed:50,
skill:{ }
},
1002:{
uuid:1002, name:'无名法师', type:2, level:1,prefab_path:1002,atk:3,atk_cd:1.5, hp:10, power:50, speed:50,
skill:{ }
},
1003:{
uuid:1003, name:'无名战士', type:1, level:1,prefab_path:1003,atk:2, atk_cd:1.5, hp:15, power:50, speed:50,
skill:{ }
},
1102:{
uuid:1102, name:'骷髅士兵', type:1, level:1,prefab_path:1102,atk:2,atk_cd:1.5, hp:10, power:50, speed:50,
skill:{ }
},
1004:{
uuid:1004, name:'火焰法师', type:2, level:2,prefab_path:1004,atk:4,atk_cd:1.5, hp:15, power:50, speed:50,
skill:{ }
},
1201:{
uuid:1201, name:'猎寻狼', type:1, level:2,prefab_path:1201,atk:5,atk_cd:1.5, hp:20, power:100, speed:100,
skill:{ }
},
}

View File

@@ -5,13 +5,15 @@ import { smc } from "../common/SingletonModuleComp";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { HeroCard } from "../monster/HeroCard";
import { HeroCardViewComp } from "../monster/HeroCardViewComp";
import { RandomManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/random/RandomManager";
import { CardList } from "../common/config/CardSet";
const { ccclass, property } = _decorator;
/** 视图层对象 */
@ccclass('ControllerComp')
@ecs.register('Controller', false)
export class ControllerComp extends CCComp {
/** 视图层逻辑代码分离演示 */
card_level = 1;
start() {
this.load_cards()
// var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象
@@ -29,7 +31,6 @@ export class ControllerComp extends CCComp {
smc.vm_data.shuaxin.min += smc.vm_data.shuaxin.speed*dt;
if (smc.vm_data.shuaxin.min >= smc.vm_data.shuaxin.max) {
smc.vm_data.shuaxin.min = 0;
// oops.message.dispatchEvent("do_add_hero",this)
this.load_cards()
}
}
@@ -44,12 +45,13 @@ export class ControllerComp extends CCComp {
let cards_node= this.node.getChildByName("cards")
let x=0
let y=0
for (let i = 0; i < 5; i++) {
let lists = this.get_card_list()
lists.forEach(element => {
let card = ecs.getEntity<HeroCard>(HeroCard);
let pos = v3(x,y)
card.load(pos,1001,cards_node);
card.load(pos,element[0],cards_node);
x=x+120
}
});
this.node.getChildByName("cards").getChildByName("active").active = false
}
/** 转场 */
@@ -57,6 +59,14 @@ export class ControllerComp extends CCComp {
this.shuaxin(dt)
}
get_card_list(){
let lists:any = []
for (let index = 0; index < 5; index++) {
let list = RandomManager.instance.getRandomByObjectList(CardList[this.card_level], 1);
lists.push(list)
}
return lists
}
/** 视图对象通过 ecs.Entity.remove(ControllerComp) 删除组件是触发组件处理自定义释放逻辑 */
reset() {
this.node.destroy();

View File

@@ -60,7 +60,10 @@ export class MapViewComp extends CCComp {
this.gold_add(dt)
}
monster_refresh(){
this.addMonster(1001)
if(smc.monsters.length > 0 ){
this.addMonster(smc.monsters[0].uuid)
}
}
gold_add(dt: number) {
smc.vm_data.gold.time += dt;
@@ -88,10 +91,11 @@ export class MapViewComp extends CCComp {
}
private addMonster(uuid:number=1001) {
this.scene.node.active = true
let monster = ecs.getEntity<Monster>(Monster);
let pos:Vec3 = v3(BoxSet.MONSTER_START,BoxSet.GAME_LINE)
let camp = -1
monster.load(pos,camp,uuid);
let monster = ecs.getEntity<Monster>(Monster);
let pos:Vec3 = v3(BoxSet.MONSTER_START,BoxSet.GAME_LINE)
let camp = -1
monster.load(pos,camp,uuid);
smc.monsters.splice(0,1)
}

View File

@@ -5,7 +5,7 @@
* @LastEditors: dgflash
* @LastEditTime: 2022-08-04 15:43:04
*/
import { instantiate, Node, Prefab, Vec3,v3,resources,SpriteFrame,Sprite} from "cc";
import { instantiate, Node, Prefab, Vec3,v3,resources,SpriteFrame,Sprite,SpriteAtlas} from "cc";
import { UICallbacks } from "../../../../extensions/oops-plugin-framework/assets/core/gui/layer/Defines";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
@@ -48,11 +48,11 @@ export class Hero extends ecs.Entity {
node.getChildByName("avatar").setScale(node.getChildByName("avatar").scale.x*camp, node.getChildByName("avatar").scale.y, node.getChildByName("avatar").scale.z);
node.setPosition(pos)
// console.log(node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite))
const url = 'game/heros/hero/'+CardSet[uuid].prefab_path+'/spriteFrame';
resources.load(url, SpriteFrame, (err: any, spriteFrame) => {
const url = 'game/heros/hero/heros';
resources.load(url, SpriteAtlas, (err: any, atlas) => {
const sprite = node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite);
sprite.spriteFrame = spriteFrame;
sprite.spriteFrame = atlas.getSpriteFrame(CardSet[uuid].prefab_path);
});
this.hero_init(uuid,node)
oops.message.dispatchEvent("hero_load",this)
@@ -62,6 +62,12 @@ export class Hero extends ecs.Entity {
var mv = node.getComponent(MonsterViewComp)!;
mv.speed =mv.ospeed = CardSet[uuid].speed;
mv.hero_name= CardSet[uuid].name;
mv.hp= mv.hp_max = CardSet[uuid].hp;
mv.level = CardSet[uuid].level;
mv.atk = CardSet[uuid].atk;
mv.atk_cd = CardSet[uuid].atk_cd;
mv.power = CardSet[uuid].power;
mv.type = CardSet[uuid].type;
mv.Tpos = v3(0,0,0);
mv.camp = 1;
mv.change_name(CardSet[uuid].name,1)

View File

@@ -5,7 +5,7 @@
* @LastEditors: dgflash
* @LastEditTime: 2022-08-04 15:43:04
*/
import { instantiate, Node, Prefab, Vec3 ,tween, v3,Collider2D,Contact2DType,PhysicsSystem2D,IPhysics2DContact, animation,Label,resources,SpriteFrame,Sprite} from "cc";
import { instantiate, Node, Prefab, Vec3 ,tween, v3,SpriteAtlas,Label,resources,SpriteFrame,Sprite} from "cc";
import { UICallbacks } from "../../../../extensions/oops-plugin-framework/assets/core/gui/layer/Defines";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
@@ -34,6 +34,7 @@ export class HeroCard extends ecs.Entity {
/** 加载角色 */
load(pos: Vec3 = Vec3.ZERO,uuid:number=1001,parent:Node) {
console.log("load hero",uuid);
// var path = "game/monster/"+prefab_path;
var path = "game/heros/cards/hero_card";
var prefab: Prefab = oops.res.get(path, Prefab)!;
@@ -42,17 +43,17 @@ export class HeroCard extends ecs.Entity {
// node.getChildByName("avatar").setScale(node.getChildByName("avatar").scale.x*camp, node.getChildByName("avatar").scale.y, node.getChildByName("avatar").scale.z);
node.setPosition(pos)
const url = 'game/heros/hero/heros';
resources.load(url, SpriteAtlas, (err: any, atlas) => {
const sprite = node.getChildByName("hero").getComponent(Sprite);
sprite.spriteFrame = atlas.getSpriteFrame(CardSet[uuid].prefab_path);
});
var hcv = node.getComponent(HeroCardViewComp)!;
hcv.card_name=CardSet[uuid].name
hcv.card_uid=uuid
this.add(hcv);
// // console.log(node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite))
// const url = 'game/heros/hero/'+prefab_path+'/spriteFrame';
// resources.load(url, SpriteFrame, (err: any, spriteFrame) => {
// const sprite = node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite);
// sprite.spriteFrame = spriteFrame;
// });
}

View File

@@ -5,7 +5,7 @@
* @LastEditors: dgflash
* @LastEditTime: 2022-08-04 15:43:04
*/
import { instantiate, Node, Prefab, Vec3 ,v3,resources,SpriteFrame,Sprite,} from "cc";
import { instantiate, Node, Prefab, Vec3 ,v3,resources,SpriteFrame,Sprite,SpriteAtlas} from "cc";
import { UICallbacks } from "../../../../extensions/oops-plugin-framework/assets/core/gui/layer/Defines";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
@@ -48,11 +48,11 @@ export class Monster extends ecs.Entity {
node.getChildByName("avatar").setScale(node.getChildByName("avatar").scale.x*camp, node.getChildByName("avatar").scale.y, node.getChildByName("avatar").scale.z);
node.setPosition(pos)
// console.log(node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite))
const url = 'game/heros/hero/'+CardSet[uuid].prefab_path+'/spriteFrame';
resources.load(url, SpriteFrame, (err: any, spriteFrame) => {
const url = 'game/heros/hero/heros';
resources.load(url, SpriteAtlas, (err: any, atlas) => {
const sprite = node.getChildByName("avatar").getChildByName("TNode").getChildByName("bb").getComponent(Sprite);
sprite.spriteFrame = spriteFrame;
sprite.spriteFrame = atlas.getSpriteFrame(CardSet[uuid].prefab_path);
});
this.hero_init(uuid,node)
oops.message.dispatchEvent("monster_load",this)
@@ -61,6 +61,12 @@ export class Monster extends ecs.Entity {
var mv = node.getComponent(MonsterViewComp)!;
mv.speed =mv.ospeed = CardSet[uuid].speed;
mv.hero_name= CardSet[uuid].name;
mv.hp= mv.hp_max = CardSet[uuid].hp;
mv.level = CardSet[uuid].level;
mv.atk = CardSet[uuid].atk;
mv.atk_cd = CardSet[uuid].atk_cd;
mv.power = CardSet[uuid].power;
mv.type = CardSet[uuid].type;
mv.camp = -1;
mv.Tpos = v3(0,0,0);
mv.change_name(CardSet[uuid].name,-1)

View File

@@ -18,6 +18,7 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
import { baseCom } from "../skills/baseCom";
import { Skill } from "../skills/Skill";
import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer";
import { SkillCom } from "../skills/SkillCom";
const { ccclass, property } = _decorator;
/** 角色显示组件 */
@@ -27,6 +28,7 @@ export class MonsterViewComp extends CCComp {
/** 角色动画 */
as: MonsterSpine = null!;
hero_name : string = "hero";
level:number =1;
camp: number = 1; /** 角色阵营 1hero -1 :monster */
type: number = 1; /**角色类型 1前排 2 后排 */
state: number = 1; /** 状态 1move ,2: act 3: stop */
@@ -90,8 +92,10 @@ export class MonsterViewComp extends CCComp {
// }
onPostSolve (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) {
if(otherCollider.group== BoxSet.HERO_SKILL || otherCollider.group== BoxSet.MONSTER_SKILL){
let skill = otherCollider.node.getComponent(SkillCom)!;
// console.log('onPostSolve',skill);
this.in_atked();
this.hp_change(10);
this.hp_change(skill.atk);
}
// switch (selfCollider.group) {
// case BoxSet.HERO: