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); } } }
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); }