123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import { _decorator, Color, Component, Label, Node, Tween, tween, v3 } from 'cc';
- import { TimeUtil } from '../util/TimeUtil';
- import { EventMgr } from '../manager/EventMgr';
- import { EventType } from '../enum/EventType';
- import { GameMgr } from '../manager/GameMgr';
- import { Debug } from '../util/Debug';
- import { Global } from '../Global';
- const { ccclass, property } = _decorator;
- const Tag: string = 'TimeItem'
- @ccclass('UIItem/TimeItem')
- export class TimeItem extends Component {
- @property(Node)
- private nz: Node = null
- private _label: Label = null
- private leftTime: number = 0
- public get LeftTime(): number {
- return this.leftTime
- }
- public set LeftTime(v: number) {
- this.leftTime = Math.max(v, 0)
- EventMgr.emit(EventType.TimeTick, this.leftTime)
- this._label.string = TimeUtil.formatTime_HHMMSS(Math.round(this.leftTime) * 1000)
- this._label.color = this.leftTime <= 5 ? Color.RED : Color.WHITE
- }
- private _freezeTime: number = 0
- private _freeze: boolean = false
- private _pause: boolean = false
- private _tw: Tween<Node> = null
- protected onLoad() {
- this._label = this.getComponentInChildren(Label)
- globalThis.TimeItem = this
- EventMgr.on(EventType.Revive, this.onRevive, this)
- EventMgr.on(EventType.UseSkillFreezeTime, this.onUseSkillFreeze, this)
- EventMgr.on(EventType.TimeReset, this.onTimeReset, this)
- }
- protected onDestroy(): void {
- EventMgr.off(EventType.Revive, this.onRevive, this)
- EventMgr.off(EventType.UseSkillFreezeTime, this.onUseSkillFreeze, this)
- EventMgr.off(EventType.TimeReset, this.onTimeReset, this)
- }
- protected update(dt: number): void {
- if (this._pause) return
- if (GameMgr.Pause) return
- if (Global.Level_Time === -1) return
- if (this._freeze) {
- this._freezeTime -= dt
- if (this._freezeTime <= 0) {
- this._freeze = false
- Debug.Log(Tag, '结束冰冻')
- }
- } else {
- const preTime: number = this.leftTime
- this.LeftTime -= dt
- if (preTime > Global.Time_Out_Alert_Time && this.leftTime <= Global.Time_Out_Alert_Time) {
- EventMgr.emit(EventType.TimeOutAlert)
- if (this._tw) this._tw.stop()
- this._tw = tween(this.nz).sequence(
- tween(this.nz).to(0.5, { scale: v3(1.2, 1.2, 1) }),
- tween(this.nz).to(0.5, { scale: v3(1, 1, 1) }),
- ).repeatForever().start()
- }
- if (this.leftTime <= 0) {
- this._pause = true
- EventMgr.emit(EventType.TimeOut)
- }
- }
- }
- protected onTimeReset(): void {
- this._pause = false
- this.LeftTime = Global.Level_Time
- this.nz.scale = v3(1, 1, 1)
- if (this._tw) {
- this._tw.stop()
- this._tw = null
- }
- }
- protected onRevive(): void {
- this._pause = false
- this.LeftTime = Global.Revive_Add_Time
- this.nz.scale = v3(1, 1, 1)
- if (this._tw) {
- this._tw.stop()
- this._tw = null
- }
- }
- protected onUseSkillFreeze(): void {
- this._freeze = true
- this._freezeTime = Global.Freeze_Time
- Debug.Log(Tag, '开始冰冻')
- }
- }
|