mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-23 12:22:35 +00:00
@ work on (G)ZDoom Editing plugin
This commit is contained in:
parent
abc0d29c19
commit
1a1c4e7369
9 changed files with 191 additions and 27 deletions
|
@ -380,7 +380,13 @@ namespace CodeImp.DoomBuilder.Config
|
|||
private string GetPluginPathPrefix(Assembly asm)
|
||||
{
|
||||
Plugin p = General.Plugins.FindPluginByAssembly(asm);
|
||||
return "plugins." + p.Name.ToLowerInvariant() + ".";
|
||||
return GetPluginPathPrefix(p.Name);
|
||||
}
|
||||
|
||||
// This makes the path prefix for the given assembly
|
||||
private string GetPluginPathPrefix(string assemblyname)
|
||||
{
|
||||
return "plugins." + assemblyname.ToLowerInvariant() + ".";
|
||||
}
|
||||
|
||||
// ReadPluginSetting
|
||||
|
@ -394,14 +400,14 @@ namespace CodeImp.DoomBuilder.Config
|
|||
public IDictionary ReadPluginSetting(string setting, IDictionary defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(Assembly.GetCallingAssembly()) + setting, defaultsetting); }
|
||||
|
||||
// ReadPluginSetting with specific plugin
|
||||
public string ReadPluginSetting(string pluginname, string setting, string defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public int ReadPluginSetting(string pluginname, string setting, int defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public float ReadPluginSetting(string pluginname, string setting, float defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public short ReadPluginSetting(string pluginname, string setting, short defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public long ReadPluginSetting(string pluginname, string setting, long defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public bool ReadPluginSetting(string pluginname, string setting, bool defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public byte ReadPluginSetting(string pluginname, string setting, byte defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public IDictionary ReadPluginSetting(string pluginname, string setting, IDictionary defaultsetting) { return cfg.ReadSetting(pluginname.ToLowerInvariant() + "." + setting, defaultsetting); }
|
||||
public string ReadPluginSetting(string pluginname, string setting, string defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public int ReadPluginSetting(string pluginname, string setting, int defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public float ReadPluginSetting(string pluginname, string setting, float defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public short ReadPluginSetting(string pluginname, string setting, short defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public long ReadPluginSetting(string pluginname, string setting, long defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public bool ReadPluginSetting(string pluginname, string setting, bool defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public byte ReadPluginSetting(string pluginname, string setting, byte defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
public IDictionary ReadPluginSetting(string pluginname, string setting, IDictionary defaultsetting) { return cfg.ReadSetting(GetPluginPathPrefix(pluginname) + setting, defaultsetting); }
|
||||
|
||||
// WritePluginSetting
|
||||
public bool WritePluginSetting(string setting, object settingvalue) { return cfg.WriteSetting(GetPluginPathPrefix(Assembly.GetCallingAssembly()) + setting, settingvalue); }
|
||||
|
|
|
@ -83,6 +83,16 @@ namespace CodeImp.DoomBuilder.Map
|
|||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
// Constructor
|
||||
public UniValue(UniversalType type, object value)
|
||||
{
|
||||
this.type = (int)type;
|
||||
this.value = value;
|
||||
|
||||
// We have no destructor
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
// Constructor
|
||||
public UniValue(UniValue v)
|
||||
{
|
||||
|
|
|
@ -126,8 +126,8 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
// This loads the plugin settings
|
||||
private void LoadSettings()
|
||||
{
|
||||
changeheightbysidedef = General.Settings.ReadPluginSetting("changeheightbysidedef", 0);
|
||||
visualmodeclearselection = General.Settings.ReadPluginSetting("visualmodeclearselection", false);
|
||||
changeheightbysidedef = General.Settings.ReadPluginSetting("BuilderModes", "changeheightbysidedef", 0);
|
||||
visualmodeclearselection = General.Settings.ReadPluginSetting("BuilderModes", "visualmodeclearselection", false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -138,7 +138,7 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
public override void OnClosePreferences(PreferencesController controller)
|
||||
{
|
||||
base.OnClosePreferences(controller);
|
||||
|
||||
|
||||
// Apply settings that could have been changed
|
||||
LoadSettings();
|
||||
}
|
||||
|
|
|
@ -372,6 +372,10 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
public virtual void OnEditBegin() { }
|
||||
protected virtual void SetTexture(string texturename) { }
|
||||
public abstract bool Setup();
|
||||
protected abstract void SetTextureOffsetX(int x);
|
||||
protected abstract void SetTextureOffsetY(int y);
|
||||
protected abstract void MoveTextureOffset(Point xy);
|
||||
protected abstract Point GetTextureOffset();
|
||||
|
||||
// Insert middle texture
|
||||
public virtual void OnInsert()
|
||||
|
@ -464,9 +468,9 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
mode.SetActionResult("Texture offsets reset.");
|
||||
|
||||
// Apply offsets
|
||||
Sidedef.OffsetX = 0;
|
||||
Sidedef.OffsetY = 0;
|
||||
|
||||
SetTextureOffsetX(0);
|
||||
SetTextureOffsetY(0);
|
||||
|
||||
// Update sidedef geometry
|
||||
VisualSidedefParts parts = Sector.GetSidedefParts(Sidedef);
|
||||
parts.SetupAllParts();
|
||||
|
@ -699,9 +703,9 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
public virtual void OnPasteTextureOffsets()
|
||||
{
|
||||
mode.CreateUndo("Paste texture offsets");
|
||||
Sidedef.OffsetX = BuilderPlug.Me.CopiedOffsets.X;
|
||||
Sidedef.OffsetY = BuilderPlug.Me.CopiedOffsets.Y;
|
||||
mode.SetActionResult("Pasted texture offsets " + Sidedef.OffsetX + ", " + Sidedef.OffsetY + ".");
|
||||
SetTextureOffsetX(BuilderPlug.Me.CopiedOffsets.X);
|
||||
SetTextureOffsetY(BuilderPlug.Me.CopiedOffsets.Y);
|
||||
mode.SetActionResult("Pasted texture offsets " + BuilderPlug.Me.CopiedOffsets.X + ", " + BuilderPlug.Me.CopiedOffsets.Y + ".");
|
||||
|
||||
// Update sidedef geometry
|
||||
VisualSidedefParts parts = Sector.GetSidedefParts(Sidedef);
|
||||
|
@ -719,8 +723,8 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
// Copy texture offsets
|
||||
public virtual void OnCopyTextureOffsets()
|
||||
{
|
||||
BuilderPlug.Me.CopiedOffsets = new Point(Sidedef.OffsetX, Sidedef.OffsetY);
|
||||
mode.SetActionResult("Copied texture offsets " + Sidedef.OffsetX + ", " + Sidedef.OffsetY + ".");
|
||||
BuilderPlug.Me.CopiedOffsets = GetTextureOffset();
|
||||
mode.SetActionResult("Copied texture offsets " + BuilderPlug.Me.CopiedOffsets.X + ", " + BuilderPlug.Me.CopiedOffsets.Y + ".");
|
||||
}
|
||||
|
||||
// Copy properties
|
||||
|
@ -761,10 +765,10 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
dragstartanglexy = General.Map.VisualCamera.AngleXY;
|
||||
dragstartanglez = General.Map.VisualCamera.AngleZ;
|
||||
dragorigin = pickintersect;
|
||||
startoffsetx = Sidedef.OffsetX;
|
||||
startoffsety = Sidedef.OffsetY;
|
||||
prevoffsetx = Sidedef.OffsetX;
|
||||
prevoffsety = Sidedef.OffsetY;
|
||||
startoffsetx = GetTextureOffset().X;
|
||||
startoffsety = GetTextureOffset().Y;
|
||||
prevoffsetx = GetTextureOffset().X;
|
||||
prevoffsety = GetTextureOffset().Y;
|
||||
}
|
||||
|
||||
// Select button released
|
||||
|
@ -932,10 +936,9 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
undoticket = mode.CreateUndo("Change texture offsets");
|
||||
|
||||
// Apply offsets
|
||||
Sidedef.OffsetX -= horizontal;
|
||||
Sidedef.OffsetY -= vertical;
|
||||
MoveTextureOffset(new Point(-horizontal, -vertical));
|
||||
|
||||
mode.SetActionResult("Changed texture offsets to " + Sidedef.OffsetX + ", " + Sidedef.OffsetY + ".");
|
||||
mode.SetActionResult("Changed texture offsets by " + -horizontal + ", " + -vertical + ".");
|
||||
|
||||
// Update sidedef geometry
|
||||
VisualSidedefParts parts = Sector.GetSidedefParts(Sidedef);
|
||||
|
|
|
@ -33,6 +33,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.IO;
|
||||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
using CodeImp.DoomBuilder.VisualModes;
|
||||
|
||||
#endregion
|
||||
|
@ -209,6 +210,34 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
General.Map.Data.UpdateUsedTextures();
|
||||
this.Setup();
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetX(int x)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, (float)x);
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetY(int y)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsety_bottom"] = new UniValue(UniversalType.Float, (float)y);
|
||||
}
|
||||
|
||||
protected override void MoveTextureOffset(Point xy)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f);
|
||||
Sidedef.Fields["offsetx_bottom"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
|
||||
Sidedef.Fields["offsety_bottom"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
|
||||
}
|
||||
|
||||
protected override Point GetTextureOffset()
|
||||
{
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_bottom", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f);
|
||||
return new Point((int)oldx, (int)oldy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.IO;
|
||||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
using CodeImp.DoomBuilder.VisualModes;
|
||||
|
||||
#endregion
|
||||
|
@ -283,6 +284,34 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
General.Map.Data.UpdateUsedTextures();
|
||||
this.Sector.Rebuild();
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetX(int x)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (float)x);
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetY(int y)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, (float)y);
|
||||
}
|
||||
|
||||
protected override void MoveTextureOffset(Point xy)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
|
||||
}
|
||||
|
||||
protected override Point GetTextureOffset()
|
||||
{
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
return new Point((int)oldx, (int)oldy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.IO;
|
||||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
using CodeImp.DoomBuilder.VisualModes;
|
||||
|
||||
#endregion
|
||||
|
@ -282,6 +283,34 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
General.Map.Data.UpdateUsedTextures();
|
||||
this.Setup();
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetX(int x)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (float)x);
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetY(int y)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, (float)y);
|
||||
}
|
||||
|
||||
protected override void MoveTextureOffset(Point xy)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
|
||||
}
|
||||
|
||||
protected override Point GetTextureOffset()
|
||||
{
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
return new Point((int)oldx, (int)oldy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.IO;
|
||||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
using CodeImp.DoomBuilder.VisualModes;
|
||||
|
||||
#endregion
|
||||
|
@ -210,6 +211,34 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
General.Map.Data.UpdateUsedTextures();
|
||||
this.Setup();
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetX(int x)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, (float)x);
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetY(int y)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, (float)y);
|
||||
}
|
||||
|
||||
protected override void MoveTextureOffset(Point xy)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
Sidedef.Fields["offsetx_mid"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
|
||||
Sidedef.Fields["offsety_mid"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
|
||||
}
|
||||
|
||||
protected override Point GetTextureOffset()
|
||||
{
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_mid", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
|
||||
return new Point((int)oldx, (int)oldy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ using CodeImp.DoomBuilder.Data;
|
|||
using CodeImp.DoomBuilder.Editing;
|
||||
using CodeImp.DoomBuilder.IO;
|
||||
using CodeImp.DoomBuilder.Rendering;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
using CodeImp.DoomBuilder.VisualModes;
|
||||
|
||||
#endregion
|
||||
|
@ -209,6 +210,34 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
|
|||
General.Map.Data.UpdateUsedTextures();
|
||||
this.Setup();
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetX(int x)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, (float)x);
|
||||
}
|
||||
|
||||
protected override void SetTextureOffsetY(int y)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
Sidedef.Fields["offsety_top"] = new UniValue(UniversalType.Float, (float)y);
|
||||
}
|
||||
|
||||
protected override void MoveTextureOffset(Point xy)
|
||||
{
|
||||
Sidedef.Fields.BeforeFieldsChange();
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f);
|
||||
Sidedef.Fields["offsetx_top"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
|
||||
Sidedef.Fields["offsety_top"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
|
||||
}
|
||||
|
||||
protected override Point GetTextureOffset()
|
||||
{
|
||||
float oldx = Sidedef.Fields.GetValue("offsetx_top", 0.0f);
|
||||
float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f);
|
||||
return new Point((int)oldx, (int)oldy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue