public void SaveToMap(IntVector2 positionInMap, TileType tileType) { Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap); Tile tile = (Instantiate(Tiles.Instance.TilesPrefabs.Find(wantedTile => wantedTile.TileType == tileType).gameObject, postionToCreate, Quaternion.identity)).GetComponent <Tile>(); MapGridded.Instance.MapGrid[positionInMap.Y, positionInMap.X] = new MapGridElement(positionInMap.X, positionInMap.Y, tile, Instantiate(Tiles.Instance.CanBuildIndicator, tile.transform.position, Quaternion.identity), Instantiate(Tiles.Instance.CannotBuildIndicator, tile.transform.position, Quaternion.identity)); }
public void FinishBuild() { RpcShowYourself(); RpcSetNewPosition(MapGridded.MapToWorldPosition(MapGridded.Instance.GetFirstFreePlaceAround(MapGridded.WorldToMapPosition(buildingToBuild.transform.position), buildingToBuild.Width, buildingToBuild.Height))); positionInGridSyncVar = MapGridded.MapToWorldPosition(MapGridded.Instance.GetFirstFreePlaceAround(MapGridded.WorldToMapPosition(buildingToBuild.transform.position), buildingToBuild.Width, buildingToBuild.Height)); RpcStop(); }
void Update() { Vector2 mousePositionInWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition); IntVector2 positionInMap = MapGridded.WorldToMapPosition(mousePositionInWorld); if (IsInEditingArea(mousePositionInWorld)) { if (prefabShowingWhereYouArePuttingTile != null && IsInMap(positionInMap)) { prefabShowingWhereYouArePuttingTile.transform.position = MapGridded.MapToWorldPosition(positionInMap); if (Input.GetMouseButton(0)) { SaveTileToMap(positionInMap); } } else if (mineSelectionPrefab != null) { mineSelectionPrefab.transform.position = MapGridded.MapToWorldPosition(positionInMap); if (Input.GetMouseButton(0)) { SaveMineToMap(positionInMap); } } else if (lumberSelectionPrefab != null) { lumberSelectionPrefab.transform.position = MapGridded.MapToWorldPosition(positionInMap); if (Input.GetMouseButton(0)) { SaveLumberToMap(positionInMap); } } else if (player1MarkerSelectionPrefab != null) { player1MarkerSelectionPrefab.transform.position = MapGridded.MapToWorldPosition(positionInMap); if (Input.GetMouseButton(0) && IsInMap(positionInMap) && Map[positionInMap.Y, positionInMap.X].Tile.IsWalkable && Map[positionInMap.Y, positionInMap.X].Mine == null && Map[positionInMap.Y, positionInMap.X].Lumber == null) { player1Position = positionInMap; if (player1MarkerOnMapInstance != null) { Destroy(player1MarkerOnMapInstance); } player1MarkerOnMapInstance = Instantiate(player1MarkerPrefab, MapGridded.MapToWorldPosition(positionInMap), Quaternion.identity); } } else if (player2MarkerSelectionPrefab != null) { player2MarkerSelectionPrefab.transform.position = MapGridded.MapToWorldPosition(positionInMap); if (Input.GetMouseButton(0) && IsInMap(positionInMap) && Map[positionInMap.Y, positionInMap.X].Tile.IsWalkable && Map[positionInMap.Y, positionInMap.X].Mine == null && Map[positionInMap.Y, positionInMap.X].Lumber == null) { player2Position = positionInMap; if (player2MarkerOnMapInstance != null) { Destroy(player2MarkerOnMapInstance); } player2MarkerOnMapInstance = Instantiate(player2MarkerPrefab, MapGridded.MapToWorldPosition(positionInMap), Quaternion.identity); } } } }
public void SaveLumberToMap(IntVector2 positionInMap) { if (isServer) { Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap); NetworkServer.Spawn(Instantiate(Resources.Instance.TreePrefab, postionToCreate, Quaternion.identity)); } }
public void FinishTraining() { GameObject instantiatedUnit = Instantiate(TrainedUnit.gameObject, MapGridded.MapToWorldPosition(MapGridded.Instance.GetFirstFreePlaceAround(MapGridded.WorldToMapPosition(gameObject.transform.position), width, height)), Quaternion.identity); instantiatedUnit.GetComponent <Unit>().InitializePositionInGrid(); NetworkServer.Spawn(instantiatedUnit); IsTraining = false; RpcFinishTraining(); actualTrainingTime = 0; }
public void SetNewPositionOnMapSettingWorldPosition(IntVector2 newPosition) { positionInGridSyncVar = new Vector2(newPosition.X, newPosition.Y); if (positionInGrid != null) { ClearPositionInGrid(); } positionInGrid = new IntVector2((int)newPosition.X, (int)newPosition.Y); FillPositionInGrid(); gameObject.transform.position = MapGridded.MapToWorldPosition(newPosition); }
public void SaveLumberToMap(IntVector2 positionInMap) { Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap); if (lumberPrefab.GetComponent <LumberInMapEditor>().CouldBeBuildInPlace(positionInMap)) { LumberInMapEditor lumber = (Instantiate(lumberPrefab, postionToCreate, Quaternion.identity)).GetComponent <LumberInMapEditor>(); lumber.SetPositionInMapGrid(); lumberList.Add(lumber); if (player1Position != null && positionInMap.X == player1Position.X && positionInMap.Y == player1Position.Y) { RemovePlayer1Marker(); } if (player2Position != null && positionInMap.X == player2Position.X && positionInMap.Y == player2Position.Y) { RemovePlayer2Marker(); } } }
public void SaveTileToMap(IntVector2 positionInMap) { if (Map[positionInMap.Y, positionInMap.X] == null || Map[positionInMap.Y, positionInMap.X].Tile.TileType != selectedTilePrefab.TileType) { Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap); Tile tile = (Instantiate(selectedTilePrefab.gameObject, postionToCreate, Quaternion.identity)).GetComponent <Tile>(); if (Map[positionInMap.Y, positionInMap.X] != null && Map[positionInMap.Y, positionInMap.X].Tile != null) { Destroy(Map[positionInMap.Y, positionInMap.X].Tile.gameObject); } if (Map[positionInMap.Y, positionInMap.X] != null) { Map[positionInMap.Y, positionInMap.X].Tile = tile; } else { Map[positionInMap.Y, positionInMap.X] = new MapEditorGridElement(positionInMap, tile, null); } if (!Map[positionInMap.Y, positionInMap.X].Tile.IsWalkable) { if (Map[positionInMap.Y, positionInMap.X].Mine != null) { mines.Remove(Map[positionInMap.Y, positionInMap.X].Mine); Destroy(Map[positionInMap.Y, positionInMap.X].Mine.gameObject); } if (Map[positionInMap.Y, positionInMap.X].Lumber != null) { lumberList.Remove(Map[positionInMap.Y, positionInMap.X].Lumber); Destroy(Map[positionInMap.Y, positionInMap.X].Lumber.gameObject); } if (player1Position != null && positionInMap.X == player1Position.X && positionInMap.Y == player1Position.Y) { RemovePlayer1Marker(); } if (player2Position != null && positionInMap.X == player2Position.X && positionInMap.Y == player2Position.Y) { RemovePlayer2Marker(); } } } }
void RpcLoadMap() { List <string> lines = new List <string>(mapText.Split('\n')); foreach (string line in lines) { string[] words = line.Split(' '); switch (words[0]) { case MapEditor.mapSizeFileKey: mapSizeX = int.Parse(words[1]); mapSizeY = int.Parse(words[2]); MapGridded.Instance.MapGrid = new MapGridElement[mapSizeY, mapSizeX]; Minimap.Instance.MapSize = mapSizeX; break; case MapEditor.tileKey: SaveToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2])), (TileType)System.Enum.Parse(typeof(TileType), words[3])); break; case MapEditor.goldMineKey: SaveMineToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; case MapEditor.lumberKey: SaveLumberToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; case MapEditor.player1PositionKey: player1StartingPosition = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; case MapEditor.player2PositionKey: player2StartingPosition = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; } } LoadingMapScreen.SetActive(false); FindObjectOfType <GameCameraController>().enabled = true; }
public void LoadMap(string filePath) { List <string> lines = new List <string>(new StreamReader(filePath).ReadToEnd().Split('\n')); foreach (string line in lines) { string[] words = line.Split(' '); switch (words[0]) { case mapSizeFileKey: mapWidth = int.Parse(words[1]); mapHeight = int.Parse(words[2]); Map = new MapEditorGridElement[mapHeight, mapWidth]; break; case player1PositionKey: player1MarkerOnMapInstance = Instantiate(player1MarkerPrefab, MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))), Quaternion.identity); player1Position = MapGridded.WorldToMapPosition(player1MarkerOnMapInstance.transform.position); break; case player2PositionKey: player2MarkerOnMapInstance = Instantiate(player2MarkerPrefab, MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))), Quaternion.identity); player2Position = MapGridded.WorldToMapPosition(player2MarkerOnMapInstance.transform.position); break; case tileKey: SaveTileToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2])), (TileType)System.Enum.Parse(typeof(TileType), words[3])); break; case goldMineKey: SaveMineToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; case lumberKey: SaveLumberToMap(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; } } }
public void SaveMineToMap(IntVector2 positionInMap) { Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap); if (minePrefab.GetComponent <MineInMapEditor>().CouldBeBuildInPlace(positionInMap)) { MineInMapEditor mine = (Instantiate(minePrefab, postionToCreate, Quaternion.identity)).GetComponent <MineInMapEditor>(); mine.SetPositionInMapGrid(); mines.Add(mine); List <IntVector2> mapPositions = mine.GetPositionsOnMap(); foreach (IntVector2 mapPosition in mapPositions) { if (player1Position != null && mapPosition.X == player1Position.X && mapPosition.Y == player1Position.Y) { RemovePlayer1Marker(); } if (player2Position != null && mapPosition.X == player2Position.X && mapPosition.Y == player2Position.Y) { RemovePlayer2Marker(); } } } }
public static bool CheckMap(string mapName) { try { string wholeMapText = new StreamReader(Application.dataPath + "/" + MapEditor.mapsFolderName + "/" + mapName + ".map").ReadToEnd(); List <string> lines = new List <string>(wholeMapText.Split('\n')); int mapSizeX = 0; int mapSizeY = 0; Vector2 player1StartingPosition = -Vector2.one; Vector2 player2StartingPosition = -Vector2.one; MapGridElement[,] mapGrid = null; IntVector2 positionInMap; Vector2 postionToCreate; foreach (string line in lines) { string[] words = line.Split(' '); switch (words[0]) { case MapEditor.mapSizeFileKey: mapSizeX = int.Parse(words[1]); mapSizeY = int.Parse(words[2]); mapGrid = new MapGridElement[mapSizeY, mapSizeX]; break; case MapEditor.tileKey: positionInMap = new IntVector2(int.Parse(words[1]), int.Parse(words[2])); postionToCreate = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); mapGrid[positionInMap.Y, positionInMap.X] = new MapGridElement(Tiles.Instance.TilesPrefabs.Find(item => item.TileType == (TileType)System.Enum.Parse(typeof(TileType), words[3]))); break; case MapEditor.goldMineKey: positionInMap = new IntVector2(int.Parse(words[1]), int.Parse(words[2])); postionToCreate = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); foreach (IntVector2 minePositionInMap in Resources.Instance.MinePrefab.GetComponent <Mine>().GetMapPositions(positionInMap)) { mapGrid[minePositionInMap.Y, minePositionInMap.X].Mine = Resources.Instance.MinePrefab.GetComponent <Mine>(); } break; case MapEditor.lumberKey: positionInMap = new IntVector2(int.Parse(words[1]), int.Parse(words[2])); postionToCreate = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); mapGrid[positionInMap.Y, positionInMap.X].Lumber = Resources.Instance.TreePrefab.GetComponent <LumberInGame>(); break; case MapEditor.player1PositionKey: player1StartingPosition = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; case MapEditor.player2PositionKey: player2StartingPosition = MapGridded.MapToWorldPosition(new IntVector2(int.Parse(words[1]), int.Parse(words[2]))); break; } } if (mapGrid == null) { return(false); } foreach (MapGridElement mapGridElement in mapGrid) { if (mapGridElement == null) { return(false); } } if (mapSizeX <= 0 || mapSizeY <= 0 || mapSizeX > 50 || mapSizeY > 50 || player1StartingPosition == null || player2StartingPosition == null || player1StartingPosition == player2StartingPosition || player1StartingPosition.x < 0 || player1StartingPosition.x > mapSizeX - 1 || player1StartingPosition.y < 0 || player1StartingPosition.y > mapSizeY - 1 || player2StartingPosition.x < 0 || player2StartingPosition.x > mapSizeX - 1 || player2StartingPosition.y < 0 || player2StartingPosition.y > mapSizeY - 1 || !mapGrid[MapGridded.WorldToMapPosition(player1StartingPosition).Y, MapGridded.WorldToMapPosition(player1StartingPosition).X].IsWalkable || !mapGrid[MapGridded.WorldToMapPosition(player2StartingPosition).Y, MapGridded.WorldToMapPosition(player2StartingPosition).X].IsWalkable) { return(false); } } catch (Exception e) { return(false); } return(true); }
public void Build() { buildingToBuild = Instantiate(Buildings.Instance.BuildingsList.Find(item => item.BuildingType == buildingToBuildType && item.Owner == owner), MapGridded.MapToWorldPosition(positionOfBuildingToBuild), Quaternion.identity); buildingToBuild.Builder = this; MultiplayerController.Instance.Players.Find(item => item.PlayerType == owner).GoldAmount -= buildingToBuild.GoldCost; NetworkServer.Spawn(buildingToBuild.gameObject); buildingToBuild.PlaceOnMap(); isGoingToBuildPlace = false; haveFinishedPlacingBuilding = true; RpcHideYourself(); buildingToBuild.StartBuildProcess(); RpcSelectBuildedBuilding(buildingToBuild.GetComponent <NetworkIdentity>()); }