public void ChangeTileSide()
    {
        if (GameObject.FindGameObjectWithTag(Game.DIALOG) != null)
        {
            return;
        }
        Game game = Game.Get();
        UIWindowSelectionListTraits select = new UIWindowSelectionListImage(SelectTileSide, new StringKey("val", "SELECT", CommonStringKeys.TILE));

        // Work out what sides are used
        HashSet <string> usedSides = new HashSet <string>();

        foreach (KeyValuePair <string, QuestData.QuestComponent> kv in game.quest.qd.components)
        {
            QuestData.Tile t = kv.Value as QuestData.Tile;
            if (t != null)
            {
                usedSides.Add(t.tileSideName);
                usedSides.Add(game.cd.tileSides[t.tileSideName].reverse);
            }
        }

        foreach (KeyValuePair <string, TileSideData> kv in game.cd.tileSides)
        {
            if (usedSides.Contains(kv.Key))
            {
                select.AddItem(kv.Value, new Color(0.4f, 0.4f, 1));
            }
            else
            {
                select.AddItem(kv.Value);
            }
        }
        select.Draw();
    }
Example #2
0
    public EditorComponentTile(string nameIn) : base()
    {
        Game game = Game.Get();

        tileComponent = game.quest.qd.components[nameIn] as QuestData.Tile;
        component     = tileComponent;
        name          = component.name;
        Update();
    }
    public void ChangeTileSide()
    {
        Game game = Game.Get();

        // Work out what sides are used
        HashSet <string> usedSides = new HashSet <string>();

        foreach (KeyValuePair <string, QuestData.QuestComponent> kv in game.quest.qd.components)
        {
            QuestData.Tile t = kv.Value as QuestData.Tile;
            if (t != null)
            {
                usedSides.Add(t.tileSideName);
                usedSides.Add(game.cd.tileSides[t.tileSideName].reverse);
            }
        }

        List <EditorSelectionList.SelectionListEntry> sides = new List <EditorSelectionList.SelectionListEntry>();

        foreach (KeyValuePair <string, TileSideData> kv in game.cd.tileSides)
        {
            StringBuilder display          = new StringBuilder().Append(kv.Key);
            StringBuilder localizedDisplay = new StringBuilder().Append(kv.Value.name.Translate());
            List <string> traits           = new List <string>(kv.Value.traits);
            foreach (string s in kv.Value.sets)
            {
                if (s.Length == 0)
                {
                    traits.Add("base");
                }
                else
                {
                    display.Append(" ").Append(s);
                    traits.Add(s);
                }
            }

            Color buttonColor = Color.white;

            if (usedSides.Contains(kv.Key))
            {
                buttonColor = Color.grey;
            }

            sides.Add(EditorSelectionList.SelectionListEntry.BuildNameKeyTraitsColorItem(
                          localizedDisplay.ToString(), display.ToString(), traits, buttonColor));
        }
        tileESL = new EditorSelectionList(
            new StringKey("val", "SELECT", CommonStringKeys.TILE), sides, delegate { SelectTileSide(); });
        tileESL.SelectItem();
    }
Example #4
0
    public void ChangeTileSide()
    {
        Game game = Game.Get();

        // Work out what sides are used
        HashSet <string> usedSides = new HashSet <string>();

        foreach (KeyValuePair <string, QuestData.QuestComponent> kv in game.quest.qd.components)
        {
            QuestData.Tile t = kv.Value as QuestData.Tile;
            if (t != null)
            {
                usedSides.Add(t.tileSideName);
                usedSides.Add(game.cd.tileSides[t.tileSideName].reverse);
            }
        }

        List <EditorSelectionList.SelectionListEntry> sides = new List <EditorSelectionList.SelectionListEntry>();

        foreach (KeyValuePair <string, TileSideData> kv in game.cd.tileSides)
        {
            string        display = kv.Key;
            List <string> sets    = new List <string>(kv.Value.traits);
            foreach (string s in kv.Value.sets)
            {
                if (s.Length == 0)
                {
                    sets.Add("base");
                }
                else
                {
                    display += " " + s;
                    sets.Add(s);
                }
            }

            if (usedSides.Contains(kv.Key))
            {
                sides.Add(new EditorSelectionList.SelectionListEntry(display, sets, Color.grey));
            }
            else
            {
                sides.Add(new EditorSelectionList.SelectionListEntry(display, sets, Color.white));
            }
        }
        tileESL = new EditorSelectionList(
            new StringKey("val", "SELECT", CommonStringKeys.TILE), sides, delegate { SelectTileSide(); });
        tileESL.SelectItem();
    }
