Ejemplo n.º 1
0
    public void SaveMap()
    {
        if (nodes == null)
        {
            return;
        }

        MapSaveInfo saveInfo = new MapSaveInfo();

        List <NodeData> saveNodes = new List <NodeData>();

        for (int x = 0; x < sizeX; x++)
        {
            for (int y = 0; y < sizeY; y++)
            {
                if (nodes[x, y] != null)
                {
                    NodeData nodeData = new NodeData();
                    nodeData.SetData(nodes[x, y]);

                    saveNodes.Add(nodeData);
                }
            }
        }

        saveInfo.sizeX = sizeX;
        saveInfo.sizeY = sizeY;
        saveInfo.nodes = saveNodes.ToArray();

        saveInfo.players = GeneratePlayerData(players, out saveInfo.currentTurn);
        jsonSave         = JsonUtility.ToJson(saveInfo);

        File.WriteAllText(savePath, jsonSave);
    }
Ejemplo n.º 2
0
    public void LoadMap(string path)
    {
        savePath = path;
        saveInfo = JsonUtility.FromJson <MapSaveInfo>(System.IO.File.ReadAllText(path));

        sizeX = saveInfo.sizeX;
        sizeY = saveInfo.sizeY;

        nodes   = new Node[sizeX, sizeY];
        players = GeneratePlayers(saveInfo.players);
        GenerateNodes(saveInfo);
        LayoutNodeSaveInfo(saveInfo);
    }
Ejemplo n.º 3
0
    public void GenerateNodes(MapSaveInfo info)
    {
        for (int y = 0; y < sizeY; y++)
        {
            for (int x = 0; x < sizeX; x++)
            {
                Vector3 pos = LayoutNodes(x, y);
                if (pos.x == -1)
                {
                    continue;
                }

                GameObject nodeObj = Instantiate(nodeTemplate, nodeParent.transform);

                nodeObj.name = "node-" + x + "_" + y;

                Node node = nodeObj.GetComponent <Node>();

                if (pos.z == 111)
                {
                    node.SetAsSmall();
                }
                nodes[x, y]    = node;
                node.X         = x;
                node.Y         = y;
                node.roads     = new Vector4(0, 0, 0, 0);
                OnGenerateMap += node.SetRoads;

                float   factor = 0.2f;
                Vector3 neuPos;
                if (info == null)
                {
                    neuPos   = new Vector3(Random.Range(x - factor, x + factor), Random.Range(y - factor, y + factor), transform.localPosition.z);
                    node.pos = new Vector2(neuPos.x, neuPos.y);
                }
                else
                {
                    int index = Utility.CoordsToArrayPos(x, y, info.sizeY);
                    neuPos   = new Vector3(info.nodes[index].pos.x, info.nodes[index].pos.y, 0);
                    node.pos = info.nodes[index].pos;
                }

                node.SetColor(uncoccupiedColor);

                node.transform.localPosition = neuPos;
            }
        }

        OnGenerateMap?.Invoke();
    }
Ejemplo n.º 4
0
    public void LayoutNodeSaveInfo(MapSaveInfo saveInfo)
    {
        /*/ WARNING \ if this gets called before GeneratePlayers(), Node.SetPlayersInitial breaks.*/

        for (int x = 0; x < saveInfo.sizeX; x++)
        {
            for (int y = 0; y < saveInfo.sizeY; y++)
            {
                //Because the original layout was sideways for(y){for(x){ Generation() }}
                nodes[x, y].SetData(saveInfo.nodes[x * sizeY + y]);
            }
        }

        StartCoroutine(OnNodesAddedDelay());
    }