12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { _decorator, Color, Component, Label, Node, ProgressBar, Size, Tween, tween, UITransform } from 'cc';
- import { ui_base } from './ui_base';
- import { boss_info_data } from '../../../data/data';
- import { tools } from '../../tools';
- import { gameManager } from '../gameManager';
- import { ClientEvent } from '../../clientEvent';
- import { config } from '../../config';
- const { ccclass, property } = _decorator;
- @ccclass('ui_boss_info')
- export class ui_boss_info extends ui_base {
- @property(Node) bg:Node = null;
- @property(Node) bg_bar:Node = null;
- @property(Node) bar:Node = null;
- @property(Node) head:Node = null;
- @property(Node) hp_ani:Node = null;
- private mBossData:boss_info_data = null;
- private bossHp:number = 0;
- protected init(): void {
- this.mBossData = this.mTopData._boss_info_data;
- if(this.mBossData===null){
- return tools.showToast("boss 配置错误!")
- }
- this.loadBg(this.mBossData.bg)
- gameManager.initUiBaseAtt(this.bg_bar,this.mBossData.bg_bar)
- gameManager.initUiBaseAtt(this.bar,this.mBossData.bar)
- gameManager.initUiBaseAtt(this.head,this.mBossData.head)
- this.bg_bar.getComponent(ProgressBar).totalLength = this.bg_bar.getComponent(UITransform).width
- this.bossHp = this.mBossData.hp;
- this.bg_bar.getComponent(ProgressBar).progress = 1;
- ClientEvent.on(config.EventRun.ON_BOSS_HURT,this.hurt.bind(this),this)
- }
- protected onDisable(): void {
- ClientEvent.off(config.EventRun.ON_BOSS_HURT,this.hurt.bind(this),this)
- this.unscheduleAllCallbacks()
- }
- hurt(hurt_num:number){
- if(hurt_num===0){
- tools.showToast("道具用完失败")
- this.onFialEvent()
- return;
- }
- let hp_delay_time = 0
- if(this.mBossData.hp_delay_time!=undefined) {
- hp_delay_time = this.mBossData.hp_delay_time
- }
- this.scheduleOnce(()=>{
- this.bossHp -= hurt_num;
- Tween.stopAllByTarget(this.hp_ani)
- this.hp_ani.getComponent(Label).string = `${hurt_num>0?"-":"+"}${Math.abs(hurt_num)}`
- this.hp_ani.active = true;
- this.hp_ani.getComponent(Label).color = hurt_num>0?Color.RED:Color.GREEN;
- tween(this.hp_ani).delay(2).call(()=>{
- this.hp_ani.active = false;
- }).start()
- if(this.bossHp>=this.mBossData.hp) {
- this.bossHp = this.mBossData.hp
- }
- let progress = this.bossHp/this.mBossData.hp
- this.bg_bar.getComponent(ProgressBar).progress = progress;
- if(this.bossHp<=0){
- tools.showToast("成功打死boss")
- this.onFinishEvent()
- ClientEvent.off(config.EventRun.ON_BOSS_HURT,this.hurt.bind(this),this)
- }
- },hp_delay_time)
- }
- }
|