Esempio n. 1
0
        public void InstantiateUnits(Settings settings, CellManager cellManager)
        {
            Units = new GameObject("Units");

            player = Object.Instantiate(Resources.Load("Prefabs/Player"), Units.transform) as GameObject;

            var playerUnit = player.GetComponent <Unit>();

            playerUnit.Pos            = settings.playerStartPosition;
            playerUnit.moveController = 1;
            playerUnit.cellManager    = cellManager;
            playerUnit.settings       = settings;
            playerUnit.speed          = settings.playerSpeed;

            enemyParent = new GameObject("enemies");
            enemyParent.transform.SetParent(Units.transform);
            for (var i = 0; i < settings.enemyCount; i++)
            {
                var enemy = Object.Instantiate(Resources.Load("Prefabs/Enemy"), enemyParent.transform) as GameObject;

                var enemyUnit = enemy.GetComponent <Unit>();
                var enemyPos  = new Vector2(Random.Range(0, settings.labirintSize), Random.Range(0, settings.labirintSize));
                enemyUnit.settings       = settings;
                enemyUnit.Pos            = enemyPos;
                enemyUnit.moveController = 2;
                enemyUnit.cellManager    = cellManager;
                enemyUnit.target         = player.transform;
                enemyUnit.speed          = settings.enemySpeed;
            }

            pathFinder = new PathFinder(cellManager);
            coinParent = new GameObject("Coins");
            coinParent.transform.SetParent(Units.transform);

            for (int i = 0; i < settings.coinCount; i++)
            {
                GenerateCoinPosition(4, cellManager);
            }

            for (var i = 0; i < cellManager.cells.Length; i++)
            {
                if ((cellManager.cells[i] & CellManager.maskCoin) == 0)
                {
                    continue;
                }

                var coin = Object.Instantiate(Resources.Load("Prefabs/Coin"), coinParent.transform) as GameObject;

                var coinUnit = coin.GetComponent <Unit>();
                coin.transform.position = cellManager.GetPositionByCellIndex(i);
                coinUnit.moveController = 0;
                coinUnit.cellManager    = cellManager;
                coinUnit.settings       = settings;
            }
        }
Esempio n. 2
0
        private void CreateWall(CellManager cellManager, int cellIndex, ulong maskWall, Vector3 deltaWallPosition, int rotationY)
        {
            if ((cellManager.cells[cellIndex] & maskWall) != 0)
            {
                var position = cellManager.GetPositionByCellIndex(cellIndex);

                var instance = Object.Instantiate(WallGameObject, position + deltaWallPosition, Quaternion.Euler(0, rotationY, 0), walls.transform);
                if (cellManager.CheckExit(cellIndex, deltaWallPosition))
                {
                    instance.GetComponent <MeshRenderer>().material.color = Color.blue;
                }
            }
        }
Esempio n. 3
0
        public Game(Settings settings)
        {
            this.settings                = settings;
            cellManager                  = new CellManager(settings.labirintSize);
            labirintManager              = new LabirintManager(cellManager);
            wallsCreator                 = new WallsCreator();
            unitManager                  = new UnitManager();
            mainCamera                   = Camera.main;
            mainCameraComponent          = mainCamera.GetComponent <MainCamera>();
            mainCameraComponent.settings = settings;

            LoadSceneObjects();
        }
Esempio n. 4
0
        private void SetCoinNegativePoints(int cellIndex, int distance, CellManager cellManager)
        {
            pathFinder.FindCellsInDistance(cellIndex, distance);

            for (int i = 0; i < cellManager.cells.Length; i++)
            {
                if ((cellManager.cells[i] & CellManager.maskGPF) != 0)
                {
                    cellManager.CoinNegativePoint(i);
                }
            }

            cellManager.ClearCellsAfterPF();
        }
Esempio n. 5
0
        private void GenerateCoinPosition(int distance, CellManager cellManager)
        {
            if (cellManager.CountCoinPositions() == 0)
            {
                Debug.LogError("Don't have free coin positions");
                return;
            }

            var cellIndex = Random.Range(0, cellManager.cells.Length);

            while ((cellManager.cells[cellIndex] & CellManager.maskCoinNegativePoint) != 0)
            {
                cellIndex = Random.Range(0, cellManager.cells.Length);
            }

            cellManager.SetCoinInCell(cellIndex);
            cellManager.CoinNegativePoint(cellIndex);
            SetCoinNegativePoints(cellIndex, distance, cellManager);
        }
Esempio n. 6
0
        public void CreateWalls(CellManager cellManager, Settings settings)
        {
            walls = new GameObject("Walls");
            for (int i = 0; i < cellManager.cells.Length; i++)
            {
                CreateWall(cellManager, i, CellManager.maskWallBottom, new Vector3(0, 0, -0.5f), 0);

                CreateWall(cellManager, i, CellManager.maskWallLeft, new Vector3(-0.5f, 0, 0), 90);

                if (i >= settings.labirintSize * (settings.labirintSize - 1))
                {
                    CreateWall(cellManager, i, CellManager.maskWallTop, new Vector3(0, 0, 0.5f), 0);
                }

                if (i % settings.labirintSize == 14)
                {
                    CreateWall(cellManager, i, CellManager.maskWallRight, new Vector3(0.5f, 0, 0), 90);
                }
            }
        }
Esempio n. 7
0
 public PathFinder(CellManager cellManager)
 {
     this.cellManager = cellManager;
 }
Esempio n. 8
0
 public LabirintManager(CellManager cellManager)
 {
     this.cellManager = cellManager;
 }