public void HandlePlayerJoin(Gamepad pad)
    {
        if (players.Count == 0)
        {
            FindObjectOfType <MenuManager>().SkipMainMenuScreen();
        }

        if (!players.Any(p => p.config.Input.gamepad == pad))
        {
            var player = Instantiate(playerPreFab.gameObject, transform).GetComponent <PlayerController>();

            var config = new PlayerConfiguration(players.Count);
            config.info  = PlayerLevelingManager.Instance.GetLastPlayerInfo(config.PlayerIndex);
            config.Input = new PlayerInputMethod(player, pad);
            players.Add(player);

            player.config = config;

            if (GameSettings.gameMode.IsTeamBased)
            {
                player.config.Team = GameSettings.gameMode.TeamScores[player.config.PlayerIndex % GameSettings.gameMode.NumberOfTeams];
                FindObjectOfType <JoinRoomManager>().ChangeTeam(player);
            }
            else
            {
                GamemodeBase.AutoAssignTeams();
            }

            StartCoroutine(SetPlayerColorAfterPlayerEnableCall(player));
            RecalculateUsedAndUnusedGamepads();
        }
    }
Example #2
0
 public void ResetForNextRound()
 {
     GamemodeBase.ResetForNextRound();
     foreach (var flag in ctfFlags)
     {
         flag.ResetFlagOnRoundEnd();
     }
 }
Example #3
0
        private void OnEnable()
        {
            var page = Instantiate(GameSettingPage, gameObject.transform);

            page.Data = Gamemode = FengGameManagerMKII.Gamemode;
            page.Initialize();
            Pages.Add(page);
            Pages[0].gameObject.SetActive(true);
            ServerSettingsPage.gameObject.SetActive(false);
        }
Example #4
0
    public void OnPlayerScoredObjective(PlayerController player)
    {
        var flag = player.gamemodeExtraInfo.CarryingFlag;

        GamemodeBase.OnPlayerScoredObjective(player, pointsForScoringObjective);

        flag.carryingPlayer = null;
        flag.ReturnOwnFlagToHomeBase();

        player.gamemodeExtraInfo.CarryingFlag = null;
        player.gamemodeExtraInfo.flagsCaptured++;
    }
    public void SaveStatsOnGameEnd()
    {
        GamemodeBase.CopyGenericPlayerStatsOnGameEnd();

        // TODO: klappt das mit den Teams?
        foreach (var team in GameSettings.gameMode.TeamScores)
        {
            foreach (var player in team.Players)
            {
                if (team.HasTheMostWonRounds)
                {
                    player.config.info.xp += 25;
                }

                player.config.info.xp += player.playerStats.kills * 5;
            }
        }
    }
Example #6
0
    public void InitializeInLevel()
    {
        GameModeUi = Instantiate(uiPreFab, FindObjectOfType <Canvas>().transform).GetComponent <IGameModeUi>();

        GamemodeBase.InitializeInLevel();

        for (int i = 0; i < GameSettings.gameMode.NumberOfTeams; i++)
        {
            var flag = Instantiate(ctfFlagPreFab.gameObject, GameManager.Instance.activeMap.ctfFlagSpawns[i].position, Quaternion.identity)
                       .GetComponent <CtfFlag>();
            var team = GameSettings.gameMode.TeamScores.SingleOrDefault(t => t.teamId == i);
            if (team != null)
            {
                flag.Initialize(team, GameManager.Instance.activeMap.ctfFlagSpawns[team.teamId].position);
                ctfFlags.Add(flag);
            }
        }
    }
    private void FixedUpdate()
    {
        if (currentKingOfTheHill == null)
        {
            return;
        }

        if (!GameSettings.gameHasStarted)
        {
            return;
        }

        fixedUppdateCounter++;
        if (fixedUppdateCounter == fixedUpdateSecondLimit)
        {
            fixedUppdateCounter = 0;
            OnTimeSecondPassed();
            secondsPassed++;
            GameModeUi.UpdateTimeLeftTimer(GamemodeBase.GetTimeString(TimeLimitSeconds - secondsPassed));
        }
    }
Example #8
0
 private void OnGamemodeSelected(GamemodeBase gamemode)
 {
     selectedGamemode = gamemode;
 }
 public void OnModeSpawnedInJoinRoom()
 {
     GamemodeBase.AutoAssignTeams();
 }
 public void ResetForNextRound()
 {
     GamemodeBase.ResetForNextRound();
     currentKingOfTheHill = null;
 }
 public void OnPlayerScoredObjective(PlayerController player)
 {
     GamemodeBase.OnPlayerScoredObjective(player, pointsForKOTHEachSecond);
 }
 public void InitializeInLevel()
 {
     GameModeUi = Instantiate(uiPreFab, FindObjectOfType <Canvas>().transform).GetComponent <IGameModeUi>();
     // Instantiate(firstKingOfTheHillCollectable, GameManager.Instance.activeMap.initial_KOTH_Spawn.position, Quaternion.identity);
     GamemodeBase.InitializeInLevel();
 }