public Task QuitGameAsync(QuitGameRequest request) { string userId = ExtractUserId(); // If game is vs computer delete it. If it's vs another player, send them notification then delete it. // TODO: Factorize duplicate authorization code GameState gameState = null; bool gameExists = serverState.Exists(request.GameId); bool validUserId = false; if (gameExists) { gameState = serverState.GetGameState(request.GameId); validUserId = gameState.Player1.Id == userId || gameState.Player2.Id == userId; } if (!gameExists || !validUserId) { return(Task.CompletedTask); } return(HandlePlayerLeftGameAsync(userId, gameState)); }
void Awake() { Joystick = transform.Find("Joystick").GetComponent <ETCJoystick>(); showTimerRequest = GetComponent <ShowTimerRequest>(); startPlayRequest = GetComponent <StartPlayRequest>(); gameOverRequest = GetComponent <GameOverRequest>(); quitBattleRequest = GetComponent <QuitBattleRequest>(); quitGameRequest = GetComponent <QuitGameRequest>(); destroyRequest = GetComponent <DestroyRequest>(); gameChatRequest = GetComponent <GameChatRequest>(); knapsack = transform.Find("KnapsackPanel").GetComponent <Knapsack>(); for (int i = 0; i < 3; i++) { skillPos.Add(transform.Find("Skill" + i)); } roleSelectPanel = transform.Find("RoleSelectPanel"); timer = transform.Find("TimerPanel/Time").GetComponent <Text>(); gameOverText = transform.Find("GameOverPanel/GameOver").GetComponent <Text>(); closeButton = transform.Find("GameOverPanel/CloseButton").GetComponent <Button>(); closeButton.onClick.AddListener(OnCloseClick); EffectDict = facade.GetEffectDict(); SkillItemDict = facade.GetSkillItemDict(); transform.Find("SettingPanel/QuitGameButton").GetComponent <Button>().onClick.AddListener(OnQuitGameClick); chatDialog = transform.Find("ChatDialog"); sendButton = transform.Find("ChatDialog/InputPanel/SendButton"); chatButton = transform.Find("ChatDialog/ChatButton").GetComponent <Button>(); inputField = transform.Find("ChatDialog/InputPanel/InputField").GetComponent <InputField>(); sendButton.GetComponent <Button>().onClick.AddListener(OnSendClick); chatButton.onClick.AddListener(OnChatClick); inputField.onEndEdit.AddListener(x => OnSendClick()); OtherPlayerChatMsgItem = Resources.Load <GameObject>("UIItem/Chat/OtherPlayerChatMsgItem"); LocalPlayerChatMsgItem = Resources.Load <GameObject>("UIItem/Chat/LocalPlayerChatMsgItem"); ChangeSeatItem = Resources.Load <GameObject>("UIItem/ChangeSeatItem"); }