1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { _decorator, Button, Component, Label, Node } from 'cc';
- import { ModuleDef } from '../../scripts/ModuleDef';
- import { GameUILayers } from '../../scripts/GameUILayers';
- import { UITeam } from '../../module_basic/ui_team/UITeam';
- import { GameOverPlayerItem } from './GameOverPlayerItem';
- import { IGameData, IGamePlayer } from '../shared/protocols/public/game/GameTypeDef';
- import { UserMgr } from '../scripts/UserMgr';
- import { IRoomData } from '../shared/types/RoomData';
- const { ccclass, property } = _decorator;
- /**
- * @en Layout component is used to mount on the root node of the UI corresponding to the Prefab, and declare a series of property references for tgxUIController to call.
- * @zh Layout 组件用于挂载到UI对应的Prefab根节点,并声明一系列 property 引用,供 tgxUIController 调用。
- */
- @ccclass('Layout_UIGameOver')
- export class Layout_UIGameOver extends Component {
- @property(Button) btnBack:Button;
- @property(Button) btnPlay:Button;
- @property([GameOverPlayerItem]) players:GameOverPlayerItem[] = [];
- @property(Label) lblCongrats:Label;
- }
- @tgx_class(ModuleDef.BASIC)
- export class UIGameOver extends tgx.UIController {
- constructor(){
- super('ui_game_over/ui_game_over',GameUILayers.POPUP,Layout_UIGameOver);
- }
- public get layout():Layout_UIGameOver{
- return this._layout as Layout_UIGameOver;
- }
-
- protected onCreated(data:{gameData:IGameData,roomData:IRoomData}): void {
- this.onButtonEvent(this.layout.btnBack,()=>{
- this.close();
- });
- this.onButtonEvent(this.layout.btnPlay,()=>{
- this.layout.btnPlay.interactable = false;
- tgx.UIMgr.inst.showUI(UITeam,()=>{
- this.close();
- });
- });
- let gameData = data.gameData;
- let roomData = data.roomData;
- let teamMembers:IGamePlayer[] = [];
- let selfPlayer = gameData.players.find(v=>v.uid == UserMgr.inst.uid);
- gameData.players.forEach(p=>{
- if(p.teamId == selfPlayer.teamId){
- teamMembers.push(p);
- }
- });
- for(let i = 0; i < this.layout.players.length; ++i){
- let player = teamMembers[i];
- let playerCom = this.layout.players[i];
- if(player){
- let user = roomData.userList.find(v=>v.uid==player.uid);
- playerCom.setPlayer(teamMembers[i],user);
- }
- else{
- playerCom.lblRoleName.node.active = false;
- playerCom.lblUserName.node.active = false;
- }
- }
- let teams = [];
- for(let k in gameData.teamsWeights){
- teams.push({
- teamId:Number(k),
- score:gameData.teamsWeights[k]
- });
- }
- teams.sort((a,b)=>{
- return b.score - a.score;
- });
- let rank = 0;
- for(let i = 0; i < teams.length; ++i){
- if(teams[i].teamId == selfPlayer.teamId){
- rank = i+1;
- break;
- }
- }
- this.layout.lblCongrats.string = `你的队伍排名:第${rank}名!`
- }
- }
|