示例#1
0
        // Methods

        public void SetRoom(Room r, int season, bool changedFromWarpFollow = false)
        {
            if (r == Room && this.season == season)
            {
                return;
            }

            if (room != null)
            {
                RoomLayout.LayoutModifiedEvent -= OnLayoutModified;
                room.GetObjectGroup().RemoveModifiedHandler(OnObjectModified);
                room.GetWarpGroup().RemoveModifiedHandler(OnWarpModified);
            }

            room = r;
            if (season != -1)
            {
                this.season = season;
            }

            if (room != null)
            {
                RoomLayout.LayoutModifiedEvent += OnLayoutModified;
                room.GetObjectGroup().AddModifiedHandler(OnObjectModified);
                room.GetWarpGroup().AddModifiedHandler(OnWarpModified);

                Width  = room.Width;
                Height = room.Height;

                ObjectGroupEditor.SetObjectGroup(room.GetObjectGroup());
            }

            if (r == null)
            {
                EditingWarpDestination = null;
            }

            GenerateRoomComponents();
            selectedComponent = null;

            if (EditingWarpDestination != null)
            {
                EditingWarpDestination.DestRoom = r;
            }

            roomEventWrapper.ReplaceEventSource(room);
            UpdateChestEvents();

            RoomChangedEvent?.Invoke(this,
                                     new RoomChangedEventArgs {
                room = r, fromFollowWarp = changedFromWarpFollow
            });

            QueueDraw();
        }
示例#2
0
        void UpdatePointerTextBox(Gtk.Entry entry, ValueReference r)
        {
            pointerFrame.Remove(pointerFrame.Child);

            subEditor = new ObjectGroupEditor();
            Gtk.Alignment alignment = new Gtk.Alignment(0.5F, 0.5F, 0.0F, 0.8F);
            try {
                Project.GetFileWithLabel(entry.Text.Trim());
                subEditor.SetObjectGroup(Project.GetDataType <ObjectGroup>(r.GetStringValue()));
                subEditor.ShowAll();
                alignment.Add(subEditor);
                r.SetValue(entry.Text.Trim());
            }
            catch (InvalidLookupException) {
                subEditor.SetObjectGroup(null);
                Gtk.Label label = new Gtk.Label("Error: label \"" + entry.Text + "\" not found.");
                label.Show();
                alignment.Add(label);
            }
            pointerFrame.Label = entry.Text;
            pointerFrame.Add(alignment);
            pointerFrame.ShowAll();
        }
示例#3
0
        void UpdatePointerTextBox(Gtk.Entry entry, ValueReference r)
        {
            pointerFrame.Remove(pointerFrame.Child);

            subEditor = new ObjectGroupEditor();
            Gtk.Alignment alignment = new Gtk.Alignment(0.5F, 0.5F, 0.0F, 0.8F);
            try {
                Project.GetFileWithLabel(entry.Text.Trim());
                subEditor.SetObjectGroup(Project.GetDataType<ObjectGroup>(r.GetStringValue()));
                subEditor.ShowAll();
                alignment.Add(subEditor);
                r.SetValue(entry.Text.Trim());
            }
            catch (LabelNotFoundException) {
                subEditor.SetObjectGroup(null);
                Gtk.Label label = new Gtk.Label("Error: label \"" + entry.Text + "\" not found.");
                label.Show();
                alignment.Add(label);
            }
            pointerFrame.Label = entry.Text;
            pointerFrame.Add(alignment);
            pointerFrame.ShowAll();
        }