299 lines
12 KiB
TypeScript
299 lines
12 KiB
TypeScript
import { _decorator,Button,EventHandler,EventTouch,Label,NodeEventType,resources,Sprite,SpriteAtlas,v3 } 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 { 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";
|
|
import { HeroModelComp } from "../monster/HeroModelComp";
|
|
import { SkillSet } from "../common/config/SkillSet";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
/** 视图层对象 */
|
|
@ccclass('CardControllerComp')
|
|
@ecs.register('CardController', false)
|
|
export class CardControllerComp extends CCComp {
|
|
|
|
|
|
|
|
card_level:number = 1;
|
|
in_load:boolean = false
|
|
|
|
cards:any = {
|
|
1:{uuid:1101,type:1,alive:false},
|
|
2:{uuid:1102,type:1,alive:false},
|
|
3:{uuid:1103,type:1,alive:false},
|
|
4:{uuid:1104,type:1,alive:false},
|
|
5:{uuid:1105,type:1,alive:false},
|
|
6:{uuid:1106,type:1,alive:false},
|
|
}
|
|
protected onLoad(): void {
|
|
let card1 = this.node.getChildByName("cards").getChildByName("card1");
|
|
let card2 = this.node.getChildByName("cards").getChildByName("card2");
|
|
let card3 = this.node.getChildByName("cards").getChildByName("card3");
|
|
let card4 = this.node.getChildByName("cards").getChildByName("card4");
|
|
let card5 = this.node.getChildByName("cards").getChildByName("card5");
|
|
let card6 = this.node.getChildByName("cards").getChildByName("card6");
|
|
// info_button.on(NodeEventType.TOUCH_START, this.onTouchMove, this);
|
|
// info_button.on(NodeEventType.TOUCH_MOVE, this.onTouchMove, this);
|
|
card1.on(NodeEventType.TOUCH_START, this.touch1, this);
|
|
card1.on(NodeEventType.TOUCH_MOVE, this.touch1, this);
|
|
card2.on(NodeEventType.TOUCH_START, this.touch2, this);
|
|
card2.on(NodeEventType.TOUCH_MOVE, this.touch2, this);
|
|
card3.on(NodeEventType.TOUCH_START, this.touch3, this);
|
|
card3.on(NodeEventType.TOUCH_MOVE, this.touch3, this);
|
|
card4.on(NodeEventType.TOUCH_START, this.touch4, this);
|
|
card4.on(NodeEventType.TOUCH_MOVE, this.touch4, this);
|
|
card5.on(NodeEventType.TOUCH_START, this.touch5, this);
|
|
card5.on(NodeEventType.TOUCH_MOVE, this.touch5, this);
|
|
card6.on(NodeEventType.TOUCH_START, this.touch6, this);
|
|
card6.on(NodeEventType.TOUCH_MOVE, this.touch6, this);
|
|
|
|
card1.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card1.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
card2.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card2.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
card3.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card3.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
card4.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card4.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
card5.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card5.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
card6.on(NodeEventType.TOUCH_END, this.onTouchEnd, this);
|
|
card6.on(NodeEventType.TOUCH_CANCEL, this.onTouchEnd, this);
|
|
|
|
const clickEventHandler = new EventHandler();
|
|
clickEventHandler.target = this.node; // 这个 node 节点是你的事件处理代码组件所属的节点
|
|
clickEventHandler.component = 'CardControllerComp';// 这个是脚本类名
|
|
clickEventHandler.handler = 'user_card';
|
|
clickEventHandler.customEventData = 'foobar';
|
|
|
|
const button1 = this.node.getChildByName('cards').getChildByName('card1').getComponent(Button);
|
|
const button2 = this.node.getChildByName('cards').getChildByName('card2').getComponent(Button);
|
|
const button3 = this.node.getChildByName('cards').getChildByName('card3').getComponent(Button);
|
|
const button4 = this.node.getChildByName('cards').getChildByName('card4').getComponent(Button);
|
|
const button5 = this.node.getChildByName('cards').getChildByName('card5').getComponent(Button);
|
|
const button6 = this.node.getChildByName('cards').getChildByName('card6').getComponent(Button);
|
|
button1.clickEvents.push(clickEventHandler);
|
|
button2.clickEvents.push(clickEventHandler);
|
|
button3.clickEvents.push(clickEventHandler);
|
|
button4.clickEvents.push(clickEventHandler);
|
|
button5.clickEvents.push(clickEventHandler);
|
|
button6.clickEvents.push(clickEventHandler);
|
|
|
|
}
|
|
start() {
|
|
this.load_cards()
|
|
// var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象
|
|
// this.on(ModuleEvent.Cmd, this.onHandler, this);
|
|
}
|
|
|
|
/** 全局消息逻辑处理 */
|
|
// private onHandler(event: string, args: any) {
|
|
// switch (event) {
|
|
// case ModuleEvent.Cmd:
|
|
// break;
|
|
// }
|
|
// }
|
|
touch1(event: EventTouch) {
|
|
console.log("touch 1");
|
|
}
|
|
|
|
touch2(event: EventTouch) {
|
|
console.log("touch 2");
|
|
}
|
|
|
|
touch3(event: EventTouch) {
|
|
console.log("touch 3");
|
|
}
|
|
|
|
touch4(event: EventTouch) {
|
|
console.log("touch 4");
|
|
}
|
|
|
|
touch5(event: EventTouch) {
|
|
console.log("touch 5");
|
|
}
|
|
|
|
touch6(event: EventTouch) {
|
|
console.log("touch 6");
|
|
}
|
|
show_info(uuid:number,type:number){
|
|
console.log("show_info",uuid)
|
|
let node =this.node.getChildByName("item_box")
|
|
if(type == 2){
|
|
smc.vm_data.item_box.info = SkillSet[uuid].info
|
|
smc.vm_data.item_box.name = SkillSet[uuid].name
|
|
smc.vm_data.item_box.skillcd = SkillSet[uuid].cd
|
|
smc.vm_data.item_box.skillsd = SkillSet[uuid].sd
|
|
smc.vm_data.item_box.atk = SkillSet[uuid].atk
|
|
smc.vm_data.item_box.hp = SkillSet[uuid].hp
|
|
node.active=true
|
|
}
|
|
if(type == 3){
|
|
console.log(SkillSet[uuid])
|
|
smc.vm_data.item_box.info = SkillSet[uuid].info
|
|
smc.vm_data.item_box.name = SkillSet[uuid].name
|
|
smc.vm_data.item_box.skillcd = SkillSet[uuid].cd
|
|
smc.vm_data.item_box.skillsd = SkillSet[uuid].sd
|
|
smc.vm_data.item_box.atk = SkillSet[uuid].atk
|
|
smc.vm_data.item_box.hp = SkillSet[uuid].hp
|
|
smc.vm_data.item_box.shield = SkillSet[uuid].shield
|
|
node.active=true
|
|
if(SkillSet[uuid].shield > 0){
|
|
node.getChildByName("data").getChildByName("shield").active=true
|
|
}
|
|
if(SkillSet[uuid].hp > 0){
|
|
node.getChildByName("data").getChildByName("hp").active=true
|
|
}
|
|
}
|
|
}
|
|
onTouchEnd(){
|
|
let node = this.node.getChildByName("item_box")
|
|
node.active=false
|
|
node.getChildByName("data").getChildByName("shield").active=false
|
|
node.getChildByName("data").getChildByName("hp").active=false
|
|
}
|
|
shuaxin(dt: number) {
|
|
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;
|
|
this.load_cards()
|
|
}
|
|
}
|
|
// cards_update(){
|
|
// if(smc.vm_data.gold.min >= smc.vm_data.cards.up_cost){
|
|
// smc.vm_data.gold.min -= smc.vm_data.cards.up_cost;
|
|
// smc.vm_data.cards.level += 1;
|
|
// smc.vm_data.gold.max +=2;
|
|
// smc.vm_data.cards.up_cost += 2
|
|
// if(smc.vm_data.cards.level >= smc.vm_data.cards.level_max){
|
|
// smc.vm_data.cards.level = smc.vm_data.cards.level_max;
|
|
// smc.vm_data.cards.up_cost = 11
|
|
// }
|
|
// console.log("card _level:"+this.card_level+"cost:"+smc.vm_data.cards.up_cost)
|
|
// }else{
|
|
// oops.gui.toast("金币不够");
|
|
// }
|
|
// }
|
|
palyer_ref(){
|
|
if (this.in_load) {
|
|
return
|
|
}
|
|
if((smc.vm_data.shuaxin.max-smc.vm_data.shuaxin.min) < 0.5 ){
|
|
oops.gui.toast("马上就要刷新了")
|
|
return
|
|
}
|
|
if(smc.vm_data.shuaxin.min < 0.5){
|
|
oops.gui.toast("不要刷新太快哦")
|
|
return
|
|
}
|
|
if (smc.vm_data.gold.min < smc.vm_data.cards.ref_cost) {
|
|
oops.gui.toast("金币不足")
|
|
return
|
|
}
|
|
smc.vm_data.gold.min -= smc.vm_data.cards.ref_cost;
|
|
this.load_cards()
|
|
smc.vm_data.shuaxin.min = -5
|
|
if(smc.vm_data.shuaxin.min <=0 ){
|
|
smc.vm_data.shuaxin.min = 0
|
|
}
|
|
}
|
|
load_cards() {
|
|
this.in_load = true
|
|
let card:any=null
|
|
for (let index = 1; index <= 6; index++) {
|
|
card=RandomManager.instance.getRandomByObjectList(CardList, 1);
|
|
this.cards[index].uuid=card[0].uuid
|
|
this.cards[index].type=card[0].type
|
|
let url: string = "";
|
|
let pathName: string = "";
|
|
let name: string = "";
|
|
let level: number = 0;
|
|
let { uuid, type } = card[0];
|
|
switch (type) {
|
|
case 1:
|
|
url = "game/heros/heros";
|
|
({ path: pathName, name, level } = smc.heros[uuid]);
|
|
break;
|
|
case 2:
|
|
url = "game/heros/skill";
|
|
({ path: pathName, name, level } = smc.skills[uuid]);
|
|
break;
|
|
case 3:
|
|
default:
|
|
url = "game/heros/skill";
|
|
({ path: pathName, name, level } = smc.skills[uuid]);
|
|
}
|
|
let node=this.node.getChildByName('cards').getChildByName('card'+index)
|
|
node.getChildByName('cost').getComponent(Label).string=level.toString()
|
|
node.getChildByName('name').getComponent(Label).string=name
|
|
// const sprite = node.getChildByName("item").getComponent(Sprite);
|
|
// console.log(this['card'+index],url,pathName,sprite)
|
|
resources.load(url, SpriteAtlas, (err: any, atlas) => {
|
|
const sprite = node.getChildByName("item").getComponent(Sprite);
|
|
sprite.spriteFrame = atlas.getSpriteFrame(pathName);
|
|
});
|
|
this.cards[index].alive=true
|
|
}
|
|
// console.log("cards:",this.cards)
|
|
this.in_load = false
|
|
}
|
|
load_card(){
|
|
|
|
}
|
|
|
|
use_card(event:Event,index: number){
|
|
this.cards[index].alive=false
|
|
this.check_card(index)
|
|
console.log("cards:",this.cards)
|
|
}
|
|
check_card(index:number){
|
|
let heros = ecs.query(ecs.allOf(HeroModelComp))
|
|
// let heross= ecs.query(ecs.allOf(MonsterViewComp))
|
|
// console.log("heross",heross)
|
|
if(heros.length >= 4&&this.cards[index].type == 1){
|
|
oops.gui.toast("英雄数量达到上限");
|
|
return;
|
|
}
|
|
if(smc.vm_data.gold.min >= this.card_level){
|
|
this.cards[index].alive=false
|
|
this.do_use_card(index)
|
|
smc.vm_data.gold.min -= this.card_level;
|
|
}else{
|
|
oops.gui.toast("金币不够");
|
|
|
|
}
|
|
}
|
|
do_use_card(index:number){
|
|
switch (this.cards[index].type) {
|
|
case 1:
|
|
oops.message.dispatchEvent("do_add_hero", { uuid: this.cards[index].uuid });
|
|
break;
|
|
case 2:
|
|
oops.message.dispatchEvent("do_use_skill", { uuid: this.cards[index].uuid });
|
|
break;
|
|
case 3:
|
|
oops.message.dispatchEvent("do_use_skill", { uuid: this.cards[index].uuid });
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
protected update(dt: number): void {
|
|
this.shuaxin(dt)
|
|
}
|
|
|
|
get_card_list(){
|
|
let list = RandomManager.instance.getRandomByObjectList(CardList, 1);
|
|
return list
|
|
}
|
|
|
|
/** 视图对象通过 ecs.Entity.remove(ControllerComp) 删除组件是触发组件处理自定义释放逻辑 */
|
|
reset() {
|
|
this.node.destroy();
|
|
}
|
|
} |