iso engine sampling of blades floor sprites
This commit is contained in:
@@ -11,6 +11,7 @@ import flixel.FlxG;
|
||||
import flash.display.BitmapData;
|
||||
|
||||
import kiss.Prelude;
|
||||
import data.blades.ScenData;
|
||||
|
||||
@:build(kiss.Kiss.build())
|
||||
class IsometricMapState extends FlxState {}
|
||||
class IsometricMapState<FloorData, TerrainData, EntityData, ItemData> extends FlxState {}
|
||||
|
@@ -3,22 +3,21 @@
|
||||
(var FLOOR_HEIGHT 32)
|
||||
(var SPRITE_HEIGHT 55)
|
||||
(prop :Array<FlxSprite> floorTiles [])
|
||||
(prop &mut :ScenData data null)
|
||||
|
||||
(method &override :Void create []
|
||||
(super.create)
|
||||
// TODO load from a more accessible path
|
||||
(let [spriteSheet (data.blades.SpriteSheet.fromSimpleBmp "Data/Terrain Graphics/G796.bmp" FLOOR_WIDTH SPRITE_HEIGHT)]
|
||||
(addSpriteLayer (for row (range 5) (collect (range 5))) spriteSheet)))
|
||||
(set data (ScenData.coreData))
|
||||
(addFloorLayer (groups (collect (range 255)) 32)))
|
||||
|
||||
(method :Void addSpriteLayer [:Array<Array<Int>> tiles :FlxSprite spriteSheet]
|
||||
(method :Void addFloorLayer [:Array<Array<Int>> tiles]
|
||||
(let [&mut rowStartX 0
|
||||
&mut rowStartY 0]
|
||||
(doFor row tiles
|
||||
(let [&mut x rowStartX
|
||||
&mut y rowStartY]
|
||||
(doFor tile row
|
||||
(let [tileSprite (.clone spriteSheet)]
|
||||
(set tileSprite.animation.frameIndex tile)
|
||||
(let [tileSprite (data.floorSprite tile)]
|
||||
(set tileSprite.x x)
|
||||
(set tileSprite.y y)
|
||||
(add tileSprite))
|
||||
|
@@ -8,13 +8,6 @@ class Main extends Sprite
|
||||
{
|
||||
public function new()
|
||||
{
|
||||
var scenData = new ScenData();
|
||||
scenData.load("Data/corescendata.txt");
|
||||
scenData.load("Data/corescendata2.txt");
|
||||
|
||||
scenData.test();
|
||||
|
||||
|
||||
super();
|
||||
addChild(new FlxGame(0, 0, IsometricMapState));
|
||||
}
|
||||
|
@@ -4,18 +4,81 @@ import haxe.iterators.DynamicAccessIterator;
|
||||
import hscript.Parser;
|
||||
import hscript.Interp;
|
||||
import sys.io.File;
|
||||
import sys.FileSystem;
|
||||
import flixel.FlxSprite;
|
||||
import flixel.util.FlxColor;
|
||||
|
||||
using Reflect;
|
||||
using StringTools;
|
||||
using haxe.io.Path;
|
||||
|
||||
class ScenData {
|
||||
public function new() {}
|
||||
private function new() {}
|
||||
|
||||
public var floorData:Map<Int, FloorData> = [];
|
||||
public var terrainData:Map<Int, TerrainData> = [];
|
||||
public var creatureData:Map<Int, CreatureData> = [];
|
||||
public var itemData:Map<Int, ItemData> = [];
|
||||
|
||||
private var spriteSheets:Map<Int, FlxSprite> = [];
|
||||
|
||||
private var data = "";
|
||||
|
||||
public static function coreData() {
|
||||
var d = new ScenData();
|
||||
|
||||
// TODO find the proper data path with the currently installed BoA depending on mac/windows
|
||||
d.data = "Data";
|
||||
|
||||
// load core data:
|
||||
d.load('${d.data}/corescendata.txt');
|
||||
d.load('${d.data}/corescendata2.txt');
|
||||
|
||||
d.test();
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
private function floorOrTerrainSpriteSheet(num:Int) {
|
||||
if (spriteSheets.exists(num)) {
|
||||
return spriteSheets[num];
|
||||
}
|
||||
|
||||
var path = '$data/Terrain Graphics/G$num.bmp';
|
||||
spriteSheets[num] = SpriteSheet.fromSimpleBmp(path, 46, 55);
|
||||
return spriteSheets[num];
|
||||
}
|
||||
|
||||
public function floorSprite(floorId:Int) {
|
||||
if (!floorData.exists(floorId)) {
|
||||
var s = new FlxSprite(0, 0);
|
||||
s.makeGraphic(46, 55, FlxColor.TRANSPARENT);
|
||||
return s;
|
||||
}
|
||||
|
||||
var fd = floorData[floorId];
|
||||
|
||||
var sprite = floorOrTerrainSpriteSheet(fd.which_sheet).clone();
|
||||
sprite.animation.frameIndex = fd.which_icon;
|
||||
|
||||
// TODO if it's animated add the animations
|
||||
|
||||
return sprite;
|
||||
}
|
||||
|
||||
public function terrainSprite(terrainId:Int) {
|
||||
var td = terrainData[terrainId];
|
||||
|
||||
var sprite = floorOrTerrainSpriteSheet(td.which_sheet).clone();
|
||||
sprite.animation.frameIndex = td.which_icon;
|
||||
|
||||
// TODO if it's a tall terrain combine it with the upper sprite and set its origin to offset y
|
||||
|
||||
// TODO if it's animated add the animations
|
||||
|
||||
return sprite;
|
||||
}
|
||||
|
||||
static var failed:Array<String> = [];
|
||||
static var passed = 0;
|
||||
static function assert(e:Bool, msg="") {
|
||||
|
Reference in New Issue
Block a user