123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- import { _decorator, Component, Node, ButtonComponent, EventTouch, director, SkeletalAnimationComponent, Prefab, instantiate, LayoutComponent, LabelComponent } from 'cc';
- import { GUIMediator } from '../../../engines/gui/GUIMediator';
- import { GUIManager } from '../../../engines/gui/GUIManager';
- import { UIConst } from '../UIConst';
- import { GameController } from './GameController';
- import { GameModel } from '../../models/GameModel';
- import { WeaponBase } from './weapons/WeaponBase';
- import GameConfigManager from '../../models/GameConfigManager';
- const { ccclass, property } = _decorator;
- @ccclass('FightingMediator')
- export class FightingMediator extends GUIMediator {
-
- @property({
- type:Prefab
- })
- BulletUIPrefab:Prefab=null;
- @property({
- type:Node
- })
- BulletClip:Node=null;
- @property({
- type:ButtonComponent
- })
- leftFireButton:ButtonComponent=null;
- @property({
- type:ButtonComponent
- })
- middleFireButton:ButtonComponent=null;
- @property({
- type:ButtonComponent
- })
- rightFireButton:ButtonComponent=null;
- @property({
- type:Node
- })
- killCountGroup:Node=null;
- @property({
- type:LabelComponent
- })
- killCountText:LabelComponent=null;
- @property({
- type:LabelComponent
- })
- monsterCountText:LabelComponent=null;
- /**
- * 第几天
- */
- @property({
- type:LabelComponent
- })
- levelLabel:LabelComponent=null;
- /**
- * 弹夹子弹池
- */
- bulletPool:Node[]=[];
-
- start () {
- // Your initialization goes here.
- }
- OnShow():void{
- this.AddEvents();
- this.RefreshBulletClip();
- this.RefreshKillCount();
- }
- OnHide():void{
- this.RemoveEvents();
- }
- private AddEvents():void{
- this.leftFireButton.node.on(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.middleFireButton.node.on(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.rightFireButton.node.on(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.leftFireButton.node.on(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- this.middleFireButton.node.on(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- this.rightFireButton.node.on(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- GameController.single.weapon.AddEvent(WeaponBase.EVENT_BULLET_CHANGE,this,this.bulletCountChanged,0);
- GameModel.single.AddEvent(GameModel.KILL_COUNT_CHANGED,this,this.KillCountChangedHandler,0);
- }
- private RemoveEvents():void{
- this.leftFireButton.node.off(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.middleFireButton.node.off(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.rightFireButton.node.off(Node.EventType.TOUCH_START,this.FireButtonTouchStart,this);
- this.leftFireButton.node.off(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- this.middleFireButton.node.off(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- this.rightFireButton.node.off(Node.EventType.TOUCH_END,this.FireButtonTouchEnd,this);
- GameController.single.weapon.RemoveEvent(WeaponBase.EVENT_BULLET_CHANGE,this,this.bulletCountChanged);
- GameModel.single.RemoveEvent(GameModel.KILL_COUNT_CHANGED,this,this.KillCountChangedHandler);
- }
- private KillCountChangedHandler():void{
- this.RefreshKillCount();
- }
- /**
- * 刷新弹夹
- */
- RefreshBulletClip():void{
- while(this.BulletClip.children.length!=GameController.single.weapon.bulletCount){
- let bullet:Node;
- //增加
- if(this.BulletClip.children.length<GameController.single.weapon.bulletCount){
- bullet=this.CreateBullet();
- this.BulletClip.addChild(bullet);
- }else{//删除
- bullet=this.BulletClip.children[0];
- this.BulletClip.removeChild(bullet);
- this.DisposeBullet(bullet);
- }
- }
- }
- RefreshView():void{
- this.RefreshKillCount();
- this.RefreshMonsterCount();
- this.levelLabel.string="第"+GameModel.single.currentLevel+"天";
- }
-
- RefreshKillCount():void{
- this.killCountText.string=GameModel.single.killCount.toString();
- }
- RefreshMonsterCount():void{
- let levelConfig:any=GameConfigManager.GetLevelConfig(GameModel.single.currentLevel);
- let total:number=levelConfig.monsters.length;
- let sy:number=GameModel.single.killCount;
- this.monsterCountText.string=total-sy+"/"+total;
- }
-
- update (deltaTime: number) {
-
- }
- private currentFireButtonNode:Node;
- FireButtonTouchStart(e:EventTouch):void{
- this.currentFireButtonNode=e.target as Node;
- if(e.target==this.leftFireButton.node){
- GameController.single.TryFire(1);
- }else if(e.target==this.middleFireButton.node){
- GameController.single.TryFire(2);
- }else{
- GameController.single.TryFire(3);
- }
- }
- FireButtonTouchEnd(e:EventTouch):void{
- if(e.target!=this.currentFireButtonNode){
- return;
- }
- GameController.single.TryFire(0);
- }
- private bulletCountChanged():void{
- this.RefreshBulletClip();
- }
- /**
- * 从池中创建子弹
- */
- private CreateBullet():Node{
- if(this.bulletPool.length>0){
- return this.bulletPool.shift();
- }
- return instantiate(this.BulletUIPrefab);
- }
- private DisposeBullet(bullet:Node){
- if(this.bulletPool.indexOf(bullet)<0){
- this.bulletPool.push(bullet);
- }else{
- console.error("重复回收弹夹子弹");
- }
- }
- }
|