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