Beispiel #1
0
    private void GameStateChanged(GameController.GameState state)
    {
        System.Text.StringBuilder debugInfo = new System.Text.StringBuilder();
        debugInfo.AppendLine("New game state is " + state.ToString());
        debugInfo.AppendLine(string.Format("Playing mission {0} of {1}",
                                           GameController.Instance.GameData.MissionList.Count + 1,
                                           GameController.Instance.GameData.NumberOfMissions));

        switch (state)
        {
        default:
        case GameController.GameState.Default:
            // Clear all UI
            foreach (IPlayer v in playerViews)
            {
                v.SetState(IPlayerState.Idle);
            }
            break;

        case GameController.GameState.TeamAssembly:
            foreach (IPlayer v in playerViews)
            {
                v.SetState(IPlayerState.Idle);
            }
            playerViews[GameController.Instance.LeaderId].PopulatePlayerPicker(
                GameController.Instance.PlayerList,
                GameController.Instance.CurrentMission.Settings.NumberOfAttendees);
            playerViews[GameController.Instance.LeaderId].SetState(IPlayerState.GroupAssembly);
            playerViews[GameController.Instance.LeaderId].OnTeamPicked += TeamPicked;

            debugInfo.AppendLine(string.Format("Going on a mission with {0} players.", GameController.Instance.CurrentMission.Settings.NumberOfAttendees));
            debugInfo.AppendLine(string.Format("This is attempt number {0} of {1}",
                                               GameController.Instance.CurrentMission.TeamCompositionVoteList.Count,
                                               GameController.Instance.CurrentMission.Settings.MaxVoteRounds));
            break;

        case GameController.GameState.TeamCompositionVote:
            // TODO show mission view stuff here

            foreach (IPlayer v in playerViews)
            {
                v.SetState(IPlayerState.GroupCompositionVote);
            }
            debugInfo.AppendLine(string.Format("This is voting attempt number {0} of {1}",
                                               GameController.Instance.CurrentMission.TeamCompositionVoteList.Count,
                                               GameController.Instance.CurrentMission.Settings.MaxVoteRounds));
            break;

        case GameController.GameState.MissionVote:
            Mission m = GameController.Instance.CurrentMission;
            for (int i = 0; i < playerViews.Count; i++)
            {
                if (m.MissionVoteList.Find((PlayerVote v) => { return(v.PlayerID == i); }) != null)
                {
                    playerViews[i].SetState(IPlayerState.MissionVote);
                }
                else
                {
                    playerViews[i].SetState(IPlayerState.Idle);
                }
            }
            break;

        case GameController.GameState.Finished:
            // TODO: Display who won
            debugInfo.AppendLine("Game is finished");
            debugInfo.AppendLine("This should show which team won, but it's not implemented yet");

            SceneManager.LoadScene(0);

            break;
        }

        debugLabel.text = debugInfo.ToString();
    }