1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { _decorator, Component, director, instantiate, Node } from 'cc';
- import { GameUILayers } from '../../scripts/GameUILayers';
- import { Layout_UIGameRank } from './Layout_UIGameRank';
- import { GameEvent, GameMgr } from '../../module_basic/scripts/GameMgr';
- import { TankGameRankItem } from './GameRankItem';
- import { ModuleDef } from '../../scripts/ModuleDef';
- import { MsgGameDataChangedPush } from '../../module_basic/shared/protocols/public/game/MsgGameDataChangedPush';
- import { TEAM_ID_MAP } from '../../module_basic/shared/types/TeamInfo';
- @tgx_class(ModuleDef.GAME)
- export class UIGameRank extends tgx.UIController {
- constructor(){
- super('ui_game_rank/ui_game_rank',GameUILayers.HUD,Layout_UIGameRank);
- }
-
- protected onCreated(): void {
- this.refreshRank();
- director.on(GameEvent.PLAYER_COMES,this.refreshRank,this);
- director.on(GameEvent.PLAYER_LEAVES,this.refreshRank,this);
- director.on(GameEvent.GAME_DATA_CHANGED,this.onGameDataChanged,this);
- }
- protected onDispose(): void {
- director.off(GameEvent.PLAYER_COMES,this.refreshRank,this);
- director.off(GameEvent.PLAYER_LEAVES,this.refreshRank,this);
- director.off(GameEvent.GAME_DATA_CHANGED,this.onGameDataChanged,this);
- }
- onGameDataChanged(msg:MsgGameDataChangedPush){
- if(msg.teamWeights != undefined){
- this.refreshRank();
- }
- }
- async refreshRank(){
- let teams = Object.keys(GameMgr.inst.gameData.teamsWeights);
- teams.sort((a,b)=>{
- return GameMgr.inst.gameData.teamsWeights[b] - GameMgr.inst.gameData.teamsWeights[a];
- });
- let layout = this._layout as Layout_UIGameRank;
- layout.listRoot.children.forEach((node)=>{
- node.active = false;
- });
- for(let i = 0; i < teams.length; ++i){
- let teamId = Number(teams[i]);
- let teamWeight = GameMgr.inst.gameData.teamsWeights[teamId];
- let teamName = TEAM_ID_MAP[teamId].name;
- let node = layout.listRoot.children[i];
- if(!node){
- node = instantiate(layout.listRoot.children[0]);
- layout.listRoot.addChild(node);
- }
- node.active = true;
- let item = node.getComponent(TankGameRankItem);
- item.setInfo(i+1,teamName,teamWeight,teamId);
- }
- }
- }
|