Exemple #1
0
        public virtual int GetTile(int x, int y, PluginManager manager)
        {
            RoomLayout room = manager.GetActiveRoomLayout();
            int        t    = room.GetTile(x, y);

            if (!tiles.Contains(t) || ignoreTiles.Contains(t))
            {
                return(t);
            }

            Func <int, bool> f = a => {
                return(tiles.Contains(a));
            };

            return(GetTileBy(x, y, manager, f));
        }
Exemple #2
0
        public void Apply(PluginManager manager)
        {
            if (baseTiles[0, 0] == -1)
            {
                return;
            }

            AssembleTiles();

            RoomLayout room = manager.GetActiveRoomLayout();

            for (int y = 0; y < room.Height; y++)
            {
                for (int x = 0; x < room.Width; x++)
                {
                    int t = GetTile(x, y, manager);
                    if (t != room.GetTile(x, y))
                    {
                        room.SetTile(x, y, t);
                    }
                }
            }
        }
Exemple #3
0
        public override void Activate()
        {
            RoomLayout room    = manager.GetActiveRoomLayout();
            int        tileset = room.Tileset.Index;

            var reader = new XmlTextReader(Helper.GetResourceStream("LynnaLab.Resources.AutoSmoother.xml"));

            Smoother smoother     = new Smoother();
            bool     validTileset = false;

            string name = "";

            while (reader.Read())
            {
                string s;

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    name = reader.Name;
                    switch (name)
                    {
                    case "tileset":
                        s = reader.GetAttribute("index");
                        List <int> ints = GetIntList(s);
                        validTileset = ints.Contains(tileset);
                        break;
                    }
                    break;

                case XmlNodeType.Text:
                    if (!validTileset)
                    {
                        continue;
                    }

                    s = reader.Value.Trim();
                    switch (name)
                    {
                    case "base":
                    {
                        IEnumerable <int> values = Regex.Split(s, @"\s+")
                                                   .Select(a => Convert.ToInt32(a, 16));
                        int c = 0;
                        foreach (int i in values)
                        {
                            smoother.baseTiles[c / 3, c % 3] = i;
                            c++;
                        }
                    }
                    break;

                    case "horizontal":
                    {
                        IEnumerable <int> values = Regex.Split(s, @"\s+")
                                                   .Select(a => Convert.ToInt32(a, 16));
                        int c = 0;
                        foreach (int i in values)
                        {
                            smoother.hTiles[c] = i;
                            c++;
                        }
                    }
                    break;

                    case "vertical":
                    {
                        IEnumerable <int> values = Regex.Split(s, @"\s+")
                                                   .Select(a => Convert.ToInt32(a, 16));
                        int c = 0;
                        foreach (int i in values)
                        {
                            smoother.vTiles[c] = i;
                            c++;
                        }
                    }
                    break;

                    case "friendly":
                    {
                        s = Regex.Replace(s, @"\s", "");
                        List <int> ints = GetIntList(s);
                        foreach (int i in ints)
                        {
                            smoother.ignoreTiles.Add(i);
                        }
                    }
                    break;
                    }
                    break;

                case XmlNodeType.EndElement:
                    switch (reader.Name)
                    {
                    case "tileset":
                        validTileset = false;
                        break;

                    case "smoother":
                        smoother.Apply(manager);
                        smoother = new Smoother();
                        break;
                    }
                    name = "";
                    break;
                }
            }
        }
Exemple #4
0
        public MapleEditorImplementation(PluginManager manager)
        {
            this.manager = manager;

            minimap = new MyMinimap();

            var minimapContainer = new Gtk.Alignment(1.0f, 1.0f, 1.0f, 1.0f);

            var list = new List <string>(new string[] {
                "Present (Ricky)",
                "Present (Dimitri)",
                "Present (Moosh)"
            });

            if (Project.Game == Game.Ages)
            {
                list.Add("Past");
            }

            Gtk.ComboBox comboBox = new Gtk.ComboBox(list.ToArray());

            comboBox.Changed += (a, b) => {
                int  i = comboBox.Active;
                Data data;
                Map  map;

                if (i == 3)
                {
                    data = Project.GetData("maplePastLocations");
                    map  = Project.GetWorldMap(1, manager.GetActiveRoomLayout().Season);
                }
                else
                {
                    data = Project.GetData(Project.GetData("maplePresentLocationsTable", i * 2).GetValue(0));
                    map  = Project.GetWorldMap(0, manager.GetActiveRoomLayout().Season);
                }

                minimap.Width  = map.MapWidth;
                minimap.Height = map.MapHeight;

                minimap.SetData(data);
                minimap.SetMap(map);
                minimap.Selectable = false;

                minimapContainer.Foreach((c) => minimapContainer.Remove(c));
                minimapContainer.Add(minimap);
                minimapContainer.ShowAll();
            };
            if (manager.GetActiveMap().MainGroup == 1)
            {
                comboBox.Active = 3;
            }
            else
            {
                comboBox.Active = 0;
            }

            Gtk.VBox vbox = new Gtk.VBox();
            vbox.Add(comboBox);
            vbox.Add(minimapContainer);

            this.Add(vbox);
            ShowAll();
        }