From ad2056876e6e4be8e465d60c58d1855a1c405b08 Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Thu, 28 Apr 2022 03:27:44 +0530 Subject: [PATCH] Initial Commit * Adds Menu * Adds Level Manager - LevelBase * Adds Sample level * Basic player movement --- .gitignore | 46 ++++++++++++++++ .vscode/extensions.json | 6 +++ .vscode/launch.json | 21 ++++++++ .vscode/settings.json | 13 +++++ .vscode/tasks.json | 13 +++++ Project.xml | 85 +++++++++++++++++++++++++++++ assets/data/MrPixel.otf | Bin 0 -> 38732 bytes assets/data/level1.json | 50 +++++++++++++++++ assets/data/maps.ogmo | 89 +++++++++++++++++++++++++++++++ assets/images/bg.png | Bin 0 -> 2080 bytes assets/images/sci-fi-tileset.png | Bin 0 -> 3726 bytes assets/music/music-goes-here.txt | 0 assets/sounds/sounds-go-here.txt | 0 hxformat.json | 15 ++++++ source/AssetPaths.hx | 4 ++ source/Main.hx | 19 +++++++ source/PlayState.hx | 19 +++++++ source/core/LevelBase.hx | 56 +++++++++++++++++++ source/core/Types.hx | 9 ++++ source/entities/Player.hx | 75 ++++++++++++++++++++++++++ source/scenes/Credits.hx | 16 ++++++ source/scenes/GameOver.hx | 73 +++++++++++++++++++++++++ source/scenes/Level1.hx | 27 ++++++++++ source/scenes/MenuState.hx | 81 ++++++++++++++++++++++++++++ 24 files changed, 717 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 Project.xml create mode 100644 assets/data/MrPixel.otf create mode 100644 assets/data/level1.json create mode 100644 assets/data/maps.ogmo create mode 100644 assets/images/bg.png create mode 100644 assets/images/sci-fi-tileset.png create mode 100644 assets/music/music-goes-here.txt create mode 100644 assets/sounds/sounds-go-here.txt create mode 100644 hxformat.json create mode 100644 source/AssetPaths.hx create mode 100644 source/Main.hx create mode 100644 source/PlayState.hx create mode 100644 source/core/LevelBase.hx create mode 100644 source/core/Types.hx create mode 100644 source/entities/Player.hx create mode 100644 source/scenes/Credits.hx create mode 100644 source/scenes/GameOver.hx create mode 100644 source/scenes/Level1.hx create mode 100644 source/scenes/MenuState.hx 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 0000000000000000000000000000000000000000..b91b4d06d90da39505ea554effa5b0afd700a32b GIT binary patch literal 38732 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d6ff56cda8991220f82df4b47f33612031e2d3cb GIT binary patch literal 2080 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 b*9A{t5VeRw!Mj*;feFynG=gE(AIAR&7C|aa literal 0 HcmV?d00001 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); + } +}