UltimateZoneBuilder/Source/Core/Data/DataReader.cs
MaxED 013865e27d Voxels can now be loaded from WAD resources.
Reverted "Delete Item" action to the way it worked in DB2.
Added "Dissolve Item" action, which works the way "Delete Item" worked in previous revisions of GZDB.
Added "Auto Clear Sidedef Textures" action, "Edit" menu and toolbar button, which toggle automatic removal of sidedef textures when floor or ceiling height is changed or when geometry is drawn, copied or pasted.
Draw Settings panel: upper/lower texture overrides can now be used.
Draw Settings panel: added 2 sets of buttons, which allow to quickly set or clear textures in current selection.
Things are now rendered behind AND on top of the grid/linedefs/vertices when they are dragged.
Redesigned hints system. They are now shown in a side panel.
Edit area auto-focusing is now disabled when script editor is open.
Texture Browser form: no texture group was selected when opening the form in some cases.
Fixed several strange/misleading text messages.
2014-01-08 09:46:57 +00:00

187 lines
5.5 KiB
C#

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 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.Collections.Generic;
using System.IO;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.GZBuilder.Data;
#endregion
namespace CodeImp.DoomBuilder.Data
{
internal abstract class DataReader
{
#region ================== Constants
protected const string SPRITE_NAME_PATTERN = "(?i)\\A[a-z0-9]{4}([a-z][0-9]{0,2})$"; //mxd
#endregion
#region ================== Variables
protected DataLocation location;
protected bool issuspended = false;
protected bool isdisposed = false;
protected ResourceTextureSet textureset;
#endregion
#region ================== Properties
public DataLocation Location { get { return location; } }
public bool IsDisposed { get { return isdisposed; } }
public bool IsSuspended { get { return issuspended; } }
public ResourceTextureSet TextureSet { get { return textureset; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public DataReader(DataLocation dl)
{
// Keep information
location = dl;
textureset = new ResourceTextureSet(GetTitle(), dl);
}
// Disposer
public virtual void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Done
textureset = null;
isdisposed = true;
}
}
#endregion
#region ================== Management
// This returns a short name
public abstract string GetTitle();
// This suspends use of this resource
public virtual void Suspend()
{
issuspended = true;
}
// This resumes use of this resource
public virtual void Resume()
{
issuspended = false;
}
#endregion
#region ================== Palette
// When implemented, this should find and load a PLAYPAL palette
public virtual Playpal LoadPalette() { return null; }
#endregion
#region ================== Colormaps
// When implemented, this loads the colormaps
public virtual ICollection<ImageData> LoadColormaps() { return null; }
// When implemented, this returns the colormap lump
public virtual Stream GetColormapData(string pname) { return null; }
#endregion
#region ================== Textures
// When implemented, this should read the patch names
public virtual PatchNames LoadPatchNames() { return null; }
// When implemented, this returns the patch lump
public virtual Stream GetPatchData(string pname) { return null; }
//mxd. When implemented, this returns a path to patch (like /patches/walls/WALL001.png)
public virtual string GetPatchLocation(string pname) { return pname; }
// When implemented, this returns the texture lump
public virtual Stream GetTextureData(string pname) { return null; }
// When implemented, this loads the textures
public virtual ICollection<ImageData> LoadTextures(PatchNames pnames) { return null; }
#endregion
#region ================== Flats
// When implemented, this loads the flats
public virtual ICollection<ImageData> LoadFlats() { return null; }
// When implemented, this returns the flat lump
public virtual Stream GetFlatData(string pname) { return null; }
#endregion
#region ================== Sprites
// When implemented, this loads the sprites
public virtual ICollection<ImageData> LoadSprites() { return null; }
// When implemented, this returns the sprite lump
public virtual Stream GetSpriteData(string pname) { return null; }
// When implemented, this checks if the given sprite lump exists
public virtual bool GetSpriteExists(string pname) { return false; }
#endregion
#region ================== Decorate, Modeldef, Mapinfo, Gldefs, etc...
// When implemented, this returns the decorate lump
public virtual List<Stream> GetDecorateData(string pname) { return new List<Stream>(); }
//mxd. When implemented, this returns the Modeldef lump
public virtual Dictionary<string, Stream> GetModeldefData() { return new Dictionary<string, Stream>(); }
//mxd. When implemented, this returns the Mapinfo lump
public virtual Dictionary<string, Stream> GetMapinfoData() { return new Dictionary<string, Stream>(); }
//mxd. When implemented, this returns the Gldefs lump
public virtual Dictionary<string, Stream> GetGldefsData(GameType gameType) { return new Dictionary<string, Stream>(); }
public virtual Dictionary<string, Stream> GetGldefsData(string location) { return new Dictionary<string, Stream>(); }
//mxd. When implemented, this returns the list of voxel model names
public virtual string[] GetVoxelNames() { return null; }
//mxd. When implemented, this returns the voxel lump
public virtual Stream GetVoxelData(string name) { return null; }
//mxd
public virtual KeyValuePair<string, Stream> GetVoxeldefData() { return new KeyValuePair<string,Stream>(); }
//mxd
internal virtual MemoryStream LoadFile(string name) { return null; }
//mxd
internal virtual bool FileExists(string filename) { return false; }
#endregion
}
}