Esempio n. 1
0
        public void ProcessMessage(GameReady gameReadyMessage)
        {
            battleViewer.DisableCancelFindButton();
            var kernelPlayer1 = new Player(0);
            var kernelPlayer2 = new Player(1);

            LocalPlayer  = new LocalPlayer(battleViewer, kernelPlayer1, this, gameManager.UserName);
            OnlinePlayer = new OnlinePlayer(kernelPlayer2, this, gameReadyMessage.Opponent.Login);
            ((OnlinePlayer)OnlinePlayer).OnEnable();
            IEnumerable <GameObject> opponentTeam = ClientFruitonFactory.CreateClientFruitonTeam(gameReadyMessage.OpponentTeam.FruitonIDs, battleViewer.Board);
            IEnumerable <GameObject> currentTeam  = ClientFruitonFactory.CreateClientFruitonTeam(gameManager.CurrentFruitonTeam.FruitonIDs, battleViewer.Board);

            // The opponent team is obtained from the server with the correctly set positions.
            battleViewer.InitializeTeam(opponentTeam, kernelPlayer2, kernelPlayer2.id == 0, gameReadyMessage.OpponentTeam.Positions.ToArray());

            GameSettings kernelSettings = GameSettingsFactory.CreateGameSettings(gameReadyMessage.MapId, battleViewer.GameMode);

            var fruitons = new haxe.root.Array <object>();

            foreach (var fruiton in currentTeam)
            {
                fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton);
            }
            foreach (var fruiton in opponentTeam)
            {
                fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton);
            }
            IsLocalPlayerFirst = gameReadyMessage.StartsFirst;
            Player player1;
            Player player2;

            // If the local player begins, the game will be started with kernelPlayer1 as first argument.
            if (IsLocalPlayerFirst)
            {
                battleViewer.InitializeTeam(currentTeam, kernelPlayer1, kernelPlayer1.id == 0, GameManager.Instance.CurrentFruitonTeam.Positions.ToArray());
                player1 = kernelPlayer1;
                player2 = kernelPlayer2;
            }
            // If the online opponent begins, we need to flip the positions to the opposite side because we do not receive
            // the new positions from the server. The first argument has to be the online opponent = kernelPlayer2.
            else
            {
                var width            = GameState.WIDTH;
                var height           = GameState.HEIGHT;
                var flippedPositions = BattleHelper.FlipCoordinates(GameManager.Instance.CurrentFruitonTeam.Positions, width, height);
                battleViewer.InitializeTeam(currentTeam, kernelPlayer1, kernelPlayer1.id == 0, flippedPositions.ToArray());
                player1 = kernelPlayer2;
                player2 = kernelPlayer1;
                battleViewer.DisableEndTurnButton();
            }
            Kernel = new Kernel(player1, player2, fruitons, kernelSettings, false, false);

            SendReadyMessage();
            battleViewer.InitializePlayersInfo();
            BattleReady();
        }
Esempio n. 2
0
        public static List <T> ToList <T>(this haxe.root.Array <T> array)
        {
            var list = new List <T>(array.length);

            for (int i = 0; i < array.length; i++)
            {
                list.Add(array[i]);
            }
            return(list);
        }
Esempio n. 3
0
        public static List <TOut> CastToList <TOut, TIn>(this haxe.root.Array <TIn> array)
            where TIn : class
            where TOut : TIn
        {
            var list = new List <TOut>(array.length);

            for (int i = 0; i < array.length; i++)
            {
                list.Add((TOut)array[i]);
            }
            return(list);
        }
Esempio n. 4
0
        public static List <List <TOut> > CastToList2D <TOut>(this haxe.root.Array <object> array)
            where TOut : class
        {
            var list = new List <List <TOut> >(array.length);

            for (int i = 0; i < array.length; i++)
            {
                list.Add(new List <TOut>());
                var inner = (haxe.root.Array <object>)array[i];
                for (int j = 0; j < inner.length; j++)
                {
                    list[i].Add((TOut)inner[j]);
                }
            }
            return(list);
        }
Esempio n. 5
0
 public static List <TOut> CastToList <TOut>(this haxe.root.Array <object> array)
 {
     return(array.CastToList <TOut, object>());
 }