Esempio n. 1
0
        // 6.
        public void StartBattle()
        {
            // Create teams using trainerConnections
            List <BattleTeam> teams         = new List <BattleTeam>();
            List <Trainer>    humanTrainers = new List <Trainer>(trainerConnections.Values);

            // Configure AI Trainers
            List <Trainer> aiTrainers     = new List <Trainer>();
            int            aiTrainerCount = Mathf.Max(totalPlayers - requiredPlayers, 0);

            Debug.Log($"Adding {aiTrainerCount} AI trainers...");
            for (int i = 0; i < aiTrainerCount; i++)
            {
                Trainer trainer = Testing.CreateTrainer2("AI " + i);
                trainer.playerID = -1 - i;
                aiTrainers.Add(trainer);
            }

            // TODO: More battle configurations than single or double
            BattleTeam.TeamMode teamMode = (battleSettings.battleType == BattleType.Single) ? BattleTeam.TeamMode.Single
                : BattleTeam.TeamMode.Double;

            List <Trainer> allTrainers = new List <Trainer>();

            allTrainers.AddRange(humanTrainers);
            allTrainers.AddRange(aiTrainers);
            int midpoint = allTrainers.Count / 2;

            BattleTeam team1 = new BattleTeam(
                teamID: 1,
                trainers: allTrainers.GetRange(0, midpoint),
                teamMode: teamMode
                );
            BattleTeam team2 = new BattleTeam(
                teamID: 2,
                trainers: allTrainers.GetRange(midpoint, allTrainers.Count - midpoint),
                teamMode: teamMode
                );

            teams.Add(team1);
            teams.Add(team2);

            // TODO: More than 2 trainers
            for (int i = 0; i < humanTrainers.Count; i++)
            {
                Trainer    trainer = humanTrainers[i];
                BattleTeam team    = (trainer.teamID == team1.teamID)? team1 : team2;

                // Synchronize trainer & team to player
                PBS.Networking.Player player          = GetPlayer(trainer.playerID);
                NetworkIdentity       networkIdentity = player.GetComponent <NetworkIdentity>();

                player.playerID = trainer.playerID;
                player.TargetSyncTrainerToClient(networkIdentity.connectionToClient, new Battle.View.WifiFriendly.Trainer(trainer));
                player.TargetSyncTeamPerspectiveToClient(networkIdentity.connectionToClient, new Battle.View.WifiFriendly.Team(team));
            }

            // Start Battle Core
            Debug.Log("Starting Battle! (From Network Manager)");
            Debug.Log($"{team1.trainers.Count} vs. {team2.trainers.Count}");
            StartCoroutine(battleCore.StartBattle(battleSettings: battleSettings, teams: teams));
        }