1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { _decorator, Label, Node } from 'cc';
- import { Singleton } from './Singleton';
- import { Constants } from '../../data/Constants';
- import { userIns } from '../../data/UserData';
- import { Utils } from '../../utils/Utils';
- const { ccclass, property } = _decorator;
- @ccclass('StateManager')
- class StateManager extends Singleton{
- //存储状态字段与 UI 组件的绑定关系
- private uiBindings: Map<string, Label[]> = new Map();
-
- /**
- * 注册UI组件
- * @param field 注册的key uiName
- * @param label 具体的文本
- */
- public registerUI(field: string, label: Label|any): void {
- if(!this.uiBindings.has(field)) {
- this.uiBindings.set(field, []);
- }
- //将UI组件添加到绑定列表
- let uiArr:Array<any> = this.uiBindings.get(field);
- if(!uiArr.includes(label)){
- uiArr.push(label);
- }
- //初始化UI显示
- this.updateSingleUI(field, label);
- }
- /**
- * 全局更新所有绑定该字段
- * @param field 注册的key uiName
- */
- public updateAllUI(field: string): void {
- let labels:Array<any> = this.uiBindings.get(field);
- if (labels) {
- labels.forEach(label => {
- this.updateSingleUI(field, label);
- });
- }
- }
- /**
- * 更新单个UI组件
- * @param field
- * @param label
- */
- private updateSingleUI(field: string, com: Label|any): void {
- if(field == Constants.gold){//金币数量
- com.string = `${Utils.numberToString(userIns.data.gold)}`;
- }else if(field == Constants.diamond){//钻石数量
- com.string = `${Utils.numberToString(userIns.data.diamond)}`;
- }else if(field == Constants.levelTask){//任务数据变化
- }
- }
- }
- //全局单例
- export const stateMgr = StateManager.ins();
|