implemented atlas loading

This commit is contained in:
2021-03-13 00:11:14 +01:00
parent 570816c0b5
commit 56d4651228
12 changed files with 130 additions and 132 deletions

View File

@@ -1,26 +1,38 @@
package assets;
import openfl.display.BitmapData;
import assets.schema.HTexSchema.TexV1;
import openfl.Assets;
import assets.schema.HTexSchema;
import assets.tilesets.TilesetGeneric;
import assets.tilesets.TextureAtlas;
import haxe.Json;
class HTex{
public static var hTexArray:Array<HTex> = [];
public var bitmaps:Array<BitmapData>;
public var name:String = "";
public function new(_name:String){
name = _name;
if(hTexArray[name] == null)
hTexArray[name] = name;
// 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.datascheme == "htex"){
if(DATA.version == 1){
var texdata:TextureDataV1 = Data.textureData;
var td:TextureDataV1 = DATA.textureData;
var width:Int = td.atlas.tileSize.x;
var height:Int = td.atlas.tileSize.y;
if(td.atlas.atlasType == "tilesetgeneric"){
var baseTexturePath:String = td.tilesetGeneric.baseTexture;
var tileNames:Array<String> = td.tilesetGeneric.tiles;
var atlas:TextureAtlas = new TextureAtlas(Assets.getBitmapData(baseTexturePath),width,height);
var tileSetGeneric = new TilesetGeneric(td.texName, atlas, tileNames);
trace(tileSetGeneric);
}
}
}
}

View File

@@ -1,44 +0,0 @@
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<Any> = [];
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<String>;
}
*/
}
}

View File

@@ -0,0 +1,27 @@
package assets;
import openfl.display.BitmapData;
import openfl.Assets;
import haxe.Json;
import assets.tilesets.Tileset;
class TextureFile{
public static var pathMap:Map<String,TextureFile>;
public static function addUser(path:String, user:Dynamic):Void
{
if(pathMap[path] == null){
pathMap[path] = new TextureFile();
}
pathMap[path].users.push(user);
}
public static function removeUser():Void
{
if()
}
public var bitmapData:BitmapData = null;
public var users:Array<Dynamic>=[];
public var path:String;
private function new(){
}
}

View File

@@ -6,7 +6,6 @@ typedef TileSetGenericV1={
var baseTexture:String;
var tiles:Array<String>;
}
typedef TileSetAnimatedV1={
var baseTexture:String;
var animations:Array<{
@@ -23,25 +22,14 @@ typedef TextureDataV1={
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;
}>;
var tilesetGeneric:TileSetGenericV1;
var tilesetAnimated:TileSetAnimatedV1;
}
typedef TexV1={
var dataScheme:String;
var datascheme:String;
var version:Int;
var textureData:TextureDataV1;
}

View File

@@ -4,7 +4,6 @@ import openfl.display.BitmapData;
class Sequence{
public var bitmaps:Array<BitmapData> = [];
public var name:String = "";
public var currentFrame = 0;
public function new(_name:String, _bitmaps:Array<BitmapData>){
name = _name;
bitmaps = _bitmaps;

View File

@@ -1,25 +1,24 @@
package assets;
package assets.tilesets;
import openfl.geom.Point;
import openfl.geom.Rectangle;
import openfl.display.BitmapData;
import openfl.display.Bitmap;
class SpriteSheet{
public static var spriteSheetArray:Array<SpriteSheet> = [];
class TextureAtlas{
public static var tileSetArray:Array<TextureAtlas> = [];
public var sprites:Array<BitmapData> = [];
public var columns:Int;
public var rows:Int;
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);
tileSetArray.push(this);
columns = cast((bmp.width / sprWidth),Int);
rows = cast((bmp.height / sprHeight),Int);
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);
}
}
}

View File

@@ -0,0 +1,13 @@
package assets.tilesets;
class Tileset{
public static var tilesetMap:Map<String, Tileset> = [];
public var texName:String;
public var texAtlas:TextureAtlas;
public function new(name:String, atlas:TextureAtlas){
texName = name;
texAtlas = atlas;
tilesetMap[name] = this;
}
}

View File

@@ -1,8 +1,20 @@
package assets.tilesets;
import openfl.display.BitmapData;
import assets.tilesets.TextureAtlas;
class TilesetGeneric {
class TilesetGeneric extends Tileset{
public var tileMap:Map<String, BitmapData> = [];
public function new(name:String, atlas:TextureAtlas ,tileNames:Array<String>){
super(name,atlas);
for(i in 0...texAtlas.sprites.length-1){
trace(i);
trace(tileNames[i]);
var sprites:Array<BitmapData> = texAtlas.sprites;
tileMap[tileNames[i]] = texAtlas.sprites[i];
}
trace(tileMap);
}
}