├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── CMakeLists.txt ├── CppProperties.json ├── Justfile ├── README.md ├── assets ├── Pixel Adventure 1 │ ├── Background │ │ ├── Blue.png │ │ ├── Brown.png │ │ ├── Gray.png │ │ ├── Green.png │ │ ├── Pink.png │ │ ├── Purple.png │ │ └── Yellow.png │ ├── Items │ │ ├── Boxes │ │ │ ├── Box1 │ │ │ │ ├── Break.png │ │ │ │ ├── Hit (28x24).png │ │ │ │ └── Idle.png │ │ │ ├── Box2 │ │ │ │ ├── Break.png │ │ │ │ ├── Hit (28x24).png │ │ │ │ └── Idle.png │ │ │ └── Box3 │ │ │ │ ├── Break.png │ │ │ │ ├── Hit (28x24).png │ │ │ │ └── Idle.png │ │ ├── Checkpoints │ │ │ ├── Checkpoint │ │ │ │ ├── Checkpoint (Flag Idle)(64x64).png │ │ │ │ ├── Checkpoint (Flag Out) (64x64).png │ │ │ │ └── Checkpoint (No Flag).png │ │ │ ├── End │ │ │ │ ├── End (Idle).png │ │ │ │ └── End (Pressed) (64x64).png │ │ │ └── Start │ │ │ │ ├── Start (Idle).png │ │ │ │ └── Start (Moving) (64x64).png │ │ └── Fruits │ │ │ ├── Apple.png │ │ │ ├── Bananas.png │ │ │ ├── Cherries.png │ │ │ ├── Collected.png │ │ │ ├── Kiwi.png │ │ │ ├── Melon.png │ │ │ ├── Orange.png │ │ │ ├── Pineapple.png │ │ │ └── Strawberry.png │ ├── Main Characters │ │ ├── Appearing (96x96).png │ │ ├── Desappearing (96x96).png │ │ ├── Mask Dude │ │ │ ├── Double Jump (32x32).png │ │ │ ├── Fall (32x32).png │ │ │ ├── Hit (32x32).png │ │ │ ├── Idle (32x32).png │ │ │ ├── Jump (32x32).png │ │ │ ├── Run (32x32).png │ │ │ └── Wall Jump (32x32).png │ │ ├── Ninja Frog │ │ │ ├── Double Jump (32x32).png │ │ │ ├── Fall (32x32).png │ │ │ ├── Hit (32x32).png │ │ │ ├── Idle (32x32).png │ │ │ ├── Jump (32x32).png │ │ │ ├── Run (32x32).png │ │ │ └── Wall Jump (32x32).png │ │ ├── Pink Man │ │ │ ├── Double Jump (32x32).png │ │ │ ├── Fall (32x32).png │ │ │ ├── Hit (32x32).png │ │ │ ├── Idle (32x32).png │ │ │ ├── Jump (32x32).png │ │ │ ├── Run (32x32).png │ │ │ └── Wall Jump (32x32).png │ │ └── Virtual Guy │ │ │ ├── Double Jump (32x32).png │ │ │ ├── Fall (32x32).png │ │ │ ├── Hit (32x32).png │ │ │ ├── Idle (32x32).png │ │ │ ├── Jump (32x32).png │ │ │ ├── Run (32x32).png │ │ │ └── Wall Jump (32x32).png │ ├── Menu │ │ ├── Buttons │ │ │ ├── Achievements.png │ │ │ ├── Back.png │ │ │ ├── Close.png │ │ │ ├── Leaderboard.png │ │ │ ├── Levels.png │ │ │ ├── Next.png │ │ │ ├── Play.png │ │ │ ├── Previous.png │ │ │ ├── Restart.png │ │ │ ├── Settings.png │ │ │ └── Volume.png │ │ ├── Levels │ │ │ ├── 01.png │ │ │ ├── 02.png │ │ │ ├── 03.png │ │ │ ├── 04.png │ │ │ ├── 05.png │ │ │ ├── 06.png │ │ │ ├── 07.png │ │ │ ├── 08.png │ │ │ ├── 09.png │ │ │ ├── 10.png │ │ │ ├── 11.png │ │ │ ├── 12.png │ │ │ ├── 13.png │ │ │ ├── 14.png │ │ │ ├── 15.png │ │ │ ├── 16.png │ │ │ ├── 17.png │ │ │ ├── 18.png │ │ │ ├── 19.png │ │ │ ├── 20.png │ │ │ ├── 21.png │ │ │ ├── 22.png │ │ │ ├── 23.png │ │ │ ├── 24.png │ │ │ ├── 25.png │ │ │ ├── 26.png │ │ │ ├── 27.png │ │ │ ├── 28.png │ │ │ ├── 29.png │ │ │ ├── 30.png │ │ │ ├── 31.png │ │ │ ├── 32.png │ │ │ ├── 33.png │ │ │ ├── 34.png │ │ │ ├── 35.png │ │ │ ├── 36.png │ │ │ ├── 37.png │ │ │ ├── 38.png │ │ │ ├── 39.png │ │ │ ├── 40.png │ │ │ ├── 41.png │ │ │ ├── 42.png │ │ │ ├── 43.png │ │ │ ├── 44.png │ │ │ ├── 45.png │ │ │ ├── 46.png │ │ │ ├── 47.png │ │ │ ├── 48.png │ │ │ ├── 49.png │ │ │ └── 50.png │ │ └── Text │ │ │ ├── Text (Black) (8x10).png │ │ │ └── Text (White) (8x10).png │ ├── Other │ │ ├── Confetti (16x16).png │ │ ├── Dust Particle.png │ │ ├── Shadow.png │ │ └── Transition.png │ ├── Terrain │ │ └── Terrain (16x16).png │ └── Traps │ │ ├── Arrow │ │ ├── Hit (18x18).png │ │ └── Idle (18x18).png │ │ ├── Blocks │ │ ├── HitSide (22x22).png │ │ ├── HitTop (22x22).png │ │ ├── Idle.png │ │ ├── Part 1 (22x22).png │ │ └── Part 2 (22x22).png │ │ ├── Falling Platforms │ │ ├── Off.png │ │ └── On (32x10).png │ │ ├── Fan │ │ ├── Off.png │ │ └── On (24x8).png │ │ ├── Fire │ │ ├── Hit (16x32).png │ │ ├── Off.png │ │ └── On (16x32).png │ │ ├── Platforms │ │ ├── Brown Off.png │ │ ├── Brown On (32x8).png │ │ ├── Chain.png │ │ ├── Grey Off.png │ │ └── Grey On (32x8).png │ │ ├── Rock Head │ │ ├── Blink (42x42).png │ │ ├── Bottom Hit (42x42).png │ │ ├── Idle.png │ │ ├── Left Hit (42x42).png │ │ ├── Right Hit (42x42).png │ │ └── Top Hit (42x42).png │ │ ├── Sand Mud Ice │ │ ├── Ice Particle.png │ │ ├── Mud Particle.png │ │ ├── Sand Mud Ice (16x6).png │ │ └── Sand Particle.png │ │ ├── Saw │ │ ├── Chain.png │ │ ├── Off.png │ │ └── On (38x38).png │ │ ├── Spike Head │ │ ├── Blink (54x52).png │ │ ├── Bottom Hit (54x52).png │ │ ├── Idle.png │ │ ├── Left Hit (54x52).png │ │ ├── Right Hit (54x52).png │ │ └── Top Hit (54x52).png │ │ ├── Spiked Ball │ │ ├── Chain.png │ │ └── Spiked Ball.png │ │ ├── Spikes │ │ └── Idle.png │ │ └── Trampoline │ │ ├── Idle.png │ │ └── Jump (28x28).png ├── dinoCharactersVersion1.1 │ ├── aseprite │ │ ├── DinoSprites.ase │ │ └── dinoCharacters-display.ase │ ├── changelog.txt │ └── sheets │ │ ├── DinoSprites - doux.png │ │ ├── DinoSprites - mort.png │ │ ├── DinoSprites - tard.png │ │ └── DinoSprites - vita.png ├── test.png └── world.ldtk └── sources ├── Constants.hpp ├── entities ├── BaseEntity.hpp ├── Player │ ├── Player.cpp │ └── Player.hpp └── Portal │ └── Portal.hpp ├── main.cpp ├── minshell.html ├── physics ├── PhysicsTypes.hpp └── RaycastUtils.hpp ├── scenes ├── BaseScene.hpp ├── GameScene │ ├── GameScene.cpp │ └── GameScene.hpp ├── SceneManager.hpp ├── Scenes.hpp └── TitleScene │ ├── TitleScene.cpp │ └── TitleScene.hpp └── utils └── DebugUtils.hpp /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | .vs -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "(gdb) Launch", 9 | "type": "cppdbg", 10 | "request": "launch", 11 | "program": "${workspaceRoot}/build/raylib-cpp-cmake-template", 12 | "args": [], 13 | "stopAtEntry": false, 14 | "cwd": "${fileDirname}", 15 | "environment": [], 16 | "externalConsole": false, 17 | "MIMode": "gdb", 18 | "preLaunchTask": "CMake: build", 19 | "setupCommands": [ 20 | { 21 | "description": "Enable pretty-printing for gdb", 22 | "text": "-enable-pretty-printing", 23 | "ignoreFailures": true 24 | }, 25 | { 26 | "description": "Set Disassembly Flavor to Intel", 27 | "text": "-gdb-set disassembly-flavor intel", 28 | "ignoreFailures": true 29 | } 30 | ] 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "cmake", 6 | "label": "CMake: build", 7 | "command": "build", 8 | "targets": [ 9 | "raylib-cpp-cmake-template" 10 | ], 11 | "group": { 12 | "kind": "build", 13 | "isDefault": true 14 | }, 15 | "problemMatcher": [], 16 | "detail": "CMake template build task" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.22) 2 | project(raylib-cpp-cmake-template CXX) 3 | 4 | set(CMAKE_CXX_STANDARD 20) 5 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 6 | 7 | include(FetchContent) 8 | 9 | ########################################################################################## 10 | # Add dependencies with FetchContent 11 | ########################################################################################## 12 | 13 | function(add_git_dependency libName gitURL gitTag) 14 | FetchContent_Declare(${libName} 15 | GIT_REPOSITORY ${gitURL} 16 | GIT_TAG ${gitTag} 17 | GIT_SHALLOW TRUE 18 | GIT_PROGRESS TRUE 19 | ) 20 | FetchContent_MakeAvailable(${libName}) 21 | target_compile_options(${libName} PRIVATE "-w") 22 | endfunction() 23 | 24 | # Add Raylib 25 | set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples 26 | set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # don't build the supplied example games 27 | add_git_dependency( 28 | raylib 29 | https://github.com/raysan5/raylib.git 30 | 5.5 31 | ) 32 | # Special handling for raygui since its CMakeLists.txt is not at the root of the repo 33 | set(BUILD_RAYGUI_EXAMPLES OFF CACHE BOOL "" FORCE) 34 | FetchContent_Declare(raygui 35 | GIT_REPOSITORY https://github.com/raysan5/raygui.git 36 | GIT_TAG 4.0 37 | GIT_SHALLOW TRUE 38 | GIT_PROGRESS TRUE 39 | ) 40 | FetchContent_GetProperties(raygui) 41 | if(NOT raygui_POPULATED) 42 | FetchContent_Populate(raygui) 43 | add_subdirectory(${raygui_SOURCE_DIR}/projects/CMake raygui) 44 | target_compile_options(raygui INTERFACE "-w") 45 | endif() 46 | 47 | # Add LDtkLoader 48 | add_git_dependency( 49 | LDtkLoader 50 | https://github.com/Madour/LDtkLoader.git 51 | 1.5.3.1 52 | ) 53 | 54 | # Add Box2d 55 | set(BOX2D_BUILD_UNIT_TESTS OFF CACHE BOOL "" FORCE) 56 | set(BOX2D_BUILD_TESTBED OFF CACHE BOOL "" FORCE) 57 | add_git_dependency( 58 | box2d 59 | https://github.com/erincatto/box2d.git 60 | v2.4.1 61 | ) 62 | 63 | # Add {fmt} library 64 | add_git_dependency( 65 | fmt 66 | https://github.com/fmtlib/fmt.git 67 | 11.1.2 68 | ) 69 | 70 | ########################################################################################## 71 | # Project executable setup 72 | ########################################################################################## 73 | 74 | # Adding our source files 75 | # Define PROJECT_SOURCES as a list of all source files 76 | file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/sources/*.cpp") 77 | 78 | # Define PROJECT_INCLUDE to be the path to the include directory of the project 79 | set(PROJECT_INCLUDE "${CMAKE_CURRENT_LIST_DIR}/sources/") 80 | 81 | # Declaring our executable 82 | add_executable(${PROJECT_NAME}) 83 | target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCES}) 84 | target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE}) 85 | 86 | target_link_libraries(${PROJECT_NAME} PRIVATE raylib) 87 | target_link_libraries(${PROJECT_NAME} PRIVATE raygui) 88 | target_link_libraries(${PROJECT_NAME} PRIVATE LDtkLoader::LDtkLoader) 89 | target_link_libraries(${PROJECT_NAME} PRIVATE box2d) 90 | target_link_libraries(${PROJECT_NAME} PRIVATE fmt) 91 | 92 | ########################################################################################## 93 | # Project build settings 94 | ########################################################################################## 95 | 96 | add_definitions(-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) 97 | 98 | # Setting ASSETS_PATH 99 | if (CMAKE_BUILD_TYPE MATCHES "Debug") 100 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -DDEBUG") 101 | 102 | # Set the asset path macro to the absolute path on the dev machine 103 | target_compile_definitions(${PROJECT_NAME} PUBLIC ASSETS_PATH="${CMAKE_CURRENT_SOURCE_DIR}/assets/") 104 | else() 105 | # Set the asset path macro in release mode to a relative path that assumes the assets folder is in the same directory as the game executable 106 | target_compile_definitions(${PROJECT_NAME} PUBLIC ASSETS_PATH="./assets/") 107 | endif() 108 | 109 | # Set common compiler flags 110 | # SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wswitch") 111 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") 112 | 113 | if (${PLATFORM} STREQUAL "Web") 114 | # Tell Emscripten to build an .html file. 115 | set(CMAKE_EXECUTABLE_SUFFIX ".html") 116 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os") 117 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s USE_GLFW=3 -s ASSERTIONS=1 -s WASM=1 -Os -Wall -s TOTAL_MEMORY=67108864 -s FORCE_FILESYSTEM=1 --preload-file assets/ --shell-file ../sources/minshell.html") 118 | set(CMAKE_EXECUTABLE_SUFFIX ".html") # This line is used to set your executable to build with the emscripten html template so that you can directly open it. 119 | set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".html") 120 | target_compile_definitions(${PROJECT_NAME} PUBLIC ASSETS_PATH="/assets/") # Set the asset path macro in release mode to a relative path that assumes the assets folder is in the same directory as the game executable 121 | endif() 122 | 123 | # Ensure that hot-reload is enabled for VS 124 | if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 125 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI") 126 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") 127 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") 128 | endif() 129 | -------------------------------------------------------------------------------- /CppProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "inheritEnvironments": [ 5 | "msvc_x64" 6 | ], 7 | "name": "x64-Debug", 8 | "includePath": [ 9 | "${env.INCLUDE}", 10 | "${workspaceRoot}\\**" 11 | ], 12 | "defines": [ 13 | "WIN32", 14 | "_DEBUG", 15 | "UNICODE", 16 | "_UNICODE" 17 | ], 18 | "intelliSenseMode": "windows-msvc-x64" 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /Justfile: -------------------------------------------------------------------------------- 1 | help: 2 | @just --list 3 | 4 | build-with-config config: 5 | @mkdir -p build 6 | @cd build && cmake .. 7 | @cmake --build ./build --config {{config}} --target raylib-cpp-cmake-template -j 10 -- 8 | 9 | build-debug: 10 | @just build-with-config Debug 11 | 12 | build-release: 13 | @just build-with-config Release 14 | 15 | clean: 16 | @rm -rf build || true 17 | @rm -rf out || true 18 | 19 | build-web: 20 | #!/usr/bin/env bash 21 | sudo emsdk activate latest 22 | source "/usr/lib/emsdk/emsdk_env.sh" 23 | mkdir -p build-emc 24 | 25 | # Ensure asset folder is copied 26 | rm -rf build-emc/assets || true 27 | cp -R assets build-emc/assets 28 | 29 | cd build-emc 30 | emcmake cmake .. -DPLATFORM=Web -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS="-s USE_GLFW=3" -DCMAKE_EXECUTABLE_SUFFIX=".html" 31 | emmake make 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Raylib C++ CMake Template 2 | 3 |

4 | 8 |

9 | 10 | 11 | This repo constains a small game that you can use as a template for your Raylib 12 | games if you wish to use C++ and CMake. 13 | 14 | CMake is configured to automatically download the dependencies of your game 15 | through git, and pin them to a specific commit version (for example, [see how 16 | we're importing the raylib 17 | dependency](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/CMakeLists.txt#L25-L31)). 18 | This provides a very flexible mechanism to include new dependencies, or update 19 | the existing ones, without having to muck about with your system's package 20 | manager, or worrying about linking external libraries at all. It is a bit slower 21 | on the first build though, since CMake will need to build everything. 22 | 23 | For the moment, the project is using the following dependencies which should be 24 | useful in many games: 25 | 26 | - [LDtkLoader](https://github.com/Madour/LDtkLoader) - used to load and help 27 | with drawing a map made with the awesome [LDtk](https://ldtk.io/). 28 | - [box2d](https://github.com/erincatto/box2d) - ubuquitous and easy to use 2D 29 | physics engine. 30 | - [fmt](https://github.com/fmtlib/fmt) - logging and string formatting library 31 | that makes your life much easier. 32 | - [raygui](https://github.com/raysan5/raygui) - a simple and easy to use 33 | immediate mode GUI library that is built on top of raylib. Good for building 34 | UIs and debugging tools. 35 | 36 | If you don't know where to start or how to use this template then check out [the wiki](https://github.com/tupini07/raylib-cpp-cmake-template/wiki)! 37 | 38 | ## Important files 39 | 40 | You can get a good understanding of how things work by reading through the 41 | following files: 42 | 43 | - [[main.cpp](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/sources/main.cpp)] 44 | this is, of course, the entrpoint of the game. It maintains a top-level frame 45 | buffer to which all draw operations are done, and then this buffer is drawn to 46 | the screen, with a specific scale (meaning you can easily scale and/or 47 | translate your game without having to worry about the actual screen 48 | resolution). It also calls the SceneManager's update and draw methods. 49 | - [[SceneManager](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/sources/scenes/SceneManager.hpp)] 50 | Implements an extremly simple scene manager. It updates and draws the current 51 | scene or switches to a new scene if necessary. 52 | - [[TitleScene](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/sources/scenes/TitleScene/TitleScene.cpp)] 53 | This is the main screen that is shown when the game starts. It contains some examples 54 | of raygui components. 55 | - [[GameScene](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/sources/scenes/GameScene/GameScene.cpp)] 56 | This is the scene where the main _game_ happens. It's not really a game per 57 | se, just a showcase of how you would set up a 58 | [Player](https://github.com/tupini07/raylib-cpp-cmake-template/blob/11af0880cf10ecc31fc0d5d63e79650d205024a2/sources/entities/Player/Player.cpp), 59 | draw an LDtk map, and add some physics to everything using Box2D. 60 | 61 | 62 | # Questions and comments 63 | 64 | If you have any question then feel free to [create a new discussion](https://github.com/tupini07/raylib-cpp-cmake-template/discussions/new), or if you see any issue then go ahead and [open a new issue](https://github.com/tupini07/raylib-cpp-cmake-template/issues/new). 65 | 66 | If you see anything that can be improved then feel free to make a PR! Those are always welcome 🙂 Another welcomed contribution is that of going through the wiki and clarifying content or adding new things you think might be helpful for others. 67 | -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Blue.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Brown.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Gray.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Green.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Pink.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Purple.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Background/Yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Background/Yellow.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box1/Break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box1/Break.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box1/Hit (28x24).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box1/Hit (28x24).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box1/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box1/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box2/Break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box2/Break.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box2/Hit (28x24).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box2/Hit (28x24).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box2/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box2/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box3/Break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box3/Break.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box3/Hit (28x24).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box3/Hit (28x24).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Boxes/Box3/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Boxes/Box3/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (Flag Idle)(64x64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (Flag Idle)(64x64).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (Flag Out) (64x64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (Flag Out) (64x64).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (No Flag).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/Checkpoint/Checkpoint (No Flag).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/End/End (Idle).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/End/End (Idle).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/End/End (Pressed) (64x64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/End/End (Pressed) (64x64).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/Start/Start (Idle).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/Start/Start (Idle).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Checkpoints/Start/Start (Moving) (64x64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Checkpoints/Start/Start (Moving) (64x64).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Apple.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Bananas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Bananas.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Cherries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Cherries.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Collected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Collected.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Kiwi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Kiwi.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Melon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Melon.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Orange.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Pineapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Pineapple.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Items/Fruits/Strawberry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Items/Fruits/Strawberry.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Appearing (96x96).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Appearing (96x96).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Desappearing (96x96).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Desappearing (96x96).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Double Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Double Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Fall (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Fall (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Hit (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Hit (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Idle (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Idle (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Run (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Run (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Mask Dude/Wall Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Mask Dude/Wall Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Double Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Double Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Fall (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Fall (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Hit (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Hit (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Idle (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Idle (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Run (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Run (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Ninja Frog/Wall Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Ninja Frog/Wall Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Double Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Double Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Fall (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Fall (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Hit (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Hit (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Idle (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Idle (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Run (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Run (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Pink Man/Wall Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Pink Man/Wall Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Double Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Double Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Fall (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Fall (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Hit (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Hit (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Idle (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Idle (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Run (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Run (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Main Characters/Virtual Guy/Wall Jump (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Main Characters/Virtual Guy/Wall Jump (32x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Achievements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Achievements.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Back.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Close.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Leaderboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Leaderboard.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Levels.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Next.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Play.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Previous.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Restart.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Settings.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Buttons/Volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Buttons/Volume.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/01.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/02.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/03.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/04.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/05.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/06.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/07.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/08.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/09.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/10.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/11.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/12.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/13.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/14.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/15.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/16.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/17.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/18.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/19.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/20.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/21.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/22.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/23.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/24.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/25.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/26.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/27.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/28.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/29.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/30.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/31.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/32.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/33.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/34.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/35.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/36.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/37.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/38.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/39.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/40.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/41.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/42.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/43.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/44.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/45.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/46.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/47.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/48.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/49.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Levels/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Levels/50.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Text/Text (Black) (8x10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Text/Text (Black) (8x10).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Menu/Text/Text (White) (8x10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Menu/Text/Text (White) (8x10).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Other/Confetti (16x16).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Other/Confetti (16x16).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Other/Dust Particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Other/Dust Particle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Other/Shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Other/Shadow.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Other/Transition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Other/Transition.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Terrain/Terrain (16x16).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Terrain/Terrain (16x16).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Arrow/Hit (18x18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Arrow/Hit (18x18).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Arrow/Idle (18x18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Arrow/Idle (18x18).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Blocks/HitSide (22x22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Blocks/HitSide (22x22).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Blocks/HitTop (22x22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Blocks/HitTop (22x22).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Blocks/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Blocks/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Blocks/Part 1 (22x22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Blocks/Part 1 (22x22).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Blocks/Part 2 (22x22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Blocks/Part 2 (22x22).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Falling Platforms/Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Falling Platforms/Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Falling Platforms/On (32x10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Falling Platforms/On (32x10).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Fan/Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Fan/Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Fan/On (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Fan/On (24x8).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Fire/Hit (16x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Fire/Hit (16x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Fire/Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Fire/Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Fire/On (16x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Fire/On (16x32).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Platforms/Brown Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Platforms/Brown Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Platforms/Brown On (32x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Platforms/Brown On (32x8).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Platforms/Chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Platforms/Chain.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Platforms/Grey Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Platforms/Grey Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Platforms/Grey On (32x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Platforms/Grey On (32x8).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Blink (42x42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Blink (42x42).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Bottom Hit (42x42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Bottom Hit (42x42).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Left Hit (42x42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Left Hit (42x42).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Right Hit (42x42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Right Hit (42x42).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Rock Head/Top Hit (42x42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Rock Head/Top Hit (42x42).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Sand Mud Ice/Ice Particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Sand Mud Ice/Ice Particle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Sand Mud Ice/Mud Particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Sand Mud Ice/Mud Particle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Sand Mud Ice/Sand Mud Ice (16x6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Sand Mud Ice/Sand Mud Ice (16x6).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Sand Mud Ice/Sand Particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Sand Mud Ice/Sand Particle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Saw/Chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Saw/Chain.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Saw/Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Saw/Off.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Saw/On (38x38).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Saw/On (38x38).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Blink (54x52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Blink (54x52).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Bottom Hit (54x52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Bottom Hit (54x52).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Left Hit (54x52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Left Hit (54x52).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Right Hit (54x52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Right Hit (54x52).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spike Head/Top Hit (54x52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spike Head/Top Hit (54x52).png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spiked Ball/Chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spiked Ball/Chain.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spiked Ball/Spiked Ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spiked Ball/Spiked Ball.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Spikes/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Spikes/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Trampoline/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Trampoline/Idle.png -------------------------------------------------------------------------------- /assets/Pixel Adventure 1/Traps/Trampoline/Jump (28x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/Pixel Adventure 1/Traps/Trampoline/Jump (28x28).png -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/aseprite/DinoSprites.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/aseprite/DinoSprites.ase -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/aseprite/dinoCharacters-display.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/aseprite/dinoCharacters-display.ase -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/changelog.txt: -------------------------------------------------------------------------------- 1 | Dino Characters changes 2 | - 2017-10-08 3 | Added a crouch and a walk animation for it. 4 | -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/sheets/DinoSprites - doux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/sheets/DinoSprites - doux.png -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/sheets/DinoSprites - mort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/sheets/DinoSprites - mort.png -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/sheets/DinoSprites - tard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/sheets/DinoSprites - tard.png -------------------------------------------------------------------------------- /assets/dinoCharactersVersion1.1/sheets/DinoSprites - vita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/dinoCharactersVersion1.1/sheets/DinoSprites - vita.png -------------------------------------------------------------------------------- /assets/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tupini07/raylib-cpp-cmake-template/e219b6e7a382abab87b3b45aaf0e15dbcea282b7/assets/test.png -------------------------------------------------------------------------------- /assets/world.ldtk: -------------------------------------------------------------------------------- 1 | { 2 | "__header__": { 3 | "fileType": "LDtk Project JSON", 4 | "app": "LDtk", 5 | "doc": "https://ldtk.io/json", 6 | "schema": "https://ldtk.io/files/JSON_SCHEMA.json", 7 | "appAuthor": "Sebastien 'deepnight' Benard", 8 | "appVersion": "1.5.3", 9 | "url": "https://ldtk.io" 10 | }, 11 | "iid": "7515a7a0-b0a0-11ee-9cfd-e9a75585f2a3", 12 | "jsonVersion": "1.5.3", 13 | "appBuildId": 473703, 14 | "nextUid": 38, 15 | "identifierStyle": "Capitalize", 16 | "toc": [], 17 | "worldLayout": "Free", 18 | "worldGridWidth": 256, 19 | "worldGridHeight": 256, 20 | "defaultLevelWidth": 400, 21 | "defaultLevelHeight": 400, 22 | "defaultPivotX": 0, 23 | "defaultPivotY": 0, 24 | "defaultGridSize": 16, 25 | "defaultEntityWidth": 16, 26 | "defaultEntityHeight": 16, 27 | "bgColor": "#40465B", 28 | "defaultLevelBgColor": "#696A79", 29 | "minifyJson": false, 30 | "externalLevels": false, 31 | "exportTiled": false, 32 | "simplifiedExport": false, 33 | "imageExportMode": "None", 34 | "exportLevelBg": true, 35 | "pngFilePattern": null, 36 | "backupOnSave": false, 37 | "backupLimit": 10, 38 | "backupRelPath": null, 39 | "levelNamePattern": "Level_%idx", 40 | "tutorialDesc": null, 41 | "customCommands": [], 42 | "flags": [ "ExportOldTableOfContentData", "PrependIndexToLevelFileNames" ], 43 | "defs": { "layers": [ 44 | { 45 | "__type": "Entities", 46 | "identifier": "PhysicsEntities", 47 | "type": "Entities", 48 | "uid": 34, 49 | "doc": null, 50 | "uiColor": null, 51 | "gridSize": 16, 52 | "guideGridWid": 0, 53 | "guideGridHei": 0, 54 | "displayOpacity": 1, 55 | "inactiveOpacity": 0.6, 56 | "hideInList": false, 57 | "hideFieldsWhenInactive": true, 58 | "canSelectWhenInactive": true, 59 | "renderInWorldView": true, 60 | "pxOffsetX": 0, 61 | "pxOffsetY": 0, 62 | "parallaxFactorX": 0, 63 | "parallaxFactorY": 0, 64 | "parallaxScaling": true, 65 | "requiredTags": [], 66 | "excludedTags": [], 67 | "autoTilesKilledByOtherLayerUid": null, 68 | "uiFilterTags": [], 69 | "useAsyncRender": false, 70 | "intGridValues": [], 71 | "intGridValuesGroups": [], 72 | "autoRuleGroups": [], 73 | "autoSourceLayerDefUid": null, 74 | "tilesetDefUid": null, 75 | "tilePivotX": 0, 76 | "tilePivotY": 0, 77 | "biomeFieldUid": null 78 | }, 79 | { 80 | "__type": "Entities", 81 | "identifier": "Entities", 82 | "type": "Entities", 83 | "uid": 27, 84 | "doc": null, 85 | "uiColor": null, 86 | "gridSize": 16, 87 | "guideGridWid": 0, 88 | "guideGridHei": 0, 89 | "displayOpacity": 1, 90 | "inactiveOpacity": 0.6, 91 | "hideInList": false, 92 | "hideFieldsWhenInactive": true, 93 | "canSelectWhenInactive": true, 94 | "renderInWorldView": true, 95 | "pxOffsetX": 0, 96 | "pxOffsetY": 0, 97 | "parallaxFactorX": 0, 98 | "parallaxFactorY": 0, 99 | "parallaxScaling": true, 100 | "requiredTags": [], 101 | "excludedTags": [], 102 | "autoTilesKilledByOtherLayerUid": null, 103 | "uiFilterTags": [], 104 | "useAsyncRender": false, 105 | "intGridValues": [], 106 | "intGridValuesGroups": [], 107 | "autoRuleGroups": [], 108 | "autoSourceLayerDefUid": null, 109 | "tilesetDefUid": null, 110 | "tilePivotX": 0, 111 | "tilePivotY": 0, 112 | "biomeFieldUid": null 113 | }, 114 | { 115 | "__type": "IntGrid", 116 | "identifier": "TileLayer", 117 | "type": "IntGrid", 118 | "uid": 6, 119 | "doc": null, 120 | "uiColor": null, 121 | "gridSize": 16, 122 | "guideGridWid": 0, 123 | "guideGridHei": 0, 124 | "displayOpacity": 1, 125 | "inactiveOpacity": 1, 126 | "hideInList": false, 127 | "hideFieldsWhenInactive": true, 128 | "canSelectWhenInactive": true, 129 | "renderInWorldView": true, 130 | "pxOffsetX": 0, 131 | "pxOffsetY": 0, 132 | "parallaxFactorX": 0, 133 | "parallaxFactorY": 0, 134 | "parallaxScaling": true, 135 | "requiredTags": [], 136 | "excludedTags": [], 137 | "autoTilesKilledByOtherLayerUid": null, 138 | "uiFilterTags": [], 139 | "useAsyncRender": false, 140 | "intGridValues": [ 141 | { "value": 1, "identifier": "Floor", "color": "#000000", "tile": null, "groupUid": 0 }, 142 | { "value": 2, "identifier": "NW", "color": "#FF0000", "tile": null, "groupUid": 0 } 143 | ], 144 | "intGridValuesGroups": [], 145 | "autoRuleGroups": [ 146 | { 147 | "uid": 17, 148 | "name": "New group", 149 | "color": null, 150 | "icon": null, 151 | "active": true, 152 | "isOptional": false, 153 | "rules": [ 154 | { 155 | "uid": 19, 156 | "active": true, 157 | "size": 3, 158 | "tileRectsIds": [[7]], 159 | "alpha": 1, 160 | "chance": 1, 161 | "breakOnMatch": true, 162 | "pattern": [0,-1,0,1,1,1,0,0,0], 163 | "flipX": false, 164 | "flipY": false, 165 | "xModulo": 1, 166 | "yModulo": 1, 167 | "xOffset": 0, 168 | "yOffset": 0, 169 | "tileXOffset": 0, 170 | "tileYOffset": 0, 171 | "tileRandomXMin": 0, 172 | "tileRandomXMax": 0, 173 | "tileRandomYMin": 0, 174 | "tileRandomYMax": 0, 175 | "checker": "None", 176 | "tileMode": "Single", 177 | "pivotX": 0, 178 | "pivotY": 0, 179 | "outOfBoundsValue": null, 180 | "invalidated": false, 181 | "perlinActive": false, 182 | "perlinSeed": 6847286, 183 | "perlinScale": 0.2, 184 | "perlinOctaves": 2 185 | }, 186 | { 187 | "uid": 20, 188 | "active": true, 189 | "size": 3, 190 | "tileRectsIds": [[8]], 191 | "alpha": 1, 192 | "chance": 1, 193 | "breakOnMatch": true, 194 | "pattern": [0,-1,0,1,1,0,0,0,0], 195 | "flipX": false, 196 | "flipY": false, 197 | "xModulo": 1, 198 | "yModulo": 1, 199 | "xOffset": 0, 200 | "yOffset": 0, 201 | "tileXOffset": 0, 202 | "tileYOffset": 0, 203 | "tileRandomXMin": 0, 204 | "tileRandomXMax": 0, 205 | "tileRandomYMin": 0, 206 | "tileRandomYMax": 0, 207 | "checker": "None", 208 | "tileMode": "Single", 209 | "pivotX": 0, 210 | "pivotY": 0, 211 | "outOfBoundsValue": null, 212 | "invalidated": false, 213 | "perlinActive": false, 214 | "perlinSeed": 9621389, 215 | "perlinScale": 0.2, 216 | "perlinOctaves": 2 217 | }, 218 | { 219 | "uid": 18, 220 | "active": true, 221 | "size": 3, 222 | "tileRectsIds": [[6]], 223 | "alpha": 1, 224 | "chance": 1, 225 | "breakOnMatch": true, 226 | "pattern": [0,-1,0,0,1,1,0,0,0], 227 | "flipX": false, 228 | "flipY": false, 229 | "xModulo": 1, 230 | "yModulo": 1, 231 | "xOffset": 0, 232 | "yOffset": 0, 233 | "tileXOffset": 0, 234 | "tileYOffset": 0, 235 | "tileRandomXMin": 0, 236 | "tileRandomXMax": 0, 237 | "tileRandomYMin": 0, 238 | "tileRandomYMax": 0, 239 | "checker": "None", 240 | "tileMode": "Single", 241 | "pivotX": 0, 242 | "pivotY": 0, 243 | "outOfBoundsValue": null, 244 | "invalidated": false, 245 | "perlinActive": false, 246 | "perlinSeed": 2308090, 247 | "perlinScale": 0.2, 248 | "perlinOctaves": 2 249 | }, 250 | { 251 | "uid": 21, 252 | "active": true, 253 | "size": 3, 254 | "tileRectsIds": [[29]], 255 | "alpha": 1, 256 | "chance": 1, 257 | "breakOnMatch": true, 258 | "pattern": [0,1,0,1,1,1,0,1,0], 259 | "flipX": false, 260 | "flipY": false, 261 | "xModulo": 1, 262 | "yModulo": 1, 263 | "xOffset": 0, 264 | "yOffset": 0, 265 | "tileXOffset": 0, 266 | "tileYOffset": 0, 267 | "tileRandomXMin": 0, 268 | "tileRandomXMax": 0, 269 | "tileRandomYMin": 0, 270 | "tileRandomYMax": 0, 271 | "checker": "None", 272 | "tileMode": "Single", 273 | "pivotX": 0, 274 | "pivotY": 0, 275 | "outOfBoundsValue": null, 276 | "invalidated": false, 277 | "perlinActive": false, 278 | "perlinSeed": 5982468, 279 | "perlinScale": 0.2, 280 | "perlinOctaves": 2 281 | }, 282 | { 283 | "uid": 26, 284 | "active": true, 285 | "size": 3, 286 | "tileRectsIds": [[52]], 287 | "alpha": 1, 288 | "chance": 1, 289 | "breakOnMatch": true, 290 | "pattern": [0,0,0,0,1,-1,0,-1,0], 291 | "flipX": false, 292 | "flipY": false, 293 | "xModulo": 1, 294 | "yModulo": 1, 295 | "xOffset": 0, 296 | "yOffset": 0, 297 | "tileXOffset": 0, 298 | "tileYOffset": 0, 299 | "tileRandomXMin": 0, 300 | "tileRandomXMax": 0, 301 | "tileRandomYMin": 0, 302 | "tileRandomYMax": 0, 303 | "checker": "None", 304 | "tileMode": "Single", 305 | "pivotX": 0, 306 | "pivotY": 0, 307 | "outOfBoundsValue": null, 308 | "invalidated": false, 309 | "perlinActive": false, 310 | "perlinSeed": 3335057, 311 | "perlinScale": 0.2, 312 | "perlinOctaves": 2 313 | }, 314 | { 315 | "uid": 24, 316 | "active": true, 317 | "size": 3, 318 | "tileRectsIds": [[50]], 319 | "alpha": 1, 320 | "chance": 1, 321 | "breakOnMatch": true, 322 | "pattern": [0,1,0,-1,1,0,0,-1,0], 323 | "flipX": false, 324 | "flipY": false, 325 | "xModulo": 1, 326 | "yModulo": 1, 327 | "xOffset": 0, 328 | "yOffset": 0, 329 | "tileXOffset": 0, 330 | "tileYOffset": 0, 331 | "tileRandomXMin": 0, 332 | "tileRandomXMax": 0, 333 | "tileRandomYMin": 0, 334 | "tileRandomYMax": 0, 335 | "checker": "None", 336 | "tileMode": "Single", 337 | "pivotX": 0, 338 | "pivotY": 0, 339 | "outOfBoundsValue": null, 340 | "invalidated": false, 341 | "perlinActive": false, 342 | "perlinSeed": 5986500, 343 | "perlinScale": 0.2, 344 | "perlinOctaves": 2 345 | }, 346 | { 347 | "uid": 25, 348 | "active": true, 349 | "size": 3, 350 | "tileRectsIds": [[51]], 351 | "alpha": 1, 352 | "chance": 1, 353 | "breakOnMatch": true, 354 | "pattern": [0,1,0,0,1,0,0,-1,0], 355 | "flipX": false, 356 | "flipY": false, 357 | "xModulo": 1, 358 | "yModulo": 1, 359 | "xOffset": 0, 360 | "yOffset": 0, 361 | "tileXOffset": 0, 362 | "tileYOffset": 0, 363 | "tileRandomXMin": 0, 364 | "tileRandomXMax": 0, 365 | "tileRandomYMin": 0, 366 | "tileRandomYMax": 0, 367 | "checker": "None", 368 | "tileMode": "Single", 369 | "pivotX": 0, 370 | "pivotY": 0, 371 | "outOfBoundsValue": null, 372 | "invalidated": false, 373 | "perlinActive": false, 374 | "perlinSeed": 6668951, 375 | "perlinScale": 0.2, 376 | "perlinOctaves": 2 377 | }, 378 | { 379 | "uid": 23, 380 | "active": true, 381 | "size": 3, 382 | "tileRectsIds": [[30]], 383 | "alpha": 1, 384 | "chance": 1, 385 | "breakOnMatch": true, 386 | "pattern": [0,0,0,1,1,-1,0,0,0], 387 | "flipX": false, 388 | "flipY": false, 389 | "xModulo": 1, 390 | "yModulo": 1, 391 | "xOffset": 0, 392 | "yOffset": 0, 393 | "tileXOffset": 0, 394 | "tileYOffset": 0, 395 | "tileRandomXMin": 0, 396 | "tileRandomXMax": 0, 397 | "tileRandomYMin": 0, 398 | "tileRandomYMax": 0, 399 | "checker": "None", 400 | "tileMode": "Single", 401 | "pivotX": 0, 402 | "pivotY": 0, 403 | "outOfBoundsValue": null, 404 | "invalidated": false, 405 | "perlinActive": false, 406 | "perlinSeed": 488321, 407 | "perlinScale": 0.2, 408 | "perlinOctaves": 2 409 | }, 410 | { 411 | "uid": 22, 412 | "active": true, 413 | "size": 3, 414 | "tileRectsIds": [[28]], 415 | "alpha": 1, 416 | "chance": 1, 417 | "breakOnMatch": true, 418 | "pattern": [0,0,0,-1,1,1,0,0,0], 419 | "flipX": false, 420 | "flipY": false, 421 | "xModulo": 1, 422 | "yModulo": 1, 423 | "xOffset": 0, 424 | "yOffset": 0, 425 | "tileXOffset": 0, 426 | "tileYOffset": 0, 427 | "tileRandomXMin": 0, 428 | "tileRandomXMax": 0, 429 | "tileRandomYMin": 0, 430 | "tileRandomYMax": 0, 431 | "checker": "None", 432 | "tileMode": "Single", 433 | "pivotX": 0, 434 | "pivotY": 0, 435 | "outOfBoundsValue": null, 436 | "invalidated": false, 437 | "perlinActive": false, 438 | "perlinSeed": 5709801, 439 | "perlinScale": 0.2, 440 | "perlinOctaves": 2 441 | } 442 | ], 443 | "usesWizard": false, 444 | "requiredBiomeValues": [], 445 | "biomeRequirementMode": 0 446 | } 447 | ], 448 | "autoSourceLayerDefUid": null, 449 | "tilesetDefUid": 1, 450 | "tilePivotX": 0, 451 | "tilePivotY": 0, 452 | "biomeFieldUid": null 453 | } 454 | ], "entities": [ 455 | { 456 | "identifier": "Player", 457 | "uid": 4, 458 | "tags": [], 459 | "exportToToc": false, 460 | "allowOutOfBounds": false, 461 | "doc": null, 462 | "width": 16, 463 | "height": 16, 464 | "resizableX": false, 465 | "resizableY": false, 466 | "minWidth": null, 467 | "maxWidth": null, 468 | "minHeight": null, 469 | "maxHeight": null, 470 | "keepAspectRatio": false, 471 | "tileOpacity": 1, 472 | "fillOpacity": 1, 473 | "lineOpacity": 1, 474 | "hollow": false, 475 | "color": "#94D9B3", 476 | "renderMode": "Rectangle", 477 | "showName": true, 478 | "tilesetId": null, 479 | "tileRenderMode": "FitInside", 480 | "tileRect": null, 481 | "uiTileRect": null, 482 | "nineSliceBorders": [], 483 | "maxCount": 0, 484 | "limitScope": "PerLevel", 485 | "limitBehavior": "MoveLastOne", 486 | "pivotX": 0, 487 | "pivotY": 0, 488 | "fieldDefs": [] 489 | }, 490 | { 491 | "identifier": "SolidBlock", 492 | "uid": 33, 493 | "tags": [], 494 | "exportToToc": false, 495 | "allowOutOfBounds": false, 496 | "doc": null, 497 | "width": 16, 498 | "height": 16, 499 | "resizableX": true, 500 | "resizableY": true, 501 | "minWidth": null, 502 | "maxWidth": null, 503 | "minHeight": null, 504 | "maxHeight": null, 505 | "keepAspectRatio": false, 506 | "tileOpacity": 1, 507 | "fillOpacity": 0.56, 508 | "lineOpacity": 1, 509 | "hollow": false, 510 | "color": "#9D94D9", 511 | "renderMode": "Rectangle", 512 | "showName": true, 513 | "tilesetId": null, 514 | "tileRenderMode": "FitInside", 515 | "tileRect": null, 516 | "uiTileRect": null, 517 | "nineSliceBorders": [], 518 | "maxCount": 0, 519 | "limitScope": "PerLevel", 520 | "limitBehavior": "MoveLastOne", 521 | "pivotX": 0, 522 | "pivotY": 0, 523 | "fieldDefs": [] 524 | }, 525 | { 526 | "identifier": "Portal", 527 | "uid": 35, 528 | "tags": [], 529 | "exportToToc": false, 530 | "allowOutOfBounds": false, 531 | "doc": null, 532 | "width": 32, 533 | "height": 32, 534 | "resizableX": false, 535 | "resizableY": false, 536 | "minWidth": null, 537 | "maxWidth": null, 538 | "minHeight": null, 539 | "maxHeight": null, 540 | "keepAspectRatio": false, 541 | "tileOpacity": 1, 542 | "fillOpacity": 1, 543 | "lineOpacity": 1, 544 | "hollow": false, 545 | "color": "#D994B3", 546 | "renderMode": "Rectangle", 547 | "showName": true, 548 | "tilesetId": null, 549 | "tileRenderMode": "FitInside", 550 | "tileRect": null, 551 | "uiTileRect": null, 552 | "nineSliceBorders": [], 553 | "maxCount": 0, 554 | "limitScope": "PerLevel", 555 | "limitBehavior": "MoveLastOne", 556 | "pivotX": 0, 557 | "pivotY": 0, 558 | "fieldDefs": [ 559 | { 560 | "identifier": "level_destination", 561 | "doc": null, 562 | "__type": "Float", 563 | "uid": 36, 564 | "type": "F_Float", 565 | "isArray": false, 566 | "canBeNull": false, 567 | "arrayMinLength": null, 568 | "arrayMaxLength": null, 569 | "editorDisplayMode": "NameAndValue", 570 | "editorDisplayScale": 1, 571 | "editorDisplayPos": "Center", 572 | "editorLinkStyle": "StraightArrow", 573 | "editorDisplayColor": null, 574 | "editorAlwaysShow": false, 575 | "editorShowInWorld": true, 576 | "editorCutLongValues": true, 577 | "editorTextSuffix": null, 578 | "editorTextPrefix": null, 579 | "useForSmartColor": false, 580 | "exportToToc": false, 581 | "searchable": false, 582 | "min": 0, 583 | "max": null, 584 | "regex": null, 585 | "acceptFileTypes": null, 586 | "defaultOverride": { "id": "V_Float", "params": [0] }, 587 | "textLanguageMode": null, 588 | "symmetricalRef": false, 589 | "autoChainRef": true, 590 | "allowOutOfLevelRef": true, 591 | "allowedRefs": "OnlySame", 592 | "allowedRefsEntityUid": null, 593 | "allowedRefTags": [], 594 | "tilesetUid": null 595 | } 596 | ] 597 | } 598 | ], "tilesets": [ 599 | { 600 | "__cWid": 22, 601 | "__cHei": 11, 602 | "identifier": "Terrain_16x16_2", 603 | "uid": 1, 604 | "relPath": "Pixel Adventure 1/Terrain/Terrain (16x16).png", 605 | "embedAtlas": null, 606 | "pxWid": 352, 607 | "pxHei": 176, 608 | "tileGridSize": 16, 609 | "spacing": 0, 610 | "padding": 0, 611 | "tags": [], 612 | "tagsSourceEnumUid": null, 613 | "enumTags": [], 614 | "customData": [], 615 | "savedSelections": [], 616 | "cachedPixelData": { 617 | "opaqueTiles": "11111011111011110000001111101111101111000000111000111000011100000000000000000000000000001111101111101111011111111110111110111101111111100011100001110111000000000000000000000000111110111110111101111011111011111011110111101110001110000111001110", 618 | "averageColors": "f677f566f778f445f5560000f682f782f783fb65fb650000f965fa75f965fa6500004a954984498500000000f566f223f566f556f4450000fa65fb65fb65f974f9740000f965fa75fb86fa54000058655965586500000000f778f566f677000000000000fa65fa65fa650000000000000000f834f954f9440000456645664566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f854f744f854f644f6440000fb74fc74fb74f944f9440000f889f899f889f8890000fb44fc44fc44fc44fc44f744f223f744f644f6440000f944f944f944fa54fa540000f778f899f89af89a0000fb34fc44fc44fc44fc44f854f744f854000000000000f944f944f9440000000000000000f788f889f8890000fa34fb34fb44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f376f265f376f244f2440000fc69fc79fc79fc96fc960000fc74fc74fc74fc740000fcb4fcb3fcb5fcb50000f265f223f265f244f2440000fb96fc96fc96fc88fc880000fc74fc74fc74fc740000fca5fcb5fcb5fcb30000f376f265f376000000000000fb86fb96fb860000000000000000fc74fc74fc7400000000fcb4fdb5fcb50000" 619 | } 620 | } 621 | ], "enums": [], "externalEnums": [], "levelFields": [] }, 622 | "levels": [ 623 | { 624 | "identifier": "Level_0", 625 | "iid": "04136c90-dbe0-11ec-b8ad-075c3ca01c42", 626 | "uid": 0, 627 | "worldX": 0, 628 | "worldY": 0, 629 | "worldDepth": 0, 630 | "pxWid": 400, 631 | "pxHei": 400, 632 | "__bgColor": "#696A79", 633 | "bgColor": null, 634 | "useAutoIdentifier": true, 635 | "bgRelPath": "Pixel Adventure 1/Background/Blue.png", 636 | "bgPos": "Unscaled", 637 | "bgPivotX": 0, 638 | "bgPivotY": 0, 639 | "__smartColor": "#ADADB5", 640 | "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,64,64] }, 641 | "externalRelPath": null, 642 | "fieldInstances": [], 643 | "layerInstances": [ 644 | { 645 | "__identifier": "PhysicsEntities", 646 | "__type": "Entities", 647 | "__cWid": 25, 648 | "__cHei": 25, 649 | "__gridSize": 16, 650 | "__opacity": 1, 651 | "__pxTotalOffsetX": 0, 652 | "__pxTotalOffsetY": 0, 653 | "__tilesetDefUid": null, 654 | "__tilesetRelPath": null, 655 | "iid": "0416c7f0-dbe0-11ec-b8ad-81067b49ee31", 656 | "levelId": 0, 657 | "layerDefUid": 34, 658 | "pxOffsetX": 0, 659 | "pxOffsetY": 0, 660 | "visible": true, 661 | "optionalRules": [], 662 | "intGridCsv": [], 663 | "autoLayerTiles": [], 664 | "seed": 5039726, 665 | "overrideTilesetUid": null, 666 | "gridTiles": [], 667 | "entityInstances": [ 668 | { 669 | "__identifier": "SolidBlock", 670 | "__grid": [2,2], 671 | "__pivot": [0,0], 672 | "__tags": [], 673 | "__tile": null, 674 | "__smartColor": "#9D94D9", 675 | "iid": "0416ef00-dbe0-11ec-b8ad-b3a867546897", 676 | "width": 160, 677 | "height": 16, 678 | "defUid": 33, 679 | "px": [32,32], 680 | "fieldInstances": [], 681 | "__worldX": 32, 682 | "__worldY": 32 683 | }, 684 | { 685 | "__identifier": "SolidBlock", 686 | "__grid": [0,12], 687 | "__pivot": [0,0], 688 | "__tags": [], 689 | "__tile": null, 690 | "__smartColor": "#9D94D9", 691 | "iid": "04171610-dbe0-11ec-b8ad-ab09a013ddf0", 692 | "width": 96, 693 | "height": 32, 694 | "defUid": 33, 695 | "px": [0,192], 696 | "fieldInstances": [], 697 | "__worldX": 0, 698 | "__worldY": 192 699 | }, 700 | { 701 | "__identifier": "SolidBlock", 702 | "__grid": [8,12], 703 | "__pivot": [0,0], 704 | "__tags": [], 705 | "__tile": null, 706 | "__smartColor": "#9D94D9", 707 | "iid": "04171611-dbe0-11ec-b8ad-c300c8a66563", 708 | "width": 48, 709 | "height": 32, 710 | "defUid": 33, 711 | "px": [128,192], 712 | "fieldInstances": [], 713 | "__worldX": 128, 714 | "__worldY": 192 715 | }, 716 | { 717 | "__identifier": "SolidBlock", 718 | "__grid": [15,15], 719 | "__pivot": [0,0], 720 | "__tags": [], 721 | "__tile": null, 722 | "__smartColor": "#9D94D9", 723 | "iid": "04173d20-dbe0-11ec-b8ad-9b20773778e9", 724 | "width": 64, 725 | "height": 32, 726 | "defUid": 33, 727 | "px": [240,240], 728 | "fieldInstances": [], 729 | "__worldX": 240, 730 | "__worldY": 240 731 | }, 732 | { 733 | "__identifier": "SolidBlock", 734 | "__grid": [14,22], 735 | "__pivot": [0,0], 736 | "__tags": [], 737 | "__tile": null, 738 | "__smartColor": "#9D94D9", 739 | "iid": "0417d960-dbe0-11ec-b8ad-f7abc2c1fe2d", 740 | "width": 160, 741 | "height": 32, 742 | "defUid": 33, 743 | "px": [224,352], 744 | "fieldInstances": [], 745 | "__worldX": 224, 746 | "__worldY": 352 747 | }, 748 | { 749 | "__identifier": "SolidBlock", 750 | "__grid": [12,6], 751 | "__pivot": [0,0], 752 | "__tags": [], 753 | "__tile": null, 754 | "__smartColor": "#9D94D9", 755 | "iid": "04182780-dbe0-11ec-b8ad-ab7e0099493d", 756 | "width": 32, 757 | "height": 32, 758 | "defUid": 33, 759 | "px": [192,96], 760 | "fieldInstances": [], 761 | "__worldX": 192, 762 | "__worldY": 96 763 | }, 764 | { 765 | "__identifier": "SolidBlock", 766 | "__grid": [16,8], 767 | "__pivot": [0,0], 768 | "__tags": [], 769 | "__tile": null, 770 | "__smartColor": "#9D94D9", 771 | "iid": "041938f0-dbe0-11ec-b8ad-dda7cc99410b", 772 | "width": 32, 773 | "height": 32, 774 | "defUid": 33, 775 | "px": [256,128], 776 | "fieldInstances": [], 777 | "__worldX": 256, 778 | "__worldY": 128 779 | }, 780 | { 781 | "__identifier": "SolidBlock", 782 | "__grid": [21,11], 783 | "__pivot": [0,0], 784 | "__tags": [], 785 | "__tile": null, 786 | "__smartColor": "#9D94D9", 787 | "iid": "041938f1-dbe0-11ec-b8ad-9b6f4f29ef3a", 788 | "width": 32, 789 | "height": 32, 790 | "defUid": 33, 791 | "px": [336,176], 792 | "fieldInstances": [], 793 | "__worldX": 336, 794 | "__worldY": 176 795 | }, 796 | { 797 | "__identifier": "SolidBlock", 798 | "__grid": [10,3], 799 | "__pivot": [0,0], 800 | "__tags": [], 801 | "__tile": null, 802 | "__smartColor": "#9D94D9", 803 | "iid": "041938f2-dbe0-11ec-b8ad-d1158d248a58", 804 | "width": 32, 805 | "height": 64, 806 | "defUid": 33, 807 | "px": [160,48], 808 | "fieldInstances": [], 809 | "__worldX": 160, 810 | "__worldY": 48 811 | }, 812 | { 813 | "__identifier": "SolidBlock", 814 | "__grid": [2,3], 815 | "__pivot": [0,0], 816 | "__tags": [], 817 | "__tile": null, 818 | "__smartColor": "#9D94D9", 819 | "iid": "041938f3-dbe0-11ec-b8ad-131fe06e28e2", 820 | "width": 32, 821 | "height": 96, 822 | "defUid": 33, 823 | "px": [32,48], 824 | "fieldInstances": [], 825 | "__worldX": 32, 826 | "__worldY": 48 827 | }, 828 | { 829 | "__identifier": "SolidBlock", 830 | "__grid": [3,14], 831 | "__pivot": [0,0], 832 | "__tags": [], 833 | "__tile": null, 834 | "__smartColor": "#9D94D9", 835 | "iid": "04196000-dbe0-11ec-b8ad-afb2a22ecb81", 836 | "width": 32, 837 | "height": 160, 838 | "defUid": 33, 839 | "px": [48,224], 840 | "fieldInstances": [], 841 | "__worldX": 48, 842 | "__worldY": 224 843 | }, 844 | { 845 | "__identifier": "SolidBlock", 846 | "__grid": [5,22], 847 | "__pivot": [0,0], 848 | "__tags": [], 849 | "__tile": null, 850 | "__smartColor": "#9D94D9", 851 | "iid": "04196001-dbe0-11ec-b8ad-1718342157ed", 852 | "width": 112, 853 | "height": 32, 854 | "defUid": 33, 855 | "px": [80,352], 856 | "fieldInstances": [], 857 | "__worldX": 80, 858 | "__worldY": 352 859 | } 860 | ] 861 | }, 862 | { 863 | "__identifier": "Entities", 864 | "__type": "Entities", 865 | "__cWid": 25, 866 | "__cHei": 25, 867 | "__gridSize": 16, 868 | "__opacity": 1, 869 | "__pxTotalOffsetX": 0, 870 | "__pxTotalOffsetY": 0, 871 | "__tilesetDefUid": null, 872 | "__tilesetRelPath": null, 873 | "iid": "04196002-dbe0-11ec-b8ad-1bb4db858b61", 874 | "levelId": 0, 875 | "layerDefUid": 27, 876 | "pxOffsetX": 0, 877 | "pxOffsetY": 0, 878 | "visible": true, 879 | "optionalRules": [], 880 | "intGridCsv": [], 881 | "autoLayerTiles": [], 882 | "seed": 8579488, 883 | "overrideTilesetUid": null, 884 | "gridTiles": [], 885 | "entityInstances": [ 886 | { 887 | "__identifier": "Player", 888 | "__grid": [4,9], 889 | "__pivot": [0,0], 890 | "__tags": [], 891 | "__tile": null, 892 | "__smartColor": "#94D9B3", 893 | "iid": "04198710-dbe0-11ec-b8ad-7bb730785413", 894 | "width": 16, 895 | "height": 16, 896 | "defUid": 4, 897 | "px": [64,144], 898 | "fieldInstances": [], 899 | "__worldX": 64, 900 | "__worldY": 144 901 | }, 902 | { 903 | "__identifier": "Portal", 904 | "__grid": [21,20], 905 | "__pivot": [0,0], 906 | "__tags": [], 907 | "__tile": null, 908 | "__smartColor": "#D994B3", 909 | "iid": "04198711-dbe0-11ec-b8ad-8748414d1201", 910 | "width": 32, 911 | "height": 32, 912 | "defUid": 35, 913 | "px": [336,320], 914 | "fieldInstances": [{ "__identifier": "level_destination", "__type": "Float", "__value": 1, "__tile": null, "defUid": 36, "realEditorValues": [{ "id": "V_Float", "params": [1] }] }], 915 | "__worldX": 336, 916 | "__worldY": 320 917 | } 918 | ] 919 | }, 920 | { 921 | "__identifier": "TileLayer", 922 | "__type": "IntGrid", 923 | "__cWid": 25, 924 | "__cHei": 25, 925 | "__gridSize": 16, 926 | "__opacity": 1, 927 | "__pxTotalOffsetX": 0, 928 | "__pxTotalOffsetY": 0, 929 | "__tilesetDefUid": 1, 930 | "__tilesetRelPath": "Pixel Adventure 1/Terrain/Terrain (16x16).png", 931 | "iid": "0419ae20-dbe0-11ec-b8ad-956c0d70eaaf", 932 | "levelId": 0, 933 | "layerDefUid": 6, 934 | "pxOffsetX": 0, 935 | "pxOffsetY": 0, 936 | "visible": true, 937 | "optionalRules": [], 938 | "intGridCsv": [ 939 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 940 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, 941 | 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, 942 | 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0, 943 | 0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, 944 | 0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, 945 | 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0, 946 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 947 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0, 948 | 0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 949 | 0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0, 950 | 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0, 951 | 0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1, 952 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 953 | 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 954 | 0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1, 955 | 1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1, 956 | 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 957 | ], 958 | "autoLayerTiles": [ 959 | { "px": [32,48], "src": [96,16], "f": 0, "t": 28, "d": [22,77], "a": 1 }, 960 | { "px": [32,64], "src": [96,16], "f": 0, "t": 28, "d": [22,102], "a": 1 }, 961 | { "px": [160,64], "src": [96,16], "f": 0, "t": 28, "d": [22,110], "a": 1 }, 962 | { "px": [32,80], "src": [96,16], "f": 0, "t": 28, "d": [22,127], "a": 1 }, 963 | { "px": [160,80], "src": [96,16], "f": 0, "t": 28, "d": [22,135], "a": 1 }, 964 | { "px": [32,96], "src": [96,16], "f": 0, "t": 28, "d": [22,152], "a": 1 }, 965 | { "px": [32,112], "src": [96,16], "f": 0, "t": 28, "d": [22,177], "a": 1 }, 966 | { "px": [128,208], "src": [96,16], "f": 0, "t": 28, "d": [22,333], "a": 1 }, 967 | { "px": [16,224], "src": [96,16], "f": 0, "t": 28, "d": [22,351], "a": 1 }, 968 | { "px": [16,240], "src": [96,16], "f": 0, "t": 28, "d": [22,376], "a": 1 }, 969 | { "px": [48,272], "src": [96,16], "f": 0, "t": 28, "d": [22,428], "a": 1 }, 970 | { "px": [48,288], "src": [96,16], "f": 0, "t": 28, "d": [22,453], "a": 1 }, 971 | { "px": [48,304], "src": [96,16], "f": 0, "t": 28, "d": [22,478], "a": 1 }, 972 | { "px": [48,320], "src": [96,16], "f": 0, "t": 28, "d": [22,503], "a": 1 }, 973 | { "px": [48,336], "src": [96,16], "f": 0, "t": 28, "d": [22,528], "a": 1 }, 974 | { "px": [48,352], "src": [96,16], "f": 0, "t": 28, "d": [22,553], "a": 1 }, 975 | { "px": [176,48], "src": [128,16], "f": 0, "t": 30, "d": [23,86], "a": 1 }, 976 | { "px": [48,64], "src": [128,16], "f": 0, "t": 30, "d": [23,103], "a": 1 }, 977 | { "px": [176,64], "src": [128,16], "f": 0, "t": 30, "d": [23,111], "a": 1 }, 978 | { "px": [48,80], "src": [128,16], "f": 0, "t": 30, "d": [23,128], "a": 1 }, 979 | { "px": [176,80], "src": [128,16], "f": 0, "t": 30, "d": [23,136], "a": 1 }, 980 | { "px": [48,96], "src": [128,16], "f": 0, "t": 30, "d": [23,153], "a": 1 }, 981 | { "px": [48,112], "src": [128,16], "f": 0, "t": 30, "d": [23,178], "a": 1 }, 982 | { "px": [80,208], "src": [128,16], "f": 0, "t": 30, "d": [23,330], "a": 1 }, 983 | { "px": [64,240], "src": [128,16], "f": 0, "t": 30, "d": [23,379], "a": 1 }, 984 | { "px": [64,256], "src": [128,16], "f": 0, "t": 30, "d": [23,404], "a": 1 }, 985 | { "px": [64,272], "src": [128,16], "f": 0, "t": 30, "d": [23,429], "a": 1 }, 986 | { "px": [64,288], "src": [128,16], "f": 0, "t": 30, "d": [23,454], "a": 1 }, 987 | { "px": [64,304], "src": [128,16], "f": 0, "t": 30, "d": [23,479], "a": 1 }, 988 | { "px": [64,320], "src": [128,16], "f": 0, "t": 30, "d": [23,504], "a": 1 }, 989 | { "px": [64,336], "src": [128,16], "f": 0, "t": 30, "d": [23,529], "a": 1 }, 990 | { "px": [64,48], "src": [112,32], "f": 0, "t": 51, "d": [25,79], "a": 1 }, 991 | { "px": [80,48], "src": [112,32], "f": 0, "t": 51, "d": [25,80], "a": 1 }, 992 | { "px": [96,48], "src": [112,32], "f": 0, "t": 51, "d": [25,81], "a": 1 }, 993 | { "px": [112,48], "src": [112,32], "f": 0, "t": 51, "d": [25,82], "a": 1 }, 994 | { "px": [128,48], "src": [112,32], "f": 0, "t": 51, "d": [25,83], "a": 1 }, 995 | { "px": [144,48], "src": [112,32], "f": 0, "t": 51, "d": [25,84], "a": 1 }, 996 | { "px": [192,112], "src": [112,32], "f": 0, "t": 51, "d": [25,187], "a": 1 }, 997 | { "px": [0,208], "src": [112,32], "f": 0, "t": 51, "d": [25,325], "a": 1 }, 998 | { "px": [32,256], "src": [112,32], "f": 0, "t": 51, "d": [25,402], "a": 1 }, 999 | { "px": [64,368], "src": [112,32], "f": 0, "t": 51, "d": [25,579], "a": 1 }, 1000 | { "px": [80,368], "src": [112,32], "f": 0, "t": 51, "d": [25,580], "a": 1 }, 1001 | { "px": [96,368], "src": [112,32], "f": 0, "t": 51, "d": [25,581], "a": 1 }, 1002 | { "px": [112,368], "src": [112,32], "f": 0, "t": 51, "d": [25,582], "a": 1 }, 1003 | { "px": [128,368], "src": [112,32], "f": 0, "t": 51, "d": [25,583], "a": 1 }, 1004 | { "px": [144,368], "src": [112,32], "f": 0, "t": 51, "d": [25,584], "a": 1 }, 1005 | { "px": [160,368], "src": [112,32], "f": 0, "t": 51, "d": [25,585], "a": 1 }, 1006 | { "px": [240,368], "src": [112,32], "f": 0, "t": 51, "d": [25,590], "a": 1 }, 1007 | { "px": [256,368], "src": [112,32], "f": 0, "t": 51, "d": [25,591], "a": 1 }, 1008 | { "px": [272,368], "src": [112,32], "f": 0, "t": 51, "d": [25,592], "a": 1 }, 1009 | { "px": [288,368], "src": [112,32], "f": 0, "t": 51, "d": [25,593], "a": 1 }, 1010 | { "px": [304,368], "src": [112,32], "f": 0, "t": 51, "d": [25,594], "a": 1 }, 1011 | { "px": [320,368], "src": [112,32], "f": 0, "t": 51, "d": [25,595], "a": 1 }, 1012 | { "px": [336,368], "src": [112,32], "f": 0, "t": 51, "d": [25,596], "a": 1 }, 1013 | { "px": [352,368], "src": [112,32], "f": 0, "t": 51, "d": [25,597], "a": 1 }, 1014 | { "px": [160,96], "src": [96,32], "f": 0, "t": 50, "d": [24,160], "a": 1 }, 1015 | { "px": [176,112], "src": [96,32], "f": 0, "t": 50, "d": [24,186], "a": 1 }, 1016 | { "px": [32,128], "src": [96,32], "f": 0, "t": 50, "d": [24,202], "a": 1 }, 1017 | { "px": [256,144], "src": [96,32], "f": 0, "t": 50, "d": [24,241], "a": 1 }, 1018 | { "px": [336,192], "src": [96,32], "f": 0, "t": 50, "d": [24,321], "a": 1 }, 1019 | { "px": [128,224], "src": [96,32], "f": 0, "t": 50, "d": [24,358], "a": 1 }, 1020 | { "px": [16,256], "src": [96,32], "f": 0, "t": 50, "d": [24,401], "a": 1 }, 1021 | { "px": [240,256], "src": [96,32], "f": 0, "t": 50, "d": [24,415], "a": 1 }, 1022 | { "px": [256,272], "src": [96,32], "f": 0, "t": 50, "d": [24,441], "a": 1 }, 1023 | { "px": [48,368], "src": [96,32], "f": 0, "t": 50, "d": [24,578], "a": 1 }, 1024 | { "px": [224,368], "src": [96,32], "f": 0, "t": 50, "d": [24,589], "a": 1 }, 1025 | { "px": [208,112], "src": [128,32], "f": 0, "t": 52, "d": [26,188], "a": 1 }, 1026 | { "px": [48,128], "src": [128,32], "f": 0, "t": 52, "d": [26,203], "a": 1 }, 1027 | { "px": [272,144], "src": [128,32], "f": 0, "t": 52, "d": [26,242], "a": 1 }, 1028 | { "px": [352,192], "src": [128,32], "f": 0, "t": 52, "d": [26,322], "a": 1 }, 1029 | { "px": [160,208], "src": [128,32], "f": 0, "t": 52, "d": [26,335], "a": 1 }, 1030 | { "px": [80,224], "src": [128,32], "f": 0, "t": 52, "d": [26,355], "a": 1 }, 1031 | { "px": [144,224], "src": [128,32], "f": 0, "t": 52, "d": [26,359], "a": 1 }, 1032 | { "px": [288,256], "src": [128,32], "f": 0, "t": 52, "d": [26,418], "a": 1 }, 1033 | { "px": [272,272], "src": [128,32], "f": 0, "t": 52, "d": [26,442], "a": 1 }, 1034 | { "px": [176,368], "src": [128,32], "f": 0, "t": 52, "d": [26,586], "a": 1 }, 1035 | { "px": [368,368], "src": [128,32], "f": 0, "t": 52, "d": [26,598], "a": 1 }, 1036 | { "px": [48,48], "src": [112,16], "f": 0, "t": 29, "d": [21,78], "a": 1 }, 1037 | { "px": [160,48], "src": [112,16], "f": 0, "t": 29, "d": [21,85], "a": 1 }, 1038 | { "px": [176,96], "src": [112,16], "f": 0, "t": 29, "d": [21,161], "a": 1 }, 1039 | { "px": [16,208], "src": [112,16], "f": 0, "t": 29, "d": [21,326], "a": 1 }, 1040 | { "px": [32,208], "src": [112,16], "f": 0, "t": 29, "d": [21,327], "a": 1 }, 1041 | { "px": [48,208], "src": [112,16], "f": 0, "t": 29, "d": [21,328], "a": 1 }, 1042 | { "px": [64,208], "src": [112,16], "f": 0, "t": 29, "d": [21,329], "a": 1 }, 1043 | { "px": [144,208], "src": [112,16], "f": 0, "t": 29, "d": [21,334], "a": 1 }, 1044 | { "px": [32,224], "src": [112,16], "f": 0, "t": 29, "d": [21,352], "a": 1 }, 1045 | { "px": [48,224], "src": [112,16], "f": 0, "t": 29, "d": [21,353], "a": 1 }, 1046 | { "px": [64,224], "src": [112,16], "f": 0, "t": 29, "d": [21,354], "a": 1 }, 1047 | { "px": [32,240], "src": [112,16], "f": 0, "t": 29, "d": [21,377], "a": 1 }, 1048 | { "px": [48,240], "src": [112,16], "f": 0, "t": 29, "d": [21,378], "a": 1 }, 1049 | { "px": [48,256], "src": [112,16], "f": 0, "t": 29, "d": [21,403], "a": 1 }, 1050 | { "px": [256,256], "src": [112,16], "f": 0, "t": 29, "d": [21,416], "a": 1 }, 1051 | { "px": [272,256], "src": [112,16], "f": 0, "t": 29, "d": [21,417], "a": 1 }, 1052 | { "px": [64,352], "src": [112,16], "f": 0, "t": 29, "d": [21,554], "a": 1 }, 1053 | { "px": [32,32], "src": [96,0], "f": 0, "t": 6, "d": [18,52], "a": 1 }, 1054 | { "px": [256,128], "src": [96,0], "f": 0, "t": 6, "d": [18,216], "a": 1 }, 1055 | { "px": [336,176], "src": [96,0], "f": 0, "t": 6, "d": [18,296], "a": 1 }, 1056 | { "px": [0,192], "src": [96,0], "f": 0, "t": 6, "d": [18,300], "a": 1 }, 1057 | { "px": [128,192], "src": [96,0], "f": 0, "t": 6, "d": [18,308], "a": 1 }, 1058 | { "px": [240,240], "src": [96,0], "f": 0, "t": 6, "d": [18,390], "a": 1 }, 1059 | { "px": [224,352], "src": [96,0], "f": 0, "t": 6, "d": [18,564], "a": 1 }, 1060 | { "px": [176,32], "src": [128,0], "f": 0, "t": 8, "d": [20,61], "a": 1 }, 1061 | { "px": [208,96], "src": [128,0], "f": 0, "t": 8, "d": [20,163], "a": 1 }, 1062 | { "px": [272,128], "src": [128,0], "f": 0, "t": 8, "d": [20,217], "a": 1 }, 1063 | { "px": [352,176], "src": [128,0], "f": 0, "t": 8, "d": [20,297], "a": 1 }, 1064 | { "px": [80,192], "src": [128,0], "f": 0, "t": 8, "d": [20,305], "a": 1 }, 1065 | { "px": [160,192], "src": [128,0], "f": 0, "t": 8, "d": [20,310], "a": 1 }, 1066 | { "px": [288,240], "src": [128,0], "f": 0, "t": 8, "d": [20,393], "a": 1 }, 1067 | { "px": [176,352], "src": [128,0], "f": 0, "t": 8, "d": [20,561], "a": 1 }, 1068 | { "px": [368,352], "src": [128,0], "f": 0, "t": 8, "d": [20,573], "a": 1 }, 1069 | { "px": [48,32], "src": [112,0], "f": 0, "t": 7, "d": [19,53], "a": 1 }, 1070 | { "px": [64,32], "src": [112,0], "f": 0, "t": 7, "d": [19,54], "a": 1 }, 1071 | { "px": [80,32], "src": [112,0], "f": 0, "t": 7, "d": [19,55], "a": 1 }, 1072 | { "px": [96,32], "src": [112,0], "f": 0, "t": 7, "d": [19,56], "a": 1 }, 1073 | { "px": [112,32], "src": [112,0], "f": 0, "t": 7, "d": [19,57], "a": 1 }, 1074 | { "px": [128,32], "src": [112,0], "f": 0, "t": 7, "d": [19,58], "a": 1 }, 1075 | { "px": [144,32], "src": [112,0], "f": 0, "t": 7, "d": [19,59], "a": 1 }, 1076 | { "px": [160,32], "src": [112,0], "f": 0, "t": 7, "d": [19,60], "a": 1 }, 1077 | { "px": [192,96], "src": [112,0], "f": 0, "t": 7, "d": [19,162], "a": 1 }, 1078 | { "px": [16,192], "src": [112,0], "f": 0, "t": 7, "d": [19,301], "a": 1 }, 1079 | { "px": [32,192], "src": [112,0], "f": 0, "t": 7, "d": [19,302], "a": 1 }, 1080 | { "px": [48,192], "src": [112,0], "f": 0, "t": 7, "d": [19,303], "a": 1 }, 1081 | { "px": [64,192], "src": [112,0], "f": 0, "t": 7, "d": [19,304], "a": 1 }, 1082 | { "px": [144,192], "src": [112,0], "f": 0, "t": 7, "d": [19,309], "a": 1 }, 1083 | { "px": [256,240], "src": [112,0], "f": 0, "t": 7, "d": [19,391], "a": 1 }, 1084 | { "px": [272,240], "src": [112,0], "f": 0, "t": 7, "d": [19,392], "a": 1 }, 1085 | { "px": [80,352], "src": [112,0], "f": 0, "t": 7, "d": [19,555], "a": 1 }, 1086 | { "px": [96,352], "src": [112,0], "f": 0, "t": 7, "d": [19,556], "a": 1 }, 1087 | { "px": [112,352], "src": [112,0], "f": 0, "t": 7, "d": [19,557], "a": 1 }, 1088 | { "px": [128,352], "src": [112,0], "f": 0, "t": 7, "d": [19,558], "a": 1 }, 1089 | { "px": [144,352], "src": [112,0], "f": 0, "t": 7, "d": [19,559], "a": 1 }, 1090 | { "px": [160,352], "src": [112,0], "f": 0, "t": 7, "d": [19,560], "a": 1 }, 1091 | { "px": [240,352], "src": [112,0], "f": 0, "t": 7, "d": [19,565], "a": 1 }, 1092 | { "px": [256,352], "src": [112,0], "f": 0, "t": 7, "d": [19,566], "a": 1 }, 1093 | { "px": [272,352], "src": [112,0], "f": 0, "t": 7, "d": [19,567], "a": 1 }, 1094 | { "px": [288,352], "src": [112,0], "f": 0, "t": 7, "d": [19,568], "a": 1 }, 1095 | { "px": [304,352], "src": [112,0], "f": 0, "t": 7, "d": [19,569], "a": 1 }, 1096 | { "px": [320,352], "src": [112,0], "f": 0, "t": 7, "d": [19,570], "a": 1 }, 1097 | { "px": [336,352], "src": [112,0], "f": 0, "t": 7, "d": [19,571], "a": 1 }, 1098 | { "px": [352,352], "src": [112,0], "f": 0, "t": 7, "d": [19,572], "a": 1 } 1099 | ], 1100 | "seed": 2340657, 1101 | "overrideTilesetUid": null, 1102 | "gridTiles": [], 1103 | "entityInstances": [] 1104 | } 1105 | ], 1106 | "__neighbours": [] 1107 | }, 1108 | { 1109 | "identifier": "Level_1", 1110 | "iid": "041fc8a0-dbe0-11ec-b8ad-15b7387d9f44", 1111 | "uid": 37, 1112 | "worldX": 464, 1113 | "worldY": 0, 1114 | "worldDepth": 0, 1115 | "pxWid": 400, 1116 | "pxHei": 400, 1117 | "__bgColor": "#696A79", 1118 | "bgColor": null, 1119 | "useAutoIdentifier": true, 1120 | "bgRelPath": null, 1121 | "bgPos": null, 1122 | "bgPivotX": 0.5, 1123 | "bgPivotY": 0.5, 1124 | "__smartColor": "#ADADB5", 1125 | "__bgPos": null, 1126 | "externalRelPath": null, 1127 | "fieldInstances": [], 1128 | "layerInstances": [ 1129 | { 1130 | "__identifier": "PhysicsEntities", 1131 | "__type": "Entities", 1132 | "__cWid": 25, 1133 | "__cHei": 25, 1134 | "__gridSize": 16, 1135 | "__opacity": 1, 1136 | "__pxTotalOffsetX": 0, 1137 | "__pxTotalOffsetY": 0, 1138 | "__tilesetDefUid": null, 1139 | "__tilesetRelPath": null, 1140 | "iid": "042016c2-dbe0-11ec-b8ad-67356a2ca124", 1141 | "levelId": 37, 1142 | "layerDefUid": 34, 1143 | "pxOffsetX": 0, 1144 | "pxOffsetY": 0, 1145 | "visible": true, 1146 | "optionalRules": [], 1147 | "intGridCsv": [], 1148 | "autoLayerTiles": [], 1149 | "seed": 9416022, 1150 | "overrideTilesetUid": null, 1151 | "gridTiles": [], 1152 | "entityInstances": [] 1153 | }, 1154 | { 1155 | "__identifier": "Entities", 1156 | "__type": "Entities", 1157 | "__cWid": 25, 1158 | "__cHei": 25, 1159 | "__gridSize": 16, 1160 | "__opacity": 1, 1161 | "__pxTotalOffsetX": 0, 1162 | "__pxTotalOffsetY": 0, 1163 | "__tilesetDefUid": null, 1164 | "__tilesetRelPath": null, 1165 | "iid": "04203dd0-dbe0-11ec-b8ad-6d27b1fc9158", 1166 | "levelId": 37, 1167 | "layerDefUid": 27, 1168 | "pxOffsetX": 0, 1169 | "pxOffsetY": 0, 1170 | "visible": true, 1171 | "optionalRules": [], 1172 | "intGridCsv": [], 1173 | "autoLayerTiles": [], 1174 | "seed": 9266113, 1175 | "overrideTilesetUid": null, 1176 | "gridTiles": [], 1177 | "entityInstances": [ 1178 | { 1179 | "__identifier": "Player", 1180 | "__grid": [5,4], 1181 | "__pivot": [0,0], 1182 | "__tags": [], 1183 | "__tile": null, 1184 | "__smartColor": "#94D9B3", 1185 | "iid": "04203dd1-dbe0-11ec-b8ad-9b594b880889", 1186 | "width": 16, 1187 | "height": 16, 1188 | "defUid": 4, 1189 | "px": [80,64], 1190 | "fieldInstances": [], 1191 | "__worldX": 544, 1192 | "__worldY": 64 1193 | }, 1194 | { 1195 | "__identifier": "SolidBlock", 1196 | "__grid": [3,6], 1197 | "__pivot": [0,0], 1198 | "__tags": [], 1199 | "__tile": null, 1200 | "__smartColor": "#9D94D9", 1201 | "iid": "04203dd2-dbe0-11ec-b8ad-97634c654fc8", 1202 | "width": 112, 1203 | "height": 32, 1204 | "defUid": 33, 1205 | "px": [48,96], 1206 | "fieldInstances": [], 1207 | "__worldX": 512, 1208 | "__worldY": 96 1209 | }, 1210 | { 1211 | "__identifier": "Portal", 1212 | "__grid": [8,4], 1213 | "__pivot": [0,0], 1214 | "__tags": [], 1215 | "__tile": null, 1216 | "__smartColor": "#D994B3", 1217 | "iid": "04203dd3-dbe0-11ec-b8ad-b104c0258e93", 1218 | "width": 32, 1219 | "height": 32, 1220 | "defUid": 35, 1221 | "px": [128,64], 1222 | "fieldInstances": [{ "__identifier": "level_destination", "__type": "Float", "__value": 0, "__tile": null, "defUid": 36, "realEditorValues": [{ "id": "V_Float", "params": [0] }] }], 1223 | "__worldX": 592, 1224 | "__worldY": 64 1225 | } 1226 | ] 1227 | }, 1228 | { 1229 | "__identifier": "TileLayer", 1230 | "__type": "IntGrid", 1231 | "__cWid": 25, 1232 | "__cHei": 25, 1233 | "__gridSize": 16, 1234 | "__opacity": 1, 1235 | "__pxTotalOffsetX": 0, 1236 | "__pxTotalOffsetY": 0, 1237 | "__tilesetDefUid": 1, 1238 | "__tilesetRelPath": "Pixel Adventure 1/Terrain/Terrain (16x16).png", 1239 | "iid": "04203dd4-dbe0-11ec-b8ad-97c9493bdc55", 1240 | "levelId": 37, 1241 | "layerDefUid": 6, 1242 | "pxOffsetX": 0, 1243 | "pxOffsetY": 0, 1244 | "visible": true, 1245 | "optionalRules": [], 1246 | "intGridCsv": [ 1247 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1248 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1249 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1250 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1251 | 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1252 | 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1253 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1254 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1255 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1256 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1257 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1258 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1259 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1260 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1261 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1262 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1263 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1264 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1265 | ], 1266 | "autoLayerTiles": [ 1267 | { "px": [64,112], "src": [112,32], "f": 0, "t": 51, "d": [25,179], "a": 1 }, 1268 | { "px": [80,112], "src": [112,32], "f": 0, "t": 51, "d": [25,180], "a": 1 }, 1269 | { "px": [96,112], "src": [112,32], "f": 0, "t": 51, "d": [25,181], "a": 1 }, 1270 | { "px": [112,112], "src": [112,32], "f": 0, "t": 51, "d": [25,182], "a": 1 }, 1271 | { "px": [128,112], "src": [112,32], "f": 0, "t": 51, "d": [25,183], "a": 1 }, 1272 | { "px": [48,112], "src": [96,32], "f": 0, "t": 50, "d": [24,178], "a": 1 }, 1273 | { "px": [144,112], "src": [128,32], "f": 0, "t": 52, "d": [26,184], "a": 1 }, 1274 | { "px": [48,96], "src": [96,0], "f": 0, "t": 6, "d": [18,153], "a": 1 }, 1275 | { "px": [144,96], "src": [128,0], "f": 0, "t": 8, "d": [20,159], "a": 1 }, 1276 | { "px": [64,96], "src": [112,0], "f": 0, "t": 7, "d": [19,154], "a": 1 }, 1277 | { "px": [80,96], "src": [112,0], "f": 0, "t": 7, "d": [19,155], "a": 1 }, 1278 | { "px": [96,96], "src": [112,0], "f": 0, "t": 7, "d": [19,156], "a": 1 }, 1279 | { "px": [112,96], "src": [112,0], "f": 0, "t": 7, "d": [19,157], "a": 1 }, 1280 | { "px": [128,96], "src": [112,0], "f": 0, "t": 7, "d": [19,158], "a": 1 } 1281 | ], 1282 | "seed": 9137189, 1283 | "overrideTilesetUid": null, 1284 | "gridTiles": [], 1285 | "entityInstances": [] 1286 | } 1287 | ], 1288 | "__neighbours": [] 1289 | } 1290 | ], 1291 | "worlds": [], 1292 | "dummyWorldIid": "75175550-b0a0-11ee-9cfd-132231b8d3df" 1293 | } -------------------------------------------------------------------------------- /sources/Constants.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | using namespace std; 6 | 7 | const int ScreenScale = 2; 8 | namespace GameConstants 9 | { 10 | const int WorldWidth = 400; 11 | const int WorldHeight = 400; 12 | 13 | const int CellSize = 16; 14 | const float PhysicsWorldScale = 16.0f / ScreenScale; // everything is this times bigger than what physics world says 15 | } 16 | 17 | namespace AppConstants 18 | { 19 | const string WindowTitle = "Window Title"; 20 | 21 | const int ScreenWidth = GameConstants::WorldWidth * ScreenScale; 22 | const int ScreenHeight = GameConstants::WorldHeight * ScreenScale; 23 | 24 | inline string GetAssetPath(string assetName) 25 | { 26 | return ASSETS_PATH "" + assetName; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /sources/entities/BaseEntity.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class BaseEntity 4 | { 5 | public: 6 | virtual ~BaseEntity() = default; 7 | virtual void draw() = 0; 8 | virtual void update(float dt) = 0; 9 | }; 10 | -------------------------------------------------------------------------------- /sources/entities/Player/Player.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include "Player.hpp" 15 | #include "../../physics/PhysicsTypes.hpp" 16 | #include "../../scenes/GameScene/GameScene.hpp" 17 | #include "../../physics/RaycastUtils.hpp" 18 | 19 | using namespace std; 20 | 21 | Player::Player() 22 | { 23 | this->sprite = LoadTexture(AppConstants::GetAssetPath("dinoCharactersVersion1.1/sheets/DinoSprites - vita.png").c_str()); 24 | 25 | auto make_player_frame_rect = [](float frame_num) -> Rectangle 26 | { 27 | return { 28 | .x = frame_num * 24.0f, 29 | .y = 0.0f, 30 | .width = 24.0f, 31 | .height = 24.0f}; 32 | }; 33 | 34 | animation_map[IDLE] = { 35 | make_player_frame_rect(0), 36 | make_player_frame_rect(1), 37 | make_player_frame_rect(2), 38 | }; 39 | 40 | animation_map[WALK] = { 41 | make_player_frame_rect(3), 42 | make_player_frame_rect(4), 43 | make_player_frame_rect(5), 44 | }; 45 | 46 | animation_map[JUMP_START] = { 47 | make_player_frame_rect(6), 48 | }; 49 | 50 | animation_map[JUMP_APEX] = { 51 | make_player_frame_rect(7), 52 | }; 53 | 54 | animation_map[JUMP_FALL] = { 55 | make_player_frame_rect(8), 56 | }; 57 | } 58 | 59 | Player::~Player() 60 | { 61 | UnloadTexture(this->sprite); 62 | } 63 | 64 | void Player::update(float dt) 65 | { 66 | const float horizontalDampeningFactor = 1; 67 | 68 | animation_ticker -= dt; 69 | if (animation_ticker <= 0) 70 | { 71 | animation_ticker = animation_frame_duration; 72 | current_anim_frame += 1; 73 | } 74 | 75 | // dampen horizontal movement 76 | set_velocity_x(body->GetLinearVelocity().x * (1 - dt * horizontalDampeningFactor)); 77 | 78 | check_if_on_floor(); 79 | check_if_move(); 80 | check_if_jump(); 81 | 82 | check_if_should_respawn(); 83 | } 84 | 85 | void Player::draw() 86 | { 87 | auto spritePosX = (body->GetPosition().x * GameConstants::PhysicsWorldScale) - 12; 88 | auto spritePosY = (body->GetPosition().y * GameConstants::PhysicsWorldScale) - 13; 89 | 90 | auto current_anim_states = animation_map[anim_state]; 91 | auto current_anim_rect = current_anim_states[current_anim_frame % current_anim_states.size()]; 92 | 93 | if (!looking_right) 94 | { 95 | current_anim_rect.width *= -1; 96 | } 97 | 98 | DrawTexturePro(sprite, 99 | current_anim_rect, 100 | {spritePosX, spritePosY, 24, 24}, 101 | {0, 0}, 102 | 0.0f, 103 | WHITE); 104 | } 105 | 106 | void Player::init_for_level(const ldtk::Entity *entity, b2World *physicsWorld) 107 | { 108 | auto pos = entity->getPosition(); 109 | 110 | DebugUtils::println("Setting player position to x:{} and y:{}", pos.x, pos.y); 111 | 112 | level_spawn_position = {(float)pos.x / GameConstants::PhysicsWorldScale, 113 | (float)pos.y / GameConstants::PhysicsWorldScale}; 114 | 115 | b2BodyDef bodyDef; 116 | bodyDef.type = b2_dynamicBody; 117 | bodyDef.fixedRotation = true; 118 | bodyDef.position.Set(level_spawn_position.x, level_spawn_position.y); 119 | 120 | this->body = physicsWorld->CreateBody(&bodyDef); 121 | 122 | b2PolygonShape dynamicBox; 123 | dynamicBox.SetAsBox(0.9, 1); 124 | 125 | b2FixtureDef fixtureDef; 126 | fixtureDef.shape = &dynamicBox; 127 | fixtureDef.density = 1.0f; 128 | fixtureDef.friction = 10.0f; 129 | 130 | body->CreateFixture(&fixtureDef); 131 | } 132 | 133 | void Player::set_velocity_x(float vx) 134 | { 135 | body->SetLinearVelocity({ 136 | vx, 137 | body->GetLinearVelocity().y, 138 | }); 139 | } 140 | 141 | void Player::set_velocity_y(float vy) 142 | { 143 | body->SetLinearVelocity({ 144 | body->GetLinearVelocity().x, 145 | vy, 146 | }); 147 | } 148 | 149 | void Player::set_velocity_xy(float vx, float vy) 150 | { 151 | body->SetLinearVelocity({vx, vy}); 152 | } 153 | 154 | void Player::check_if_on_floor() 155 | { 156 | // first, reset whether we're touching floor 157 | is_touching_floor = false; 158 | 159 | // check left, center, and right touch points 160 | float x_deviations[] = {-1.0f, 0.0f, 1.0f}; 161 | 162 | for (auto x_dev : x_deviations) 163 | { 164 | // query raylib to see if we're touching floor 165 | auto source = body->GetPosition(); 166 | source.x += x_dev; 167 | 168 | auto target = body->GetPosition(); 169 | target.x += x_dev; 170 | target.y += 1.1; 171 | 172 | is_touching_floor = RaycastCheckCollisionWithUserData( 173 | GameScene::world.get(), 174 | source, 175 | target, 176 | PhysicsTypes::SolidBlock); 177 | 178 | if (is_touching_floor) 179 | { 180 | break; 181 | } 182 | } 183 | } 184 | 185 | bool Player::can_move_in_x_direction(bool moving_right) 186 | { 187 | float y_deviations[] = {-1.0f, 0.0f, 1.0f}; 188 | for (auto y_dev : y_deviations) 189 | { 190 | // query raylib to see if we're touching floor 191 | auto source = body->GetPosition(); 192 | source.y += y_dev; 193 | 194 | auto target = body->GetPosition(); 195 | target.y += y_dev; 196 | 197 | // check left side if necessary 198 | target.x += (moving_right ? 1 : -1) * 1.1; 199 | 200 | auto is_agains_wall = RaycastCheckCollisionWithUserData( 201 | GameScene::world.get(), 202 | source, 203 | target, 204 | PhysicsTypes::SolidBlock); 205 | 206 | if (is_agains_wall) 207 | { 208 | return false; 209 | } 210 | } 211 | 212 | return true; 213 | } 214 | 215 | void Player::check_if_jump() 216 | { 217 | if (is_touching_floor && (IsKeyPressed(KEY_UP) || IsKeyPressed(KEY_SPACE))) 218 | { 219 | set_velocity_y(-25); 220 | } 221 | 222 | if (abs(body->GetLinearVelocity().x) > 0) 223 | { 224 | anim_state = WALK; 225 | } 226 | else 227 | { 228 | anim_state = IDLE; 229 | } 230 | 231 | if (!is_touching_floor) 232 | { 233 | auto vel = body->GetLinearVelocity().y; 234 | const int jump_threshold = 5; 235 | 236 | if (vel > jump_threshold) 237 | { 238 | anim_state = JUMP_FALL; 239 | } 240 | else if (vel < -jump_threshold) 241 | { 242 | anim_state = JUMP_START; 243 | } 244 | else 245 | { 246 | anim_state = JUMP_APEX; 247 | } 248 | } 249 | } 250 | 251 | void Player::check_if_move() 252 | { 253 | const auto effective_speed = 15.0f; 254 | if (IsKeyDown(KEY_LEFT) && can_move_in_x_direction(false)) 255 | { 256 | looking_right = false; 257 | set_velocity_x(-effective_speed); 258 | } 259 | 260 | if (IsKeyDown(KEY_RIGHT) && can_move_in_x_direction(true)) 261 | { 262 | looking_right = true; 263 | set_velocity_x(effective_speed); 264 | } 265 | } 266 | 267 | void Player::check_if_should_respawn() 268 | { 269 | auto body_pos = body->GetPosition(); 270 | auto is_out_of_x = body_pos.x < 0 || body_pos.x * GameConstants::PhysicsWorldScale > GameConstants::WorldWidth; 271 | auto is_out_of_y = body_pos.y < 0 || body_pos.y * GameConstants::PhysicsWorldScale > GameConstants::WorldHeight; 272 | 273 | if (is_out_of_x || is_out_of_y) 274 | { 275 | set_velocity_xy(0, 0); 276 | body->SetTransform(level_spawn_position, 0); 277 | } 278 | } -------------------------------------------------------------------------------- /sources/entities/Player/Player.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../BaseEntity.hpp" 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace std; 14 | 15 | enum PlayerAnimationState 16 | { 17 | IDLE, 18 | WALK, 19 | JUMP_START, 20 | JUMP_APEX, 21 | JUMP_FALL 22 | }; 23 | 24 | class Player : public BaseEntity 25 | { 26 | private: 27 | Texture2D sprite; 28 | b2Body *body{}; 29 | b2Vec2 level_spawn_position; 30 | 31 | bool is_touching_floor = true; 32 | bool looking_right = true; 33 | 34 | const float animation_frame_duration = 0.2f; 35 | float animation_ticker = animation_frame_duration; 36 | 37 | size_t current_anim_frame = 0; 38 | PlayerAnimationState anim_state = PlayerAnimationState::IDLE; 39 | unordered_map> animation_map; 40 | 41 | void set_velocity_x(float vx); 42 | void set_velocity_y(float vy); 43 | void set_velocity_xy(float vx, float vy); 44 | 45 | bool can_move_in_x_direction(bool moving_right); 46 | void check_if_on_floor(); 47 | void check_if_jump(); 48 | void check_if_move(); 49 | 50 | void check_if_should_respawn(); 51 | 52 | public: 53 | Player(); 54 | ~Player(); 55 | 56 | void update(float dt) override; 57 | void draw() override; 58 | 59 | void init_for_level(const ldtk::Entity *entity, b2World *physicsWorld); 60 | }; 61 | -------------------------------------------------------------------------------- /sources/entities/Portal/Portal.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | class Portal 7 | { 8 | private: 9 | Texture2D sprite; 10 | b2Body *body{}; 11 | 12 | public: 13 | Portal(const ldtk::Entity *entity, b2World *physicsWorld); 14 | ~Portal(); 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /sources/main.cpp: -------------------------------------------------------------------------------- 1 | #if defined(PLATFORM_WEB) 2 | #include 3 | #endif 4 | 5 | #define RAYGUI_IMPLEMENTATION 6 | 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | #include "entities/Player/Player.hpp" 13 | #include "scenes/SceneManager.hpp" 14 | #include "scenes/Scenes.hpp" 15 | 16 | void UpdateDrawFrame(); 17 | RenderTexture2D gameRenderTexture; // Render texture for the game world 18 | 19 | int main() 20 | { 21 | InitWindow( 22 | AppConstants::ScreenWidth, 23 | AppConstants::ScreenHeight, 24 | AppConstants::WindowTitle.c_str()); 25 | 26 | GuiLoadStyleDefault(); 27 | 28 | // Create render texture at game resolution (not screen resolution) 29 | gameRenderTexture = LoadRenderTexture(GameConstants::WorldWidth, GameConstants::WorldHeight); 30 | 31 | SceneManager::initialize(); 32 | SceneManager::set_current_screen(Scenes::TITLE); 33 | 34 | #if defined(PLATFORM_WEB) 35 | emscripten_set_main_loop(UpdateDrawFrame, 0, 1); 36 | #else 37 | SetTargetFPS(60); // Set our game to run at 60 frames-per-second 38 | //-------------------------------------------------------------------------------------- 39 | 40 | // Main game loop 41 | while (!WindowShouldClose()) // Detect window close button or ESC key 42 | { 43 | UpdateDrawFrame(); 44 | } 45 | #endif 46 | 47 | SceneManager::cleanup(); 48 | UnloadRenderTexture(gameRenderTexture); 49 | CloseWindow(); 50 | return 0; 51 | } 52 | 53 | void UpdateDrawFrame() 54 | { 55 | float dt = GetFrameTime(); 56 | 57 | if (IsKeyDown(KEY_Q)) 58 | { 59 | CloseWindow(); 60 | return; 61 | } 62 | 63 | BeginTextureMode(gameRenderTexture); 64 | ClearBackground(RAYWHITE); 65 | 66 | SceneManager::tick(dt); 67 | 68 | EndTextureMode(); 69 | 70 | BeginDrawing(); 71 | ClearBackground(BLACK); 72 | 73 | Rectangle source = { 0.0f, 0.0f, (float)gameRenderTexture.texture.width, (float)-gameRenderTexture.texture.height }; 74 | Rectangle dest = { 0.0f, 0.0f, AppConstants::ScreenWidth, AppConstants::ScreenHeight }; 75 | DrawTexturePro(gameRenderTexture.texture, source, dest, Vector2{ 0, 0 }, 0.0f, WHITE); 76 | 77 | EndDrawing(); 78 | } -------------------------------------------------------------------------------- /sources/minshell.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | raylib web game 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 40 | 41 | 59 | 60 | 61 | 62 |

63 | 83 | {{{ SCRIPT }}} 84 | 85 | -------------------------------------------------------------------------------- /sources/physics/PhysicsTypes.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | using namespace std; 6 | 7 | namespace PhysicsTypes { 8 | const string SolidBlock = "SOLID_BLOCK"; 9 | } -------------------------------------------------------------------------------- /sources/physics/RaycastUtils.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | 8 | class RaysCastGetNearestCallback : public b2RayCastCallback 9 | { 10 | public: 11 | RaysCastGetNearestCallback() : m_fixture(NULL) 12 | { 13 | } 14 | 15 | float ReportFixture(b2Fixture *fixture, const b2Vec2 &point, const b2Vec2 &normal, float fraction) 16 | { 17 | m_fixture = fixture; 18 | m_point = point; 19 | m_normal = normal; 20 | m_fraction = fraction; 21 | return fraction; 22 | } 23 | 24 | b2Fixture *m_fixture; 25 | b2Vec2 m_point; 26 | b2Vec2 m_normal; 27 | float m_fraction; 28 | }; 29 | 30 | b2Fixture *RaycastGetFirstFixtureFromSourceToTarget(b2World *world, b2Vec2 source, b2Vec2 target) 31 | { 32 | // query raylib to see if we're touching floor 33 | RaysCastGetNearestCallback raycastCallback; 34 | 35 | GameScene::world->RayCast(&raycastCallback, 36 | source, 37 | target); 38 | 39 | return raycastCallback.m_fixture; 40 | } 41 | 42 | /** 43 | * Tries to get a collision, via raycast, that goes from the source to the target point. If there is a collision 44 | * then it checks if the body we detected has the specified `expected_user_data` 45 | * 46 | * @param world 47 | * @param source 48 | * @param target 49 | * @param user_data 50 | * @return true 51 | * @return false 52 | */ 53 | bool RaycastCheckCollisionWithUserData(b2World *world, b2Vec2 source, b2Vec2 target, string expected_user_data) 54 | { 55 | auto fixture = RaycastGetFirstFixtureFromSourceToTarget(world, source, target); 56 | if (fixture) 57 | { 58 | auto collision_body = fixture->GetBody(); 59 | 60 | if (collision_body->GetUserData().pointer) 61 | { 62 | string body_user_data = (char *)collision_body->GetUserData().pointer; 63 | return body_user_data == expected_user_data; 64 | } 65 | } 66 | 67 | return false; 68 | } -------------------------------------------------------------------------------- /sources/scenes/BaseScene.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Scenes.hpp" 4 | 5 | class BaseScene 6 | { 7 | public: 8 | virtual ~BaseScene() = default; 9 | 10 | virtual Scenes tick(float dt) = 0; 11 | }; -------------------------------------------------------------------------------- /sources/scenes/GameScene/GameScene.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include "GameScene.hpp" 12 | #include "../../physics/PhysicsTypes.hpp" 13 | #include "../Scenes.hpp" 14 | 15 | #include "./entities/BaseEntity.hpp" 16 | 17 | using namespace std; 18 | 19 | std::unique_ptr GameScene::player = nullptr; 20 | std::unique_ptr GameScene::world = nullptr; 21 | 22 | GameScene::GameScene() 23 | { 24 | player = std::make_unique(); 25 | ldtkProject = std::make_unique(); 26 | 27 | ldtkProject->loadFromFile(AppConstants::GetAssetPath("world.ldtk")); 28 | 29 | ldtkWorld = &ldtkProject->getWorld(); 30 | 31 | current_level = -1; 32 | set_selected_level(0); 33 | } 34 | 35 | GameScene::~GameScene() 36 | { 37 | UnloadTexture(renderedLevelTexture); 38 | UnloadTexture(currentTilesetTexture); 39 | } 40 | 41 | Scenes GameScene::tick(float dt) 42 | { 43 | const float timeStep = 1.0f / 60.0f; 44 | const int32 velocityIterations = 6; 45 | const int32 positionIterations = 2; 46 | 47 | world->Step(timeStep, velocityIterations, positionIterations); 48 | player->update(dt); 49 | 50 | ClearBackground(RAYWHITE); 51 | 52 | DrawTextureRec(renderedLevelTexture, 53 | {0, 0, (float)renderedLevelTexture.width, (float)-renderedLevelTexture.height}, 54 | {0, 0}, WHITE); 55 | 56 | player->draw(); 57 | 58 | // DEBUG stuff 59 | DebugUtils::draw_physics_objects_bounding_boxes(world.get()); 60 | 61 | return Scenes::NONE; 62 | } 63 | 64 | void GameScene::set_selected_level(int lvl) 65 | { 66 | // unload current tileset texture if necessary 67 | if (current_level >= 0) 68 | { 69 | UnloadTexture(currentTilesetTexture); 70 | } 71 | 72 | if (world != nullptr) 73 | { 74 | // if we had an old world then delete it and recreate 75 | // a new one for the new level 76 | world = nullptr; 77 | } 78 | 79 | b2Vec2 gravity(0.0f, 60.0f); 80 | world = std::make_unique(gravity); 81 | 82 | current_level = lvl; 83 | 84 | currentLdtkLevel = &ldtkWorld->getLevel(current_level); 85 | 86 | DebugUtils::println("----------------------------------------------"); 87 | DebugUtils::println("Loaded LDTK map with {} levels in it", ldtkWorld->allLevels().size()); 88 | DebugUtils::println("The loaded level is {} and it has {} layers", current_level, currentLdtkLevel->allLayers().size()); 89 | for (auto &&layer : currentLdtkLevel->allLayers()) 90 | { 91 | DebugUtils::print(" - {}", layer.getName()); 92 | } 93 | 94 | auto testTileLayerTileset = currentLdtkLevel->getLayer("TileLayer").getTileset(); 95 | 96 | DebugUtils::println("The path to the tile layer tileset is: {}", testTileLayerTileset.path); 97 | DebugUtils::println("----------------------------------------------"); 98 | 99 | auto levelSize = currentLdtkLevel->size; 100 | auto renderTexture = LoadRenderTexture(levelSize.x, levelSize.y); 101 | 102 | BeginTextureMode(renderTexture); 103 | 104 | if (currentLdtkLevel->hasBgImage()) 105 | { 106 | DebugUtils::println("Drawing background image"); 107 | auto backgroundPath = currentLdtkLevel->getBgImage(); 108 | auto backgroundTexture = LoadTexture(AppConstants::GetAssetPath(backgroundPath.path.c_str()).c_str()); 109 | SetTextureFilter(backgroundTexture, TEXTURE_FILTER_TRILINEAR); 110 | 111 | // tile background texture to cover the whole frame buffer 112 | for (int i = 0; i <= (GameConstants::WorldWidth / backgroundTexture.width); i++) 113 | { 114 | for (int j = 0; j <= (GameConstants::WorldHeight / backgroundTexture.height); j++) 115 | { 116 | DrawTextureV(backgroundTexture, {float(i * backgroundTexture.width), float(j * backgroundTexture.height)}, WHITE); 117 | } 118 | } 119 | } 120 | 121 | // draw all tileset layers 122 | for (auto &&layer : currentLdtkLevel->allLayers()) 123 | { 124 | if (layer.hasTileset()) 125 | { 126 | currentTilesetTexture = LoadTexture(AppConstants::GetAssetPath(layer.getTileset().path).c_str()); 127 | // if it is a tile layer then draw every tile to the frame buffer 128 | for (auto &&tile : layer.allTiles()) 129 | { 130 | auto source_pos = tile.getTextureRect(); 131 | auto tile_size = float(layer.getTileset().tile_size); 132 | 133 | Rectangle source_rect = { 134 | .x = float(source_pos.x), 135 | .y = float(source_pos.y), 136 | .width = tile.flipX ? -tile_size : tile_size, 137 | .height = tile.flipY ? -tile_size : tile_size, 138 | }; 139 | 140 | Vector2 target_pos = { 141 | (float)tile.getPosition().x, 142 | (float)tile.getPosition().y, 143 | }; 144 | 145 | DrawTextureRec(currentTilesetTexture, source_rect, target_pos, WHITE); 146 | } 147 | } 148 | } 149 | 150 | EndTextureMode(); 151 | renderedLevelTexture = renderTexture.texture; 152 | 153 | // get entity positions 154 | DebugUtils::println("Entities in level:"); 155 | for (auto &&entity : currentLdtkLevel->getLayer("Entities").allEntities()) 156 | { 157 | DebugUtils::println(" - {}", entity.getName()); 158 | if (entity.getName() == "Player") 159 | { 160 | player->init_for_level(&entity, world.get()); 161 | } 162 | 163 | if (entity.getName() == "Portal") 164 | { 165 | float target_lvl = entity.getField("level_destination").value(); 166 | DebugUtils::println("Portal goes to level: {}", target_lvl); 167 | } 168 | } 169 | 170 | // create solid blocks on level 171 | DebugUtils::println("Loading solid blocks in level:"); 172 | for (auto &&entity : currentLdtkLevel->getLayer("PhysicsEntities").allEntities()) 173 | { 174 | // box2d width and height start from the center of the box 175 | auto b2width = entity.getSize().x / 2.0f; 176 | auto b2height = entity.getSize().y / 2.0f; 177 | 178 | auto centerX = entity.getPosition().x + b2width; 179 | auto centerY = entity.getPosition().y + b2height; 180 | 181 | b2BodyDef bodyDef; 182 | bodyDef.userData.pointer = (uintptr_t)PhysicsTypes::SolidBlock.c_str(); 183 | bodyDef.position.Set(centerX / GameConstants::PhysicsWorldScale, 184 | centerY / GameConstants::PhysicsWorldScale); 185 | 186 | b2Body *body = world->CreateBody(&bodyDef); 187 | 188 | b2PolygonShape groundBox; 189 | groundBox.SetAsBox(b2width / GameConstants::PhysicsWorldScale, 190 | b2height / GameConstants::PhysicsWorldScale); 191 | 192 | body->CreateFixture(&groundBox, 0.0f); 193 | 194 | DebugUtils::println(" - x:{} y:{} width:{} height:{}", 195 | centerX, 196 | centerY, 197 | b2width, 198 | b2height); 199 | } 200 | } 201 | -------------------------------------------------------------------------------- /sources/scenes/GameScene/GameScene.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "../BaseScene.hpp" 10 | #include "../Scenes.hpp" 11 | 12 | #include "../../entities/Player/Player.hpp" 13 | #include "./entities/BaseEntity.hpp" 14 | 15 | class GameScene : public BaseScene 16 | { 17 | private: 18 | int current_level; 19 | 20 | std::unique_ptr ldtkProject; 21 | const ldtk::World *ldtkWorld{}; 22 | const ldtk::Level *currentLdtkLevel{}; 23 | 24 | Texture2D currentTilesetTexture; 25 | Texture2D renderedLevelTexture; 26 | 27 | public: 28 | GameScene(); 29 | ~GameScene(); 30 | 31 | static std::unique_ptr world; 32 | static std::unique_ptr player; 33 | 34 | Scenes tick(float dt) override; 35 | 36 | void set_selected_level(int lvl); 37 | }; 38 | -------------------------------------------------------------------------------- /sources/scenes/SceneManager.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "BaseScene.hpp" 4 | #include "TitleScene/TitleScene.hpp" 5 | #include "GameScene/GameScene.hpp" 6 | #include "Scenes.hpp" 7 | 8 | #include 9 | 10 | class SceneManager 11 | { 12 | private: 13 | static std::unique_ptr current_screen; 14 | 15 | public: 16 | static void set_current_screen(Scenes screen); 17 | static void initialize(); 18 | static void tick(float dt); 19 | static void cleanup(); 20 | }; 21 | 22 | std::unique_ptr SceneManager::current_screen = nullptr; 23 | 24 | void SceneManager::initialize() 25 | { 26 | SceneManager::set_current_screen(UNSET); 27 | } 28 | 29 | void SceneManager::set_current_screen(Scenes screen) 30 | { 31 | if (screen == NONE) 32 | { 33 | return; 34 | } 35 | 36 | SceneManager::current_screen.reset(); 37 | 38 | switch (screen) 39 | { 40 | case UNSET: 41 | SceneManager::current_screen = nullptr; 42 | break; 43 | case TITLE: 44 | SceneManager::current_screen = std::make_unique(); 45 | break; 46 | case GAME: 47 | SceneManager::current_screen = std::make_unique(); 48 | break; 49 | case NONE: 50 | std::cerr << "Landed in NONE case for switch. This should never happen!" << std::endl; 51 | exit(1); 52 | } 53 | } 54 | 55 | void SceneManager::tick(float dt) 56 | { 57 | if (SceneManager::current_screen != nullptr) 58 | { 59 | Scenes result = SceneManager::current_screen->tick(dt); 60 | if (result != NONE) 61 | { 62 | SceneManager::set_current_screen(result); 63 | } 64 | } 65 | } 66 | 67 | void SceneManager::cleanup() 68 | { 69 | if (SceneManager::current_screen != nullptr) 70 | { 71 | SceneManager::current_screen = nullptr; 72 | } 73 | } -------------------------------------------------------------------------------- /sources/scenes/Scenes.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | enum Scenes 4 | { 5 | NONE, 6 | UNSET, 7 | TITLE, 8 | GAME, 9 | }; 10 | -------------------------------------------------------------------------------- /sources/scenes/TitleScene/TitleScene.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #include "TitleScene.hpp" 10 | #include "../Scenes.hpp" 11 | 12 | using namespace std; 13 | 14 | TitleScene::TitleScene() 15 | { 16 | // Load assets 17 | texture = LoadTexture(AppConstants::GetAssetPath("test.png").c_str()); 18 | 19 | // Initialize GUI component states 20 | checkboxState = false; 21 | dropdownIndex = 0; 22 | dropdownEditMode = false; 23 | strcpy(textBoxText, "Edit me!"); 24 | textBoxFocused = false; 25 | colorPickerValue = RED; 26 | showMessageBox = false; 27 | messageBoxOkClicked = false; 28 | 29 | // Initialize virtual mouse (scaled for GUI components) 30 | SetMouseScale(1.0f / (float)ScreenScale, 1.0f / (float)ScreenScale); 31 | HideCursor(); // Hide OS cursor since we'll draw our own 32 | } 33 | 34 | TitleScene::~TitleScene() 35 | { 36 | // Restore default mouse settings when exiting the scene 37 | SetMouseScale(1.0f, 1.0f); 38 | SetMouseOffset(0, 0); 39 | ShowCursor(); 40 | 41 | // Unload assets 42 | UnloadTexture(texture); 43 | } 44 | 45 | Scenes TitleScene::tick(float dt) 46 | { 47 | // Clear background and prepare for drawing 48 | ClearBackground(RAYWHITE); 49 | virtualMousePosition = GetMousePosition(); 50 | 51 | auto draw_with_backdrop = [](const string &text, int x, int y, int fontSize, Color color, Color backdropColor) 52 | { 53 | DrawText(text.c_str(), x + 1, y + 1, fontSize, backdropColor); 54 | DrawText(text.c_str(), x, y, fontSize, color); 55 | }; 56 | 57 | draw_with_backdrop("This is the Title Scene", 10, 10, 25, GOLD, BLACK); 58 | 59 | // Draw centered texture 60 | const int texture_x = (GameConstants::WorldWidth / 2) - (texture.width / 2); 61 | const int texture_y = (GameConstants::WorldHeight / 2) - (texture.height / 2) + 30; 62 | DrawTextureEx(texture, Vector2{(float)texture_x, (float)texture_y}, 0, 1, WHITE); 63 | 64 | // Set smaller text size for GUI components 65 | GuiSetStyle(DEFAULT, TEXT_SIZE, 10); 66 | 67 | // Define panel positions 68 | const int leftPanel = 10; 69 | const int rightPanel = GameConstants::WorldWidth - 160; 70 | 71 | // Save initial style properties 72 | const int defaultTextSize = GuiGetStyle(DEFAULT, TEXT_SIZE); 73 | const int defaultColorPickerSize = GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE); 74 | 75 | //================================================================= 76 | // LEFT PANEL - BASIC GUI COMPONENTS 77 | //================================================================= 78 | draw_with_backdrop("RayGUI Examples", leftPanel, 70, 15, BLACK, WHITE); 79 | 80 | if( GuiButton(Rectangle{leftPanel, 95, 120, 30}, "Start Game")){ 81 | // Transition to the game scene 82 | return Scenes::GAME; 83 | } 84 | 85 | GuiCheckBox(Rectangle{leftPanel, 135, 20, 20}, "Enable Feature", &checkboxState); 86 | 87 | Rectangle textBoxRect = {leftPanel, 165, 120, 25}; 88 | if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) 89 | { 90 | // Update focus state when mouse is clicked 91 | textBoxFocused = CheckCollisionPointRec(GetMousePosition(), textBoxRect); 92 | } 93 | GuiTextBox(textBoxRect, textBoxText, 64, textBoxFocused); 94 | 95 | Rectangle dropdownRect = {leftPanel, 200, 120, 25}; 96 | if (GuiDropdownBox(dropdownRect, "Option 1;Option 2;Option 3", &dropdownIndex, dropdownEditMode)) 97 | { 98 | dropdownEditMode = !dropdownEditMode; 99 | } 100 | 101 | //================================================================= 102 | // RIGHT PANEL - INTERACTIVE GUI COMPONENTS 103 | //================================================================= 104 | draw_with_backdrop("Interactive Examples", rightPanel, 70, 15, BLACK, WHITE); 105 | 106 | if (GuiButton(Rectangle{rightPanel, 95, 140, 30}, "Show Message Box")) 107 | { 108 | showMessageBox = true; 109 | } 110 | 111 | draw_with_backdrop("Color Picker:", rightPanel, 135, 10, BLACK, WHITE); 112 | GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 6); // Smaller selector 113 | GuiColorPicker(Rectangle{rightPanel, 155, 120, 120}, NULL, &colorPickerValue); 114 | 115 | // Display selected color 116 | DrawRectangle(rightPanel + 30, 285, 80, 30, colorPickerValue); 117 | DrawRectangleLines(rightPanel + 30, 285, 80, 30, BLACK); 118 | 119 | // Restore original style properties 120 | GuiSetStyle(DEFAULT, TEXT_SIZE, defaultTextSize); 121 | GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, defaultColorPickerSize); 122 | 123 | //================================================================= 124 | // MODAL DIALOG HANDLING 125 | //================================================================= 126 | if (showMessageBox) 127 | { 128 | // Semi-transparent overlay 129 | DrawRectangle(0, 0, GameConstants::WorldWidth, GameConstants::WorldHeight, Fade(RAYWHITE, 0.8f)); 130 | 131 | int result = GuiMessageBox( 132 | Rectangle{GameConstants::WorldWidth / 2 - 125, GameConstants::WorldHeight / 2 - 50, 250, 100}, 133 | "Message Box", 134 | "This is an example message.\nClick OK to continue.", 135 | "OK"); 136 | 137 | if (result >= 0) 138 | { 139 | showMessageBox = false; 140 | } 141 | } 142 | 143 | //================================================================= 144 | // CUSTOM MOUSE CURSOR 145 | //================================================================= 146 | 147 | // here you could use a custom cursor texture but since we're lazy we'll 148 | // just draw a rectangle 149 | 150 | int rectSize = GameConstants::WorldWidth / 40; 151 | DrawRectangle(virtualMousePosition.x - rectSize / 2, virtualMousePosition.y - rectSize / 2, 152 | rectSize, rectSize, Fade(DARKPURPLE, 0.3f)); 153 | 154 | // Scene transition logic 155 | return Scenes::NONE; 156 | } -------------------------------------------------------------------------------- /sources/scenes/TitleScene/TitleScene.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | #include "../BaseScene.hpp" 6 | 7 | class TitleScene : public BaseScene 8 | { 9 | private: 10 | // Assets 11 | Texture2D texture; 12 | 13 | // Virtual mouse handling 14 | Vector2 virtualMousePosition; 15 | 16 | // RayGUI component states 17 | // Button component: Uses return value, no state variable needed 18 | 19 | // Checkbox component 20 | bool checkboxState; 21 | 22 | // Dropdown component 23 | int dropdownIndex; 24 | bool dropdownEditMode; 25 | 26 | // Text input component 27 | char textBoxText[64]; 28 | bool textBoxFocused; 29 | 30 | // Color picker component 31 | Color colorPickerValue; 32 | 33 | // Message box component 34 | bool showMessageBox; 35 | bool messageBoxOkClicked; 36 | 37 | public: 38 | TitleScene(); 39 | ~TitleScene(); 40 | 41 | Scenes tick(float dt) override; 42 | }; 43 | -------------------------------------------------------------------------------- /sources/utils/DebugUtils.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | using namespace std; 13 | 14 | namespace DebugUtils 15 | { 16 | inline void draw_physics_objects_bounding_boxes(b2World *const world) 17 | { 18 | #ifdef DEBUG 19 | auto currentBody = world->GetBodyList(); 20 | while (currentBody != nullptr) 21 | { 22 | auto pos = currentBody->GetPosition(); 23 | DrawCircle(pos.x * GameConstants::PhysicsWorldScale, 24 | pos.y * GameConstants::PhysicsWorldScale, 25 | 2, 26 | PURPLE); 27 | 28 | auto fixture = currentBody->GetFixtureList(); 29 | while (fixture != nullptr) 30 | { 31 | auto shape = fixture->GetShape(); 32 | // Note, right now supposing all shapes are polygons, use to determine shape->GetType(); 33 | 34 | auto polygonShape = (b2PolygonShape *)shape; 35 | int vertexCount = 4; // since we're assuming they're squares 36 | for (int j = 0; j < vertexCount; j++) 37 | { 38 | b2Vec2 vertexA = polygonShape->m_vertices[j]; 39 | 40 | int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape 41 | b2Vec2 vertexB = polygonShape->m_vertices[jj]; 42 | 43 | DrawLineV({(pos.x + vertexA.x) * GameConstants::PhysicsWorldScale, (pos.y + vertexA.y) * GameConstants::PhysicsWorldScale}, 44 | {(pos.x + vertexB.x) * GameConstants::PhysicsWorldScale, (pos.y + vertexB.y) * GameConstants::PhysicsWorldScale}, 45 | GREEN); // Draw a line between two vertex positions 46 | } 47 | 48 | fixture = fixture->GetNext(); 49 | } 50 | 51 | currentBody = currentBody->GetNext(); 52 | } 53 | 54 | #endif 55 | } 56 | 57 | template 58 | inline void print(fmt::format_string fmt, T &&...args) 59 | { 60 | #ifdef DEBUG 61 | fmt::print(fmt::runtime(fmt), args...); 62 | #endif 63 | } 64 | 65 | template 66 | inline void println(fmt::format_string fmt, T &&...args) 67 | { 68 | #ifdef DEBUG 69 | auto formatted = fmt::format(fmt::runtime(fmt), args...); 70 | cout << formatted << endl; 71 | #endif 72 | } 73 | } --------------------------------------------------------------------------------