From f68480a98e654667f09738f3db58d21e342076ec Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 18 May 2022 21:45:51 -0400 Subject: [PATCH] blades-engine data importing --- projects/blades-engine/source/data/ScenData.hx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/projects/blades-engine/source/data/ScenData.hx b/projects/blades-engine/source/data/ScenData.hx index c9dab6d1..b7a7c76f 100644 --- a/projects/blades-engine/source/data/ScenData.hx +++ b/projects/blades-engine/source/data/ScenData.hx @@ -27,12 +27,18 @@ class ScenData { failed = []; passed = 0; + assert(floorData[95].name == "Floor", "floor is floor"); + assert(floorData[95].which_sheet == 704, "floor gets the right spritesheet"); + trace(floorData[129]); assert(floorData[129].name == "Floor", "floors can import other floors' data"); + assert(floorData[129].which_sheet == 704, "floors can import other floors' data"); + assert(floorData[129].specialProperty() == BlockedToNPCs, "blocked special property becomes enum"); + trace(terrainData[12].name); assert(terrainData[12].name == "Door", "door is door"); trace('$passed assertions passed'); if (failed.length > 0) { - trace('Assertions failed: $failed'); + trace('${failed.length} assertions failed: $failed'); Sys.exit(1); } @@ -92,9 +98,16 @@ class ScenData { defining = type; id = tid; } + + function _import(id) { + data = mapFor(defining)[id].clone(); + interp.variables["data"] = data; + } + interp.variables["beginDefine"] = beginDefine; interp.variables["beginscendatascript"] = null; interp.variables["clear"] = clear; + interp.variables["_import"] = _import; for (line in scenDataLines) { var commentIndex = line.indexOf("//"); @@ -111,6 +124,8 @@ class ScenData { line = "data." + line.substr(3); } else if (line == "clear;") { line = "clear();"; + } else if (line.startsWith("import =")) { + line = "_" + line.replace("=", "(").replace(";", ");"); } try { interp.execute(parser.parseString(line));