예제 #1
0
    public void OnAddButtonPressed()
    {
        string propName   = addMenuPropDropdown.captionText.text;
        string spritePath = addMenuOptions[addMenuCategoryDropdown.captionText.text][addMenuPropDropdown.captionText.text];

        BattleMapProp prop = BattleMapProp.Create(propName, spritePath);

        BattleMapProp.selectedProp = prop;
        OnPropSelected();
    }
예제 #2
0
    public static BattleMapProp Create(string propName, string spritePath)
    {
        GameObject propObject = Instantiate(propPrefab);

        propObject.name = propName;

        BattleMapProp prop = propObject.GetComponent <BattleMapProp>();

        prop.transform.SetParent(GMBattleMap.currentInstance.transform);
        prop.transform.localScale = Vector3.one;

        prop.spritePath            = spritePath;
        prop.spriteRenderer.sprite = Resources.Load <Sprite>(spritePath);

        return(prop);
    }
예제 #3
0
    private void OnMouseDown()
    {
        if (GMBattleMap.currentInstance.currentMode != GMBattleMap.Mode.Prop || spriteRenderer.color.a < 0.25f)
        {
            return;
        }

        selectedProp      = this;
        propDragStartPos  = transform.position;
        mouseDragStartPos = Input.mousePosition;

        BattleMapPropPanel propPanel = FindObjectOfType <BattleMapPropPanel>();

        if (propPanel)
        {
            propPanel.OnPropSelected();
        }
    }
    public void Load(string mapName, Transform mapTransform, bool loadProps)
    {
        EnsureDirectoryExists();

        string filePath = Application.persistentDataPath + "/BattleMaps/" + mapName + ".battleMap";

        if (!File.Exists(filePath))
        {
            Debug.LogWarning("Can't load map; path does not exist: " + filePath);
            return;
        }

        string[] fileData           = File.ReadAllLines(filePath);
        bool     mapTransformLoaded = false;
        bool     loadingProps       = false;

        tiles.Clear();
        foreach (string dataEntry in fileData)
        {
            // The very first entry is the map's transform info...
            if (!mapTransformLoaded)
            {
                string[] data      = new string[3];
                int      dataIndex = -1;

                for (int i = 0; i < dataEntry.Length; i++)
                {
                    if (char.IsDigit(dataEntry[i]) || dataEntry[i] == '-' || dataEntry[i] == '.')
                    {
                        if (dataIndex >= data.Length)
                        {
                            Debug.LogError("Error");
                        }

                        data[dataIndex] += dataEntry[i];
                    }
                    else
                    {
                        dataIndex++;
                    }
                }

                mapTransform.localPosition = new Vector3(
                    float.Parse(data[0]),
                    float.Parse(data[1]),
                    0f
                    );

                float zoom = float.Parse(data[2]);
                mapTransform.localScale = new Vector3(zoom, zoom, zoom);

                mapTransformLoaded = true;
                continue;
            }

            // Load data for a tile...
            if (!loadingProps)
            {
                // Switch to prop mode if prompted
                if (dataEntry == "PROPS")
                {
                    if (loadProps)
                    {
                        loadingProps = true;
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    string[] data      = new string[5];
                    int      dataIndex = -1;

                    for (int i = 0; i < dataEntry.Length; i++)
                    {
                        if (char.IsDigit(dataEntry[i]) || dataEntry[i] == '-')
                        {
                            data[dataIndex] += dataEntry[i];
                        }
                        else
                        {
                            dataIndex++;
                        }
                    }

                    AddTile(new TileData(
                                int.Parse(data[0]),
                                int.Parse(data[1]),
                                int.Parse(data[2]),
                                (TileData.Type) int.Parse(data[3]),
                                int.Parse(data[4])));
                }
            }

            // Load data for a prop and add it to the map...
            else
            {
                string[] data       = new string[5];
                int      dataIndex  = -1;
                bool     stringMode = false;

                for (int i = 0; i < dataEntry.Length; i++)
                {
                    if ((!stringMode && (char.IsDigit(dataEntry[i]) || dataEntry[i] == '-' || dataEntry[i] == '.')) ||
                        (stringMode && dataEntry[i] != '\''))
                    {
                        data[dataIndex] += dataEntry[i];
                    }
                    else if (dataEntry[i] == '\'')
                    {
                        stringMode = !stringMode;
                    }
                    else
                    {
                        dataIndex++;
                    }
                }

                BattleMapProp prop = BattleMapProp.Create(data[0], data[1]);
                prop.transform.localPosition = new Vector3(
                    float.Parse(data[2]),
                    float.Parse(data[3]),
                    0f);
                prop.SetVisibleToPlayers(data[4] == "1");
            }
        }
    }