Example #5
0
    // Create a new tile, use next available number
    public void NewTile()
    {
        Game game  = Game.Get();
        int  index = 0;

        while (game.quest.qd.components.ContainsKey("Tile" + index))
        {
            index++;
        }
        QuestData.Tile tile = new QuestData.Tile("Tile" + index);
        game.quest.qd.components.Add("Tile" + index, tile);

        CameraController cc = GameObject.FindObjectOfType <CameraController>();

        tile.location.x = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.x / game.gameType.TileRound());
        tile.location.y = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.y / game.gameType.TileRound());

        game.quest.Add("Tile" + index);
        SelectComponent("Tile" + index);
    }
Example #6
0
    public void ChangeTileSide()
    {
        Game game = Game.Get();

        // Work out what sides are used
        HashSet <string> usedSides = new HashSet <string>();

        foreach (KeyValuePair <string, QuestData.QuestComponent> kv in game.quest.qd.components)
        {
            QuestData.Tile t = kv.Value as QuestData.Tile;
            if (t != null)
            {
                usedSides.Add(t.tileSideName);
                usedSides.Add(game.cd.tileSides[t.tileSideName].reverse);
            }
        }

        Dictionary <string, Color> sides = new Dictionary <string, Color>();

        foreach (KeyValuePair <string, TileSideData> kv in game.cd.tileSides)
        {
            string display = kv.Key;
            foreach (string s in kv.Value.sets)
            {
                display += " " + s;
            }

            if (usedSides.Contains(kv.Key))
            {
                sides.Add(display, Color.grey);
            }
            else
            {
                sides.Add(display, Color.white);
            }
        }
        tileESL = new EditorSelectionList("Select Tile Side", sides, delegate { SelectTileSide(); });
        tileESL.SelectItem();
    }
Example #7
0
 override protected void RefreshReference()
 {
     base.RefreshReference();
     tileComponent = component as QuestData.Tile;
 }
Example #8
0
    public void SelectAddVisibility(bool add, int index, string component)
    {
        string target = component;
        int    i;

        if (component.Equals("{NEW:Door}"))
        {
            i = 0;
            while (game.quest.qd.components.ContainsKey("Door" + i))
            {
                i++;
            }
            target = "Door" + i;
            QuestData.Door door = new QuestData.Door(target);
            Game.Get().quest.qd.components.Add(target, door);

            CameraController cc = GameObject.FindObjectOfType <CameraController>();
            door.location.x = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.x / game.gameType.TileRound());
            door.location.y = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.y / game.gameType.TileRound());

            game.quest.Add(target);
        }
        if (component.Equals("{NEW:Tile}"))
        {
            i = 0;
            while (game.quest.qd.components.ContainsKey("Tile" + i))
            {
                i++;
            }
            target = "Tile" + i;
            QuestData.Tile tile = new QuestData.Tile(target);
            Game.Get().quest.qd.components.Add(target, tile);

            CameraController cc = GameObject.FindObjectOfType <CameraController>();
            tile.location.x = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.x / game.gameType.TileRound());
            tile.location.y = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.y / game.gameType.TileRound());

            game.quest.Add(target);
        }
        if (component.Equals("{NEW:Token}"))
        {
            i = 0;
            while (game.quest.qd.components.ContainsKey("Token" + i))
            {
                i++;
            }
            target = "Token" + i;
            QuestData.Token token = new QuestData.Token(target);
            Game.Get().quest.qd.components.Add(target, token);

            CameraController cc = GameObject.FindObjectOfType <CameraController>();
            token.location.x = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.x / game.gameType.TileRound());
            token.location.y = game.gameType.TileRound() * Mathf.Round(cc.gameObject.transform.position.y / game.gameType.TileRound());

            game.quest.Add(target);
        }
        if (component.Equals("{NEW:UI}"))
        {
            i = 0;
            while (game.quest.qd.components.ContainsKey("UI" + i))
            {
                i++;
            }
            target = "UI" + i;
            Game.Get().quest.qd.components.Add(target, new QuestData.UI(target));
        }
        if (component.Equals("{NEW:QItem}"))
        {
            i = 0;
            while (game.quest.qd.components.ContainsKey("QItem" + i))
            {
                i++;
            }
            target = "QItem" + i;
            Game.Get().quest.qd.components.Add(target, new QuestData.QItem(target));
        }

        if (index != -1)
        {
            if (add)
            {
                eventComponent.addComponents[index] = target;
            }
            else
            {
                eventComponent.removeComponents[index] = target;
            }
            Update();
            return;
        }
        string[] oldC = null;

        if (add)
        {
            oldC = eventComponent.addComponents;
        }
        else
        {
            oldC = eventComponent.removeComponents;
        }
        string[] newC = new string[oldC.Length + 1];
        for (i = 0; i < oldC.Length; i++)
        {
            newC[i] = oldC[i];
        }

        newC[i] = target;

        if (add)
        {
            eventComponent.addComponents = newC;
        }
        else
        {
            eventComponent.removeComponents = newC;
        }
        Update();
    }
