From ad0539be6872c955276cacc2e4664d4adbd6ece7 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 30 Jul 2023 18:11:19 +1000 Subject: [PATCH] Replaced polyfills with real implementations --- Box | 2 +- assets/airport-demo/init.toy | 55 ++++++++++++--------------- assets/scripts/empty.toy | 1 - assets/scripts/entities/drone.toy | 23 +---------- assets/scripts/entities/explosion.toy | 2 +- assets/scripts/entities/player.toy | 13 +------ assets/scripts/scene.toy | 15 ++------ assets/scripts/tilemap/generator.toy | 8 +--- assets/scripts/tilemap/renderer.toy | 10 +---- 9 files changed, 34 insertions(+), 95 deletions(-) delete mode 100644 assets/scripts/empty.toy diff --git a/Box b/Box index 9cd78b3..4297e15 160000 --- a/Box +++ b/Box @@ -1 +1 @@ -Subproject commit 9cd78b3637f5ae6f5565db88f136b8eb3340dada +Subproject commit 4297e1595974bc5b83565ce970147dd7decf6e4c diff --git a/assets/airport-demo/init.toy b/assets/airport-demo/init.toy index 27c54fc..cbaef0f 100644 --- a/assets/airport-demo/init.toy +++ b/assets/airport-demo/init.toy @@ -1,39 +1,32 @@ -//A quirk of the setup is that anything defined in the root of `init.toy` becomes a global object -//To resolve that, the configuration is inside a block scope -{ - import engine; - import input; +import engine; +import input; - //input settings, mapping SDL2's virtual keys to event names - mapInputEventToKeyDown("character_up", "w"); //event, keysym - mapInputEventToKeyDown("character_left", "a"); //event, keysym - mapInputEventToKeyDown("character_down", "s"); //event, keysym - mapInputEventToKeyDown("character_right", "d"); //event, keysym +//input settings, mapping SDL2's virtual keys to event names +mapInputEventToKeyDown("character_up", "w"); //event, keysym +mapInputEventToKeyDown("character_left", "a"); //event, keysym +mapInputEventToKeyDown("character_down", "s"); //event, keysym +mapInputEventToKeyDown("character_right", "d"); //event, keysym - mapInputEventToKeyUp("character_up", "w"); //event, keysym - mapInputEventToKeyUp("character_left", "a"); //event, keysym - mapInputEventToKeyUp("character_down", "s"); //event, keysym - mapInputEventToKeyUp("character_right", "d"); //event, keysym +mapInputEventToKeyUp("character_up", "w"); //event, keysym +mapInputEventToKeyUp("character_left", "a"); //event, keysym +mapInputEventToKeyUp("character_down", "s"); //event, keysym +mapInputEventToKeyUp("character_right", "d"); //event, keysym - mapInputEventToKeyDown("character_up", "up"); //event, keysym - mapInputEventToKeyDown("character_left", "left"); //event, keysym - mapInputEventToKeyDown("character_down", "down"); //event, keysym - mapInputEventToKeyDown("character_right", "right"); //event, keysym +mapInputEventToKeyDown("character_up", "up"); //event, keysym +mapInputEventToKeyDown("character_left", "left"); //event, keysym +mapInputEventToKeyDown("character_down", "down"); //event, keysym +mapInputEventToKeyDown("character_right", "right"); //event, keysym - mapInputEventToKeyUp("character_up", "up"); //event, keysym - mapInputEventToKeyUp("character_left", "left"); //event, keysym - mapInputEventToKeyUp("character_down", "down"); //event, keysym - mapInputEventToKeyUp("character_right", "right"); //event, keysym +mapInputEventToKeyUp("character_up", "up"); //event, keysym +mapInputEventToKeyUp("character_left", "left"); //event, keysym +mapInputEventToKeyUp("character_down", "down"); //event, keysym +mapInputEventToKeyUp("character_right", "right"); //event, keysym - mapInputEventToKeyDown("character_attack", "space"); //event, keysym +mapInputEventToKeyDown("character_attack", "space"); //event, keysym - //this function must always be called, or the engine won't run - initWindow("Airport", 800, 600, false); - - //kick off the logic of the scene graph - loadRootNode("airport:/airplane.toy"); -} - -//Globals go here +//this function must always be called, or the engine won't run +initWindow("Airport", 800, 600, false); +//kick off the logic of the scene graph +loadRootNode("airport:/airplane.toy"); diff --git a/assets/scripts/empty.toy b/assets/scripts/empty.toy deleted file mode 100644 index 79bacfa..0000000 --- a/assets/scripts/empty.toy +++ /dev/null @@ -1 +0,0 @@ -//this file is a polyfill TODO: fix this diff --git a/assets/scripts/entities/drone.toy b/assets/scripts/entities/drone.toy index 01e222d..9f55c9e 100644 --- a/assets/scripts/entities/drone.toy +++ b/assets/scripts/entities/drone.toy @@ -23,7 +23,7 @@ var stepAI: int = 0; var health: int = 2; var requestFree: bool = false; -//polyfills - animating different cycles on one image +//animating different cycles on one image var walkAnimationCounter: int = 0; @@ -52,7 +52,7 @@ fn isRequestingFree(node: opaque) { if (requestFree) { var parent = node.getParentNode(); - var explosion: opaque = parent.loadChild("scripts:/entities/explosion.toy"); + var explosion: opaque = parent.loadChildNode("scripts:/entities/explosion.toy"); explosion.callNodeFn("setGridPosition", gridPositionX, gridPositionY); return true; } @@ -161,22 +161,3 @@ fn faceDirection(node: opaque, dir: int) { node.setNodeFrames(2); walkAnimationCounter = 12; } - - -//polyfills - move these to standard -fn normalize(x): int { - if (x > 0) { - return 1; - } - if (x < 0) { - return -1; - } - return 0; -} - -fn loadChild(parent: opaque, fname: string) { - //TODO: add this to the API proper - var child: opaque = loadNode(fname); - parent.pushNode(child); - return child; -} \ No newline at end of file diff --git a/assets/scripts/entities/explosion.toy b/assets/scripts/entities/explosion.toy index 3f0d38c..2fe2df3 100644 --- a/assets/scripts/entities/explosion.toy +++ b/assets/scripts/entities/explosion.toy @@ -11,7 +11,7 @@ var TILE_PIXEL_HEIGHT: int const = 16; var gridPositionX: int = null; var gridPositionY: int = null; -//polyfills - animating different cycles on one image +//animating different cycles on one image var walkAnimationCounter: int = 0; var ticksToDeath: int = 4 * 8 - 1; diff --git a/assets/scripts/entities/player.toy b/assets/scripts/entities/player.toy index 5c4c9bd..a2a0129 100644 --- a/assets/scripts/entities/player.toy +++ b/assets/scripts/entities/player.toy @@ -26,7 +26,7 @@ var direction: int = null; //BUGFIX: animation not looping properly var attackPositionX: int = null; var attackPositionY: int = null; -//polyfills - animating different cycles on one image +//animating different cycles on one image var walkAnimationCounter: int = 0; var attackAnimationCounter: int = 0; @@ -272,14 +272,3 @@ fn faceDirection(node: opaque, dir: int) { node.setNodeFrames(4); walkAnimationCounter = 12; } - -//polyfills - move these to standard -fn normalize(x): int { - if (x > 0) { - return 1; - } - if (x < 0) { - return -1; - } - return 0; -} \ No newline at end of file diff --git a/assets/scripts/scene.toy b/assets/scripts/scene.toy index 5d80099..ad43b17 100644 --- a/assets/scripts/scene.toy +++ b/assets/scripts/scene.toy @@ -29,7 +29,7 @@ fn onInit(node: opaque) { node.generateLevel(rng); //generate the child node to render the map - var renderer: opaque = node.loadChild("scripts:/tilemap/renderer.toy"); + var renderer: opaque = node.loadChildNode("scripts:/tilemap/renderer.toy"); renderer.callNodeFn("setTilemap", tilemap); //load the music @@ -102,7 +102,7 @@ fn generateLevel(node: opaque, rng: opaque) { //spawn && position the player - player = node.loadChild("scripts:/entities/player.toy"); + player = node.loadChildNode("scripts:/entities/player.toy"); var w: int const = metadata.length(); var h: int const = metadata[0].length(); @@ -124,7 +124,7 @@ fn generateLevel(node: opaque, rng: opaque) { continue; } - var drone: opaque = node.loadChild("scripts:/entities/drone.toy"); + var drone: opaque = node.loadChildNode("scripts:/entities/drone.toy"); drone.callNodeFn("setGridPosition", room["x"] + x, room["y"] + y); //increment here @@ -201,12 +201,3 @@ fn depthComparator(lhs: opaque, rhs: opaque) { return lhsPositionY < rhsPositionY; } - - -//polyfills -fn loadChild(parent: opaque, fname: string) { - //TODO: add this to the API proper - var child: opaque = loadNode(fname); - parent.pushNode(child); - return child; -} \ No newline at end of file diff --git a/assets/scripts/tilemap/generator.toy b/assets/scripts/tilemap/generator.toy index 8e9b665..5b4ca82 100644 --- a/assets/scripts/tilemap/generator.toy +++ b/assets/scripts/tilemap/generator.toy @@ -555,10 +555,4 @@ fn generateSnapshotAt(x: int, y: int) { } return result; -} - -//polyfill -fn sign(x) { - if (x > 0) return 1; - return -1; -} +} \ No newline at end of file diff --git a/assets/scripts/tilemap/renderer.toy b/assets/scripts/tilemap/renderer.toy index f9e3f26..ae416cf 100644 --- a/assets/scripts/tilemap/renderer.toy +++ b/assets/scripts/tilemap/renderer.toy @@ -34,7 +34,7 @@ fn setTilemap(node: opaque, t: [int]) { tilemap = t; //create a child as a render target - var child = node.loadChild("scripts:/tilemap/renderer-child.toy"); + var child = node.loadChildNode("scripts:/tilemap/renderer-child.toy"); child.createNodeTexture(CELL_WIDTH * CELL_COUNT_X * TILE_PIXEL_WIDTH, CELL_HEIGHT * CELL_COUNT_Y * TILE_PIXEL_HEIGHT); setRenderTarget(child); @@ -66,11 +66,3 @@ fn setTilemap(node: opaque, t: [int]) { //reset the render target to the screen setRenderTarget(null); } - -//polyfills -fn loadChild(parent: opaque, fname: string) { - //TODO: add this to the API proper - var child: opaque = loadNode(fname); - parent.pushNode(child); - return child; -} \ No newline at end of file