diff --git a/PixelVision8Lite.CoreDesktop.csproj b/PixelVision8Lite.CoreDesktop.csproj
index 8c085bc3..7c318b06 100755
--- a/PixelVision8Lite.CoreDesktop.csproj
+++ b/PixelVision8Lite.CoreDesktop.csproj
@@ -35,6 +35,8 @@
+
+
@@ -164,6 +166,9 @@
+
+
+
diff --git a/SDK/Editor/Editors/GameEditor.cs b/SDK/Editor/Editors/GameEditor.cs
index da686463..763a8cc4 100755
--- a/SDK/Editor/Editors/GameEditor.cs
+++ b/SDK/Editor/Editors/GameEditor.cs
@@ -1149,7 +1149,7 @@ public bool LoadFont(string path)
loadService.targetEngine = targetGame;
- loadService.AddParser(new FontParser(pngReader, targetGame.ColorChip, targetGame.FontChip));
+ loadService.AddParser(new FontParser("", pngReader, targetGame.ColorChip, targetGame.FontChip));
loadService.LoadAll();
diff --git a/SDK/Editor/Exporters/SpriteBuilderExporter.cs b/SDK/Editor/Exporters/SpriteBuilderExporter.cs
index 22257a8b..a795c8dc 100755
--- a/SDK/Editor/Exporters/SpriteBuilderExporter.cs
+++ b/SDK/Editor/Exporters/SpriteBuilderExporter.cs
@@ -37,7 +37,7 @@ internal class SpriteDataParser : SpriteImageParser
public int[] ids;
public int totalSpritesInTexture;
- public SpriteDataParser(IImageParser parser, ColorChip colorChip, SpriteChip spriteChip) : base(parser,
+ public SpriteDataParser(IImageParser parser, ColorChip colorChip, SpriteChip spriteChip) : base("", parser,
colorChip, spriteChip)
{
}
diff --git a/SDK/Lua/Services/LuaService.cs b/SDK/Lua/Services/LuaService.cs
index bcd1e783..1c11f568 100755
--- a/SDK/Lua/Services/LuaService.cs
+++ b/SDK/Lua/Services/LuaService.cs
@@ -283,7 +283,7 @@ public ImageData ReadImage(WorkspacePath src, string maskHex = "#ff00ff", string
- var imageParser = new SpriteImageParser(reader, tmpColorChip);
+ var imageParser = new SpriteImageParser("", reader, tmpColorChip);
// Manually call each step
imageParser.ParseImageData();
diff --git a/SDK/Runner/CSharpRunner.cs b/SDK/Runner/CSharpRunner.cs
index 3254b8cb..4f18f9d8 100755
--- a/SDK/Runner/CSharpRunner.cs
+++ b/SDK/Runner/CSharpRunner.cs
@@ -121,7 +121,7 @@ where fileExtensions.Any(val => p.EndsWith(val))
var fileHelper = new FileLoadHelper();
var imageParser = new PNGParser(_graphics.GraphicsDevice);
- var loader = new Loader(fileHelper, imageParser, _graphics.GraphicsDevice);
+ var loader = new Loader(fileHelper, imageParser);
// Process the files
loader.ParseFiles(gameFiles.ToArray(), _tmpEngine);
diff --git a/SDK/Runner/Parsers/AbstractParser.cs b/SDK/Runner/Parsers/AbstractParser.cs
index 493494fe..ca612ed0 100755
--- a/SDK/Runner/Parsers/AbstractParser.cs
+++ b/SDK/Runner/Parsers/AbstractParser.cs
@@ -31,7 +31,7 @@ public abstract class AbstractParser : IAbstractParser
public int CurrentStep { get; protected set; }
- public string SourcePath;
+ protected string SourcePath;
public virtual byte[] bytes { get; set; }
diff --git a/SDK/Runner/Parsers/ColorParser.cs b/SDK/Runner/Parsers/ColorParser.cs
index 8d487638..18fb8e2c 100755
--- a/SDK/Runner/Parsers/ColorParser.cs
+++ b/SDK/Runner/Parsers/ColorParser.cs
@@ -36,8 +36,9 @@ public class ColorParser : ImageParser
protected Color tmpColor;
protected int totalColors;
- public ColorParser(IImageParser parser, ColorChip colorChip) : base(parser)
+ public ColorParser(string sourceFile, IImageParser parser, ColorChip colorChip) : base(parser)
{
+ SourcePath = sourceFile;
this.colorChip = colorChip;
// unique = colorChip.unique;
magenta = Utilities.HexToColor(colorChip.maskColor);
@@ -57,20 +58,7 @@ public override void CalculateSteps()
public virtual void ReadColors()
{
- // TODO this should be removed in future releases, it's only here to support legacy games
-
- // If we are loading a legacy game and no system colors are defined, used the image parser's palette
-
- // if (colorChip.supportedColors == null)
- // {
- // string[] systemColors = imageParser.colorPalette.Select(c => ((ColorData) c).ToHex()).ToArray();
- ////
- // for (int i = 0; i < systemColors.Length; i++)
- // {
- // colorChip.AddSupportedColor(systemColors[i]);
- // }
- // }
-
+
// Parse colors as normal
var srcColors = Parser.colorPixels;
@@ -85,24 +73,14 @@ public virtual void ReadColors()
if (tmpColor.A < 1) // && !ignoreTransparent)
tmpColor = magenta;
-
- // if(tmpColor != magenta)
- colors.Add(tmpColor);
+ colors.Add(tmpColor);
}
totalColors = colors.Count;
CurrentStep++;
}
- //
- // public void ResetColorChip()
- // {
- // // Clear the colors first
- //// colorChip.Clear();
- //
- // currentStep++;
- // }
-
+
public void UpdateColors()
{
for (var i = 0; i < totalColors; i++)
@@ -116,4 +94,13 @@ public void UpdateColors()
CurrentStep++;
}
}
+
+ public partial class Loader
+ {
+ [FileParser("colors.png")]
+ public void ParseColors(string file, IPlayerChips engine)
+ {
+ AddParser(new ColorParser(file, _imageParser, engine.ColorChip));
+ }
+ }
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/FontParser.cs b/SDK/Runner/Parsers/FontParser.cs
index 768c0515..90c08b73 100755
--- a/SDK/Runner/Parsers/FontParser.cs
+++ b/SDK/Runner/Parsers/FontParser.cs
@@ -47,8 +47,7 @@ public class FontParser : SpriteImageParser
private List uniqueFontColors;
private int[] fontMap;
- public FontParser(IImageParser parser, ColorChip colorChip, FontChip fontChip) : base(parser,
- colorChip, fontChip)
+ public FontParser(string sourceFile, IImageParser parser, ColorChip colorChip, FontChip fontChip) : base(sourceFile, parser, colorChip, fontChip)
{
this.fontChip = fontChip;
}
@@ -109,20 +108,10 @@ protected override void ProcessSpriteData()
public partial class Loader
{
- [FileParser("font.png", "Fonts")]
- public void ParseFonts(string[] files, IPlayerChips engine)
+ [FileParser("font.png")]
+ public void ParseFonts(string file, IPlayerChips engine)
{
- for (int i = 0; i < files.Length; i++)
- {
- // We only want to parse a single sprite file so just take the first one in the list
- // var imageParser = new PNGParser(files[i], _graphicsDevice, engine.ColorChip.maskColor);
-
- AddParser(new FontParser(_imageParser, engine.ColorChip, engine.FontChip)
- {
- SourcePath = files[i]
- });
- }
-
+ AddParser(new FontParser(file, _imageParser, engine.ColorChip, engine.FontChip));
}
}
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/Loader.cs b/SDK/Runner/Parsers/Loader.cs
index dc9e9c3f..6008da50 100755
--- a/SDK/Runner/Parsers/Loader.cs
+++ b/SDK/Runner/Parsers/Loader.cs
@@ -37,13 +37,11 @@ public partial class Loader
public class FileParser : Attribute
{
public string FileType;
- public string FlagType;
public MethodInfo MethodInfo;
- public FileParser(string fileType, string flagType)
+ public FileParser(string fileType)
{
FileType = fileType;
- FlagType = flagType;
}
}
@@ -60,16 +58,13 @@ public FileParser(string fileType, string flagType)
public int TotalSteps;
private readonly IFileLoader _fileLoadHelper;
- private GraphicsDevice _graphicsDevice;
-
public List ParserMapping = new List();
private IImageParser _imageParser;
- public Loader(IFileLoader fileLoadHelper, IImageParser imageParser, GraphicsDevice graphicsDevice = null)
+ public Loader(IFileLoader fileLoadHelper, IImageParser imageParser)
{
_fileLoadHelper = fileLoadHelper;
- _graphicsDevice = graphicsDevice;
_imageParser = imageParser;
var methods = GetType().GetMethods().Where(m=>m.GetCustomAttributes(typeof(FileParser), false).Length > 0).ToArray();
@@ -152,7 +147,12 @@ public virtual void ParseFiles(string[] files, IPlayerChips engine)
if (filesToParse.Length > 0)
{
- parserInfo.MethodInfo.Invoke(this, new object[]{filesToParse, engine});
+
+ for (int j = 0; j < filesToParse.Length; j++)
+ {
+ parserInfo.MethodInfo.Invoke(this, new object[]{filesToParse[j], engine});
+ }
+
}
}
diff --git a/SDK/Runner/Parsers/MetaDataParser.cs b/SDK/Runner/Parsers/MetaDataParser.cs
index a752512a..d7f21357 100755
--- a/SDK/Runner/Parsers/MetaDataParser.cs
+++ b/SDK/Runner/Parsers/MetaDataParser.cs
@@ -46,4 +46,13 @@ public void ApplySettings()
}
}
+
+ public partial class Loader
+ {
+ [FileParser("info.json")]
+ public void ParseMetaData(string file, IPlayerChips engine)
+ {
+ AddParser(new MetaDataParser(file, _fileLoadHelper, engine));
+ }
+ }
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/SpriteImageParser.cs b/SDK/Runner/Parsers/SpriteImageParser.cs
index a7b456b0..b3996792 100755
--- a/SDK/Runner/Parsers/SpriteImageParser.cs
+++ b/SDK/Runner/Parsers/SpriteImageParser.cs
@@ -40,9 +40,11 @@ public class SpriteImageParser : ImageParser
protected int x, y;
public ImageData ImageData;
- public SpriteImageParser(IImageParser parser, ColorChip colorChip, SpriteChip spriteChip = null) : base(parser)
+ public SpriteImageParser(string sourceFile, IImageParser parser, ColorChip colorChip, SpriteChip spriteChip = null) : base(parser)
{
+ SourcePath = sourceFile;
+
Parser = parser;
// this.chips = chips;
@@ -249,15 +251,10 @@ public override void Dispose()
public partial class Loader
{
- [FileParser("sprite.png", "Sprites")]
- public void ParseSprites(string[] files, IPlayerChips engine)
+ [FileParser("sprite.png")]
+ public void ParseSprites(string file, IPlayerChips engine)
{
-
- AddParser(new SpriteImageParser(_imageParser, engine.ColorChip, engine.SpriteChip)
- {
- SourcePath = files[0]
- });
-
+ AddParser(new SpriteImageParser(file, _imageParser, engine.ColorChip, engine.SpriteChip));
}
}
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/SystemParser.cs b/SDK/Runner/Parsers/SystemParser.cs
index d893796b..fae23f08 100755
--- a/SDK/Runner/Parsers/SystemParser.cs
+++ b/SDK/Runner/Parsers/SystemParser.cs
@@ -678,4 +678,23 @@ public void ConfigureMetaSprites(Dictionary data)
}
}
}
+
+ public partial class Loader
+ {
+ [FileParser("data.png")]
+ public void ParseSystem(string file, IPlayerChips engine)
+ {
+ // if (!string.IsNullOrEmpty(files[0]))
+ // {
+ // var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
+
+ var jsonParser = new SystemParser(file, _fileLoadHelper, engine);
+
+ jsonParser.CalculateSteps();
+
+ while (jsonParser.completed == false) jsonParser.NextStep();
+ // }
+
+ }
+ }
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/TilemapJsonParser.cs b/SDK/Runner/Parsers/TilemapJsonParser.cs
index 27c45e7d..dcb134b6 100755
--- a/SDK/Runner/Parsers/TilemapJsonParser.cs
+++ b/SDK/Runner/Parsers/TilemapJsonParser.cs
@@ -294,7 +294,16 @@ public virtual void ConfigureTilemapV1()
StepCompleted();
}
-
-
+ }
+
+ public partial class Loader
+ {
+ [FileParser("tilemap.json")]
+ public void ParseTilemapJson(string file, IPlayerChips engine)
+ {
+
+ AddParser(new TilemapJsonParser(file, _fileLoadHelper, engine));
+
+ }
}
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/TilemapParser.cs b/SDK/Runner/Parsers/TilemapParser.cs
index 5908c7ef..617a26a6 100755
--- a/SDK/Runner/Parsers/TilemapParser.cs
+++ b/SDK/Runner/Parsers/TilemapParser.cs
@@ -29,8 +29,8 @@ public class TilemapParser : SpriteImageParser
private readonly TilemapChip tilemapChip;
private bool autoResize;
- public TilemapParser(IImageParser parser, ColorChip colorChip, SpriteChip spriteChip, TilemapChip tilemapChip, bool autoResize = false) :
- base(parser, colorChip, spriteChip)
+ public TilemapParser(string sourceFile, IImageParser parser, ColorChip colorChip, SpriteChip spriteChip, TilemapChip tilemapChip, bool autoResize = false) :
+ base(sourceFile, parser, colorChip, spriteChip)
{
this.tilemapChip = tilemapChip;
@@ -101,18 +101,10 @@ protected override void ProcessSpriteData()
public partial class Loader
{
- [FileParser("tilemap.png", "Tilemap")]
- public void ParseTilemapImage(string[] files, IPlayerChips engine)
+ [FileParser("tilemap.png")]
+ public void ParseTilemapImage(string file, IPlayerChips engine)
{
-
- // We only want to parse a single sprite file so just take the first one in the list
- // var imageParser = new PNGParser(files[0], _graphicsDevice, engine.ColorChip.maskColor);
-
- AddParser(new TilemapParser(_imageParser, engine.ColorChip, engine.SpriteChip, engine.TilemapChip, true)
- {
- SourcePath = files[0]
- });
-
+ AddParser(new TilemapParser(file, _imageParser, engine.ColorChip, engine.SpriteChip, engine.TilemapChip, true));
}
}
}
\ No newline at end of file
diff --git a/SDK/Runner/Parsers/WavParser.cs b/SDK/Runner/Parsers/WavParser.cs
index f069d73a..3092692d 100755
--- a/SDK/Runner/Parsers/WavParser.cs
+++ b/SDK/Runner/Parsers/WavParser.cs
@@ -61,10 +61,10 @@ public void ConfigureSamples()
public partial class Loader
{
- [FileParser(".wav", "Music")]
- public void ParseWave(string[] files, IPlayerChips engine)
+ [FileParser(".wav")]
+ public void ParseWave(string[] file, IPlayerChips engine)
{
- AddParser(new WavParser(files, _fileLoadHelper, engine ));
+ AddParser(new WavParser(file, _fileLoadHelper, engine ));
}
}
diff --git a/SDK/Runner/Services/LoadService.cs b/SDK/Runner/Services/LoadService.cs
index c8045a67..83d267e4 100755
--- a/SDK/Runner/Services/LoadService.cs
+++ b/SDK/Runner/Services/LoadService.cs
@@ -65,6 +65,7 @@ public LoadService(IFileLoader fileLoadHelper)
///
public string Message { get; protected set; }
+
public virtual void ParseFiles(string[] files, IPlayerChips engine, FileFlags fileFlags)
{
@@ -132,7 +133,7 @@ public virtual void ParseFiles(string[] files, IPlayerChips engine, FileFlags fi
{
//var imageParser = new PNGFileReader(_fileLoadHelper);
- _loader.ParseFonts(paths.ToArray(), targetEngine);
+ _loader.ParseFonts(fileName, targetEngine);
// _loader.AddParser(new FontParser(imageParser, targetEngine.ColorChip, targetEngine.FontChip){
// SourcePath = fileName,
// MaskHex = targetEngine.ColorChip.maskColor
@@ -168,14 +169,14 @@ public virtual void ParseFiles(string[] files, IPlayerChips engine, FileFlags fi
// Step 12 (optional). Look for meta sprites
if ((fileFlags & FileFlags.MetaSprites) == FileFlags.MetaSprites) LoadMetaSprites(files);
- ParseExtraFileTypes(files, engine, fileFlags);
+ // ParseExtraFileTypes(files, engine, fileFlags);
}
- public virtual void ParseExtraFileTypes(string[] files, IPlayerChips engine, FileFlags fileFlags)
- {
- // TODO Override and add extra file parsers here.
- }
+ // public virtual void ParseExtraFileTypes(string[] files, IPlayerChips engine, FileFlags fileFlags)
+ // {
+ // // TODO Override and add extra file parsers here.
+ // }
public void LoadAll()
{
@@ -240,7 +241,8 @@ protected AbstractParser LoadMetaData(string[] files)
{
// var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
- return new MetaDataParser(file, _fileLoadHelper, targetEngine);
+ _loader.ParseMetaData(file, targetEngine);
+ // return new MetaDataParser(file, _fileLoadHelper, targetEngine);
}
return null;
@@ -256,9 +258,11 @@ protected void LoadTilemap(string[] files)
{
// var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
- var jsonParser = new TilemapJsonParser(file, _fileLoadHelper, targetEngine);
-
- _loader.AddParser(jsonParser);
+ _loader.ParseTilemapJson(file, targetEngine);
+
+ // var jsonParser = new TilemapJsonParser(file, _fileLoadHelper, targetEngine);
+ //
+ // _loader.AddParser(jsonParser);
return;
}
@@ -269,7 +273,7 @@ protected void LoadTilemap(string[] files)
if (!string.IsNullOrEmpty(file))
{
- _loader.ParseTilemapImage(new []{file}, targetEngine);
+ _loader.ParseTilemapImage(file, targetEngine);
//var imageParser = new PNGFileReader(_fileLoadHelper);
// _loader.AddParser(new TilemapParser(imageParser, targetEngine.ColorChip, targetEngine.SpriteChip, targetEngine.TilemapChip)
@@ -291,7 +295,7 @@ protected AbstractParser LoadSprites(string[] files)
if (!string.IsNullOrEmpty(file))
{
- _loader.ParseSprites(new []{file}, targetEngine);
+ _loader.ParseSprites(file, targetEngine);
//var imageParser = new PNGFileReader(_fileLoadHelper);
@@ -316,13 +320,15 @@ protected AbstractParser LoadColors(string[] files)
if (!string.IsNullOrEmpty(file))
{
+ _loader.ParseColors(file, targetEngine);
+
// var tex = ReadTexture(ReadAllBytes(file));
// var imageParser = new PNGFileReader(_fileLoadHelper);
- return new ColorParser(imageParser, targetEngine.ColorChip)
- {
- SourcePath = file
- };
+ // return new ColorParser(file, imageParser, targetEngine.ColorChip);
+ // {
+ // SourcePath = file
+ // };
}
return null;
@@ -335,13 +341,15 @@ protected void LoadSystem(string[] files)
if (!string.IsNullOrEmpty(file))
{
- // var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
-
- var jsonParser = new SystemParser(file, _fileLoadHelper, targetEngine);
-
- jsonParser.CalculateSteps();
-
- while (jsonParser.completed == false) jsonParser.NextStep();
+
+ _loader.ParseSystem(file, targetEngine);
+ // // var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
+ //
+ // var jsonParser = new SystemParser(file, _fileLoadHelper, targetEngine);
+ //
+ // jsonParser.CalculateSteps();
+ //
+ // while (jsonParser.completed == false) jsonParser.NextStep();
}
}
@@ -355,8 +363,8 @@ protected void LoadSounds(string[] files)
if (!string.IsNullOrEmpty(file))
{
// var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
-
- _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
+ _loader.ParseSounds(file, targetEngine);
+ // _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
}
}
@@ -371,8 +379,8 @@ protected void LoadMusic(string[] files)
if (!string.IsNullOrEmpty(file))
{
// var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
-
- _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
+ _loader.ParseMusic(file, targetEngine);
+ // _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
}
}
@@ -383,7 +391,10 @@ protected void LoadMetaSprites(string[] files)
if (!string.IsNullOrEmpty(file))
{
- _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
+
+ _loader.ParseMetaSprites(file, targetEngine);
+
+ // _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
}
}
@@ -395,13 +406,43 @@ protected void LoadSaveData(string[] files)
if (!string.IsNullOrEmpty(file))
{
+ _loader.ParseSaveData(file, targetEngine);
// var fileContents = Encoding.UTF8.GetString(ReadAllBytes(file));
- _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
+ // _loader.AddParser(new SystemParser(file, _fileLoadHelper, targetEngine));
}
}
}
+
+ // Custom parsers
+ public partial class Loader
+ {
+ [FileParser("saves.json")]
+ public void ParseSaveData(string file, IPlayerChips engine)
+ {
+ AddParser(new SystemParser(file, _fileLoadHelper, engine));
+ }
+
+ [FileParser("sounds.json")]
+ public void ParseSounds(string file, IPlayerChips engine)
+ {
+ AddParser(new SystemParser(file, _fileLoadHelper, engine));
+ }
+
+ [FileParser("music.json")]
+ public void ParseMusic(string file, IPlayerChips engine)
+ {
+ AddParser(new SystemParser(file, _fileLoadHelper, engine));
+ }
+
+ [FileParser("meta-sprites.json")]
+ public void ParseMetaSprites(string file, IPlayerChips engine)
+ {
+ AddParser(new SystemParser(file, _fileLoadHelper, engine));
+ }
+
+ }
}
\ No newline at end of file