commit ad2056876e6e4be8e465d60c58d1855a1c405b08 Author: Indrajith K L Date: Thu Apr 28 03:27:44 2022 +0530 Initial Commit * Adds Menu * Adds Level Manager - LevelBase * Adds Sample level * Basic player movement diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f3c021a --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Build Folders +export/ \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..89e20ed --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "openfl.lime-vscode-extension", + "redhat.vscode-xml" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5e9a7a1 --- /dev/null +++ b/.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/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4c1a0e9 --- /dev/null +++ b/.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/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..16a7764 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "lime", + "command": "test", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/Project.xml b/Project.xml new file mode 100644 index 0000000..ad91356 --- /dev/null +++ b/Project.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/data/MrPixel.otf b/assets/data/MrPixel.otf new file mode 100644 index 0000000..b91b4d0 Binary files /dev/null and b/assets/data/MrPixel.otf differ diff --git a/assets/data/level1.json b/assets/data/level1.json new file mode 100644 index 0000000..37be520 --- /dev/null +++ b/assets/data/level1.json @@ -0,0 +1,50 @@ +{ + "ogmoVersion": "3.4.0", + "width": 1056, + "height": 640, + "offsetX": 0, + "offsetY": 0, + "layers": [ + { + "name": "bg", + "_eid": "08002246", + "offsetX": -32, + "offsetY": 0, + "gridCellWidth": 64, + "gridCellHeight": 64, + "gridCellsX": 17, + "gridCellsY": 10, + "tileset": "bg_tileset", + "data": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "exportMode": 0, + "arrayMode": 0 + }, + { + "name": "walls", + "_eid": "08013951", + "offsetX": 0, + "offsetY": 0, + "gridCellWidth": 16, + "gridCellHeight": 16, + "gridCellsX": 66, + "gridCellsY": 40, + "tileset": "main_tileset", + "data": [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], + "exportMode": 0, + "arrayMode": 0 + }, + { + "name": "player_layer", + "_eid": "08485754", + "offsetX": 0, + "offsetY": 0, + "gridCellWidth": 8, + "gridCellHeight": 8, + "gridCellsX": 132, + "gridCellsY": 80, + "entities": [ + {"name": "player", "id": 0, "_eid": "08487422", "x": 32, "y": 80, "originX": 0, "originY": 0} + ] + } + ] +} \ No newline at end of file diff --git a/assets/data/maps.ogmo b/assets/data/maps.ogmo new file mode 100644 index 0000000..87346ba --- /dev/null +++ b/assets/data/maps.ogmo @@ -0,0 +1,89 @@ +{ + "name": "level1", + "ogmoVersion": "3.4.0", + "levelPaths": ["."], + "backgroundColor": "#282c34ff", + "gridColor": "#3c4049cc", + "anglesRadians": true, + "directoryDepth": 5, + "layerGridDefaultSize": {"x": 8, "y": 8}, + "levelDefaultSize": {"x": 320, "y": 240}, + "levelMinSize": {"x": 128, "y": 128}, + "levelMaxSize": {"x": 4096, "y": 4096}, + "levelValues": [], + "defaultExportMode": ".json", + "compactExport": false, + "externalScript": "", + "playCommand": "", + "entityTags": [], + "layers": [ + { + "definition": "tile", + "name": "bg", + "gridSize": {"x": 64, "y": 64}, + "exportID": "08002246", + "exportMode": 0, + "arrayMode": 0, + "defaultTileset": "bg_tileset" + }, + { + "definition": "tile", + "name": "walls", + "gridSize": {"x": 16, "y": 16}, + "exportID": "08013951", + "exportMode": 0, + "arrayMode": 0, + "defaultTileset": "main_tileset" + }, + { + "definition": "entity", + "name": "player_layer", + "gridSize": {"x": 8, "y": 8}, + "exportID": "08485754", + "requiredTags": [], + "excludedTags": [] + } + ], + "entities": [ + { + "exportID": "08487422", + "name": "player", + "limit": -1, + "size": {"x": 16, "y": 16}, + "origin": {"x": 0, "y": 0}, + "originAnchored": true, + "shape": { + "label": "Rectangle", + "points": [ + {"x": -1, "y": -1}, + {"x": 1, "y": -1}, + {"x": -1, "y": 1}, + {"x": 1, "y": -1}, + {"x": -1, "y": 1}, + {"x": 1, "y": 1} + ] + }, + "color": "#ff0000ff", + "tileX": false, + "tileY": false, + "tileSize": {"x": 16, "y": 16}, + "resizeableX": false, + "resizeableY": false, + "rotatable": false, + "rotationDegrees": 360, + "canFlipX": false, + "canFlipY": false, + "canSetColor": false, + "hasNodes": false, + "nodeLimit": 0, + "nodeDisplay": 0, + "nodeGhost": true, + "tags": [], + "values": [] + } + ], + "tilesets": [ + {"label": "main_tileset", "path": "../images/sci-fi-tileset.png", "image": "data:image/png;base64,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", "tileWidth": 16, "tileHeight": 16, "tileSeparationX": 0, "tileSeparationY": 0, "tileMarginX": 0, "tileMarginY": 0}, + {"label": "bg_tileset", "path": "../images/bg.png", "image": "data:image/png;base64,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", "tileWidth": 64, "tileHeight": 64, "tileSeparationX": 0, "tileSeparationY": 0, "tileMarginX": 0, "tileMarginY": 0} + ] +} \ No newline at end of file diff --git a/assets/images/bg.png b/assets/images/bg.png new file mode 100644 index 0000000..d6ff56c Binary files /dev/null and b/assets/images/bg.png differ diff --git a/assets/images/sci-fi-tileset.png b/assets/images/sci-fi-tileset.png new file mode 100644 index 0000000..6587be0 Binary files /dev/null and b/assets/images/sci-fi-tileset.png differ diff --git a/assets/music/music-goes-here.txt b/assets/music/music-goes-here.txt new file mode 100644 index 0000000..e69de29 diff --git a/assets/sounds/sounds-go-here.txt b/assets/sounds/sounds-go-here.txt new file mode 100644 index 0000000..e69de29 diff --git a/hxformat.json b/hxformat.json new file mode 100644 index 0000000..66cb386 --- /dev/null +++ b/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/source/AssetPaths.hx b/source/AssetPaths.hx new file mode 100644 index 0000000..db7ef44 --- /dev/null +++ b/source/AssetPaths.hx @@ -0,0 +1,4 @@ +package; + +@:build(flixel.system.FlxAssets.buildFileReferences("assets", true)) +class AssetPaths {} diff --git a/source/Main.hx b/source/Main.hx new file mode 100644 index 0000000..be6470a --- /dev/null +++ b/source/Main.hx @@ -0,0 +1,19 @@ +package; + +import djFlixel.D; +import flixel.FlxGame; +import openfl.display.Sprite; + +class Main extends Sprite +{ + public function new() + { + super(); + D.init({ + name: "RAW" + D.DJFLX_VER, + debug_keys: true, // Automatic asset reload on [F12] + smoothing: false, + }); + addChild(new FlxGame(0, 0, PlayState, 2)); + } +} diff --git a/source/PlayState.hx b/source/PlayState.hx new file mode 100644 index 0000000..3dec29b --- /dev/null +++ b/source/PlayState.hx @@ -0,0 +1,19 @@ +package; + +import flixel.FlxG; +import flixel.FlxState; +import scenes.MenuState; + +class PlayState extends FlxState +{ + override public function create() + { + super.create(); + FlxG.switchState(new MenuState()); + } + + override public function update(elapsed:Float) + { + super.update(elapsed); + } +} diff --git a/source/core/LevelBase.hx b/source/core/LevelBase.hx new file mode 100644 index 0000000..4d46182 --- /dev/null +++ b/source/core/LevelBase.hx @@ -0,0 +1,56 @@ +package core; + +import core.Types.LevelConfig; +import entities.Player; +import flixel.FlxG; +import flixel.FlxState; +import flixel.addons.editors.ogmo.FlxOgmo3Loader; +import flixel.tile.FlxTilemap; +import scenes.GameOver; + +class LevelBase extends FlxState +{ + var map:FlxOgmo3Loader; + var bg:FlxTilemap; + var walls:FlxTilemap; + var _player:Player; + + public function new(levelConfig:LevelConfig) + { + super(); + map = new FlxOgmo3Loader(levelConfig.ogmoLevel, levelConfig.levelJson); + bg = map.loadTilemap(levelConfig.bgTileSheet, "bg"); + walls = map.loadTilemap(levelConfig.wallTilesheet, "walls"); + bg.scrollFactor.set(.33, .33); + } + + override public function create() + { + super.create(); + add(bg); + add(walls); + map.loadEntities(loadPlayer, 'player_layer'); + FlxG.camera.setScrollBoundsRect(0, 0, walls.width, walls.height, true); + } + + override public function update(elapsed:Float) + { + super.update(elapsed); + FlxG.collide(_player, walls); + + if (_player.y > walls.height) + { + openSubState(new GameOver()); + } + } + + function loadPlayer(entity:EntityData) + { + if (entity.name == "player") + { + _player = new Player(entity.x, entity.y); + add(_player); + FlxG.camera.follow(_player, NO_DEAD_ZONE); + } + } +} diff --git a/source/core/Types.hx b/source/core/Types.hx new file mode 100644 index 0000000..d53dd06 --- /dev/null +++ b/source/core/Types.hx @@ -0,0 +1,9 @@ +package core; + +typedef LevelConfig = +{ + var ogmoLevel:String; + var levelJson:String; + var wallTilesheet:String; + var bgTileSheet:String; +} diff --git a/source/entities/Player.hx b/source/entities/Player.hx new file mode 100644 index 0000000..07f4e12 --- /dev/null +++ b/source/entities/Player.hx @@ -0,0 +1,75 @@ +package entities; + +import flixel.FlxG; +import flixel.FlxSprite; +import flixel.input.actions.FlxAction.FlxActionDigital; +import flixel.input.actions.FlxActionManager; +import flixel.util.FlxColor; + +class Player extends FlxSprite +{ + var actionsManager:FlxActionManager; + + var _left:FlxActionDigital; + var _right:FlxActionDigital; + var _jump:FlxActionDigital; + var _jumpPower:Int = 200; + + public function new(x:Int, y:Int) + { + super(x, y); + + makeGraphic(16, 16, FlxColor.BLUE); + var runSpeed:Int = 80; + drag.x = runSpeed * 8; + acceleration.y = 420; + maxVelocity.set(runSpeed, _jumpPower); + + _left = new FlxActionDigital().addKey(LEFT, PRESSED); + _right = new FlxActionDigital().addKey(RIGHT, PRESSED); + _jump = new FlxActionDigital().addKey(X, JUST_PRESSED); + + if (actionsManager == null) + { + actionsManager = FlxG.inputs.add(new FlxActionManager()); + } + actionsManager.addActions([_left, _right, _jump]); + } + + override public function update(elapsed:Float):Void + { + acceleration.x = 0; + updateInputs(); + super.update(elapsed); + } + + function updateInputs() + { + if (_left.triggered) + moveLeft(); + else if (_right.triggered) + moveRight(); + if (_jump.triggered) + jump(); + // if (_shoot.triggered) + // shoot(); + } + + function moveLeft() + { + acceleration.x -= drag.x; + } + + function moveRight() + { + acceleration.x += drag.x; + } + + function jump() + { + if (velocity.y == 0) + { + velocity.y = -_jumpPower; + } + } +} diff --git a/source/scenes/Credits.hx b/source/scenes/Credits.hx new file mode 100644 index 0000000..6f15084 --- /dev/null +++ b/source/scenes/Credits.hx @@ -0,0 +1,16 @@ +package scenes; + +import flixel.FlxState; + +class Credits extends FlxState +{ + override public function create() + { + super.create(); + } + + override public function update(elapsed:Float) + { + super.update(elapsed); + } +} diff --git a/source/scenes/GameOver.hx b/source/scenes/GameOver.hx new file mode 100644 index 0000000..34b2518 --- /dev/null +++ b/source/scenes/GameOver.hx @@ -0,0 +1,73 @@ +package scenes; + +import djFlixel.gfx.pal.Pal_DB32; +import djFlixel.ui.FlxMenu; +import flixel.FlxG; +import flixel.FlxSprite; +import flixel.FlxSubState; +import flixel.math.FlxPoint; +import flixel.util.FlxColor; +import flixel.util.FlxSpriteUtil; + +class GameOver extends FlxSubState +{ + var bgWidth:Int = 126; + var bgHeight:Int = 116; + var menuWidth:Int = 90; + var bgMenuSpace:Int = 16; + var bgRectDiff:Int = 2; + var menuFontSize:Int = 20; + + public function new() + { + super(0x33000000); + } + + override public function create() + { + super.create(); + + var bg:FlxSprite = new FlxSprite(); + bg.makeGraphic(menuWidth + (bgMenuSpace * 2) + (bgRectDiff * 2), bgHeight, FlxColor.TRANSPARENT); + + FlxSpriteUtil.drawRoundRect(bg, 0, 0, (bgWidth - (bgRectDiff * 2)), bgHeight, 10, 10, FlxColor.BLACK); + var _menu = new FlxMenu(FlxG.width / 2 - (menuWidth / 2 - menuFontSize), FlxG.height / 2, menuWidth); + + bg.setPosition((_menu.x - bgMenuSpace), (_menu.y) - (bgMenuSpace * 2)); + _menu.stI.text = { + f: AssetPaths.MrPixel__otf, + s: menuFontSize, + bt: 1, + so: [1, 1] + }; + _menu.PARAMS.enable_mouse = false; + _menu.stI.col_t = { + idle: Pal_DB32.COL[21], + focus: Pal_DB32.COL[28], + accent: Pal_DB32.COL[29], + dis: Pal_DB32.COL[25], // Disabled + dis_f: Pal_DB32.COL[23], // Disabled focused + }; + _menu.stI.col_b = { + idle: Pal_DB32.COL[1], + focus: Pal_DB32.COL[0] + }; + _menu.stHeader = { + f: AssetPaths.MrPixel__otf, + s: 16, + bt: 2, + bs: 1, + c: Pal_DB32.COL[8], + bc: Pal_DB32.COL[27] + }; + _menu.PARAMS.header_CPS = 30; + _menu.PARAMS.page_anim_parallel = true; + _menu.createPage('main', "GAME OVER").addM(['Restart |link|restart', 'Home |link|home', 'Exit |link|exit']); + _menu.onItemEvent = (a, b) -> {}; + add(bg); + add(_menu); + _menu.goto('main'); + FlxG.camera.follow(null); + FlxG.camera.focusOn(new FlxPoint(0, 0)); + } +} diff --git a/source/scenes/Level1.hx b/source/scenes/Level1.hx new file mode 100644 index 0000000..2da940f --- /dev/null +++ b/source/scenes/Level1.hx @@ -0,0 +1,27 @@ +package scenes; + +import core.LevelBase; +import flixel.FlxState; + +class Level1 extends LevelBase +{ + public function new() + { + super({ + ogmoLevel: AssetPaths.maps__ogmo, + bgTileSheet: AssetPaths.bg__png, + wallTilesheet: AssetPaths.sci_fi_tileset__png, + levelJson: AssetPaths.level1__json + }); + } + + override public function create() + { + super.create(); + } + + override public function update(elapsed:Float) + { + super.update(elapsed); + } +} diff --git a/source/scenes/MenuState.hx b/source/scenes/MenuState.hx new file mode 100644 index 0000000..bfa83cb --- /dev/null +++ b/source/scenes/MenuState.hx @@ -0,0 +1,81 @@ +package scenes; + +import djFlixel.gfx.StarfieldSimple; +import djFlixel.gfx.pal.Pal_DB32; +import djFlixel.ui.FlxMenu; +import flixel.FlxG; +import flixel.FlxState; +import openfl.system.System; + +class MenuState extends FlxState +{ + override public function create() + { + super.create(); + this.generateStarField(); + this.createMenu(); + } + + private function generateStarField() + { + var stars = new StarfieldSimple(); + stars.WIDE_PIXEL = false; + stars.STAR_SPEED = 1.9; + add(stars); + } + + private function createMenu() + { + var _menu = new FlxMenu(FlxG.width / 2 - (70 - 20), FlxG.height / 2 + 40, 140); + _menu.stI.text = { + f: AssetPaths.MrPixel__otf, + s: 20, + bt: 1, + so: [1, 1] + }; + _menu.PARAMS.enable_mouse = false; + _menu.stI.col_t = { + idle: Pal_DB32.COL[21], + focus: Pal_DB32.COL[28], + accent: Pal_DB32.COL[29], + dis: Pal_DB32.COL[25], // Disabled + dis_f: Pal_DB32.COL[23], // Disabled focused + }; + _menu.stI.col_b = { + idle: Pal_DB32.COL[1], + focus: Pal_DB32.COL[0] + }; + _menu.stHeader = { + f: AssetPaths.MrPixel__otf, + s: 16, + bt: 2, + bs: 1, + c: Pal_DB32.COL[8], + bc: Pal_DB32.COL[27] + }; + _menu.PARAMS.header_CPS = 30; + _menu.PARAMS.page_anim_parallel = true; + _menu.createPage('main').addM(['Start |link|gamestart', 'Credits |link|credits', 'Exit |link|exit']); + + _menu.onItemEvent = (a, b) -> + { + if (a == fire) + { + switch (b.ID) + { + case 'gamestart': this.switchState(new Level1()); + case 'credits': this.switchState(new Credits()); + case 'exit': System.exit(0); + } + } + }; + + add(_menu); + _menu.goto('main'); + } + + private function switchState(state) + { + FlxG.switchState(state); + } +}