mirror of
https://git.do.srb2.org/STJr/ZoneBuilder.git
synced 2024-11-10 14:51:52 +00:00
158 lines
3.9 KiB
C#
158 lines
3.9 KiB
C#
|
|
#region ================== Copyright (c) 2012 Pascal vd Heiden
|
|
|
|
/*
|
|
* Copyright (c) 2012 Pascal vd Heiden, www.codeimp.com
|
|
* This program is released under GNU General Public License
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#endregion
|
|
|
|
#region ================== Namespaces
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using CodeImp.DoomBuilder.Plugins.VisplaneExplorer.Properties;
|
|
using CodeImp.DoomBuilder.Windows;
|
|
|
|
#endregion
|
|
|
|
namespace CodeImp.DoomBuilder.Plugins.VisplaneExplorer
|
|
{
|
|
public class BuilderPlug : Plug
|
|
{
|
|
#region ================== Variables
|
|
|
|
// Objects
|
|
private static BuilderPlug me;
|
|
private VPOManager vpo;
|
|
private InterfaceForm interfaceform;
|
|
private bool enabled; //mxd
|
|
|
|
// Palettes
|
|
private Palette[] palettes;
|
|
|
|
#endregion
|
|
|
|
#region ================== Properties
|
|
|
|
// Properties
|
|
public override string Name { get { return "VisplaneExplorer"; } }
|
|
internal static VPOManager VPO { get { return me.vpo; } }
|
|
internal static InterfaceForm InterfaceForm { get { return me.interfaceform; } }
|
|
internal static Palette[] Palettes { get { return me.GetPalettes(); } }
|
|
public override int MinimumRevision { get { return 2411; } }
|
|
|
|
#endregion
|
|
|
|
#region ================== Initialize / Dispose
|
|
|
|
//mxd. Initialize when we can check the map format
|
|
public override void OnMapNewEnd() { OnMapOpenEnd(); }
|
|
public override void OnMapOpenEnd()
|
|
{
|
|
enabled = (General.Map.DOOM || General.Map.HEXEN || General.Map.SRB2);
|
|
if(enabled)
|
|
{
|
|
// Load interface controls
|
|
interfaceform = new InterfaceForm();
|
|
|
|
// Load VPO manager (manages multithreading and communication with vpo.dll)
|
|
vpo = new VPOManager();
|
|
|
|
// Keep a static reference
|
|
me = this;
|
|
}
|
|
}
|
|
|
|
// Preferences changed
|
|
public override void OnClosePreferences(PreferencesController controller)
|
|
{
|
|
base.OnClosePreferences(controller);
|
|
ApplyUserColors();
|
|
}
|
|
|
|
// This is called when the plugin is terminated
|
|
public override void Dispose()
|
|
{
|
|
//mxd. Active and not already disposed?
|
|
if(!IsDisposed)
|
|
{
|
|
if(enabled)
|
|
{
|
|
// Clean up
|
|
interfaceform.Dispose();
|
|
interfaceform = null;
|
|
vpo.Dispose();
|
|
vpo = null;
|
|
|
|
// Done
|
|
me = null;
|
|
}
|
|
|
|
base.Dispose();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ================== Methods
|
|
|
|
//mxd
|
|
private Palette[] GetPalettes()
|
|
{
|
|
if(palettes == null)
|
|
{
|
|
// Load palettes
|
|
palettes = new Palette[(int)ViewStats.NumStats];
|
|
palettes[(int)ViewStats.Visplanes] = new Palette(Resources.Visplanes_pal);
|
|
palettes[(int)ViewStats.Drawsegs] = new Palette(Resources.Drawsegs_pal);
|
|
palettes[(int)ViewStats.Solidsegs] = new Palette(Resources.Solidsegs_pal);
|
|
palettes[(int)ViewStats.Openings] = new Palette(Resources.Openings_pal);
|
|
palettes[(int)ViewStats.Heatmap] = new Palette(Resources.Heatmap_pal); //mxd
|
|
ApplyUserColors();
|
|
}
|
|
return palettes;
|
|
}
|
|
|
|
// This applies user-defined appearance colors to the palettes
|
|
private void ApplyUserColors()
|
|
{
|
|
//mxd
|
|
if(palettes == null)
|
|
{
|
|
GetPalettes();
|
|
return;
|
|
}
|
|
|
|
// Override special palette indices with user-defined colors
|
|
foreach(Palette p in palettes) p.SetColor(Tile.POINT_VOID_B, General.Colors.Background.WithAlpha(0).ToInt());
|
|
}
|
|
|
|
// This returns a unique temp filename
|
|
public static string MakeTempFilename(string extension)
|
|
{
|
|
string filename;
|
|
|
|
do
|
|
{
|
|
//mxd. Generate a filename
|
|
filename = Path.Combine(General.TempPath, MurmurHash2.Hash(DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)) + extension);
|
|
}
|
|
// Continue while file is not unique
|
|
while(File.Exists(filename) || Directory.Exists(filename));
|
|
|
|
// Return the filename
|
|
return filename;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|