Example #9
0
        // Construct with data from the quest, pass Game for speed
        public Tile(QuestData.Tile questTile, Game gameObject) : base(gameObject)
        {
            qTile = questTile;

            // Search for tile in content
            if (game.cd.tileSides.ContainsKey(qTile.tileSideName))
            {
                cTile = game.cd.tileSides[qTile.tileSideName];
            }
            else if (game.cd.tileSides.ContainsKey("TileSide" + qTile.tileSideName))
            {
                cTile = game.cd.tileSides["TileSide" + qTile.tileSideName];
            }
            else
            {
                // Fatal if not found
                Debug.Log("Error: Failed to located TileSide: " + qTile.tileSideName + " in quest component: " + qTile.name);
                Application.Quit();
            }

            // Attempt to load image
            Texture2D newTex = ContentData.FileToTexture(game.cd.tileSides[qTile.tileSideName].image);

            if (newTex == null)
            {
                // Fatal if missing
                Debug.Log("Error: cannot open image file for TileSide: " + game.cd.tileSides[qTile.tileSideName].image);
                Application.Quit();
            }

            // Create a unity object for the tile
            unityObject     = new GameObject("Object" + qTile.name);
            unityObject.tag = "board";
            unityObject.transform.parent = game.boardCanvas.transform;

            // Add image to object
            image = unityObject.AddComponent <UnityEngine.UI.Image>();
            // Create sprite from texture
            Sprite tileSprite = Sprite.Create(newTex, new Rect(0, 0, newTex.width, newTex.height), Vector2.zero, 1);

            // Set image sprite
            image.sprite = tileSprite;
            // Move to get the top left square corner at 0,0
            float vPPS = game.cd.tileSides[qTile.tileSideName].pxPerSquare;
            float hPPS = vPPS;

            // manual aspect control
            // We need this for the 3x2 MoM tiles because they don't have square pixels!!
            if (game.cd.tileSides[qTile.tileSideName].aspect != 0)
            {
                hPPS = (vPPS * newTex.width / newTex.height) / game.cd.tileSides[qTile.tileSideName].aspect;
            }

            // Perform alignment move
            unityObject.transform.Translate(Vector3.right * ((newTex.width / 2) - cTile.left) / hPPS, Space.World);
            unityObject.transform.Translate(Vector3.down * ((newTex.height / 2) - cTile.top) / vPPS, Space.World);
            // Move to get the middle of the top left square at 0,0
            // We don't do this for MoM because it spaces differently
            if (game.gameType.TileOnGrid())
            {
                unityObject.transform.Translate(new Vector3(-(float)0.5, (float)0.5, 0), Space.World);
            }
            // Set the size to the image size
            image.rectTransform.sizeDelta = new Vector2((float)newTex.width / hPPS, (float)newTex.height / vPPS);

            // Rotate around 0,0 rotation amount
            unityObject.transform.RotateAround(Vector3.zero, Vector3.forward, qTile.rotation);
            // Move tile into target location (Space.World is needed because tile has been rotated)
            unityObject.transform.Translate(new Vector3(qTile.location.x, qTile.location.y, 0), Space.World);
            image.color = new Color(1, 1, 1, 0);
        }