Example #1
0
        static void BeforeTest()
        {
            //DBInfomationHandler testDB = new DBInfomationHandler(ConfigurationManager.AppSettings.Get("ConectionDBString"));
            //testDB.GetHandGameList(0, 100);
            DBLoginInfo info   = FBAPI.GetUserData("EAACEdEose0cBAOVYZANbS25LytZBtVhG0Gs6dhYkXN3rpXpkxNZAiYhZByg8ocHCBRJqJjmZA66x7BZC3A7M4Fmr1eg5RtGrOJz1GFM7x6O5a4bw8iRlOa7iwVOR6HOoKYD6UvjvuWyLduJuM77MQDLL7N7ZABdWaU2Qp25bpyruwZDZD");
            int         ibreak = 999;

            string left  = "";
            string right = "";

            GameReferee.GetWinner_IndianHoldem("4:18:3", "6", ref left, ref right);


            int[] commcard = { 29, 45, 27, 21, 50, 30, 44 };
            int[] usercard = { 30, 44 };

            Array.Sort(commcard, delegate(int left1, int right1) {
                int leftScore  = GameReferee.GetPokerCardInfo(left1)[0];
                int rightScore = GameReferee.GetPokerCardInfo(right1)[0];
                return(leftScore.CompareTo(rightScore));
            });

            GameHandInfo gamehInfo = GameReferee.GetPokerCardScore(commcard, usercard);

            ibreak = 9;
        }
Example #2
0
        public void PlayerAtack(Player enemy, int x, int y)
        {
            if (!GameReferee.PlayerTurn(this) && GameReferee.NextAttacking != null)
            {
                throw new Exception("Now not YOU PIDR...");
            }

            if (enemy.map.PlayedIntMap[x, y] == 1)
            {
                enemy.map.PlayedIntMap[x, y] = 2;
            }
            else
            {
                enemy.map.PlayedIntMap[x, y] = 9;
            }
            GameReferee.NextAttacking = enemy;
        }
Example #3
0
 /* Вернёт true если туда МОЖНО установить корабль
  * false если нельзя*/
 private bool ShipCheck(int x, int y, int len)
 {
     if (
         GameReferee.PlayerReadyCheck() == true ||
         ShipsSetCounter[len - 1] <= 0 ||
         PlayedIntMap[x + 1, y] != 0 ||
         PlayedIntMap[x - 1, y] != 0 ||
         PlayedIntMap[x - 1, y - 1] != 0 ||
         PlayedIntMap[x - 1, y + 1] != 0 ||
         PlayedIntMap[x, y - 1] != 0 ||
         PlayedIntMap[x, y + 1] != 0 ||
         PlayedIntMap[x + 1, y + 1] != 0 ||
         PlayedIntMap[x + 1, y - 1] != 0 ||
         PlayedIntMap[x, y] != 0)
     {
         return(false);
     }
     return(true);
 }
Example #4
0
 public void Awake()
 {
     Instance = this;
 }
