// Called when room index (or season) is changed void OnRoomChanged() { if (ActiveRoom == null) { return; } eventGroup.Lock(); roomSpinButton.Value = ActiveRoom.Index; warpEditor.SetMap(ActiveRoom.Index >> 8, ActiveRoom.Index & 0xff); SetTileset(ActiveRoomLayout.Tileset); if (roomVre == null) { // This only runs once roomVre = new ValueReferenceEditor(Project, ActiveRoom.ValueReferenceGroup); roomVre.AddWidgetToRight("Tileset", editTilesetButton); roomVreHolder.Add(roomVre); roomVre.ShowAll(); roomTilesetModifiedEventWrapper.Bind <ValueModifiedEventArgs>("ModifiedEvent", (sender, args) => SetTileset((sender as ValueReference).GetIntValue(), ActiveSeason)); } else { roomVre.ReplaceValueReferenceGroup(ActiveRoom.ValueReferenceGroup); } // Watch for changes to this room's tileset roomTilesetModifiedEventWrapper.ReplaceEventSource(ActiveRoom.ValueReferenceGroup["Tileset"]); // Watch for changes to the chest UpdateChestData(); eventGroup.Unlock(); UpdateLayoutGroupWarning(); }
protected void OnWarpsActionActivated(object sender, EventArgs e) { if (openedWarpEditor) { return; } WarpEditor editor = new WarpEditor(Project); editor.SetMap(roomSpinButton.ValueAsInt >> 8, roomSpinButton.ValueAsInt & 0xff); Gtk.Window win = new Window(WindowType.Toplevel); win.Modal = false; win.Add(editor); editor.Destroyed += delegate(object sender2, EventArgs e2) { win.Destroy(); }; win.Destroyed += delegate(object sender2, EventArgs e2) { openedWarpEditor = false; }; openedWarpEditor = true; win.ShowAll(); }