mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-02-17 09:32:34 +00:00
Enhanced scripting workflow. Thing and linedef arguments can now have default value in configuration files. Fixed laggy visual camera movement on systems with big uptime. Fixed incorrect alignment of Things with "hangs" flag in GZDoom Visual mode. Fixed Editor crash when nodebuilder fails to build map. A window with error description will be shown instead. Doom light levels were used even in maps in non-doom map format. Tag Explorer plugin: Elements list wasn't updated when map element was deleted. Pugin wasn't disposed properly, which may led to Doom Builder 2 crash on map close. Fixed plugin crash after opening another map. Fixed unresponsive text entry in Filter text box. Fixed plugin crash when Doom Builder can't determmine thing category ("UNKNOWN" category will be used instead).
130 lines
No EOL
4.9 KiB
C#
130 lines
No EOL
4.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
using CodeImp.DoomBuilder;
|
|
using CodeImp.DoomBuilder.Editing;
|
|
using CodeImp.DoomBuilder.Map;
|
|
using CodeImp.DoomBuilder.Windows;
|
|
using CodeImp.DoomBuilder.Plugins;
|
|
using CodeImp.DoomBuilder.Actions;
|
|
using CodeImp.DoomBuilder.VisualModes;
|
|
|
|
using CodeImp.DoomBuilder.ColorPicker.Windows;
|
|
|
|
namespace CodeImp.DoomBuilder.ColorPicker
|
|
{
|
|
public class BuilderPlug : Plug
|
|
{
|
|
private static BuilderPlug me;
|
|
public static BuilderPlug Me { get { return me; } }
|
|
|
|
public override string Name { get { return "Color Picker"; } }
|
|
|
|
private IColorPicker form;
|
|
private ToolsForm toolsform;
|
|
|
|
private Point formLocation; //used to keep form's location constant
|
|
|
|
public override void OnInitialize() {
|
|
if (GZBuilder.GZGeneral.Version < 1.11f) {
|
|
General.ErrorLogger.Add(ErrorType.Error, "ColorPicker plugin: GZDoomBuilder 1.11 or later required!");
|
|
return;
|
|
}
|
|
|
|
base.OnInitialize();
|
|
me = this;
|
|
|
|
General.Actions.BindMethods(this);
|
|
}
|
|
|
|
public override void OnMapOpenEnd() {
|
|
if (toolsform == null)
|
|
toolsform = new ToolsForm();
|
|
}
|
|
|
|
public override void OnMapNewEnd() {
|
|
OnMapOpenEnd();
|
|
}
|
|
|
|
public override void Dispose() {
|
|
base.Dispose();
|
|
General.Actions.UnbindMethods(this);
|
|
|
|
if (form != null) form.Close();
|
|
form = null;
|
|
|
|
if (toolsform != null) toolsform.Dispose();
|
|
toolsform = null;
|
|
}
|
|
|
|
[BeginAction("togglelightpannel")]
|
|
private void toggleLightPannel() {
|
|
if (General.Editing.Mode == null)
|
|
return;
|
|
|
|
string currentModeName = General.Editing.Mode.GetType().Name;
|
|
|
|
//display one of colorPickers or tell the user why we can't do that
|
|
if (currentModeName == "ThingsMode") {
|
|
if(General.Map.Map.SelectedThingsCount == 0){
|
|
General.Interface.DisplayStatus(StatusType.Warning, "Select some lights first!");
|
|
return;
|
|
}
|
|
form = new LightColorPicker();
|
|
|
|
} else if (currentModeName == "SectorsMode") {
|
|
if (General.Map.UDMF) {
|
|
if (General.Map.Map.SelectedSectorsCount == 0) {
|
|
General.Interface.DisplayStatus(StatusType.Warning, "Select some sectors first!");
|
|
return;
|
|
}
|
|
form = new SectorColorPicker();
|
|
} else {
|
|
General.Interface.DisplayStatus(StatusType.Warning, "Sector colors can only be set if map is in UDMF format!");
|
|
return;
|
|
}
|
|
|
|
} else if (currentModeName == "BaseVisualMode") {
|
|
//nothing selected in visual mode?
|
|
if ( ((VisualMode)General.Editing.Mode).GetSelectedVisualThings(true).Count == 0 ) {
|
|
//check sectors
|
|
int selectedSectorsCount = ((VisualMode)General.Editing.Mode).GetSelectedVisualSectors(true).Count;
|
|
if (General.Map.UDMF && (selectedSectorsCount > 0 || General.Map.Map.SelectedSectorsCount > 0)) {
|
|
form = new SectorColorPicker();
|
|
} else {
|
|
General.Interface.DisplayStatus(StatusType.Warning, "Select some lights " + (General.Map.UDMF ? ", sectors or surfaces " : "") + "first!");
|
|
return;
|
|
}
|
|
} else {
|
|
form = new LightColorPicker();
|
|
}
|
|
} else { //wrong mode
|
|
General.Interface.DisplayStatus(StatusType.Warning, "Switch to" + (General.Map.UDMF ? " Sectors," : "") + " Things or GZDoom Visual Mode first!");
|
|
return;
|
|
}
|
|
|
|
if (form.Setup(currentModeName)) {
|
|
if (formLocation.X == 0 && formLocation.Y == 0) {
|
|
Size displaySize = Plug.DisplaySize;
|
|
Point displayLocation = Plug.DisplayLocationAbs;
|
|
formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 32);
|
|
}
|
|
form.Location = formLocation;
|
|
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
|
|
form.ShowDialog(Form.ActiveForm);
|
|
} else {
|
|
form.Dispose();
|
|
form = null;
|
|
}
|
|
}
|
|
|
|
private void form_FormClosed(object sender, FormClosedEventArgs e) {
|
|
formLocation = form.Location;
|
|
form.Dispose();
|
|
form = null;
|
|
}
|
|
}
|
|
} |