diff --git a/hGameTest/project.xml b/hGameTest/project.xml
index d0175150..eaad2b00 100644
--- a/hGameTest/project.xml
+++ b/hGameTest/project.xml
@@ -15,7 +15,8 @@
-
+
+
diff --git a/hGameTest/res/data/textures.json b/hGameTest/res/data/textures.json
new file mode 100644
index 00000000..b148db7d
--- /dev/null
+++ b/hGameTest/res/data/textures.json
@@ -0,0 +1,18 @@
+{
+ "dataScheme":"textureList",
+ "version":1,
+ "textureData": {
+ "spriteSheets":[{
+ "sheetName":"testSheet",
+ "path":"sheets/sheet.png",
+ "sheetDataPath":"sheets/sheet.json",
+ "explicitDimensions":true,
+ "tileDimensions":{"width":16,"height":16}
+ }],
+ "sprites":
+ [{
+ "spriteName":"player",
+ "path":"individual/character.png"
+ }]
+ }
+}
diff --git a/hGameTest/res/textures/sheets/sheet.htex.json b/hGameTest/res/textures/sheets/sheet.htex.json
new file mode 100644
index 00000000..30ee1b76
--- /dev/null
+++ b/hGameTest/res/textures/sheets/sheet.htex.json
@@ -0,0 +1,36 @@
+{
+ "datascheme":"htex",
+ "version":1,
+ "textureData":{
+ "texName":"testsheet",
+ "texType":"atlas",
+ "atlas":{
+ "atlasType":"tilesetgeneric",
+ "tileSize":{
+ "x":16,
+ "y":16
+ },
+ "tilesetGeneric":{
+ "baseTexture":"textures/sheets/sheet.png",
+ "tiles":[
+ "testTile1",
+ "testTile2",
+ "testTile3",
+ "testTile4",
+ "testTile5",
+ "testTile6",
+ "testTile7",
+ "testTile8",
+ "testTile9",
+ "testTile10",
+ "testTile11",
+ "testTile12",
+ "testTile13",
+ "testTile14",
+ "testTile15",
+ "testTile16"
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/res/textures/sheets/sheet.png b/hGameTest/res/textures/sheets/sheet.png
new file mode 100644
index 00000000..7d0a0cd0
Binary files /dev/null and b/hGameTest/res/textures/sheets/sheet.png differ
diff --git a/hGameTest/res/textures/sheets/sheetAnim.htex.json b/hGameTest/res/textures/sheets/sheetAnim.htex.json
new file mode 100644
index 00000000..04d58c08
--- /dev/null
+++ b/hGameTest/res/textures/sheets/sheetAnim.htex.json
@@ -0,0 +1,36 @@
+{
+ "datascheme":"htex",
+ "version":"1",
+ "textureData":{
+ "texName":"testsheet",
+ "texType":"atlas",
+ "atlas":{
+ "atlasType":"tilesetgeneric",
+ "tileSize":{
+ "x":16,
+ "y":16
+ },
+ "tilesetGeneric":{
+ "baseTexture":"textures/sheets/sheet.png",
+ "tiles":[
+ "testTile1",
+ "testTile2",
+ "testTile3",
+ "testTile4",
+ "testTile5",
+ "testTile6",
+ "testTile7",
+ "testTile8",
+ "testTile9",
+ "testTile10",
+ "testTile11",
+ "testTile12",
+ "testTile13",
+ "testTile14",
+ "testTile15",
+ "testTile16"
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/res/sprites/character.png b/hGameTest/res/textures/sprites/character.png
similarity index 100%
rename from hGameTest/res/sprites/character.png
rename to hGameTest/res/textures/sprites/character.png
diff --git a/hGameTest/src/Game.hx b/hGameTest/src/Game.hx
index c9184817..6798ea96 100644
--- a/hGameTest/src/Game.hx
+++ b/hGameTest/src/Game.hx
@@ -5,6 +5,9 @@ import openfl.display.BitmapData;
import openfl.display.Sprite;
import openfl.events.Event;
import openfl.Assets;
+import assets.TextureData;
+import assets.SpriteSheet;
+import assets.Scanner;
class Game
{
@@ -19,10 +22,15 @@ class Game
stage.addChild(player);
//player.graphics.lineStyle(2,0xFF0000);
//player.graphics.drawRect(0,0,16,16);
- var bitmapData:BitmapData = Assets.getBitmapData("sprites/character.png");
- var playerBitmap:Bitmap = new Bitmap(bitmapData);
+ // var bitmapData:BitmapData = Assets.getBitmapData("textures/sprites/character.png");
+ var sheetData:BitmapData = Assets.getBitmapData("textures/sheets/sheet.png");
+ var sheet:SpriteSheet = new SpriteSheet(sheetData);
+
+ var playerBitmap:Bitmap = new Bitmap(sheet.sprites[15]);
playerBitmap.scaleX = playerBitmap.scaleY = 10;
- player.addChild(playerBitmap);
+ player.addChild(playerBitmap);
+ //TextureData.parseConfig();
+ Scanner.scanTextureDir();
//Sys.
}
public function onEnterFrame(e:Event):Void
diff --git a/hGameTest/src/SpriteSheet.hx b/hGameTest/src/SpriteSheet.hx
deleted file mode 100644
index ccbc13e2..00000000
--- a/hGameTest/src/SpriteSheet.hx
+++ /dev/null
@@ -1,16 +0,0 @@
-import openfl.display.BitmapData;
-import openfl.display.Bitmap;
-class SpriteSheet{
- public static var spriteSheetArray:Array = [];
- public var sprites:Array = [];
- public function new(bmp:Bitmap = null, sprWidth:Int = 16, sprHeight:Int = 16){
- spriteSheetArray.push(this);
- var columns:Int = cast((bmp.width / sprWidth),Int);
- var rows:Int = cast((bmp.height / sprHeight),Int);
- for(i in 0...columns){
- for (j in 0...rows){
-
- }
- }
- }
-}
\ No newline at end of file
diff --git a/hGameTest/src/assets/HTex.hx b/hGameTest/src/assets/HTex.hx
new file mode 100644
index 00000000..8481b13e
--- /dev/null
+++ b/hGameTest/src/assets/HTex.hx
@@ -0,0 +1,28 @@
+package assets;
+
+import openfl.display.BitmapData;
+import assets.schema.HTexSchema.TexV1;
+
+class HTex{
+ public static var hTexArray:Array = [];
+ public var bitmaps:Array;
+ public var name:String = "";
+ public function new(_name:String){
+ name = _name;
+ if(hTexArray[name] == null)
+ hTexArray[name] = name;
+ }
+ public static function createTextureObjectFromJSON(path:String){
+ var DATA:TexV1;
+ var loadedData:String = Assets.getText(path);
+ var jsondata = Json.parse(loadedData);
+ DATA = jsondata;
+ DATA = TexV1;
+ if(DATA.dataScheme == "htex"){
+ if(DATA.version == 1){
+ var texdata:TextureDataV1 = Data.textureData;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/Scanner.hx b/hGameTest/src/assets/Scanner.hx
new file mode 100644
index 00000000..f1ba4704
--- /dev/null
+++ b/hGameTest/src/assets/Scanner.hx
@@ -0,0 +1,33 @@
+package assets;
+import sys.io.File;
+import sys.FileSystem;
+
+class Scanner{
+ public static function scanTextureDir(){
+ scanDirsRecursively("textures");
+ }
+ public static var textures:Array = [];
+ public static var dirsToScan:Int = 1;
+ public static function scanDirsRecursively(cd:String){
+ var textureDir:Array = FileSystem.readDirectory(cd);
+ cd+="/";
+ trace(textureDir);
+ for(dir in textureDir){
+ if(FileSystem.isDirectory(cd+dir)){
+ dirsToScan++;
+ trace("Scanning dir: "+dir);
+ scanDirsRecursively(cd+dir);
+ }
+ else{
+ if(dir.indexOf(".htex.json") > -1){
+ textures.push(cd+dir);
+ }
+ }
+ }
+ dirsToScan--;
+ if(dirsToScan == 0){
+ trace("Finished scanning");
+ trace(textures);
+ }
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/SpriteSheet.hx b/hGameTest/src/assets/SpriteSheet.hx
new file mode 100644
index 00000000..8573f842
--- /dev/null
+++ b/hGameTest/src/assets/SpriteSheet.hx
@@ -0,0 +1,26 @@
+package assets;
+
+import openfl.geom.Point;
+import openfl.geom.Rectangle;
+import openfl.display.BitmapData;
+import openfl.display.Bitmap;
+class SpriteSheet{
+ public static var spriteSheetArray:Array = [];
+ public var sprites:Array = [];
+ public function new(bmp:BitmapData = null, sprWidth:Int = 16, sprHeight:Int = 16){
+ spriteSheetArray.push(this);
+ var columns:Int = cast((bmp.width / sprWidth),Int);
+ var rows:Int = cast((bmp.height / sprHeight),Int);
+ //trace("columns:"+columns);
+ //trace("rows"+rows);
+ for(i in 0...rows){
+ for (j in 0...columns){
+ var bmpd:BitmapData = new BitmapData(sprWidth, sprHeight,true,0x00000000);
+ var rect:Rectangle = new Rectangle(j*sprWidth,i*sprHeight,sprWidth,sprHeight);
+ bmpd.copyPixels(bmp, rect, new Point(0,0));
+ sprites.push(bmpd);
+ //trace("i:"+i+",j:"+j);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/TextureData.hx b/hGameTest/src/assets/TextureData.hx
new file mode 100644
index 00000000..227ad5bb
--- /dev/null
+++ b/hGameTest/src/assets/TextureData.hx
@@ -0,0 +1,44 @@
+package assets;
+
+import openfl.Assets;
+import haxe.Json;
+
+typedef TexturesV1={
+ var dataScheme:String;
+ var version:Int;
+ var textureData:{
+ var spriteSheets:Array<{
+ var sheetNamekeke:String;
+ var path:String;
+ var sheetDataPath:String;
+ var explicitDimensions:Bool;
+ var tileDimensions:{
+ var width:Int;
+ var height:Int;
+ };
+ }>;
+ var sprites:Array<{
+ var spriteName:String;
+ var path:String;
+ }>;
+ };
+}
+
+class TextureData{
+ public static var textures:Array = [];
+ public static function parseConfig(path:String = "data/textures.json"){
+ var DATA:TexturesV1;
+ var loadedData:String = Assets.getText(path);
+ var jsondata = Json.parse(loadedData);
+ DATA = jsondata;
+ //var test:String = File.getContent(test.txt);
+ trace(DATA);
+ /*typedef DataModal=
+ {
+ var ID:Int;
+ var NAME:String;
+ var TAGS:Array;
+ }
+ */
+ }
+}
diff --git a/hGameTest/src/assets/schema/HTexSchema.hx b/hGameTest/src/assets/schema/HTexSchema.hx
new file mode 100644
index 00000000..66f4f3e6
--- /dev/null
+++ b/hGameTest/src/assets/schema/HTexSchema.hx
@@ -0,0 +1,47 @@
+package assets.schema;
+
+
+
+typedef TileSetGenericV1={
+ var baseTexture:String;
+ var tiles:Array;
+}
+
+typedef TileSetAnimatedV1={
+ var baseTexture:String;
+ var animations:Array<{
+ var animName:String;
+ var sequenceStart:Int;
+ var sequenceEnd:Int;
+ }>;
+}
+typedef TextureDataV1={
+ var texName:String;
+ var texType:String;
+ var atlas:{
+ var atlasType:String;
+ var tileSize:{
+ var x:Int;
+ var y:Int;
+ },
+ var tileSetGeneric:TileSetGenericV1;
+ var tileSetAnimated:TileSetAnimatedV1;
+ }
+ var path:String;
+ var sheetDataPath:String;
+ var explicitDimensions:Bool;
+ var tileDimensions:{
+ var width:Int;
+ var height:Int;
+ };
+ var sprites:Array<{
+ var spriteName:String;
+ var path:String;
+ }>;
+}
+
+typedef TexV1={
+ var dataScheme:String;
+ var version:Int;
+ var textureData:TextureDataV1;
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/tilesets/Sequence.hx b/hGameTest/src/assets/tilesets/Sequence.hx
new file mode 100644
index 00000000..1f63ad69
--- /dev/null
+++ b/hGameTest/src/assets/tilesets/Sequence.hx
@@ -0,0 +1,12 @@
+package assets.tilesets;
+
+import openfl.display.BitmapData;
+class Sequence{
+ public var bitmaps:Array = [];
+ public var name:String = "";
+ public var currentFrame = 0;
+ public function new(_name:String, _bitmaps:Array){
+ name = _name;
+ bitmaps = _bitmaps;
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/tilesets/TilesetAnimated.hx b/hGameTest/src/assets/tilesets/TilesetAnimated.hx
new file mode 100644
index 00000000..7079e99e
--- /dev/null
+++ b/hGameTest/src/assets/tilesets/TilesetAnimated.hx
@@ -0,0 +1,10 @@
+package assets.tilesets;
+
+import assets.schema.HTexSchema;
+
+class TilesetAnimated{
+ public var sequences:Array = [];
+ public function new(){
+
+ }
+}
\ No newline at end of file
diff --git a/hGameTest/src/assets/tilesets/TilesetGeneric.hx b/hGameTest/src/assets/tilesets/TilesetGeneric.hx
new file mode 100644
index 00000000..15423347
--- /dev/null
+++ b/hGameTest/src/assets/tilesets/TilesetGeneric.hx
@@ -0,0 +1,8 @@
+package assets.tilesets;
+
+
+class TilesetGeneric {
+
+
+
+}
\ No newline at end of file