123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { _decorator, Node, Sprite, SpriteFrame} from 'cc';
- import { PoolManager } from '../core/manager/PoolManager';
- import { Game } from './Game';
- import { Constants } from '../data/Constants';
- import { BaseExp } from '../core/base/BaseExp';
- const { ccclass, property } = _decorator;
- @ccclass('BulletMagazine')
- export class BulletMagazine extends BaseExp {
- @property({type:Node,tooltip:"滚动内容"})
- public content: Node;
- @property({type:Node,tooltip:"子弹预制体"})
- public bullet: Node;
- @property({type:SpriteFrame,tooltip:"用过的子弹图片"})
- public use_sf: SpriteFrame;
- @property({type:SpriteFrame,tooltip:"正常的子弹图片"})
- public nor_sf: SpriteFrame;
- //当前子弹总数量
- private _magazineNum: number = 0;
- public set magazineNum(value: number) {
- this._magazineNum = value;
- this.loadMagazine()
- }
- public get magazineNum(): number {
- return this._magazineNum!;
- }
- //弹夹中的子弹图片节点
- public bullets: Node[] = [];
- start() {
- this.bullet.active = false;
- //更换弹夹
- this.register(Constants.eventName.magazine_num_change,this.loadMagazine.bind(this));
- }
- /**
- * 加载子弹 弹夹
- */
- public loadMagazine(){
- if(!Game.I.player.gun
- ||Game.I.isGameOver)return;
- this.recycle();
- const gData:any = Game.I.player.pData;
- let s_bullet: number = gData.magazine - Game.I.player.gun.shotBullets;
- for(let idx = 0; idx < this._magazineNum; idx++) {
- let n: Node = PoolManager.getNode(this.bullet,this.content);
- this.bullets.push(n);
- n.getChildByName("kd_sp").getComponent(Sprite).spriteFrame = idx < s_bullet ? this.nor_sf : this.use_sf;
- }
- }
- protected onDisable(): void {
- this.recycle();
- }
- public recycle(){
- this.bullets.forEach((item: Node) => {
- if(item.parent){
- PoolManager.putNode(item);
- }
- });
- this.bullets = [];
- }
- }
|