From 3cfb9fdc862b792b751590fb6c10b1aab74ba583 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 6 May 2022 16:44:08 -0400 Subject: [PATCH] blades-engine render one tile --- projects/blades-engine/.gitignore | 2 + .../blades-engine/.vscode/extensions.json | 6 ++ projects/blades-engine/.vscode/launch.json | 21 +++++ projects/blades-engine/.vscode/settings.json | 13 +++ projects/blades-engine/.vscode/tasks.json | 13 +++ projects/blades-engine/Project.xml | 86 +++++++++++++++++++ .../assets/images/images-go-here.txt | 0 .../assets/music/music-goes-here.txt | 0 .../assets/sounds/sounds-go-here.txt | 0 projects/blades-engine/hxformat.json | 15 ++++ projects/blades-engine/source/AssetPaths.hx | 4 + .../blades-engine/source/IsometricMapState.hx | 16 ++++ .../source/IsometricMapState.kiss | 62 +++++++++++++ projects/blades-engine/source/Main.hx | 13 +++ 14 files changed, 251 insertions(+) create mode 100644 projects/blades-engine/.gitignore create mode 100644 projects/blades-engine/.vscode/extensions.json create mode 100644 projects/blades-engine/.vscode/launch.json create mode 100644 projects/blades-engine/.vscode/settings.json create mode 100644 projects/blades-engine/.vscode/tasks.json create mode 100644 projects/blades-engine/Project.xml create mode 100644 projects/blades-engine/assets/images/images-go-here.txt create mode 100644 projects/blades-engine/assets/music/music-goes-here.txt create mode 100644 projects/blades-engine/assets/sounds/sounds-go-here.txt create mode 100644 projects/blades-engine/hxformat.json create mode 100644 projects/blades-engine/source/AssetPaths.hx create mode 100644 projects/blades-engine/source/IsometricMapState.hx create mode 100644 projects/blades-engine/source/IsometricMapState.kiss create mode 100644 projects/blades-engine/source/Main.hx diff --git a/projects/blades-engine/.gitignore b/projects/blades-engine/.gitignore new file mode 100644 index 00000000..7814e6e6 --- /dev/null +++ b/projects/blades-engine/.gitignore @@ -0,0 +1,2 @@ +export/ +Data/ \ No newline at end of file diff --git a/projects/blades-engine/.vscode/extensions.json b/projects/blades-engine/.vscode/extensions.json new file mode 100644 index 00000000..89e20eda --- /dev/null +++ b/projects/blades-engine/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "openfl.lime-vscode-extension", + "redhat.vscode-xml" + ] +} diff --git a/projects/blades-engine/.vscode/launch.json b/projects/blades-engine/.vscode/launch.json new file mode 100644 index 00000000..5e9a7a19 --- /dev/null +++ b/projects/blades-engine/.vscode/launch.json @@ -0,0 +1,21 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Build + Debug", + "type": "lime", + "request": "launch" + }, + { + "name": "Debug", + "type": "lime", + "request": "launch", + "preLaunchTask": null + }, + { + "name": "Macro", + "type": "haxe-eval", + "request": "launch" + } + ] +} diff --git a/projects/blades-engine/.vscode/settings.json b/projects/blades-engine/.vscode/settings.json new file mode 100644 index 00000000..4c1a0e92 --- /dev/null +++ b/projects/blades-engine/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "search.exclude": { + "export/**/*.hx": true + }, + "[haxe]": { + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.codeActionsOnSave": { + "source.sortImports": true + } + }, + "haxe.enableExtendedIndentation": true +} \ No newline at end of file diff --git a/projects/blades-engine/.vscode/tasks.json b/projects/blades-engine/.vscode/tasks.json new file mode 100644 index 00000000..16a77646 --- /dev/null +++ b/projects/blades-engine/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "lime", + "command": "test", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/projects/blades-engine/Project.xml b/projects/blades-engine/Project.xml new file mode 100644 index 00000000..ad3d9d85 --- /dev/null +++ b/projects/blades-engine/Project.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/blades-engine/assets/images/images-go-here.txt b/projects/blades-engine/assets/images/images-go-here.txt new file mode 100644 index 00000000..e69de29b diff --git a/projects/blades-engine/assets/music/music-goes-here.txt b/projects/blades-engine/assets/music/music-goes-here.txt new file mode 100644 index 00000000..e69de29b diff --git a/projects/blades-engine/assets/sounds/sounds-go-here.txt b/projects/blades-engine/assets/sounds/sounds-go-here.txt new file mode 100644 index 00000000..e69de29b diff --git a/projects/blades-engine/hxformat.json b/projects/blades-engine/hxformat.json new file mode 100644 index 00000000..66cb3869 --- /dev/null +++ b/projects/blades-engine/hxformat.json @@ -0,0 +1,15 @@ +{ + "lineEnds": { + "leftCurly": "both", + "rightCurly": "both", + "objectLiteralCurly": { + "leftCurly": "after" + } + }, + "sameLine": { + "ifElse": "next", + "doWhile": "next", + "tryBody": "next", + "tryCatch": "next" + } +} diff --git a/projects/blades-engine/source/AssetPaths.hx b/projects/blades-engine/source/AssetPaths.hx new file mode 100644 index 00000000..db7ef444 --- /dev/null +++ b/projects/blades-engine/source/AssetPaths.hx @@ -0,0 +1,4 @@ +package; + +@:build(flixel.system.FlxAssets.buildFileReferences("assets", true)) +class AssetPaths {} diff --git a/projects/blades-engine/source/IsometricMapState.hx b/projects/blades-engine/source/IsometricMapState.hx new file mode 100644 index 00000000..52336cd1 --- /dev/null +++ b/projects/blades-engine/source/IsometricMapState.hx @@ -0,0 +1,16 @@ +package; + +import flixel.FlxState; +import flixel.FlxSprite; +import flixel.util.FlxColor; +import flixel.math.FlxRect; +import flixel.math.FlxVector; +import flixel.graphics.FlxGraphic; +import flixel.FlxG; + +import flash.display.BitmapData; + +import kiss.Prelude; + +@:build(kiss.Kiss.build()) +class IsometricMapState extends FlxState {} diff --git a/projects/blades-engine/source/IsometricMapState.kiss b/projects/blades-engine/source/IsometricMapState.kiss new file mode 100644 index 00000000..8e7f2946 --- /dev/null +++ b/projects/blades-engine/source/IsometricMapState.kiss @@ -0,0 +1,62 @@ +// TODO make these variables +(var FLOOR_WIDTH 46) +(var FLOOR_HEIGHT 32) +(var SPRITE_HEIGHT 55) +(var SPRITE_PADDING 1) + +(prop :Array floorTiles []) + +(method &override :Void create [] + (super.create) + // TODO load from a more accessible path + (let [bitmapData (BitmapData.fromFile "Data/Terrain Graphics/G796.png") + spriteSheet (.loadGraphic (new FlxSprite) (FlxGraphic.fromBitmapData bitmapData))] + (spriteSheet.replaceColor FlxColor.WHITE FlxColor.TRANSPARENT) + (let [sheetWidth (/ (- spriteSheet.frameWidth SPRITE_PADDING) (+ SPRITE_PADDING FLOOR_WIDTH)) + sheetHeight (/ (- spriteSheet.frameHeight SPRITE_PADDING) (+ SPRITE_PADDING SPRITE_HEIGHT))] + (doFor row (range sheetHeight) + (doFor col (range sheetWidth) + (floorTiles.push (let [tile (spriteSheet.clone)] + (set tile.clipRect (new FlxRect + (+ SPRITE_PADDING (* col (+ SPRITE_PADDING FLOOR_WIDTH))) + (+ SPRITE_PADDING (* col (+ SPRITE_PADDING SPRITE_HEIGHT))) + FLOOR_WIDTH + SPRITE_HEIGHT)) + tile)))))) + + (addSpriteLayer ~(for row (range 5) (collect (range 5))))) + +(method :Void addSpriteLayer [:Array> tiles] + (let [&mut rowStartX 0 + &mut rowStartY 0] + (doFor row tiles + (let [&mut x rowStartX + &mut y rowStartY] + (doFor tile row + (let [tileSprite (.clone ~(nth floorTiles tile))] + (set tileSprite.x x) + (set tileSprite.y y) + (add tileSprite)) + (+= x (/ FLOOR_WIDTH 2)) + (+= y (/ FLOOR_HEIGHT 2)))) + + (-= rowStartX (/ FLOOR_WIDTH 2)) + (+= rowStartY (/ FLOOR_HEIGHT 2))))) + +(var CAMERA_SPEED 100) + +(method &override :Void update [:Float elapsed] + (super.update elapsed) + + (let [&mut cameraMovement (new FlxVector 0 0)] + (when (= 0 FlxG.mouse.screenX) + (set cameraMovement.x -1)) + (when (= 0 FlxG.mouse.screenY) + (set cameraMovement.y -1)) + (when (= (- FlxG.width 1) FlxG.mouse.screenX) + (set cameraMovement.x 1)) + (when (= (- FlxG.height 1) FlxG.mouse.screenY) + (set cameraMovement.y 1)) + (set cameraMovement (cameraMovement.truncate 1)) + (set cameraMovement (cameraMovement.scale (* elapsed CAMERA_SPEED))) + (set FlxG.camera.scroll (FlxG.camera.scroll.add cameraMovement.x cameraMovement.y)))) \ No newline at end of file diff --git a/projects/blades-engine/source/Main.hx b/projects/blades-engine/source/Main.hx new file mode 100644 index 00000000..e35b40ae --- /dev/null +++ b/projects/blades-engine/source/Main.hx @@ -0,0 +1,13 @@ +package; + +import flixel.FlxGame; +import openfl.display.Sprite; + +class Main extends Sprite +{ + public function new() + { + super(); + addChild(new FlxGame(0, 0, IsometricMapState)); + } +}