예제 #1
0
        void OnMouseDrag()
        {
            if (GameRound.instance.gameRoundCount > 0)
            {
                return;
            }
            Ray        cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            int        tileMask = 1 << 9;

            if (Physics.Raycast(cameraRay, out hitInfo, Mathf.Infinity, tileMask))
            {
                Tile      tile     = hitInfo.transform.gameObject.GetComponent <Tile>();
                MultiTile position = tile.PositionRelatedToMouse(myUnit.currentPosition.size, hitInfo.point);
                if (position != null && (position.IsDropzoneOfTeam(GameRound.instance.currentPlayer.team.index)) && position.IsFreeFor(myUnit))
                {
                    DropZone.instance.SendCommandToSetUnitPosition(myUnit, position);
                }
            }
        }
예제 #2
0
        MultiTile ChooseThePosition(Size size)
        {
            List <MultiTile> possibleTiles = new List <MultiTile>();

            foreach (Tile tile in Global.instance.currentMap.board)
            {
                MultiTile position = MultiTile.Create(tile, size);
                if (position != null && position.IsWalkable() && (position.IsDropzoneOfTeam(GameRound.instance.currentPlayer.team.index)))
                {
                    possibleTiles.Add(position);
                }
            }

            MultiTile chosenTile = Tools.GetRandomElementFromList <MultiTile>(possibleTiles);

            if (chosenTile == null)
            {
                Debug.LogError("Too many units, couldn't put them on battlefield");
                return(null);
            }
            return(chosenTile);
        }