コード例 #1
0
    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));
    }
コード例 #2
0
ファイル: Worker.cs プロジェクト: Barteboj/Real-Time-Strategy
 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();
 }
コード例 #3
0
    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);
                }
            }
        }
    }
コード例 #4
0
 public void SaveLumberToMap(IntVector2 positionInMap)
 {
     if (isServer)
     {
         Vector2 postionToCreate = MapGridded.MapToWorldPosition(positionInMap);
         NetworkServer.Spawn(Instantiate(Resources.Instance.TreePrefab, postionToCreate, Quaternion.identity));
     }
 }
コード例 #5
0
    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;
    }
コード例 #6
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);
 }
コード例 #7
0
    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();
            }
        }
    }
コード例 #8
0
 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();
             }
         }
     }
 }
コード例 #9
0
    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;
    }
コード例 #10
0
    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;
            }
        }
    }
コード例 #11
0
    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();
                }
            }
        }
    }
コード例 #12
0
    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);
    }
コード例 #13
0
ファイル: Worker.cs プロジェクト: Barteboj/Real-Time-Strategy
 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>());
 }