Example #5
0
        public GameController()
        {
            parentSpace = "/api/game";
            dbhandler   = new DBGameHandler(ConfigurationManager.AppSettings.Get("ConectionDBString"));

            Post[parentSpace + "/tabbonus", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string playerAuthToken = (string)payload["playerAuthToken"];

                BonusOK info = null;

                Task t = Task.Run(() => {
                    info = dbhandler.sp_tabbonus(playerAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                return(info);
            };

            Post[parentSpace + "/daybonus", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string playerAuthToken = (string)payload["playerAuthToken"];

                BonusOK info = null;
                Task    t    = Task.Run(() => {
                    info = dbhandler.sp_daybonus(playerAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                return(info);
            };

            //가위바위보게임
            Post[parentSpace + "/creategame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType         = (int)payload["mainType"];
                int    gameType         = (int)payload["gameType"];
                string gameTitle        = (string)payload["gameTitle"];
                string gameMemo_left    = (string)payload["gameMemo_left"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string gameFlag_left1   = (string)payload["gameFlag_left1"];
                int    appendtime       = (int)payload["appendtime"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];

                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 20));
                    }

                    if (gameMoneyAmount > 1000000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_creategame(mainType, gameType, gameTitle, gameMemo_left, gameCount,
                                                   gameMoneyAmount, gameFlag_left1, appendtime, creatorAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }
                return(info.ToString());
            };

            Post[parentSpace + "/rungame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int      gameID          = (int)payload["gameID"];
                string   gameFlag_right1 = (string)payload["gameFlag_right1"];
                string   playerAuthToken = (string)payload["playerAuthToken"];
                string   gameMemo_right  = (string)payload["gameMemo_right"];
                GameInfo gameInfo        = dbhandler.getGameInfo(0, gameID);

                string result1 = "", result2 = "";
                int    whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, gameFlag_right1, ref result1, ref result2);
                WebOK  info      = null;

                string userIp = Request.UserHostAddress;

                Task t = Task.Run(() => {
                    info = dbhandler.sp_rungame(gameID, gameFlag_right1, playerAuthToken, gameMemo_right, whoWinner, userIp);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = gameFlag_right1;
                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;

                return(gameResult);
            };

            Post[parentSpace + "/runpublichandgame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int      gameID           = (int)payload["gameID"];
                string   gameFlag_right1  = (string)payload["gameFlag_right1"];
                string   memberNick_right = (string)payload["memberNick_right"];
                string   gameMemo_right   = (string)payload["gameMemo_right"];
                GameInfo gameInfo         = null;
                Task     t = Task.Run(() => {
                    gameInfo = dbhandler.getGameInfo(0, gameID);
                });
                await t;
                if (gameInfo == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                string result1 = "", result2 = "";
                int    whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, gameFlag_right1, ref result1, ref result2);
                WebOK  info      = null;
                Task   t2        = Task.Run(() => {
                    info = dbhandler.sp_runPublicHandGame(gameID, gameFlag_right1, memberNick_right, gameMemo_right, whoWinner);
                });
                await t2;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = gameFlag_right1;
                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;

                return(gameResult);
            };

            //인디언홀덤
            Post[parentSpace + "/createIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType  = (int)payload["mainType"];
                string gameTitle = (string)payload["gameTitle"];
                //string gameData = (string)payload["gameData"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];

                //Get Card
                string gameData = GameReferee.GetIndianGameCard(null);

                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                GameInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_CreateIndianHoldem(mainType, gameTitle, gameData, gameCount, gameMoneyAmount, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }

                return(info);
            };

            Post[parentSpace + "/editIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameAction       = (int)payload["gameAction"]; // 0:half 1:call 2:double
                string creatorAuthToken = (string)payload["creatorAuthToken"];
                int    gameID           = (int)payload["gameID"];

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_EdtIndianHoldem(gameID, gameAction, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }
                return(info);
            };

            Post[parentSpace + "/runIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo      = (string)payload["joinerMemo"];
                string joinerAuthToken = (string)payload["joinerAuthToken"];
                int    gameAction      = (int)payload["gameAction"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                string userIp = Request.UserHostAddress;

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunIndianHoldem(gameID, joinerGameData, joinerMemo, joinerAuthToken, whoWinner, gameAction, cratorHandStr, joinerHandStr, userIp);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            //Todo:Remove(네이밍 잘못함)
            Post[parentSpace + "/runIndpublicianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo   = (string)payload["joinerMemo"];
                int    gameAction   = (int)payload["gameAction"];
                string joinerNick   = (string)payload["joinerNick"];
                string joinerAvatar = (string)payload["joinerAvatar"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    //sp_RunPublicIndianHoldem
                    info = dbhandler.sp_RunPublicIndianHoldem(gameID, joinerGameData, joinerMemo, whoWinner, gameAction, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            Post[parentSpace + "/runPublicIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo   = (string)payload["joinerMemo"];
                int    gameAction   = (int)payload["gameAction"];
                string joinerNick   = (string)payload["joinerNick"];
                string joinerAvatar = (string)payload["joinerAvatar"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    //sp_RunPublicIndianHoldem
                    info = dbhandler.sp_RunPublicIndianHoldem(gameID, joinerGameData, joinerMemo, whoWinner, gameAction, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            //QHoldem
            Post[parentSpace + "/getPokerCards", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    cardCnt = (int)payload["cardCnt"];
                string result  = GameReferee.GetPokerCard(cardCnt, null);
                return(result);
            };

            Post[parentSpace + "/createQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType         = (int)payload["mainType"];
                string gameTitle        = (string)payload["gameTitle"];
                string gameData         = (string)payload["gameData"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];
                //Get Card
                //string gameData = GameReferee.GetIndianGameCard(null);
                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                GameInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_CreateQHoldem(mainType, gameTitle, gameData, gameCount, gameMoneyAmount, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }

                return(info);
            };

            Post[parentSpace + "/runQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameID          = (int)payload["gameID"];
                int    joinerGameData  = (int)payload["joinerGameData"];
                string joinerMemo      = (string)payload["joinerMemo"];
                string joinerAuthToken = (string)payload["joinerAuthToken"];


                GameInfo gameInfo     = dbhandler.getGameInfo((int)eGameType.QHoldem, gameID);
                int      delPos       = gameInfo.gameData.IndexOf('-');
                string   commCardData = GameReferee.GetPokerCard(5, gameInfo.gameData.Remove(delPos, 1));

                string[] userCardInfo = gameInfo.gameData.Split('-');   //"1:2-3:4"

                string pulishCards = "";
                string myCards     = "";

                pulishCards = commCardData + ":" + userCardInfo[0] + "-" + userCardInfo[0];
                myCards     = commCardData + ":" + userCardInfo[1] + "-" + userCardInfo[1];

                string cratorHandStr = "";
                string joinerHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, pulishCards, myCards, ref cratorHandStr, ref joinerHandStr);

                if (joinerGameData == 0)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunQHoldem(gameID, joinerGameData, commCardData, joinerMemo, joinerAuthToken, whoWinner, cratorHandStr, joinerHandStr);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = pulishCards;
                gameResult.gameFlag_right1 = myCards;

                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            Post[parentSpace + "/runPublicQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameID         = (int)payload["gameID"];
                int    joinerGameData = (int)payload["joinerGameData"];
                string joinerMemo     = (string)payload["joinerMemo"];
                string joinerNick     = (string)payload["joinerNick"];
                string joinerAvatar   = (string)payload["joinerAvatar"];


                GameInfo gameInfo     = dbhandler.getGameInfo((int)eGameType.QHoldem, gameID);
                int      delPos       = gameInfo.gameData.IndexOf('-');
                string   commCardData = GameReferee.GetPokerCard(5, gameInfo.gameData.Remove(delPos, 1));

                string[] userCardInfo = gameInfo.gameData.Split('-');   //"1:2-3:4"

                string pulishCards = "";
                string myCards     = "";

                pulishCards = commCardData + ":" + userCardInfo[0] + "-" + userCardInfo[0];
                myCards     = commCardData + ":" + userCardInfo[1] + "-" + userCardInfo[1];

                string cratorHandStr = "";
                string joinerHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, pulishCards, myCards, ref cratorHandStr, ref joinerHandStr);

                if (joinerGameData == 0)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunPublicQHoldem(gameID, joinerGameData, commCardData, joinerMemo, whoWinner, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = pulishCards;
                gameResult.gameFlag_right1 = myCards;

                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };
        }
Example #6
0
    public Board(GameReferee gameReferee)
    {
        GameReferee = gameReferee;

        PhysicBoard = GameObject.Find("PhysicBoard");

        var onBoardOccupied = new OnBoardOccupied(this);

        Destructables = new OnBoardDestructible[Height, Width];
        for (int y = 0; y < Height; y++)
        {
            for (int x = 0; x < Width; x++)
            {
                if (y == 0 || y == Height - 1 || x == 0 || x == Width - 1)
                {
                    Destructables[y, x] = onBoardOccupied;
                }
                else
                {
                    Destructables[y, x] = null;
                }
            }
        }

        var playerOneNest = new OnBoardNest(1, this);
        var playerTwoNest = new OnBoardNest(2, this);

        var playerOneMageTower = new OnBoardMageTower(1, this);
        var playerTwoMageTower = new OnBoardMageTower(2, this);

        var playerOneBarrack = new OnBoardBarrack(1, this);
        var playerTwoBarrack = new OnBoardBarrack(2, this);

        Destructables[0, 3] = playerTwoNest;
        Destructables[0, 4] = playerTwoNest;

        Destructables[Height - 1, 3] = playerOneNest;
        Destructables[Height - 1, 4] = playerOneNest;


        Destructables[1, 0] = playerTwoMageTower;
        Destructables[2, 0] = playerTwoMageTower;

        Destructables[Height - 2, Width - 1] = playerOneMageTower;
        Destructables[Height - 3, Width - 1] = playerOneMageTower;


        Destructables[1, Width - 1] = playerTwoBarrack;
        Destructables[2, Width - 1] = playerTwoBarrack;

        Destructables[Height - 2, 0] = playerOneBarrack;
        Destructables[Height - 3, 0] = playerOneBarrack;

        Buildings    = new OnBoardBuilding[6];
        Buildings[0] = playerOneNest;
        Buildings[1] = playerOneBarrack;
        Buildings[2] = playerOneMageTower;

        Buildings[3] = playerTwoNest;
        Buildings[4] = playerTwoBarrack;
        Buildings[5] = playerTwoMageTower;
    }