diff --git a/.github/workflows/build-macos.yaml b/.github/workflows/build-macos.yaml
deleted file mode 100644
index 2fae8c4..0000000
--- a/.github/workflows/build-macos.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: Build & Release on macOS
-
-# Run on *every push* to "main," and also build on PRs (but only create the release on push).
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-permissions:
- contents: write # needed so the workflow can create a tag & release
-
-jobs:
- build-and-release-macos:
- runs-on: macos-latest
- steps:
- - name: Check out source
- uses: actions/checkout@v3
-
- - name: Install Dependencies (Homebrew & raylib)
- run: |
- brew update
- brew install raylib pkg-config
-
- - name: Build
- # Your Makefile from the question
- run: make build
-
- - name: Create Tag & GitHub Release
- # Only create a release when it's a push (not a pull_request)
- if: ${{ github.event_name == 'push' }}
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- # You need a unique tag each time to avoid "already_exists" errors.
- # Here we'll name the tag like "build-123" using the run_number,
- # but you could do something like a date-based tag.
- tag_name: build-${{ github.run_number }}
-
- # The commit to tag. Usually, this is the push commit SHA:
- commitish: ${{ github.sha }}
-
- # The release name can match the tag or be more descriptive
- release_name: "Automated build #${{ github.run_number }}"
-
- # Adjust as needed; you could set these to false for a "final" release
- draft: false
- prerelease: true # Mark as "pre-release" so it's clearly automated
-
- - name: Upload Release Asset
- if: ${{ github.event_name == 'push' }}
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: bin/osx/game
- asset_name: game
- asset_content_type: application/octet-stream
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 82cd32d..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-bin/
-.DS_STORE/
-.DS_STORE
-*.swp
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
deleted file mode 100644
index 89633d9..0000000
--- a/.vscode/c_cpp_properties.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "configurations": [
- {
- "name": "macOS",
- "includePath": [
- "${workspaceFolder}/include",
- "${workspaceFolder}/external/engine",
- "${workspaceFolder}/external/raygui",
- "${workspaceFolder}/external/rini",
- "/opt/homebrew/Cellar/raylib/5.5/include"
- ],
- "cStandard": "c99",
- },
- {
- "name": "Windows",
- "includePath": [
- "${workspaceFolder}/include",
- "${workspaceFolder}/external/engine",
- "${workspaceFolder}/external/raygui",
- "${workspaceFolder}/external/rini",
- "C:/raylib/include"
- ],
- "cStandard": "c99",
- }
- ],
- "version": 4
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 3cd8cb3..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "files.associations": {
- "asset.h": "c",
- "stdlib.h": "c",
- "view.h": "c",
- "__node_handle": "c",
- "font.h": "c"
- }
-}
\ No newline at end of file
diff --git a/Makefile b/Makefile
index e4493f1..9491e23 100644
--- a/Makefile
+++ b/Makefile
@@ -1,45 +1,50 @@
COMPILER = gcc
+# COMPILER FLAGS
C_FLAG_STD_C99 = -std=c99 # Use the C99 language standard
C_FLAG_DEBUG_INFO = -g # Include debug information
-# C_FLAG_HEADERS = -H # Prints paths of all headers
+#C_FLAG_HEADERS = -H # Prints paths of all headers
C_FLAG_ALL_WARNINGS = -Wall # Enable most common warning
C_FLAG_PEDANTIC = -Wpedantic # Enforce ISO C standard strictly
C_FLAG_SHADOW = -Wshadow # Warn if a local variable shadows another
C_FLAG_STRICT_PROTOS = -Wstrict-prototypes # Warn if function declarations are missing parameter types
C_FLAG_NO_UNKNOWN_PRAGMAS = -Wno-unknown-pragmas # Suppress warnings about unknown pragmas
+
C_FLAGS = \
$(C_FLAG_STD_C99) \
$(C_FLAG_DEBUG_INFO) \
- $(C_FLAG_HEADERS) \
+ $(C_FLAG_HEADERS) \
$(C_FLAG_ALL_WARNINGS) \
$(C_FLAG_PEDANTIC) \
$(C_FLAG_SHADOW) \
- $(C_FLAG_STRICT_PROTOS) \
+ $(C_FLAG_STRICT_PROTOS) \
$(C_FLAG_NO_UNKNOWN_PRAGMAS)
+# INCLUDE FLGAS
INCLUDE_FLAGS = -Iinclude
-EXTERNAL_ENGINE = -Iexternal/engine
-EXTERNAL_RAYGUI = -Iexternal/raygui
+# EXTERNAL FLAGS
+EXTERNAL_RAYGUI = -Iexternal/raygui
EXTERNAL_RINI = -Iexternal/rini
EXTERNAL_FLAGS = \
- $(EXTERNAL_ENGINE) \
$(EXTERNAL_RINI) \
$(EXTERNAL_RAYGUI)
+# CROSS PLATTFORM
ifeq ($(OS), Windows_NT)
- SRC = src\main.c
+ SRC = $(wildcard src\*.c)
TARGET = bin\win\game.exe
RAYLIB_FLAGS = -I%RAYLIB% -L%RAYLIB% -lraylib -lopengl32 -lgdi32 -lwinmm
else
- SRC = src/main.c
- TARGET = bin/osx/game
- RAYLIB_FLAGS = $(shell pkg-config --libs --cflags raylib)
+ SRC = $(wildcard src/*.c)
+ TARGET = bin/unix/game
+ RAYLIB_FLAGS = $(shell pkg-config --libs --cflags raylib) -lm
endif
-$(shell mkdir -p bin/osx bin/win)
+# CREATE BIN DIR
+$(shell mkdir -p bin/unix bin/win)
+# COMMANDS
build: $(SRC)
$(COMPILER) $(SRC) -o $(TARGET) $(C_FLAGS) $(INCLUDE_FLAGS) $(EXTERNAL_FLAGS) $(RAYLIB_FLAGS)
@@ -47,4 +52,4 @@ clean:
rm -f $(TARGET)
run: clean build
- ./$(TARGET)
\ No newline at end of file
+ ./$(TARGET)
diff --git a/README.md b/README.md
deleted file mode 100644
index 7e433d5..0000000
--- a/README.md
+++ /dev/null
@@ -1,122 +0,0 @@
-## Requirements
-
-Make 4.4.1
-GCC 14.2
-RAYLIB 5.5
-pkgconf(MACOS)
-
-This document outlines the coding style and conventions to be followed.
-
-## 1. **File Structure**
-
-- Header files should be wrapped with include guards to avoid multiple inclusions:
-
- ```c
- #ifndef PHYSICS_H
- #define PHYSICS_H
- ...
- #endif // PHYSICS_H
- ```
-
-## 2. **Naming Conventions**
-
-- **Functions:** Function names should use `CamelCase` starting with a upercase letter.
-
-`UpdatePhysicsDirection`, `UpdatePhysicsVelocity`
-
-- **Structs:** Struct names should use `CamelCase` starting with an uppercase letter.
-
-`Physics`
-
-- **Variables:** Use `CamelCase` starting with a lowerase letter for local and parameter variables.
-
-`vector`, `newSpeed`
-
-## 3. **Function Design**
-
-- Functions should be named descriptively, indicating the purpose or action performed.
-
-`UpdatePhysicsDirection`, `UpdatePhysicsVelocity`
-
-- Functions should take pointers when modifying variables outside their scope.
-
-`void UpdatePhysicsDirection(Vector2 *direction, Vector2 vector)`
-
-- Ensure function parameters have clear names to indicate their role.
-
-`UpdatePhysicsVelocity(Vector2 *velocity, Vector2 *direction, float *speed)`
-
-- Functions should be concise and focused on a single task. Avoid functions with multiple responsibilities.
-
-## 4. **Struct Design**
-
- - Prefer composition, where structs are composed of other structs or primitive data types. This allows for more flexible and modular designs.
-
- ```c
- typedef struct {
- Vector2 position;
- Vector2 direction;
- Vector2 velocity;
- float speed;
- } Physics;
- ```
-
- Here, instead of trying to create a hierarchy of structs, we compose a Physics struct with relevant fields like `position`, `direction`, and `velocity`.
-
-## 5. **Indentation & Formatting**
-
-- **Indentation:** Use 1 tab for indentation. Never use spaces.
-
-- **Spacing:** Place a single space after keywords like `if`, `for`, and `while`, and around operators (`=`, `+`, `-`, etc.) for readability.
- - Example: `*velocity = Vector2Scale(*direction, *speed * GetFrameTime());`
-
-- **Braces:** Use braces `{}` even for single-line blocks for consistency and future-proofing.
-
- ```c
- if (condition) {
- do_something();
- }
- ```
-
-## 6. **Pointer Usage**
-
-- Use pointers when passing large structures or when modifying variables outside the scope of the function.
-
-`Vector2 *position`, `float *speed`
-
-- Avoid unnecessary dereferencing and use `*` clearly to indicate pointer dereferencing.
-
-`*position = Vector2Add(*position, *velocity);`
-
-## 7. **Consistency in Function Calls**
-
-- When calling functions, parameters should be passed clearly, and care should be taken to avoid modifying data unintentionally unless needed.
-
- ```c
- UpdatePhysicsDirection(&physics->direction, direction);
- UpdatePhysicsVelocity(&physics->velocity, &physics->direction, &physics->speed);
- UpdatePhysicsPosition(&physics->position, &physics->velocity);
- ```
-
-## 8. **Comments and Documentation**
-
-- Strive for clarity through descriptive naming and simple logic.
-- Add comments to explain non-obvious logic, design decisions, or complex algorithms.
-- Do not state the obvious; let the code speak for itself where possible.
-
-## 9. **End of File**
-
-- Always ensure that header files end with the appropriate closing include guard and a new line after the last line of code:
-
- ```c
- #endif // PHYSICS_H
-
- ```
-
-## 10. **General Rules**
-
-- **Modular Design**: Break code into small, focused functions and modules with clear interfaces.
-- **Refactoring**: Regularly refactor code to maintain simplicity and performance
-- **Don't Repeat Yourself**: Reuse code by creating helper functions to avoid duplication
-- **Avoid magic numbers:** Use constants or defines instead of hardcoded values.
-- **Code readability:** Prioritize code readability and maintainability over shortness or cleverness.
diff --git a/assets/Clouds/Clouds1/3.png b/assets/Clouds/Clouds1/3.png
deleted file mode 100644
index a5818cc..0000000
Binary files a/assets/Clouds/Clouds1/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds2/1.png b/assets/Clouds/Clouds2/1.png
deleted file mode 100644
index bf39b1e..0000000
Binary files a/assets/Clouds/Clouds2/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds2/2.png b/assets/Clouds/Clouds2/2.png
deleted file mode 100644
index e37d51f..0000000
Binary files a/assets/Clouds/Clouds2/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds2/3.png b/assets/Clouds/Clouds2/3.png
deleted file mode 100644
index ad3bcba..0000000
Binary files a/assets/Clouds/Clouds2/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds2/4.png b/assets/Clouds/Clouds2/4.png
deleted file mode 100644
index b9d70f1..0000000
Binary files a/assets/Clouds/Clouds2/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds3/1.png b/assets/Clouds/Clouds3/1.png
deleted file mode 100644
index 273a5a2..0000000
Binary files a/assets/Clouds/Clouds3/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds3/2.png b/assets/Clouds/Clouds3/2.png
deleted file mode 100644
index a523b4d..0000000
Binary files a/assets/Clouds/Clouds3/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds3/3.png b/assets/Clouds/Clouds3/3.png
deleted file mode 100644
index 7a9c555..0000000
Binary files a/assets/Clouds/Clouds3/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds3/4.png b/assets/Clouds/Clouds3/4.png
deleted file mode 100644
index ca59ca6..0000000
Binary files a/assets/Clouds/Clouds3/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds4/1.png b/assets/Clouds/Clouds4/1.png
deleted file mode 100644
index 5958dc0..0000000
Binary files a/assets/Clouds/Clouds4/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds4/2.png b/assets/Clouds/Clouds4/2.png
deleted file mode 100644
index bc17a9a..0000000
Binary files a/assets/Clouds/Clouds4/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds4/3.png b/assets/Clouds/Clouds4/3.png
deleted file mode 100644
index 7b0b945..0000000
Binary files a/assets/Clouds/Clouds4/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds4/4.png b/assets/Clouds/Clouds4/4.png
deleted file mode 100644
index f247fe2..0000000
Binary files a/assets/Clouds/Clouds4/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds5/1.png b/assets/Clouds/Clouds5/1.png
deleted file mode 100644
index 8dd4390..0000000
Binary files a/assets/Clouds/Clouds5/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds5/2.png b/assets/Clouds/Clouds5/2.png
deleted file mode 100644
index b395da8..0000000
Binary files a/assets/Clouds/Clouds5/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds5/3.png b/assets/Clouds/Clouds5/3.png
deleted file mode 100644
index fd8af88..0000000
Binary files a/assets/Clouds/Clouds5/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds5/4.png b/assets/Clouds/Clouds5/4.png
deleted file mode 100644
index 5b3b5ef..0000000
Binary files a/assets/Clouds/Clouds5/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds5/5.png b/assets/Clouds/Clouds5/5.png
deleted file mode 100644
index 6519e85..0000000
Binary files a/assets/Clouds/Clouds5/5.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/1.png b/assets/Clouds/Clouds6/1.png
deleted file mode 100644
index 6061e45..0000000
Binary files a/assets/Clouds/Clouds6/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/2.png b/assets/Clouds/Clouds6/2.png
deleted file mode 100644
index 9ccc01b..0000000
Binary files a/assets/Clouds/Clouds6/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/3.png b/assets/Clouds/Clouds6/3.png
deleted file mode 100644
index 58c2942..0000000
Binary files a/assets/Clouds/Clouds6/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/4.png b/assets/Clouds/Clouds6/4.png
deleted file mode 100644
index 8d30b26..0000000
Binary files a/assets/Clouds/Clouds6/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/5.png b/assets/Clouds/Clouds6/5.png
deleted file mode 100644
index f7f13d0..0000000
Binary files a/assets/Clouds/Clouds6/5.png and /dev/null differ
diff --git a/assets/Clouds/Clouds6/6.png b/assets/Clouds/Clouds6/6.png
deleted file mode 100644
index 436bda0..0000000
Binary files a/assets/Clouds/Clouds6/6.png and /dev/null differ
diff --git a/assets/Clouds/Clouds7/1.png b/assets/Clouds/Clouds7/1.png
deleted file mode 100644
index be878dc..0000000
Binary files a/assets/Clouds/Clouds7/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds7/2.png b/assets/Clouds/Clouds7/2.png
deleted file mode 100644
index b86ad59..0000000
Binary files a/assets/Clouds/Clouds7/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds7/3.png b/assets/Clouds/Clouds7/3.png
deleted file mode 100644
index 1f3df64..0000000
Binary files a/assets/Clouds/Clouds7/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds7/4.png b/assets/Clouds/Clouds7/4.png
deleted file mode 100644
index 59d9254..0000000
Binary files a/assets/Clouds/Clouds7/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/1.png b/assets/Clouds/Clouds8/1.png
deleted file mode 100644
index fb04977..0000000
Binary files a/assets/Clouds/Clouds8/1.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/2.png b/assets/Clouds/Clouds8/2.png
deleted file mode 100644
index 0708297..0000000
Binary files a/assets/Clouds/Clouds8/2.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/3.png b/assets/Clouds/Clouds8/3.png
deleted file mode 100644
index 693ca85..0000000
Binary files a/assets/Clouds/Clouds8/3.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/4.png b/assets/Clouds/Clouds8/4.png
deleted file mode 100644
index 3e474a1..0000000
Binary files a/assets/Clouds/Clouds8/4.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/5.png b/assets/Clouds/Clouds8/5.png
deleted file mode 100644
index a93171f..0000000
Binary files a/assets/Clouds/Clouds8/5.png and /dev/null differ
diff --git a/assets/Clouds/Clouds8/6.png b/assets/Clouds/Clouds8/6.png
deleted file mode 100644
index e39d0ba..0000000
Binary files a/assets/Clouds/Clouds8/6.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/BasicCharakterActions.png b/assets/SproutLandsBasic/Characters/BasicCharakterActions.png
deleted file mode 100644
index 4c2c182..0000000
Binary files a/assets/SproutLandsBasic/Characters/BasicCharakterActions.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/BasicCharakterSpritesheet.png b/assets/SproutLandsBasic/Characters/BasicCharakterSpritesheet.png
deleted file mode 100644
index 4776cb4..0000000
Binary files a/assets/SproutLandsBasic/Characters/BasicCharakterSpritesheet.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/Egg_And_Nest.png b/assets/SproutLandsBasic/Characters/Egg_And_Nest.png
deleted file mode 100644
index cd99655..0000000
Binary files a/assets/SproutLandsBasic/Characters/Egg_And_Nest.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/Free Chicken Sprites.png b/assets/SproutLandsBasic/Characters/Free Chicken Sprites.png
deleted file mode 100644
index 21b3c28..0000000
Binary files a/assets/SproutLandsBasic/Characters/Free Chicken Sprites.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/Free Cow Sprites.png b/assets/SproutLandsBasic/Characters/Free Cow Sprites.png
deleted file mode 100644
index de23d8a..0000000
Binary files a/assets/SproutLandsBasic/Characters/Free Cow Sprites.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/Tools.png b/assets/SproutLandsBasic/Characters/Tools.png
deleted file mode 100644
index a52def2..0000000
Binary files a/assets/SproutLandsBasic/Characters/Tools.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/character.aseprite b/assets/SproutLandsBasic/Characters/character.aseprite
deleted file mode 100644
index 2ffff29..0000000
Binary files a/assets/SproutLandsBasic/Characters/character.aseprite and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/character.png b/assets/SproutLandsBasic/Characters/character.png
deleted file mode 100644
index 7b710c1..0000000
Binary files a/assets/SproutLandsBasic/Characters/character.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/characterActions.aseprite b/assets/SproutLandsBasic/Characters/characterActions.aseprite
deleted file mode 100644
index 9b801ef..0000000
Binary files a/assets/SproutLandsBasic/Characters/characterActions.aseprite and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/characterActions.png b/assets/SproutLandsBasic/Characters/characterActions.png
deleted file mode 100644
index fcd7789..0000000
Binary files a/assets/SproutLandsBasic/Characters/characterActions.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/characterIdleWalking.aseprite b/assets/SproutLandsBasic/Characters/characterIdleWalking.aseprite
deleted file mode 100644
index 58b0d0b..0000000
Binary files a/assets/SproutLandsBasic/Characters/characterIdleWalking.aseprite and /dev/null differ
diff --git a/assets/SproutLandsBasic/Characters/characterIdleWalking.png b/assets/SproutLandsBasic/Characters/characterIdleWalking.png
deleted file mode 100644
index 60eabe0..0000000
Binary files a/assets/SproutLandsBasic/Characters/characterIdleWalking.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Basic_Furniture.png b/assets/SproutLandsBasic/Objects/Basic_Furniture.png
deleted file mode 100644
index 389a30b..0000000
Binary files a/assets/SproutLandsBasic/Objects/Basic_Furniture.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Basic_Grass_Biom_things.png b/assets/SproutLandsBasic/Objects/Basic_Grass_Biom_things.png
deleted file mode 100644
index 86375eb..0000000
Binary files a/assets/SproutLandsBasic/Objects/Basic_Grass_Biom_things.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Basic_Plants.png b/assets/SproutLandsBasic/Objects/Basic_Plants.png
deleted file mode 100644
index ae0bb83..0000000
Binary files a/assets/SproutLandsBasic/Objects/Basic_Plants.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Basic_tools_and_meterials.png b/assets/SproutLandsBasic/Objects/Basic_tools_and_meterials.png
deleted file mode 100644
index d5acf85..0000000
Binary files a/assets/SproutLandsBasic/Objects/Basic_tools_and_meterials.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Chest.png b/assets/SproutLandsBasic/Objects/Chest.png
deleted file mode 100644
index fe107bf..0000000
Binary files a/assets/SproutLandsBasic/Objects/Chest.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Egg_item.png b/assets/SproutLandsBasic/Objects/Egg_item.png
deleted file mode 100644
index 71aa0b8..0000000
Binary files a/assets/SproutLandsBasic/Objects/Egg_item.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Free_Chicken_House.png b/assets/SproutLandsBasic/Objects/Free_Chicken_House.png
deleted file mode 100644
index bc558a0..0000000
Binary files a/assets/SproutLandsBasic/Objects/Free_Chicken_House.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Paths.png b/assets/SproutLandsBasic/Objects/Paths.png
deleted file mode 100644
index 67533ec..0000000
Binary files a/assets/SproutLandsBasic/Objects/Paths.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Simple_Milk_and_grass_item.png b/assets/SproutLandsBasic/Objects/Simple_Milk_and_grass_item.png
deleted file mode 100644
index d58ffa1..0000000
Binary files a/assets/SproutLandsBasic/Objects/Simple_Milk_and_grass_item.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/Wood_Bridge.png b/assets/SproutLandsBasic/Objects/Wood_Bridge.png
deleted file mode 100644
index 453e80d..0000000
Binary files a/assets/SproutLandsBasic/Objects/Wood_Bridge.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/tools.aseprite b/assets/SproutLandsBasic/Objects/tools.aseprite
deleted file mode 100644
index d031a6f..0000000
Binary files a/assets/SproutLandsBasic/Objects/tools.aseprite and /dev/null differ
diff --git a/assets/SproutLandsBasic/Objects/tools.png b/assets/SproutLandsBasic/Objects/tools.png
deleted file mode 100644
index 5609147..0000000
Binary files a/assets/SproutLandsBasic/Objects/tools.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette snip.PNG b/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette snip.PNG
deleted file mode 100644
index 0f293da..0000000
Binary files a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette snip.PNG and /dev/null differ
diff --git a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.aseprite b/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.aseprite
deleted file mode 100644
index da40574..0000000
Binary files a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.aseprite and /dev/null differ
diff --git a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.png b/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.png
deleted file mode 100644
index 8434287..0000000
Binary files a/assets/SproutLandsBasic/Sprout Lands color pallet/Sprout Lands defautlt palette.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Bitmask references 1.png b/assets/SproutLandsBasic/Tilesets/Bitmask references 1.png
deleted file mode 100644
index 79cb51b..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Bitmask references 1.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Bitmask references 2.png b/assets/SproutLandsBasic/Tilesets/Bitmask references 2.png
deleted file mode 100644
index 5adeb64..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Bitmask references 2.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Bitmask references gif.gif b/assets/SproutLandsBasic/Tilesets/Bitmask references gif.gif
deleted file mode 100644
index 13bcfaf..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Bitmask references gif.gif and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Doors.png b/assets/SproutLandsBasic/Tilesets/Doors.png
deleted file mode 100644
index 8342d98..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Doors.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Fences.png b/assets/SproutLandsBasic/Tilesets/Fences.png
deleted file mode 100644
index 0b2825b..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Fences.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Grass.png b/assets/SproutLandsBasic/Tilesets/Grass.png
deleted file mode 100644
index baea0eb..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Grass.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Hills.png b/assets/SproutLandsBasic/Tilesets/Hills.png
deleted file mode 100644
index 3818f93..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Hills.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt.png b/assets/SproutLandsBasic/Tilesets/Tilled_Dirt.png
deleted file mode 100644
index 0b42083..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide.png b/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide.png
deleted file mode 100644
index f125497..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide_v2.png b/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide_v2.png
deleted file mode 100644
index 138c7da..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_Wide_v2.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_v2.png b/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_v2.png
deleted file mode 100644
index f58a14a..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Tilled_Dirt_v2.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Water.png b/assets/SproutLandsBasic/Tilesets/Water.png
deleted file mode 100644
index 7969ff3..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Water.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Wooden_House_Roof_Tilset.png b/assets/SproutLandsBasic/Tilesets/Wooden_House_Roof_Tilset.png
deleted file mode 100644
index 7a8c956..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Wooden_House_Roof_Tilset.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/Tilesets/Wooden_House_Walls_Tilset.png b/assets/SproutLandsBasic/Tilesets/Wooden_House_Walls_Tilset.png
deleted file mode 100644
index 7af606f..0000000
Binary files a/assets/SproutLandsBasic/Tilesets/Wooden_House_Walls_Tilset.png and /dev/null differ
diff --git a/assets/SproutLandsBasic/read_me.txt b/assets/SproutLandsBasic/read_me.txt
deleted file mode 100644
index c5ec82d..0000000
--- a/assets/SproutLandsBasic/read_me.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-
- Heyo! Thanks for downloading the Sprout Lands Basic pack !!!
- - Made by: Cup Nooble
-
- This asset pack is the start of a series of different asset packs,
- so let me know if there are any specific sprites you'd like to be added in future packs.
-
--------------------------------------------------------------------------------------------------------------
-
- >>> License - Basic Pack
-
- ----------
-
- - You can modify the assets.
-
- [ Feel free to get creative and make your own sprites in this style or use them as reference for your own ]
- [ Making additional sprites in the same style or using them as reference for your own project is also allowed ]
-
- ----------
-
- - You can use these assets in any kind of non-commercial projects.
-
- [ Except anything to do with NFTs or AI training is not allowed ]
-
- ----------
-
- - You can not redistribute the asset pack itself or resell it on other platforms, even if it is slightly modified.
-
- [ Of course, you can redistribute your own projects made with these assets like games, software, or other ]
- [ Making your project opensource is also allowed ]
- [ For open source projects include a note that says some or all assets are made by Cup Nooble together with the licensing terms ]
-
- ----------
-
- - Credit is required : (Cup Nooble)
-
- [ Credit example : Assets -From : Sprout Lands -By : Cup Nooble ]
- [ If you share your game on itch.io a link to the Asset Packs page would be very appreciated ]
- [ But feel free to credit in whatever way fits your project best ]
- [ Thanks a lot for reading ^^ ]
-
- ----------
-
- ~ And most importantly hope you have fun with your project !!!
-
- ? And if you have questions or need/want different licensing terms please reach out to me and I can work with you on a license that suits your needs.
- My Discord : cup_nooble
-
--------------------------------------------------------------------------------------------------------------
-
- >>> See updates here :
-
- - Discord server :
- Join The Sprout Lands Discord for any hotfixes and updates or for any questions
- Link - https://discord.gg/PyDwcnPY
-
- - Twitter :
- Link - https://twitter.com/Sprout_Lands
-
--------------------------------------------------------------------------------------------------------------
-
- >>> Support
-
- If you enjoy this asset pack consider leaving a rating and a comment.
- It really helps to support the future of this project ^u^!
-
- ----------
-
- Want to find more from Cup Nooble ?
- check out their link tree - cupnooble.carrd.co
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Emotes/Teemo Basic emote animations sprite sheet.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/Emotes/Teemo Basic emote animations sprite sheet.png
deleted file mode 100644
index 69d14f6..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Emotes/Teemo Basic emote animations sprite sheet.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box big.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box big.png
deleted file mode 100644
index 3b98e34..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box big.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box medium.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box medium.png
deleted file mode 100644
index 0073c56..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box medium.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box small.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box small.png
deleted file mode 100644
index 85e56ca..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/Premade dialog box small.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box big.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box big.png
deleted file mode 100644
index 9e701ce..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box big.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box character finished talking click to continue indicator - spritesheet .png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box character finished talking click to continue indicator - spritesheet .png
deleted file mode 100644
index ee21d97..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box character finished talking click to continue indicator - spritesheet .png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box medium.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box medium.png
deleted file mode 100644
index d2a650e..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box medium.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box small.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box small.png
deleted file mode 100644
index 0698a19..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box small.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box.png b/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box.png
deleted file mode 100644
index dc15b7f..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Dialouge UI/dialog box.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Icons/All Icons.png b/assets/SproutLandsUI/Spritesheets/Icons/All Icons.png
deleted file mode 100644
index 8fa177a..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Icons/All Icons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Icons/special icons/Small Happines-Sadness icons.png b/assets/SproutLandsUI/Spritesheets/Icons/special icons/Small Happines-Sadness icons.png
deleted file mode 100644
index fd2a8df..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Icons/special icons/Small Happines-Sadness icons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Icons/special icons/Special Icons.png b/assets/SproutLandsUI/Spritesheets/Icons/special icons/Special Icons.png
deleted file mode 100644
index 94df0d7..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Icons/special icons/Special Icons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Icons/white icons.png b/assets/SproutLandsUI/Spritesheets/Icons/white icons.png
deleted file mode 100644
index 270dc8c..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Icons/white icons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw Mouse icon.png b/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw Mouse icon.png
deleted file mode 100644
index 9c998b3..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw Mouse icon.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw holding Mouse icon.png b/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw holding Mouse icon.png
deleted file mode 100644
index 408c708..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw holding Mouse icon.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw pointing Mouse icon.png b/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw pointing Mouse icon.png
deleted file mode 100644
index 4268805..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Catpaw pointing Mouse icon.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 2.png b/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 2.png
deleted file mode 100644
index b182f38..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 2.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 3.png b/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 3.png
deleted file mode 100644
index 55c285b..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Mouse sprites/Triangle Mouse icon 3.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/Sprite sheet for Basic Pack.png b/assets/SproutLandsUI/Spritesheets/Sprite sheet for Basic Pack.png
deleted file mode 100644
index db4de3e..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/Sprite sheet for Basic Pack.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/UI Settings Buttons.png b/assets/SproutLandsUI/Spritesheets/UI Settings Buttons.png
deleted file mode 100644
index fcfdcfa..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/UI Settings Buttons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/UIBigPlayButton.png b/assets/SproutLandsUI/Spritesheets/UIBigPlayButton.png
deleted file mode 100644
index 1510d26..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/UIBigPlayButton.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.aseprite b/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.aseprite
deleted file mode 100644
index fef2bac..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.aseprite and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.png b/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.png
deleted file mode 100644
index ccb3341..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/buttons/Small Square Buttons.png b/assets/SproutLandsUI/Spritesheets/buttons/Small Square Buttons.png
deleted file mode 100644
index b1240b4..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/buttons/Small Square Buttons.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 19x26.png b/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 19x26.png
deleted file mode 100644
index 0559704..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 19x26.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x19.png b/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x19.png
deleted file mode 100644
index d51433d..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x19.png and /dev/null differ
diff --git a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x26.png b/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x26.png
deleted file mode 100644
index 667b1bf..0000000
Binary files a/assets/SproutLandsUI/Spritesheets/buttons/Square Buttons 26x26.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/Emoji_Spritesheet_Free.png b/assets/SproutLandsUI/emojis-free/Emoji_Spritesheet_Free.png
deleted file mode 100644
index 22d10a5..0000000
Binary files a/assets/SproutLandsUI/emojis-free/Emoji_Spritesheet_Free.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Blocks_Spritesheet.png b/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Blocks_Spritesheet.png
deleted file mode 100644
index 912484f..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Blocks_Spritesheet.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Herat_Spritesheet.png b/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Herat_Spritesheet.png
deleted file mode 100644
index ec59983..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Herat_Spritesheet.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_Herat_Spritesheet.png b/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_Herat_Spritesheet.png
deleted file mode 100644
index 676ed39..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_Herat_Spritesheet.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_example_with_slots_2.png b/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_example_with_slots_2.png
deleted file mode 100644
index ad0d5cb..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Light_example_with_slots_2.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Spritesheet.png b/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Spritesheet.png
deleted file mode 100644
index 65dba87..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/Inventory_Spritesheet.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example.png
deleted file mode 100644
index ae1445c..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_2.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_2.png
deleted file mode 100644
index 3707f42..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_2.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_with_slots.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_with_slots.png
deleted file mode 100644
index dde728b..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_Light_example_with_slots.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example.png
deleted file mode 100644
index 0b7047b..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_2.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_2.png
deleted file mode 100644
index ac4ca38..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_2.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots.png
deleted file mode 100644
index 6aa8963..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots_2.png b/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots_2.png
deleted file mode 100644
index 2920529..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/inventory_example_with_slots_2.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_Icons_smal_freel.png b/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_Icons_smal_freel.png
deleted file mode 100644
index e04bc08..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_Icons_smal_freel.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_UI_Free.png b/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_UI_Free.png
deleted file mode 100644
index 56865a2..0000000
Binary files a/assets/SproutLandsUI/emojis-free/emoji style ui/weather/Weather_UI_Free.png and /dev/null differ
diff --git a/assets/SproutLandsUI/emojis-free/speech_bubble_grey.png b/assets/SproutLandsUI/emojis-free/speech_bubble_grey.png
deleted file mode 100644
index 3329460..0000000
Binary files a/assets/SproutLandsUI/emojis-free/speech_bubble_grey.png and /dev/null differ
diff --git a/assets/SproutLandsUI/fonts/pixel-letters-7-8x14-preview.png b/assets/SproutLandsUI/fonts/pixel-letters-7-8x14-preview.png
deleted file mode 100644
index ab5c320..0000000
Binary files a/assets/SproutLandsUI/fonts/pixel-letters-7-8x14-preview.png and /dev/null differ
diff --git a/assets/SproutLandsUI/fonts/pixel-letters-7-8x14.png b/assets/SproutLandsUI/fonts/pixel-letters-7-8x14.png
deleted file mode 100644
index 8541c4f..0000000
Binary files a/assets/SproutLandsUI/fonts/pixel-letters-7-8x14.png and /dev/null differ
diff --git a/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.ttf b/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.ttf
deleted file mode 100644
index 4b2e604..0000000
Binary files a/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.ttf and /dev/null differ
diff --git a/assets/SproutLandsUI/read_me.txt b/assets/SproutLandsUI/read_me.txt
deleted file mode 100644
index 9342d20..0000000
--- a/assets/SproutLandsUI/read_me.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-
- Heyo! Thanks for downloading the Sprout Lands Basic UI pack !!!
- - Made by: Cup Nooble
-
- This asset pack is the start of a series of different asset packs,
- so let me know if there are any specific sprites you'd like to be added in future packs.
-
--------------------------------------------------------------------------------------------------------------
-
- >>> License - Basic UI Pack
-
- ----------
-
- - You can modify the assets.
-
- [ Feel free to get creative and make your own sprites in this style or use them as reference for your own ]
- [ Making additional sprites in the same style or using them as reference for your own project is also allowed ]
-
- ----------
-
- - You can use these assets in any kind of non-commercial projects.
-
- [ Except anything to do with NFTs or AI training is not allowed ]
-
- ----------
-
- - You can not redistribute the asset pack itself or resell it on other platforms, even if it is slightly modified.
-
- [ Of course, you can redistribute your own projects made with these assets like games, software, or other ]
- [ Making your project opensource is also allowed ]
- [ For open source projects include a note that says some or all assets are made by Cup Nooble together with the licensing terms ]
-
- ----------
-
- - Credit is required : (Cup Nooble)
-
- [ Credit example : Assets -From : Sprout Lands -By : Cup Nooble ]
- [ If you share your game on itch.io a link to the Asset Packs page would be very appreciated ]
- [ But feel free to credit in whatever way fits your project best ]
- [ Thanks a lot for reading ^^ ]
-
- ----------
-
- ~ And most importantly hope you have fun with your project !!!
-
- ? And if you have questions or need/want different licensing terms please reach out to me and I can work with you on a license that suits your needs.
- My Discord : cup_nooble
-
--------------------------------------------------------------------------------------------------------------
-
- >>> See updates here :
-
- - Discord server :
- Join The Sprout Lands Discord for any hotfixes and updates or for any questions
- Link - https://discord.gg/PyDwcnPY
-
- - Twitter :
- Link - https://twitter.com/Sprout_Lands
-
--------------------------------------------------------------------------------------------------------------
-
- >>> Support
-
- If you enjoy this asset pack consider leaving a rating and a comment.
- It really helps to support the future of this project ^u^!
-
- ----------
-
- Want to find more from Cup Nooble ?
- check out their link tree - cupnooble.carrd.co
diff --git a/assets/audio/MP3/Abstract1.mp3 b/assets/audio/MP3/Abstract1.mp3
deleted file mode 100644
index 27d14eb..0000000
Binary files a/assets/audio/MP3/Abstract1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Abstract2.mp3 b/assets/audio/MP3/Abstract2.mp3
deleted file mode 100644
index 3169588..0000000
Binary files a/assets/audio/MP3/Abstract2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/African1.mp3 b/assets/audio/MP3/African1.mp3
deleted file mode 100644
index 7f121c6..0000000
Binary files a/assets/audio/MP3/African1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/African2.mp3 b/assets/audio/MP3/African2.mp3
deleted file mode 100644
index 2faf5a2..0000000
Binary files a/assets/audio/MP3/African2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/African3.mp3 b/assets/audio/MP3/African3.mp3
deleted file mode 100644
index 396b719..0000000
Binary files a/assets/audio/MP3/African3.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/African4.mp3 b/assets/audio/MP3/African4.mp3
deleted file mode 100644
index a47b96e..0000000
Binary files a/assets/audio/MP3/African4.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Coffee1.mp3 b/assets/audio/MP3/Coffee1.mp3
deleted file mode 100644
index 4cd1b6e..0000000
Binary files a/assets/audio/MP3/Coffee1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Coffee2.mp3 b/assets/audio/MP3/Coffee2.mp3
deleted file mode 100644
index db581eb..0000000
Binary files a/assets/audio/MP3/Coffee2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist1.mp3 b/assets/audio/MP3/Minimalist1.mp3
deleted file mode 100644
index cae71a0..0000000
Binary files a/assets/audio/MP3/Minimalist1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist10.mp3 b/assets/audio/MP3/Minimalist10.mp3
deleted file mode 100644
index 947666c..0000000
Binary files a/assets/audio/MP3/Minimalist10.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist11.mp3 b/assets/audio/MP3/Minimalist11.mp3
deleted file mode 100644
index 4f18e71..0000000
Binary files a/assets/audio/MP3/Minimalist11.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist12.mp3 b/assets/audio/MP3/Minimalist12.mp3
deleted file mode 100644
index 8ef588e..0000000
Binary files a/assets/audio/MP3/Minimalist12.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist13.mp3 b/assets/audio/MP3/Minimalist13.mp3
deleted file mode 100644
index 1b045da..0000000
Binary files a/assets/audio/MP3/Minimalist13.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist2.mp3 b/assets/audio/MP3/Minimalist2.mp3
deleted file mode 100644
index edf3e03..0000000
Binary files a/assets/audio/MP3/Minimalist2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist3.mp3 b/assets/audio/MP3/Minimalist3.mp3
deleted file mode 100644
index 1ce636a..0000000
Binary files a/assets/audio/MP3/Minimalist3.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist4.mp3 b/assets/audio/MP3/Minimalist4.mp3
deleted file mode 100644
index ee432d1..0000000
Binary files a/assets/audio/MP3/Minimalist4.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist5.mp3 b/assets/audio/MP3/Minimalist5.mp3
deleted file mode 100644
index f6fc418..0000000
Binary files a/assets/audio/MP3/Minimalist5.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist6.mp3 b/assets/audio/MP3/Minimalist6.mp3
deleted file mode 100644
index 2ecca45..0000000
Binary files a/assets/audio/MP3/Minimalist6.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist7.mp3 b/assets/audio/MP3/Minimalist7.mp3
deleted file mode 100644
index b5263e4..0000000
Binary files a/assets/audio/MP3/Minimalist7.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist8.mp3 b/assets/audio/MP3/Minimalist8.mp3
deleted file mode 100644
index c645611..0000000
Binary files a/assets/audio/MP3/Minimalist8.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Minimalist9.mp3 b/assets/audio/MP3/Minimalist9.mp3
deleted file mode 100644
index 881f11e..0000000
Binary files a/assets/audio/MP3/Minimalist9.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern1.mp3 b/assets/audio/MP3/Modern1.mp3
deleted file mode 100644
index 321488b..0000000
Binary files a/assets/audio/MP3/Modern1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern10.mp3 b/assets/audio/MP3/Modern10.mp3
deleted file mode 100644
index f1fa81a..0000000
Binary files a/assets/audio/MP3/Modern10.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern11.mp3 b/assets/audio/MP3/Modern11.mp3
deleted file mode 100644
index 89c632a..0000000
Binary files a/assets/audio/MP3/Modern11.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern12.mp3 b/assets/audio/MP3/Modern12.mp3
deleted file mode 100644
index f5887da..0000000
Binary files a/assets/audio/MP3/Modern12.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern13.mp3 b/assets/audio/MP3/Modern13.mp3
deleted file mode 100644
index 7cc99ee..0000000
Binary files a/assets/audio/MP3/Modern13.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern14.mp3 b/assets/audio/MP3/Modern14.mp3
deleted file mode 100644
index ba3ba1a..0000000
Binary files a/assets/audio/MP3/Modern14.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern15.mp3 b/assets/audio/MP3/Modern15.mp3
deleted file mode 100644
index db0126c..0000000
Binary files a/assets/audio/MP3/Modern15.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern16.mp3 b/assets/audio/MP3/Modern16.mp3
deleted file mode 100644
index e323af4..0000000
Binary files a/assets/audio/MP3/Modern16.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern2.mp3 b/assets/audio/MP3/Modern2.mp3
deleted file mode 100644
index 827e67c..0000000
Binary files a/assets/audio/MP3/Modern2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern3.mp3 b/assets/audio/MP3/Modern3.mp3
deleted file mode 100644
index 0a9c126..0000000
Binary files a/assets/audio/MP3/Modern3.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern4.mp3 b/assets/audio/MP3/Modern4.mp3
deleted file mode 100644
index aaf38ad..0000000
Binary files a/assets/audio/MP3/Modern4.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern5.mp3 b/assets/audio/MP3/Modern5.mp3
deleted file mode 100644
index e76c22c..0000000
Binary files a/assets/audio/MP3/Modern5.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern6.mp3 b/assets/audio/MP3/Modern6.mp3
deleted file mode 100644
index 9674a23..0000000
Binary files a/assets/audio/MP3/Modern6.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern7.mp3 b/assets/audio/MP3/Modern7.mp3
deleted file mode 100644
index c0326d5..0000000
Binary files a/assets/audio/MP3/Modern7.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern8.mp3 b/assets/audio/MP3/Modern8.mp3
deleted file mode 100644
index c14cbd8..0000000
Binary files a/assets/audio/MP3/Modern8.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Modern9.mp3 b/assets/audio/MP3/Modern9.mp3
deleted file mode 100644
index 656b82a..0000000
Binary files a/assets/audio/MP3/Modern9.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro1.mp3 b/assets/audio/MP3/Retro1.mp3
deleted file mode 100644
index 0db6792..0000000
Binary files a/assets/audio/MP3/Retro1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro10.mp3 b/assets/audio/MP3/Retro10.mp3
deleted file mode 100644
index 59bb98a..0000000
Binary files a/assets/audio/MP3/Retro10.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro11.mp3 b/assets/audio/MP3/Retro11.mp3
deleted file mode 100644
index 0a68574..0000000
Binary files a/assets/audio/MP3/Retro11.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro12.mp3 b/assets/audio/MP3/Retro12.mp3
deleted file mode 100644
index 407d3c0..0000000
Binary files a/assets/audio/MP3/Retro12.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro2.mp3 b/assets/audio/MP3/Retro2.mp3
deleted file mode 100644
index f03d110..0000000
Binary files a/assets/audio/MP3/Retro2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro3.mp3 b/assets/audio/MP3/Retro3.mp3
deleted file mode 100644
index a7d1b45..0000000
Binary files a/assets/audio/MP3/Retro3.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro4.mp3 b/assets/audio/MP3/Retro4.mp3
deleted file mode 100644
index 7c99867..0000000
Binary files a/assets/audio/MP3/Retro4.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro5.mp3 b/assets/audio/MP3/Retro5.mp3
deleted file mode 100644
index 912fc6f..0000000
Binary files a/assets/audio/MP3/Retro5.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro6.mp3 b/assets/audio/MP3/Retro6.mp3
deleted file mode 100644
index a12bb58..0000000
Binary files a/assets/audio/MP3/Retro6.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro7.mp3 b/assets/audio/MP3/Retro7.mp3
deleted file mode 100644
index 5a77759..0000000
Binary files a/assets/audio/MP3/Retro7.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro8.mp3 b/assets/audio/MP3/Retro8.mp3
deleted file mode 100644
index 7cdde94..0000000
Binary files a/assets/audio/MP3/Retro8.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Retro9.mp3 b/assets/audio/MP3/Retro9.mp3
deleted file mode 100644
index 7b64fc6..0000000
Binary files a/assets/audio/MP3/Retro9.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Wood Block1.mp3 b/assets/audio/MP3/Wood Block1.mp3
deleted file mode 100644
index 1302628..0000000
Binary files a/assets/audio/MP3/Wood Block1.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Wood Block2.mp3 b/assets/audio/MP3/Wood Block2.mp3
deleted file mode 100644
index b1b623a..0000000
Binary files a/assets/audio/MP3/Wood Block2.mp3 and /dev/null differ
diff --git a/assets/audio/MP3/Wood Block3.mp3 b/assets/audio/MP3/Wood Block3.mp3
deleted file mode 100644
index fb51628..0000000
Binary files a/assets/audio/MP3/Wood Block3.mp3 and /dev/null differ
diff --git a/assets/audio/OGG/Abstract1.ogg b/assets/audio/OGG/Abstract1.ogg
deleted file mode 100644
index 2aae6e9..0000000
Binary files a/assets/audio/OGG/Abstract1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Abstract2.ogg b/assets/audio/OGG/Abstract2.ogg
deleted file mode 100644
index 6cd261f..0000000
Binary files a/assets/audio/OGG/Abstract2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/African1.ogg b/assets/audio/OGG/African1.ogg
deleted file mode 100644
index ae17fcd..0000000
Binary files a/assets/audio/OGG/African1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/African2.ogg b/assets/audio/OGG/African2.ogg
deleted file mode 100644
index db4aaf4..0000000
Binary files a/assets/audio/OGG/African2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/African3.ogg b/assets/audio/OGG/African3.ogg
deleted file mode 100644
index 66f7584..0000000
Binary files a/assets/audio/OGG/African3.ogg and /dev/null differ
diff --git a/assets/audio/OGG/African4.ogg b/assets/audio/OGG/African4.ogg
deleted file mode 100644
index 590c7da..0000000
Binary files a/assets/audio/OGG/African4.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Coffee1.ogg b/assets/audio/OGG/Coffee1.ogg
deleted file mode 100644
index 783adfc..0000000
Binary files a/assets/audio/OGG/Coffee1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Coffee2.ogg b/assets/audio/OGG/Coffee2.ogg
deleted file mode 100644
index ffe2f89..0000000
Binary files a/assets/audio/OGG/Coffee2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist1.ogg b/assets/audio/OGG/Minimalist1.ogg
deleted file mode 100644
index 17d414c..0000000
Binary files a/assets/audio/OGG/Minimalist1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist10.ogg b/assets/audio/OGG/Minimalist10.ogg
deleted file mode 100644
index e8ad222..0000000
Binary files a/assets/audio/OGG/Minimalist10.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist11.ogg b/assets/audio/OGG/Minimalist11.ogg
deleted file mode 100644
index 2b503e4..0000000
Binary files a/assets/audio/OGG/Minimalist11.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist12.ogg b/assets/audio/OGG/Minimalist12.ogg
deleted file mode 100644
index 48c4eac..0000000
Binary files a/assets/audio/OGG/Minimalist12.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist13.ogg b/assets/audio/OGG/Minimalist13.ogg
deleted file mode 100644
index 42d4a38..0000000
Binary files a/assets/audio/OGG/Minimalist13.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist2.ogg b/assets/audio/OGG/Minimalist2.ogg
deleted file mode 100644
index b9aaf43..0000000
Binary files a/assets/audio/OGG/Minimalist2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist3.ogg b/assets/audio/OGG/Minimalist3.ogg
deleted file mode 100644
index 93b240d..0000000
Binary files a/assets/audio/OGG/Minimalist3.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist4.ogg b/assets/audio/OGG/Minimalist4.ogg
deleted file mode 100644
index 01e308d..0000000
Binary files a/assets/audio/OGG/Minimalist4.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist5.ogg b/assets/audio/OGG/Minimalist5.ogg
deleted file mode 100644
index e721494..0000000
Binary files a/assets/audio/OGG/Minimalist5.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist6.ogg b/assets/audio/OGG/Minimalist6.ogg
deleted file mode 100644
index 2db7077..0000000
Binary files a/assets/audio/OGG/Minimalist6.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist7.ogg b/assets/audio/OGG/Minimalist7.ogg
deleted file mode 100644
index 03d945c..0000000
Binary files a/assets/audio/OGG/Minimalist7.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist8.ogg b/assets/audio/OGG/Minimalist8.ogg
deleted file mode 100644
index dfa7fb8..0000000
Binary files a/assets/audio/OGG/Minimalist8.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Minimalist9.ogg b/assets/audio/OGG/Minimalist9.ogg
deleted file mode 100644
index e97150f..0000000
Binary files a/assets/audio/OGG/Minimalist9.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern1.ogg b/assets/audio/OGG/Modern1.ogg
deleted file mode 100644
index 4411f14..0000000
Binary files a/assets/audio/OGG/Modern1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern10.ogg b/assets/audio/OGG/Modern10.ogg
deleted file mode 100644
index 3552342..0000000
Binary files a/assets/audio/OGG/Modern10.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern11.ogg b/assets/audio/OGG/Modern11.ogg
deleted file mode 100644
index 1668645..0000000
Binary files a/assets/audio/OGG/Modern11.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern12.ogg b/assets/audio/OGG/Modern12.ogg
deleted file mode 100644
index 9a88758..0000000
Binary files a/assets/audio/OGG/Modern12.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern13.ogg b/assets/audio/OGG/Modern13.ogg
deleted file mode 100644
index 7e27946..0000000
Binary files a/assets/audio/OGG/Modern13.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern14.ogg b/assets/audio/OGG/Modern14.ogg
deleted file mode 100644
index 461c515..0000000
Binary files a/assets/audio/OGG/Modern14.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern15.ogg b/assets/audio/OGG/Modern15.ogg
deleted file mode 100644
index 20e7ffc..0000000
Binary files a/assets/audio/OGG/Modern15.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern16.ogg b/assets/audio/OGG/Modern16.ogg
deleted file mode 100644
index 671ac7f..0000000
Binary files a/assets/audio/OGG/Modern16.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern2.ogg b/assets/audio/OGG/Modern2.ogg
deleted file mode 100644
index b7e30d8..0000000
Binary files a/assets/audio/OGG/Modern2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern3.ogg b/assets/audio/OGG/Modern3.ogg
deleted file mode 100644
index eeef39c..0000000
Binary files a/assets/audio/OGG/Modern3.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern4.ogg b/assets/audio/OGG/Modern4.ogg
deleted file mode 100644
index 9288e95..0000000
Binary files a/assets/audio/OGG/Modern4.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern5.ogg b/assets/audio/OGG/Modern5.ogg
deleted file mode 100644
index 8c46eaa..0000000
Binary files a/assets/audio/OGG/Modern5.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern6.ogg b/assets/audio/OGG/Modern6.ogg
deleted file mode 100644
index 30ce7fb..0000000
Binary files a/assets/audio/OGG/Modern6.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern7.ogg b/assets/audio/OGG/Modern7.ogg
deleted file mode 100644
index 4ed0f67..0000000
Binary files a/assets/audio/OGG/Modern7.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern8.ogg b/assets/audio/OGG/Modern8.ogg
deleted file mode 100644
index a18a442..0000000
Binary files a/assets/audio/OGG/Modern8.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Modern9.ogg b/assets/audio/OGG/Modern9.ogg
deleted file mode 100644
index 2d5543b..0000000
Binary files a/assets/audio/OGG/Modern9.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro1.ogg b/assets/audio/OGG/Retro1.ogg
deleted file mode 100644
index 7ed992b..0000000
Binary files a/assets/audio/OGG/Retro1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro10.ogg b/assets/audio/OGG/Retro10.ogg
deleted file mode 100644
index 8998f1d..0000000
Binary files a/assets/audio/OGG/Retro10.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro11.ogg b/assets/audio/OGG/Retro11.ogg
deleted file mode 100644
index 5795a3d..0000000
Binary files a/assets/audio/OGG/Retro11.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro12.ogg b/assets/audio/OGG/Retro12.ogg
deleted file mode 100644
index d2d7754..0000000
Binary files a/assets/audio/OGG/Retro12.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro2.ogg b/assets/audio/OGG/Retro2.ogg
deleted file mode 100644
index d7b85aa..0000000
Binary files a/assets/audio/OGG/Retro2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro3.ogg b/assets/audio/OGG/Retro3.ogg
deleted file mode 100644
index 155bf91..0000000
Binary files a/assets/audio/OGG/Retro3.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro4.ogg b/assets/audio/OGG/Retro4.ogg
deleted file mode 100644
index 338efb0..0000000
Binary files a/assets/audio/OGG/Retro4.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro5.ogg b/assets/audio/OGG/Retro5.ogg
deleted file mode 100644
index 6ca47b4..0000000
Binary files a/assets/audio/OGG/Retro5.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro6.ogg b/assets/audio/OGG/Retro6.ogg
deleted file mode 100644
index b79dd8a..0000000
Binary files a/assets/audio/OGG/Retro6.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro7.ogg b/assets/audio/OGG/Retro7.ogg
deleted file mode 100644
index 169bfa4..0000000
Binary files a/assets/audio/OGG/Retro7.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro8.ogg b/assets/audio/OGG/Retro8.ogg
deleted file mode 100644
index 3e2bfff..0000000
Binary files a/assets/audio/OGG/Retro8.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Retro9.ogg b/assets/audio/OGG/Retro9.ogg
deleted file mode 100644
index e204d21..0000000
Binary files a/assets/audio/OGG/Retro9.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Wood Block1.ogg b/assets/audio/OGG/Wood Block1.ogg
deleted file mode 100644
index f844b1e..0000000
Binary files a/assets/audio/OGG/Wood Block1.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Wood Block2.ogg b/assets/audio/OGG/Wood Block2.ogg
deleted file mode 100644
index f0b6c2a..0000000
Binary files a/assets/audio/OGG/Wood Block2.ogg and /dev/null differ
diff --git a/assets/audio/OGG/Wood Block3.ogg b/assets/audio/OGG/Wood Block3.ogg
deleted file mode 100644
index 81b0eb6..0000000
Binary files a/assets/audio/OGG/Wood Block3.ogg and /dev/null differ
diff --git a/assets/audio/WAV/Abstract2.wav b/assets/audio/WAV/Abstract2.wav
deleted file mode 100644
index 3bba5a5..0000000
Binary files a/assets/audio/WAV/Abstract2.wav and /dev/null differ
diff --git a/assets/audio/WAV/African1.wav b/assets/audio/WAV/African1.wav
deleted file mode 100644
index 416a9f5..0000000
Binary files a/assets/audio/WAV/African1.wav and /dev/null differ
diff --git a/assets/audio/WAV/African2.wav b/assets/audio/WAV/African2.wav
deleted file mode 100644
index 075d89e..0000000
Binary files a/assets/audio/WAV/African2.wav and /dev/null differ
diff --git a/assets/audio/WAV/African3.wav b/assets/audio/WAV/African3.wav
deleted file mode 100644
index 14b54d0..0000000
Binary files a/assets/audio/WAV/African3.wav and /dev/null differ
diff --git a/assets/audio/WAV/African4.wav b/assets/audio/WAV/African4.wav
deleted file mode 100644
index bfbfbf2..0000000
Binary files a/assets/audio/WAV/African4.wav and /dev/null differ
diff --git a/assets/audio/WAV/Coffee1.wav b/assets/audio/WAV/Coffee1.wav
deleted file mode 100644
index cb44c22..0000000
Binary files a/assets/audio/WAV/Coffee1.wav and /dev/null differ
diff --git a/assets/audio/WAV/Coffee2.wav b/assets/audio/WAV/Coffee2.wav
deleted file mode 100644
index 05d4073..0000000
Binary files a/assets/audio/WAV/Coffee2.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist10.wav b/assets/audio/WAV/Minimalist10.wav
deleted file mode 100644
index 881ba35..0000000
Binary files a/assets/audio/WAV/Minimalist10.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist11.wav b/assets/audio/WAV/Minimalist11.wav
deleted file mode 100644
index f656b4a..0000000
Binary files a/assets/audio/WAV/Minimalist11.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist12.wav b/assets/audio/WAV/Minimalist12.wav
deleted file mode 100644
index b391f7c..0000000
Binary files a/assets/audio/WAV/Minimalist12.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist13.wav b/assets/audio/WAV/Minimalist13.wav
deleted file mode 100644
index f1e15b6..0000000
Binary files a/assets/audio/WAV/Minimalist13.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist2.wav b/assets/audio/WAV/Minimalist2.wav
deleted file mode 100644
index 3694db5..0000000
Binary files a/assets/audio/WAV/Minimalist2.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist3.wav b/assets/audio/WAV/Minimalist3.wav
deleted file mode 100644
index 45b28fd..0000000
Binary files a/assets/audio/WAV/Minimalist3.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist4.wav b/assets/audio/WAV/Minimalist4.wav
deleted file mode 100644
index 2319d7b..0000000
Binary files a/assets/audio/WAV/Minimalist4.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist5.wav b/assets/audio/WAV/Minimalist5.wav
deleted file mode 100644
index 558f9cc..0000000
Binary files a/assets/audio/WAV/Minimalist5.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist6.wav b/assets/audio/WAV/Minimalist6.wav
deleted file mode 100644
index a94fec7..0000000
Binary files a/assets/audio/WAV/Minimalist6.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist7.wav b/assets/audio/WAV/Minimalist7.wav
deleted file mode 100644
index b823852..0000000
Binary files a/assets/audio/WAV/Minimalist7.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist8.wav b/assets/audio/WAV/Minimalist8.wav
deleted file mode 100644
index 5240f83..0000000
Binary files a/assets/audio/WAV/Minimalist8.wav and /dev/null differ
diff --git a/assets/audio/WAV/Minimalist9.wav b/assets/audio/WAV/Minimalist9.wav
deleted file mode 100644
index 21cb2ed..0000000
Binary files a/assets/audio/WAV/Minimalist9.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern1.wav b/assets/audio/WAV/Modern1.wav
deleted file mode 100644
index 120ff7e..0000000
Binary files a/assets/audio/WAV/Modern1.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern10.wav b/assets/audio/WAV/Modern10.wav
deleted file mode 100644
index 4ed6bf1..0000000
Binary files a/assets/audio/WAV/Modern10.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern11.wav b/assets/audio/WAV/Modern11.wav
deleted file mode 100644
index 8d3bb16..0000000
Binary files a/assets/audio/WAV/Modern11.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern12.wav b/assets/audio/WAV/Modern12.wav
deleted file mode 100644
index adcf097..0000000
Binary files a/assets/audio/WAV/Modern12.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern13.wav b/assets/audio/WAV/Modern13.wav
deleted file mode 100644
index 16090c4..0000000
Binary files a/assets/audio/WAV/Modern13.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern14.wav b/assets/audio/WAV/Modern14.wav
deleted file mode 100644
index cc78257..0000000
Binary files a/assets/audio/WAV/Modern14.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern15.wav b/assets/audio/WAV/Modern15.wav
deleted file mode 100644
index 1184af6..0000000
Binary files a/assets/audio/WAV/Modern15.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern16.wav b/assets/audio/WAV/Modern16.wav
deleted file mode 100644
index 64edae8..0000000
Binary files a/assets/audio/WAV/Modern16.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern2.wav b/assets/audio/WAV/Modern2.wav
deleted file mode 100644
index 43895cd..0000000
Binary files a/assets/audio/WAV/Modern2.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern3.wav b/assets/audio/WAV/Modern3.wav
deleted file mode 100644
index 1b901b7..0000000
Binary files a/assets/audio/WAV/Modern3.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern4.wav b/assets/audio/WAV/Modern4.wav
deleted file mode 100644
index 6d89402..0000000
Binary files a/assets/audio/WAV/Modern4.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern5.wav b/assets/audio/WAV/Modern5.wav
deleted file mode 100644
index 95c08ed..0000000
Binary files a/assets/audio/WAV/Modern5.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern6.wav b/assets/audio/WAV/Modern6.wav
deleted file mode 100644
index 73b7eb0..0000000
Binary files a/assets/audio/WAV/Modern6.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern7.wav b/assets/audio/WAV/Modern7.wav
deleted file mode 100644
index 362a6ac..0000000
Binary files a/assets/audio/WAV/Modern7.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern8.wav b/assets/audio/WAV/Modern8.wav
deleted file mode 100644
index cc66aaa..0000000
Binary files a/assets/audio/WAV/Modern8.wav and /dev/null differ
diff --git a/assets/audio/WAV/Modern9.wav b/assets/audio/WAV/Modern9.wav
deleted file mode 100644
index fa4b0c0..0000000
Binary files a/assets/audio/WAV/Modern9.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro1.wav b/assets/audio/WAV/Retro1.wav
deleted file mode 100644
index 86c4b01..0000000
Binary files a/assets/audio/WAV/Retro1.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro10.wav b/assets/audio/WAV/Retro10.wav
deleted file mode 100644
index d82990c..0000000
Binary files a/assets/audio/WAV/Retro10.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro11.wav b/assets/audio/WAV/Retro11.wav
deleted file mode 100644
index e2d864b..0000000
Binary files a/assets/audio/WAV/Retro11.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro12.wav b/assets/audio/WAV/Retro12.wav
deleted file mode 100644
index e1df547..0000000
Binary files a/assets/audio/WAV/Retro12.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro2.wav b/assets/audio/WAV/Retro2.wav
deleted file mode 100644
index 986b07a..0000000
Binary files a/assets/audio/WAV/Retro2.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro3.wav b/assets/audio/WAV/Retro3.wav
deleted file mode 100644
index 4f22401..0000000
Binary files a/assets/audio/WAV/Retro3.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro4.wav b/assets/audio/WAV/Retro4.wav
deleted file mode 100644
index 9fa0be1..0000000
Binary files a/assets/audio/WAV/Retro4.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro5.wav b/assets/audio/WAV/Retro5.wav
deleted file mode 100644
index bdb11c6..0000000
Binary files a/assets/audio/WAV/Retro5.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro6.wav b/assets/audio/WAV/Retro6.wav
deleted file mode 100644
index fc0644e..0000000
Binary files a/assets/audio/WAV/Retro6.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro7.wav b/assets/audio/WAV/Retro7.wav
deleted file mode 100644
index 18dd59c..0000000
Binary files a/assets/audio/WAV/Retro7.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro8.wav b/assets/audio/WAV/Retro8.wav
deleted file mode 100644
index 0f2d983..0000000
Binary files a/assets/audio/WAV/Retro8.wav and /dev/null differ
diff --git a/assets/audio/WAV/Retro9.wav b/assets/audio/WAV/Retro9.wav
deleted file mode 100644
index 4b2fadd..0000000
Binary files a/assets/audio/WAV/Retro9.wav and /dev/null differ
diff --git a/assets/audio/WAV/Wood Block1.wav b/assets/audio/WAV/Wood Block1.wav
deleted file mode 100644
index a25e2b2..0000000
Binary files a/assets/audio/WAV/Wood Block1.wav and /dev/null differ
diff --git a/assets/audio/WAV/Wood Block2.wav b/assets/audio/WAV/Wood Block2.wav
deleted file mode 100644
index 89544a8..0000000
Binary files a/assets/audio/WAV/Wood Block2.wav and /dev/null differ
diff --git a/assets/audio/WAV/Wood Block3.wav b/assets/audio/WAV/Wood Block3.wav
deleted file mode 100644
index 572005b..0000000
Binary files a/assets/audio/WAV/Wood Block3.wav and /dev/null differ
diff --git a/assets/audio/sounds/axe.mp3 b/assets/audio/sounds/axe.mp3
deleted file mode 100644
index 11956f2..0000000
Binary files a/assets/audio/sounds/axe.mp3 and /dev/null differ
diff --git a/assets/audio/sounds/bg.mp3 b/assets/audio/sounds/bg.mp3
deleted file mode 100644
index 9ef5ef4..0000000
Binary files a/assets/audio/sounds/bg.mp3 and /dev/null differ
diff --git a/assets/audio/sounds/coin.wav b/assets/audio/sounds/coin.wav
deleted file mode 100644
index 0509182..0000000
Binary files a/assets/audio/sounds/coin.wav and /dev/null differ
diff --git a/assets/audio/sounds/explosion.wav b/assets/audio/sounds/explosion.wav
deleted file mode 100644
index 8a67b16..0000000
Binary files a/assets/audio/sounds/explosion.wav and /dev/null differ
diff --git a/assets/audio/sounds/hoe.wav b/assets/audio/sounds/hoe.wav
deleted file mode 100644
index f22d74f..0000000
Binary files a/assets/audio/sounds/hoe.wav and /dev/null differ
diff --git a/assets/audio/sounds/hurt.wav b/assets/audio/sounds/hurt.wav
deleted file mode 100644
index b46ecd7..0000000
Binary files a/assets/audio/sounds/hurt.wav and /dev/null differ
diff --git a/assets/audio/sounds/jump.wav b/assets/audio/sounds/jump.wav
deleted file mode 100644
index 611bddf..0000000
Binary files a/assets/audio/sounds/jump.wav and /dev/null differ
diff --git a/assets/audio/sounds/music.mp3 b/assets/audio/sounds/music.mp3
deleted file mode 100644
index 3df0464..0000000
Binary files a/assets/audio/sounds/music.mp3 and /dev/null differ
diff --git a/assets/audio/sounds/plant.wav b/assets/audio/sounds/plant.wav
deleted file mode 100644
index 96c2013..0000000
Binary files a/assets/audio/sounds/plant.wav and /dev/null differ
diff --git a/assets/audio/sounds/power_up.wav b/assets/audio/sounds/power_up.wav
deleted file mode 100644
index d807e3f..0000000
Binary files a/assets/audio/sounds/power_up.wav and /dev/null differ
diff --git a/assets/audio/sounds/success.wav b/assets/audio/sounds/success.wav
deleted file mode 100644
index 7b5805f..0000000
Binary files a/assets/audio/sounds/success.wav and /dev/null differ
diff --git a/assets/audio/sounds/tap.wav b/assets/audio/sounds/tap.wav
deleted file mode 100644
index e9dc6ab..0000000
Binary files a/assets/audio/sounds/tap.wav and /dev/null differ
diff --git a/assets/audio/sounds/water.mp3 b/assets/audio/sounds/water.mp3
deleted file mode 100644
index 7a2bc33..0000000
Binary files a/assets/audio/sounds/water.mp3 and /dev/null differ
diff --git a/assets/beez.mp3 b/assets/beez.mp3
deleted file mode 100644
index fd3f100..0000000
Binary files a/assets/beez.mp3 and /dev/null differ
diff --git a/assets/beez.wav b/assets/beez.wav
deleted file mode 100644
index 8945ef6..0000000
Binary files a/assets/beez.wav and /dev/null differ
diff --git a/assets/birds.png b/assets/birds.png
new file mode 100644
index 0000000..35f3fd3
Binary files /dev/null and b/assets/birds.png differ
diff --git a/assets/birds_cute.png b/assets/birds_cute.png
new file mode 100644
index 0000000..6d0c934
Binary files /dev/null and b/assets/birds_cute.png differ
diff --git a/assets/brackeys_platformer_assets/LICENSE & CREDITS.txt b/assets/brackeys_platformer_assets/LICENSE & CREDITS.txt
deleted file mode 100644
index 8c53da4..0000000
--- a/assets/brackeys_platformer_assets/LICENSE & CREDITS.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-All assets in the pack have been repackaged and many have been modified by Brackeys.
-
-
-LICENSE for all assets:
-
-Creative Commons Zero (CC0)
-
-
-CREDIT:
-
-SPRITES by analogStudios_:
-knight (https://analogstudios.itch.io/camelot)
-slime (https://analogstudios.itch.io/dungeonsprites)
-platforms and coin (https://analogstudios.itch.io/four-seasons-platformer-sprites)
-
-SPRITES by RottingPixels:
-world_tileset and fruit (https://rottingpixels.itch.io/four-seasons-platformer-tileset-16x16free)
-
-
-WORLD TILESET originally
-
-SOUNDS by Brackeys, Asbjørn Thirslund
-
-MUSIC by Brackeys, Sofia Thirslund
-
-FONTS by Jayvee Enaguas - HarvettFox96 - (https://www.dafont.com/pixel-operator.font?l[]=10&l[]=1)
\ No newline at end of file
diff --git a/assets/brackeys_platformer_assets/fonts/PixelOperator8-Bold.ttf b/assets/brackeys_platformer_assets/fonts/PixelOperator8-Bold.ttf
deleted file mode 100644
index 10225eb..0000000
Binary files a/assets/brackeys_platformer_assets/fonts/PixelOperator8-Bold.ttf and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/fonts/PixelOperator8.ttf b/assets/brackeys_platformer_assets/fonts/PixelOperator8.ttf
deleted file mode 100644
index f9146ac..0000000
Binary files a/assets/brackeys_platformer_assets/fonts/PixelOperator8.ttf and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/music/time_for_adventure.mp3 b/assets/brackeys_platformer_assets/music/time_for_adventure.mp3
deleted file mode 100644
index 2ba9940..0000000
Binary files a/assets/brackeys_platformer_assets/music/time_for_adventure.mp3 and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/coin.png b/assets/brackeys_platformer_assets/sprites/coin.png
deleted file mode 100644
index 01ae33d..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/coin.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/fruit.png b/assets/brackeys_platformer_assets/sprites/fruit.png
deleted file mode 100644
index b9cc7d6..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/fruit.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/knight.png b/assets/brackeys_platformer_assets/sprites/knight.png
deleted file mode 100644
index 5b0eb4f..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/knight.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/platforms.png b/assets/brackeys_platformer_assets/sprites/platforms.png
deleted file mode 100644
index 9be41db..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/platforms.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/slime_green.png b/assets/brackeys_platformer_assets/sprites/slime_green.png
deleted file mode 100644
index a21cb6f..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/slime_green.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/slime_purple.png b/assets/brackeys_platformer_assets/sprites/slime_purple.png
deleted file mode 100644
index 76f564e..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/slime_purple.png and /dev/null differ
diff --git a/assets/brackeys_platformer_assets/sprites/world_tileset.png b/assets/brackeys_platformer_assets/sprites/world_tileset.png
deleted file mode 100644
index 36bbf07..0000000
Binary files a/assets/brackeys_platformer_assets/sprites/world_tileset.png and /dev/null differ
diff --git a/assets/audio/WAV/Abstract1.wav b/assets/button_click.wav
similarity index 100%
rename from assets/audio/WAV/Abstract1.wav
rename to assets/button_click.wav
diff --git a/assets/audio/WAV/Minimalist1.wav b/assets/button_hover.wav
similarity index 100%
rename from assets/audio/WAV/Minimalist1.wav
rename to assets/button_hover.wav
diff --git a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover2.aseprite b/assets/buttons.aseprite
similarity index 100%
rename from assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover2.aseprite
rename to assets/buttons.aseprite
diff --git a/assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover2.png b/assets/buttons.png
similarity index 100%
rename from assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover2.png
rename to assets/buttons.png
diff --git a/assets/carrot_and_tomato.png b/assets/carrot_and_tomato.png
deleted file mode 100644
index edb1134..0000000
Binary files a/assets/carrot_and_tomato.png and /dev/null differ
diff --git a/assets/carrot_and_tomato_for_inventory.png b/assets/carrot_and_tomato_for_inventory.png
deleted file mode 100644
index 8c1a797..0000000
Binary files a/assets/carrot_and_tomato_for_inventory.png and /dev/null differ
diff --git a/assets/character.png b/assets/character.png
deleted file mode 100644
index 51b27e9..0000000
Binary files a/assets/character.png and /dev/null differ
diff --git a/assets/character/character.aseprite b/assets/character/character.aseprite
deleted file mode 100644
index 5c5ff60..0000000
Binary files a/assets/character/character.aseprite and /dev/null differ
diff --git a/assets/character/character.png b/assets/character/character.png
deleted file mode 100644
index 1b40439..0000000
Binary files a/assets/character/character.png and /dev/null differ
diff --git a/assets/character/character_hands_up.png b/assets/character/character_hands_up.png
deleted file mode 100644
index 4042706..0000000
Binary files a/assets/character/character_hands_up.png and /dev/null differ
diff --git a/assets/character/character_idle.png b/assets/character/character_idle.png
deleted file mode 100644
index 4a1910c..0000000
Binary files a/assets/character/character_idle.png and /dev/null differ
diff --git a/assets/character/character_walking.png b/assets/character/character_walking.png
deleted file mode 100644
index e2e00c2..0000000
Binary files a/assets/character/character_walking.png and /dev/null differ
diff --git a/assets/character_bee.png b/assets/character_bee.png
deleted file mode 100644
index 359882c..0000000
Binary files a/assets/character_bee.png and /dev/null differ
diff --git a/assets/character_new.png b/assets/character_new.png
deleted file mode 100644
index 73a1b31..0000000
Binary files a/assets/character_new.png and /dev/null differ
diff --git a/assets/Clouds/Clouds1/1.png b/assets/cloud_background.png
similarity index 100%
rename from assets/Clouds/Clouds1/1.png
rename to assets/cloud_background.png
diff --git a/assets/Clouds/Clouds1/4.png b/assets/cloud_foreground.png
similarity index 100%
rename from assets/Clouds/Clouds1/4.png
rename to assets/cloud_foreground.png
diff --git a/assets/Clouds/Clouds1/2.png b/assets/cloud_midground.png
similarity index 100%
rename from assets/Clouds/Clouds1/2.png
rename to assets/cloud_midground.png
diff --git a/assets/environment/earth.png b/assets/environment/earth.png
deleted file mode 100644
index b60afde..0000000
Binary files a/assets/environment/earth.png and /dev/null differ
diff --git a/assets/environment/flowers/blue.png b/assets/environment/flowers/blue.png
deleted file mode 100644
index 8f9a810..0000000
Binary files a/assets/environment/flowers/blue.png and /dev/null differ
diff --git a/assets/environment/flowers/orange.png b/assets/environment/flowers/orange.png
deleted file mode 100644
index 9db343a..0000000
Binary files a/assets/environment/flowers/orange.png and /dev/null differ
diff --git a/assets/environment/flowers/red.png b/assets/environment/flowers/red.png
deleted file mode 100644
index 817eb1c..0000000
Binary files a/assets/environment/flowers/red.png and /dev/null differ
diff --git a/assets/environment/flowers/yellow.png b/assets/environment/flowers/yellow.png
deleted file mode 100644
index 94a541b..0000000
Binary files a/assets/environment/flowers/yellow.png and /dev/null differ
diff --git a/assets/environment/grass/corner_northeast.png b/assets/environment/grass/corner_northeast.png
deleted file mode 100644
index 444bf7e..0000000
Binary files a/assets/environment/grass/corner_northeast.png and /dev/null differ
diff --git a/assets/environment/grass/corner_northwest.png b/assets/environment/grass/corner_northwest.png
deleted file mode 100644
index 4f86939..0000000
Binary files a/assets/environment/grass/corner_northwest.png and /dev/null differ
diff --git a/assets/environment/grass/corner_south_west.png b/assets/environment/grass/corner_south_west.png
deleted file mode 100644
index 115cdf6..0000000
Binary files a/assets/environment/grass/corner_south_west.png and /dev/null differ
diff --git a/assets/environment/grass/corner_southeast.png b/assets/environment/grass/corner_southeast.png
deleted file mode 100644
index 2022c6e..0000000
Binary files a/assets/environment/grass/corner_southeast.png and /dev/null differ
diff --git a/assets/environment/grass/down.png b/assets/environment/grass/down.png
deleted file mode 100644
index 62fa211..0000000
Binary files a/assets/environment/grass/down.png and /dev/null differ
diff --git a/assets/environment/grass/down_left.png b/assets/environment/grass/down_left.png
deleted file mode 100644
index 08f0fc3..0000000
Binary files a/assets/environment/grass/down_left.png and /dev/null differ
diff --git a/assets/environment/grass/down_right.png b/assets/environment/grass/down_right.png
deleted file mode 100644
index f6cf8e3..0000000
Binary files a/assets/environment/grass/down_right.png and /dev/null differ
diff --git a/assets/environment/grass/grass.png b/assets/environment/grass/grass.png
deleted file mode 100644
index 7ac2887..0000000
Binary files a/assets/environment/grass/grass.png and /dev/null differ
diff --git a/assets/environment/grass/left.png b/assets/environment/grass/left.png
deleted file mode 100644
index 432cc2a..0000000
Binary files a/assets/environment/grass/left.png and /dev/null differ
diff --git a/assets/environment/grass/right.png b/assets/environment/grass/right.png
deleted file mode 100644
index 4484a7d..0000000
Binary files a/assets/environment/grass/right.png and /dev/null differ
diff --git a/assets/environment/grass/up.png b/assets/environment/grass/up.png
deleted file mode 100644
index df7caf8..0000000
Binary files a/assets/environment/grass/up.png and /dev/null differ
diff --git a/assets/environment/grass/up_left.png b/assets/environment/grass/up_left.png
deleted file mode 100644
index dd4251e..0000000
Binary files a/assets/environment/grass/up_left.png and /dev/null differ
diff --git a/assets/environment/grass/up_right.png b/assets/environment/grass/up_right.png
deleted file mode 100644
index 02beda5..0000000
Binary files a/assets/environment/grass/up_right.png and /dev/null differ
diff --git a/assets/flower.aseprite b/assets/flower.aseprite
deleted file mode 100644
index fc137e9..0000000
Binary files a/assets/flower.aseprite and /dev/null differ
diff --git a/assets/flower.png b/assets/flower.png
deleted file mode 100644
index 1944bc4..0000000
Binary files a/assets/flower.png and /dev/null differ
diff --git a/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt b/assets/font.fnt
similarity index 99%
rename from assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt
rename to assets/font.fnt
index ac01d29..ec9e6f4 100644
--- a/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt
+++ b/assets/font.fnt
@@ -1,6 +1,6 @@
info face="pixelFont-7-8x14-sproutLands" size=72 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
common lineHeight=72 base=56 scaleW=434 scaleH=434 pages=1 packed=0
-page id=0 file="pixelFont-7-8x14-sproutLands.png"
+page id=0 file="font.png"
chars count=91
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=15
char id=33 x=57 y=55 width=10 height=58 xoffset=11 yoffset=-1 xadvance=28 page=0 chnl=15
diff --git a/assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.png b/assets/font.png
similarity index 100%
rename from assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.png
rename to assets/font.png
diff --git a/assets/grass.aseprite b/assets/grass.aseprite
deleted file mode 100644
index 9e84f80..0000000
Binary files a/assets/grass.aseprite and /dev/null differ
diff --git a/assets/grass.png b/assets/grass.png
deleted file mode 100644
index a89f152..0000000
Binary files a/assets/grass.png and /dev/null differ
diff --git a/assets/hive.aseprite b/assets/hive.aseprite
deleted file mode 100644
index d34d2b8..0000000
Binary files a/assets/hive.aseprite and /dev/null differ
diff --git a/assets/hive.png b/assets/hive.png
deleted file mode 100644
index 1c9e8a9..0000000
Binary files a/assets/hive.png and /dev/null differ
diff --git a/assets/island.png b/assets/island.png
new file mode 100644
index 0000000..029b69a
Binary files /dev/null and b/assets/island.png differ
diff --git a/assets/map.png b/assets/map.png
deleted file mode 100644
index a7afe24..0000000
Binary files a/assets/map.png and /dev/null differ
diff --git a/assets/map.tmx b/assets/map.tmx
deleted file mode 100644
index 5864694..0000000
--- a/assets/map.tmx
+++ /dev/null
@@ -1,292 +0,0 @@
-
-
diff --git a/assets/SproutLandsUI/Spritesheets/Settingmenu.png b/assets/menu_board.png
similarity index 100%
rename from assets/SproutLandsUI/Spritesheets/Settingmenu.png
rename to assets/menu_board.png
diff --git a/assets/SproutLandsUI/Spritesheets/Mouse sprites/TriangleMouseicon1.png b/assets/mouse.png
similarity index 100%
rename from assets/SproutLandsUI/Spritesheets/Mouse sprites/TriangleMouseicon1.png
rename to assets/mouse.png
diff --git a/assets/sea.mp3 b/assets/sea.mp3
new file mode 100644
index 0000000..d86539c
Binary files /dev/null and b/assets/sea.mp3 differ
diff --git a/assets/ship_start.png b/assets/ship_start.png
new file mode 100644
index 0000000..42f6917
Binary files /dev/null and b/assets/ship_start.png differ
diff --git a/assets/tileset.png b/assets/tileset.png
deleted file mode 100644
index 23d4cc7..0000000
Binary files a/assets/tileset.png and /dev/null differ
diff --git a/assets/tree.png b/assets/tree.png
deleted file mode 100644
index 73398d7..0000000
Binary files a/assets/tree.png and /dev/null differ
diff --git a/assets/water_base.png b/assets/water_base.png
new file mode 100644
index 0000000..c98f99b
Binary files /dev/null and b/assets/water_base.png differ
diff --git a/assets/water_caustics.png b/assets/water_caustics.png
new file mode 100644
index 0000000..06fdc18
Binary files /dev/null and b/assets/water_caustics.png differ
diff --git a/assets/water_caustics_highlights.png b/assets/water_caustics_highlights.png
new file mode 100644
index 0000000..067fc0e
Binary files /dev/null and b/assets/water_caustics_highlights.png differ
diff --git a/assets/water_cloudnoise.png b/assets/water_cloudnoise.png
new file mode 100644
index 0000000..31f75f5
Binary files /dev/null and b/assets/water_cloudnoise.png differ
diff --git a/assets/water_noise.png b/assets/water_noise.png
new file mode 100644
index 0000000..0bde3a3
Binary files /dev/null and b/assets/water_noise.png differ
diff --git a/assets/water_voronoise.png b/assets/water_voronoise.png
new file mode 100644
index 0000000..29b0611
Binary files /dev/null and b/assets/water_voronoise.png differ
diff --git a/compile_commands.json b/compile_commands.json
new file mode 100644
index 0000000..7c4ab3f
--- /dev/null
+++ b/compile_commands.json
@@ -0,0 +1,684 @@
+[
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/app.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/app.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameBirds.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameBirds.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGame.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGame.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameEnemies.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameEnemies.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameFloor.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameFloor.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameIslands.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameIslands.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGamePlayer.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGamePlayer.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameShip.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameShip.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appGameShoot.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appGameShoot.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appLogo.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appLogo.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appMenu.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appMenu.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appMenuMainBackground.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appMenuMainBackground.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appMenuMain.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appMenuMain.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appMenuSettings.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appMenuSettings.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/appState.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/appState.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineAnimation.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineAnimation.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineArray.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineArray.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineCamera.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineCamera.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineConfig.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineConfig.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineFont.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineFont.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineGamegui.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineGamegui.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineGui.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineGui.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineInput.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineInput.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineObject.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineObject.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/enginePhysics.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/enginePhysics.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/enginePostfx.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/enginePostfx.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineRectangle.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineRectangle.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineSoundtrack.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineSoundtrack.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineSprite.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineSprite.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/engineVector.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/engineVector.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ },
+ {
+ "arguments": [
+ "/usr/bin/gcc",
+ "-c",
+ "-std=c99",
+ "-g",
+ "-Wall",
+ "-Wpedantic",
+ "-Wshadow",
+ "-Wstrict-prototypes",
+ "-Wno-unknown-pragmas",
+ "-Iinclude",
+ "-Iexternal/rini",
+ "-Iexternal/raygui",
+ "-o",
+ "bin/osx/game",
+ "src/main.c"
+ ],
+ "directory": "/home/huaqo/dev/the-last-hive",
+ "file": "/home/huaqo/dev/the-last-hive/src/main.c",
+ "output": "/home/huaqo/dev/the-last-hive/bin/osx/game"
+ }
+]
diff --git a/config/config.ini b/config/config.ini
index 3b1e504..ab1b3e7 100644
--- a/config/config.ini
+++ b/config/config.ini
@@ -1,9 +1,11 @@
-startView = 0 ; LOGO = 0, MENU = 1, GAMEPLAY = 2
+startView = 1 ; LOGO = 0, MENU = 1, GAMEPLAY = 2, SETTINGS = 3
-window_title = The Last Hive
-window_width = 1280 ; in Pixel
-window_height = 720 ; in Pixel
+windowTitle = Sinbad
+windowWidth = 1280 ; in Pixel
+windowHeight = 720 ; in Pixel
-showFPS = 1 ; OFF = 0, ON = 1
+showFPS = 0 ; OFF = 0, ON = 1
+limitFPS = 1 ; OFF = 0, ON = 1
+soundtrackOn = 1 ; OFF = 0, ON = 1
-font_path = assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt
\ No newline at end of file
+fontPath = assets/font.fnt
diff --git a/config/ships.ini b/config/ships.ini
new file mode 100644
index 0000000..caf9f9b
--- /dev/null
+++ b/config/ships.ini
@@ -0,0 +1,8 @@
+# ship_start
+start_id = 0
+start_path = assets/ship_start.png
+start_frameSize = 16
+start_spped_0 = 0
+start_speed_1 = 5
+start_speed_2 = 10
+start_rotationSpeed = 50
diff --git a/external/engine/asset.h b/external/engine/asset.h
deleted file mode 100644
index 697cf75..0000000
--- a/external/engine/asset.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef ASSET_H
-#define ASSET_H
-
-typedef struct {
- const char* path;
- float frameWidth;
- float frameHeight;
- float rotation;
-} TextureAsset;
-
-typedef struct {
- const char* path;
-} ShaderAsset;
-
-typedef struct {
- const char* path;
-} SoundtrackAsset;
-
-typedef struct {
- const char* path;
-} SoundAsset;
-
-typedef struct {
- const TextureAsset *textureAssets;
- const ShaderAsset *shaderAssets;
- const SoundtrackAsset *soundtrackAssets;
- const SoundAsset *soundAssets;
-} Assets;
-
-#endif // ASSET_H
diff --git a/external/engine/camera.h b/external/engine/camera.h
deleted file mode 100644
index a7c3187..0000000
--- a/external/engine/camera.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef CAMERA_H
-#define CAMERA_H
-
-#include "input.h"
-#include
-
-Camera2D CreateCamera(int windowWidth, int windowHeight, Vector2 playerPosition, float initZoom){
- return (Camera2D){
- .offset = (Vector2){windowWidth / 2.0f, windowHeight / 2.0f},
- .target = playerPosition,
- .rotation = 0.0f,
- .zoom = initZoom
- };
-}
-
-void UpdateCameraTarget(Camera2D *camera, Vector2 *position, const float smoothness){
- camera->target = Vector2Lerp(camera->target, *position, smoothness * GetFrameTime());
-}
-
-void UpdateCameraZoom(Camera2D *camera, const float *scaleFactor, const float *minZoom, const float *maxZoom){
- float targetZoom = Clamp(camera->zoom * *scaleFactor, *minZoom, *maxZoom);
- camera->zoom = Lerp(camera->zoom, targetZoom, 0.1f);
-}
-
-void UpdateCamera2D(Camera2D* camera, Vector2* position, Mouse* mouse){
- UpdateCameraTarget(camera, position, 5.0f);
- UpdateCameraZoom(camera, &mouse->scaleFactor, &mouse->minZoom, &mouse->maxZoom);
-}
-
-
-#endif // CAMERA_H
diff --git a/external/engine/window.h b/external/engine/window.h
deleted file mode 100644
index b56ab8e..0000000
--- a/external/engine/window.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef DISPLAY_H
-#define DISPLAY_H
-
-typedef struct {
- int width;
- int height;
- const char* title;
-} Window;
-
-#endif // DISPLAY_H
diff --git a/include/app.h b/include/app.h
index e09748a..06cbea5 100644
--- a/include/app.h
+++ b/include/app.h
@@ -1,79 +1,264 @@
-#ifndef APP_H
-#define APP_H
+#ifndef APPTYPES_H
+#define APPTYPES_H
-#include
-#include
+// INCLUDES//
+#include
+#include
-#include "view.h"
-#include "state.h"
-#include "flags.h"
-#include "font.h"
-#include "logo.h"
-#include "menu.h"
-#include "game.h"
+// DEFINES//
+#define TEXT_COLOR_DARK (Color){182, 137, 98, 255}
+#define TEXT_COLOR_LIGHT (Color){243, 229, 194, 255}
+
+// ENUMS//
+typedef enum {
+ MENU_CURSOR_TEX,
+ MENU_BIG_BUTTONS_TEX,
+ MENU_BOARD_TEX,
+ MENU_CLOUD_BACKGROUND,
+ MENU_CLOUD_MIDGROUND,
+ MENU_CLOUD_FOREGROUND,
+ MENU_TEX_COUNT
+} MenuTextureID;
+
+typedef enum { MENU_MUSIC, MENU_SOUNDTRACK_COUNT } MenuSoundtrackID;
+
+typedef enum { HOVER_SOUND, CLICK_SOUND, MENU_SOUND_COUNT } MenuSoundID;
+
+typedef enum MenuView { MAIN = 0, SETTINGS = 1 } MenuView;
+
+typedef enum { START_SHIP, PLAYER_TEX_COUNT } playerTextureID;
+
+typedef enum { ANCHOR, SLOW_AHEAD, FAST_AHEAD, SPEED_COUNT } playerSpeedID;
+
+typedef enum { ISLAND, ISLANDS_TEX_COUNT } islandsTextureID;
+
+typedef enum { POST_FX, SHADER_COUNT } ShaderID;
+
+typedef enum { BEE_AMBIENT, SOUNDTRACK_COUNT } SoundtrackID;
+
+typedef enum View { LOGO = 0, MENU = 1, GAMEPLAY = 2 } View;
+
+// STRUCTS//
+typedef struct {
+ int frameCounter;
+ int positionX;
+ int positionY;
+ int lettersCount;
+ int topSideRecWidth;
+ int leftSideRecHeight;
+ int bottomSideRecWidth;
+ int rightSideRecHeight;
+ int state;
+ float alpha;
+} LogoState;
typedef struct {
- Config config;
- State state;
- Flags flags;
- Window window;
- Font font;
- LogoState logo;
- MenuState menu;
- GameState game;
+ Sprite sprite;
+ float scrolling;
+ float scale;
+ float scrollSpeed;
+ Vector2 pos;
+} Background;
+
+typedef struct {
+ Assets assets;
+ Mouse mouse;
+ Texture2D textures[MENU_TEX_COUNT];
+ Sound sounds[MENU_SOUND_COUNT];
+ Soundtrack soundtracks[MENU_SOUNDTRACK_COUNT];
+ ImageElement board;
+ ImageButton playButton;
+ ImageButton quitButton;
+ ImageButton settingsButton;
+ int menuScale;
+ Background background;
+ Background midground;
+ Background foreground;
+} MenuMain;
+
+typedef struct {
+ Button showFPS;
+ Button limitFPS;
+ Button soundtrackOn;
+} MenuSettings;
+
+typedef struct {
+ MenuView menuView;
+ MenuMain menuMain;
+ MenuSettings menuSettings;
+} MenuState;
+
+typedef struct {
+ Sprite sprite;
+ Rectangle bounds;
+ Shader shader;
+ float time;
+} Floor;
+
+typedef struct {
+ Sprite sprite;
+ Animation animation;
+ Physics physics;
+ float rotation;
+} Player;
+
+typedef enum { BOAT, ENEMIES_TEX_COUNT } enemiesTextureID;
+
+typedef enum { START, SHIP_COUNT } shipID;
+
+typedef struct {
+ int id;
+ char *assetPath;
+ int frameSize;
+ int speed0;
+ int speed1;
+ int speed2;
+ int rotationSpeed;
+} Ship;
+
+#define MAX_ENEMIES 100
+
+typedef struct {
+ Config config;
+ int count;
+ Sprite sprite[MAX_ENEMIES];
+ Animation animation[MAX_ENEMIES];
+ Physics physics[MAX_ENEMIES];
+ bool arrived[MAX_ENEMIES];
+ Vector2 destPos[MAX_ENEMIES];
+} Enemies;
+
+typedef enum { FLYING, BIRDS_TEX_COUNT } birdsTextureID;
+
+#define MAX_BIRDS 100
+
+typedef struct {
+ int count;
+ Sprite sprite[MAX_BIRDS];
+ Animation animation[MAX_BIRDS];
+ Physics physics[MAX_BIRDS];
+ bool arrived[MAX_BIRDS];
+ Vector2 destPos[MAX_BIRDS];
+} Birds;
+
+typedef struct {
+ Sprite sprite;
+ Animation animation;
+ Physics physics;
+} Islands;
+
+#define MAX_PROJECTILES 100
+typedef struct {
+ int count;
+ Physics physics[MAX_PROJECTILES];
+ bool active[MAX_PROJECTILES];
+ float radius[MAX_PROJECTILES];
+ Color color[MAX_PROJECTILES];
+} Projectiles;
+
+typedef struct {
+ Assets assets;
+ PostProcessing postFX[SHADER_COUNT];
+ Soundtrack soundtracks[SOUNDTRACK_COUNT];
+ RenderTexture2D target;
+ Floor floor;
+ Birds birds;
+ Enemies enemies;
+ Islands islands;
+ Mouse mouse;
+ Image image;
+ Projectiles projectiles;
+} GameState;
+
+typedef struct {
+ View currentView;
+ bool running;
+ bool gameStarted;
+} State;
+
+typedef struct {
+ bool showFPS;
+ bool limitFPS;
+ bool soundtrackOn;
+} Flags;
+
+typedef struct {
+ Config config;
+ State state;
+ Flags flags;
+ Window window;
+ Font font;
+ LogoState logo;
+ MenuState menu;
+ GameState game;
} App;
-void ConfigApp(App* app){
- InitConfig(&app->config, "config/config.ini");
- app->state.currentView = GetConfigInt(&app->config, "startView");
- app->flags.showFPS = GetConfigInt(&app->config, "showFPS");
- app->flags.soundtrackOn = GetConfigInt(&app->config, "soundtrackOn");
- app->window.title = GetConfigString(&app->config, "window_title");
- app->window.width = GetConfigInt(&app->config, "window_width");
- app->window.height = GetConfigInt(&app->config, "window_height");
-}
+// FUNCTIONS//
+void InitLogo(LogoState *l);
+void UpdateLogo(LogoState *l, View *currentView, bool *running);
+void RenderLogo(const LogoState *l, Flags *flags);
-void InitApp(App *app){
- InitFont(&app->font);
- InitLogo(&app->logo);
- InitMenu(&app->menu);
- InitGame(&app->game,&app->window);
-}
+void InitBackground(float scrollSpeed, Background *bg, Texture2D *texture,
+ const TextureAsset *backgroundAsset);
+void UpdateBackground(Background *bg);
+void RenderBackground(Background *bg);
-void UpdateApp(App *app){
+void InitMenuMain(MenuMain *m);
+void UpdateMenuMain(MenuMain *m, State *state, Flags *flags,
+ MenuView *menuView);
+void RenderMenuMain(MenuMain *m, Font *font, const char *title, Flags *flags);
+void CleanupMenuMain(MenuMain *m);
- app->state.running = true;
- app->state.gameStarted = false;
+void InitMenuSettings(MenuSettings *s);
+void UpdateMenuSettings(MenuSettings *s, MenuView *menuView, State *state,
+ Flags *flags);
+void RenderMenuSettings(MenuSettings *s, Flags *flags);
+void CleanupMenuSettings(MenuSettings *s);
- while (app->state.running)
- {
- switch (app->state.currentView)
- {
- case LOGO:
- {
- UpdateLogo(&app->logo, &app->state.currentView, &app->state.running);
- RenderLogo(&app->logo, &app->flags);
- }break;
- case MENU:
- {
- UpdateMenu(&app->menu, &app->state, &app->flags);
- RenderMenu(&app->menu, &app->font, app->window.title, &app->flags);
- }break;
- case GAMEPLAY:
- {
- UpdateGame(&app->game, &app->state, &app->flags);
- RenderGame(&app->game, &app->state, &app->flags);
- }break;
- default: break;
- }
- }
-}
+void InitMenu(MenuState *m);
+void UpdateMenu(MenuState *m, State *state, Flags *flags);
+void RenderMenu(MenuState *m, Font *font, const char *title, Flags *flags);
+void CleanupMenu(MenuState *m);
-void CleanupApp(App *app){
- CleanupMenu(&app->menu);
- CleanupGame(&app->game);
- CleanupFont(&app->font);
- CleanUpConfig(&app->config);
-}
+Floor CreateFloor(void);
+void UpdateFloor(Floor *floor);
+void RenderFloor(Floor *floor);
+void UnloadFloor(Floor *floor);
-#endif //APP_H
+playerSpeedID GetPlayerSpeedID(float speed);
+Player *GetPlayer(void);
+void CreatePlayer(void);
+void UpdatePlayer(void);
+void RenderPlayer(void);
+
+Enemies CreateEnemies(void);
+void UpdateEnemies(Enemies *enemies);
+void RenderEnemies(Enemies *enemies);
+
+Birds CreateBirds(void);
+void UpdateBirds(Birds *birds);
+void RenderBirds(Birds *birds);
+
+Islands CreateIslands(void);
+void UpdateIslands(Islands *islands);
+void RenderIslands(Islands *islands);
+
+Projectiles CreateProjectiles(void);
+void UpdateProjectiles(Projectiles *projectiles);
+void RenderProjectiles(Projectiles *projectiles);
+
+void InitGame(App *app);
+void UpdateGame(App *app);
+void RenderComponents(App *app);
+void RenderGame(App *app);
+void CleanupGame(App *app);
+
+void OnEscapeChangeView(App *app, View view);
+void OnWindowClosedStoppApp(App *app);
+
+void ConfigApp(App *app);
+void InitApp(App *app);
+void UpdateApp(App *app);
+void CleanupApp(App *app);
+
+#endif // APPTYPES_H
diff --git a/include/bee.h b/include/bee.h
deleted file mode 100644
index 4fd5fcd..0000000
--- a/include/bee.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef BEE_H
-#define BEE_H
-#include
-#include
-#include
-#include
-
-typedef enum {
- FLYING
-} BeeAnimationState;
-
-typedef struct {
- Sprite sprite;
- Animation animation;
- Physics physics;
- Object target;
- Object hive;
- int flowerCount;
-} Bee;
-
-Bee CreateBee(BeeAnimationState animState, Texture2D texture, float frameWidth, int maxFrame, int framesSpeed, Vector2 position, float speed, ObjectArray* target, Object* base){
- return (Bee){
- .sprite = {
- .texture = texture,
- .frameSize = {frameWidth, frameWidth},
- .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
- .destRec = {0.0f, 0.0f, frameWidth, frameWidth},
- .origin = {frameWidth / 2, frameWidth / 2},
- .rotation = 0.0f,
- .color = WHITE
- },
- .animation = {
- .state = animState,
- .currentFrame = 0,
- .maxFrame = maxFrame,
- .framesCounter = 0,
- .framesSpeed = framesSpeed,
- .animTimer = 0.0f
- },
- .physics = {
- .position = position,
- .direction = (Vector2){0.0f,0.0f},
- .speed = speed
- },
- .target = *GetRandomObject(target),
- .hive = *base
- };
-}
-
-void UpdateBee(Bee* bee, ObjectArray* flowers, Object* hive){
- const float tolerance = 1.0f;
-
- if (bee->flowerCount < 4){
- if (fabs(bee->physics.position.x - bee->target.position.x) < tolerance &&
- fabs(bee->physics.position.y - bee->target.position.y) < tolerance) {
- bee->target = *GetRandomObject(flowers);
- bee->flowerCount++;
- } else {
- }
- } else {
- bee->target = *hive;
- if (fabs(bee->physics.position.x - bee->target.position.x) < tolerance &&
- fabs(bee->physics.position.y - bee->target.position.y) < tolerance) {
- bee->physics.speed = 0.0f;
- } else {
- }
- }
-
- UpdatePhysics(&bee->physics, GetDirectionToObject(&bee->target, bee->physics.position));
- UpdateSpriteRotation(&bee->sprite, &bee->physics.direction);
- UpdateSpriteDestRec(&bee->sprite, &bee->physics.position);
- UpdateAnimation(&bee->animation, GetFrameTime());
- UpdateSpriteSourceRec(&bee->sprite, &(Vector2){bee->sprite.frameSize.x * bee->animation.state, bee->sprite.frameSize.x * bee->animation.currentFrame});
-}
-
-#endif // BEE_H
diff --git a/include/button.h b/include/button.h
deleted file mode 100644
index 0d817b4..0000000
--- a/include/button.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// initButton(&m->startButton, "Start Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2, GetScreenHeight() / 2);
-// initButton(&m->quitButton, "Quit Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2,
-// GetScreenHeight() / 2 + (GetScreenHeight() / 20 * 2));
-
-// if (isButtonClicked(&m->startButton)) {
-// state->gameStarted = true;
-// m->startButton.text = "Continue";
-// state->currentScreen = GAMEPLAY;
-// }
-// if (isButtonClicked(&m->quitButton) || (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))) {
-// state->running = false;
-// }
-
-// if (state->gameStarted){
-// if (IsKeyPressed(KEY_ESCAPE)){
-// state->currentScreen = GAMEPLAY;
-// }
-// }
-// renderButton(&m->startButton);
-// renderButton(&m->quitButton);
\ No newline at end of file
diff --git a/include/colors.h b/include/colors.h
deleted file mode 100644
index 0e0822e..0000000
--- a/include/colors.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef COLORS_H
-#define COLORS_H
-
-#define TEXT_COLOR_DARK (Color){ 182, 137, 98, 255}
-#define TEXT_COLOR_LIGHT (Color){ 243, 229, 194, 255}
-
-#endif // COLORS_H
diff --git a/include/engine.h b/include/engine.h
new file mode 100644
index 0000000..6aa987d
--- /dev/null
+++ b/include/engine.h
@@ -0,0 +1,241 @@
+#ifndef ENGINE_H
+#define ENGINE_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+typedef struct
+{
+ Texture2D texture;
+ Rectangle sourceRec;
+ Rectangle destRec;
+ Vector2 frameSize;
+ Vector2 origin;
+ float rotation;
+ Color color;
+} Sprite;
+
+typedef struct {
+ int state;
+ int currentFrame;
+ int maxFrame;
+ int framesCounter;
+ int framesSpeed;
+ float animTimer;
+} Animation;
+
+typedef struct {
+ void** elements;
+ unsigned int count;
+ unsigned int capacity;
+} Array;
+
+typedef struct {
+ const char* path;
+ float frameWidth;
+ float frameHeight;
+ float rotation;
+} TextureAsset;
+
+typedef struct {
+ const char* path;
+} ShaderAsset;
+
+typedef struct {
+ const char* path;
+} SoundtrackAsset;
+
+typedef struct {
+ const char* path;
+} SoundAsset;
+
+typedef struct {
+ const TextureAsset *textureAssets;
+ const ShaderAsset *shaderAssets;
+ const SoundtrackAsset *soundtrackAssets;
+ const SoundAsset *soundAssets;
+} Assets;
+
+typedef struct {
+ char *path;
+ rini_config rini;
+} Config;
+
+typedef enum {
+ NOT_CLICKED,
+ HOVER,
+ CLICKED
+} ButtonState;
+
+typedef struct
+{
+ Sprite sprite;
+ Vector2 notClicked;
+ Vector2 hover;
+ Vector2 clicked;
+ bool isHovered;
+ bool isClicked;
+} ImageButton;
+
+typedef struct
+{
+ Sprite sprite;
+} ImageElement;
+
+typedef struct
+{
+ Rectangle rec;
+ char *text;
+} Button;
+
+typedef struct {
+ Vector2 screenPosition;
+ Vector2 worldPosition;
+ float zoomSpeed;
+ float minZoom;
+ float maxZoom;
+ float scaleFactor;
+ float wheelMove;
+ bool leftButton;
+ bool rightButton;
+ Texture2D cursorTexture;
+} Mouse;
+
+typedef struct {
+ Sprite sprite;
+ Vector2 position;
+} Object;
+
+typedef struct {
+ Object *data;
+ const Object *prototype;
+ size_t count;
+} ObjectArray;
+
+typedef struct
+{
+ Vector2 position;
+ Vector2 direction;
+ Vector2 velocity;
+ float speed;
+} Physics;
+
+typedef struct {
+ Shader shader;
+ int resolutionLoc;
+ int strengthLoc;
+ float strength;
+} PostProcessing;
+
+typedef struct {
+ Music music;
+ bool playing;
+ bool paused;
+} Soundtrack;
+
+typedef struct {
+ Vector2 *data;
+ size_t count;
+} Vector2Array;
+
+typedef struct {
+ int width;
+ int height;
+ const char* title;
+} Window;
+
+void UpdateAnimation(Animation *animation, float deltaTime);
+
+Array* CreateArray(unsigned int initCapacity);
+int AddElementToArray(Array* array, void* element);
+int RemoveElementFromArray(Array* array, unsigned int index);
+void* GetRandomElementFromArray(Array* array);
+void UpdateArray(Array* array, void (*updateFunc)(void*));
+void RenderArray(Array* array, void (*renderFunc)(void*));
+void FreeArray(Array** array);
+
+Camera2D* GetCamera(void);
+Rectangle GetCameraRectangle(void);
+void CreateCamera(Vector2 playerPosition, float initZoom);
+void UpdateCameraTarget(Vector2 *position, const float smoothness);
+void UpdateCameraZoom(const float *scaleFactor, const float *minZoom, const float *maxZoom);
+void UpdateCamera2D(Vector2* position, Mouse* mouse);
+
+void InitConfig(Config *config, const char* path);
+int GetConfigInt(Config *config, const char *key);
+int GetConfigIntOrDefault(Config *config, const char *key, int default_value);
+const char* GetConfigString(Config *config, const char *key);
+const char* GetConfigStringOrDefault(Config *config, const char *key, const char *default_value);
+const char* GetConfigDescription(Config *config, const char *key);
+int SetConfigInt(Config *config, const char *key, int value, const char *desc);
+int SetConfigString(Config *config, const char *key, const char *text, const char *desc);
+int SetConfigDescription(Config *config, const char *key, const char *desc);
+int AddCommentLine(Config *config, const char *comment);
+void SaveConfig(Config *config);
+void CleanUpConfig(Config *config);
+
+void InitFont(Font *font, const char* path);
+void CleanupFont(Font *font);
+
+ImageButton CreateImageButton(ButtonState state, Texture2D *texture, const TextureAsset *asset, Vector2 *source, Vector2 *clicked, Vector2 *hover, Rectangle *destRec);
+ImageElement CreateImageElement(Texture2D *texture, const TextureAsset *asset, Vector2 *source, Rectangle *destRec);
+int isImageButtonClicked(ImageButton *b, Sound soundHover, Sound soundClick);
+void renderImageButton(ImageButton *b);
+void renderImageElement(ImageElement *e);
+
+Button initButton(char *text, Vector2 dimensions, Vector2 position);
+int isButtonClicked(Button *b);
+void renderButton(Button *b);
+
+Mouse CreateMouse(float zoomSpeed, float minZoom, float maxZoom, Texture2D *texture);
+void UpdateMouseScreen(Mouse *mouse);
+void UpdateMouse(Mouse *mouse);
+Vector2 GetDirectionVector(void);
+
+ObjectArray CreateObjectArray(const Object *prototype, const size_t count);
+Object* GetRandomObject(ObjectArray *objects);
+void AddObjectToArray(ObjectArray *objects, const Object *prototype, Vector2 position);
+void SetPositionForObjectArray(ObjectArray *objects, const Vector2Array *positions);
+void SetRandomPositionForObjectArray(ObjectArray *objects, const Rectangle bounds);
+void SwapAndPopObjectsArrayOnRecCollision(ObjectArray *objects, const Rectangle rec);
+void SwapAndPopObjectsArrayOnPointCollision(ObjectArray *objects, const Vector2 point);
+void RenderObjectArray(const ObjectArray *objects);
+
+Vector2 GetDirectionBetweenTwoVectors(Vector2 vec1, Vector2 vec2);
+float GetDistanceBetweenTwoVectors(Vector2 vec1, Vector2 vec2);
+void UpdatePhysicsDirection(Vector2 *direction, Vector2 vector);
+void UpdatePhysicsVelocity(Vector2 *velocity, Vector2 *direction, float *speed);
+void UpdatePhysicsPosition(Vector2 *position, Vector2 *velocity);
+void UpdatePhysicsSpeed(float *speed, float *newSpeed);
+void UpdatePhysics(Physics *physics, Vector2 direction);
+
+PostProcessing CreatePostFX(const char* shaderPath);
+void UpdatePostFX(PostProcessing *postFX);
+void RenderPostFX(PostProcessing *postFX, RenderTexture2D *target);
+void UnloadPostFX(PostProcessing *postFX);
+
+Soundtrack LoadSoundtrack(const char* musicPath);
+void UpdateSoundtrack(Soundtrack *soundtrack, bool playing);
+
+void UpdateSpriteSourceRec(Sprite *sprite, const Vector2 *vector);
+void UpdateSpriteDestRec(Sprite *sprite, const Vector2 *vector);
+void UpdateSpriteRotation(Sprite *sprite, float rotation);
+void RenderSprite(const Sprite *sprite);
+void PrintSprite(const Sprite *sprite);
+
+bool IsVectorZero(Vector2 v);
+Vector2 GetRandomVector(const Rectangle bounds);
+Vector2 RotationToVector2(float rotation);
+float Vector2ToRotation(Vector2 vec);
+
+Vector2 GetPositionInsideRectangle(Rectangle rec);
+Vector2 GetPositionOutsideRectangle(Rectangle rec, int min, int max);
+
+#endif //ENGINE_H
+
diff --git a/include/flags.h b/include/flags.h
deleted file mode 100644
index d5ded90..0000000
--- a/include/flags.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef FLAGS_H
-#define FLAGS_H
-
-typedef struct {
- bool showFPS;
- bool soundtrackOn;
-} Flags;
-
-#endif // FLAGS_H
diff --git a/include/floor.h b/include/floor.h
deleted file mode 100644
index 3b6bf1a..0000000
--- a/include/floor.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef Floor_H
-#define Floor_H
-#include
-
-typedef struct
-{
- Sprite sprite;
- Rectangle bounds;
-} Floor;
-
-Floor CreateFloor(Texture2D texture, float textureWidth)
-{
- return (Floor){
- .sprite = {
- .texture = texture,
- .frameSize = {textureWidth, textureWidth},
- .sourceRec = {0.0f, 0.0f, textureWidth, textureWidth},
- .destRec = {0.0f, 0.0f, textureWidth, textureWidth},
- .origin = {textureWidth / 2, textureWidth / 2},
- .rotation = 0.0f,
- .color = WHITE},
- .bounds = {0.0f, 0.0f, 0.0f, 0.0f}};
-}
-
-void UpdateFloor(Floor *floor, const Camera2D *camera)
-{
- floor->bounds.x = (int)((camera->target.x - (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) - 1;
- floor->bounds.width = (int)((camera->target.x + (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) + 1;
- floor->bounds.y = (int)((camera->target.y - (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) - 1;
- floor->bounds.height = (int)((camera->target.y + (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) + 1;
-}
-
-void RenderFloor(Floor *floor)
-{
- for (int y = (int)floor->bounds.y; y <= (int)floor->bounds.height; y++)
- {
- for (int x = (int)floor->bounds.x; x <= (int)floor->bounds.width; x++)
- {
- Vector2 floorPosition = {x * floor->sprite.frameSize.x, y * floor->sprite.frameSize.y};
- UpdateSpriteDestRec(&floor->sprite, &floorPosition);
- RenderSprite(&floor->sprite);
- }
- }
-}
-
-#endif // Floor_H
diff --git a/include/flowers.h b/include/flowers.h
deleted file mode 100644
index 1446db5..0000000
--- a/include/flowers.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifndef FLOWERS_H
-#define FLOWERS_H
-
-#include "array.h"
-
-typedef enum {
- CHILD,
- TEEN,
- ADULT
-} AGE;
-
-typedef struct {
- Sprite sprite;
- Vector2 position;
- AGE age;
- float ageTimer;
-} Flower;
-
-Flower DEFAULT_FLOWER;
-
-Array* CreateFlowers(Texture2D texture, float frameWidth, float rotation, float fieldSize)
-{
- Array* flowers = CreateArray(10);
-
- if(!flowers) {
- printf("Memory allocation failed.\n");
- exit(1);
- }
-
- DEFAULT_FLOWER = (Flower){
- .sprite = {
- .texture = texture,
- .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
- .destRec = {(float)GetRandomValue(-fieldSize,fieldSize), (float)GetRandomValue(-fieldSize,fieldSize), frameWidth, frameWidth},
- .origin = {frameWidth / 2, frameWidth / 2},
- .rotation = rotation,
- .color = WHITE,
- },
- .age = CHILD,
- .ageTimer = 0.0f
- };
-
- for (int i = 0; i < 10; i++) {
- Flower* flower = malloc(sizeof(Flower));
- *flower = DEFAULT_FLOWER;
- flower->sprite.destRec = (Rectangle){(float)GetRandomValue(-fieldSize,fieldSize), (float)GetRandomValue(-fieldSize,fieldSize), frameWidth, frameWidth};
- AddElementToArray(flowers, flower);
- }
- return flowers;
-}
-
-void AddFlower(Array* flowers, Rectangle rec){
- Flower* flower = malloc(sizeof(Flower));
- *flower = DEFAULT_FLOWER;
- flower->sprite.destRec = rec;
- AddElementToArray(flowers, flower);
-}
-
-
-void UpdateFlower(void* element) {
- Flower* f = (Flower*)element;
- if (!f) return;
-
- f->ageTimer += 1;
-
- if (f->age == CHILD && f->ageTimer >= 3000.0f) {
- f->age = TEEN;
- f->sprite.sourceRec.x = f->sprite.sourceRec.width;
- }
- else if (f->age == TEEN && f->ageTimer >= 6000.0f) {
- f->age = ADULT;
- f->sprite.sourceRec.x = 2.0f * f->sprite.sourceRec.width;
- }
-}
-
-
-void RenderFlower(void* element)
-{
- Flower* f = (Flower*)element;
- if (!f) return;
- RenderSprite(&(f->sprite));
-}
-
-
-
-
-#endif // FLOWERS_H
diff --git a/include/font.h b/include/font.h
deleted file mode 100644
index 1b8edf4..0000000
--- a/include/font.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef FONT_H
-#define FONT_H
-
-void InitFont(Font *font){
- *font = LoadFont("assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt");
- SetTextureFilter(font->texture, TEXTURE_FILTER_POINT);
-}
-
-void CleanupFont(Font *font){
- UnloadFont(*font);
-}
-
-#endif //FONT_H
diff --git a/include/game.h b/include/game.h
deleted file mode 100644
index cac77a2..0000000
--- a/include/game.h
+++ /dev/null
@@ -1,168 +0,0 @@
-#ifndef GAME_H
-#define GAME_H
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "gameassets.h"
-#include "floor.h"
-#include "player.h"
-#include "bee.h"
-#include "hive.h"
-#include "flowers.h"
-
-typedef struct
-{
- Assets assets;
- Texture2D textures[TEX_COUNT];
- PostProcessing postFX[SHADER_COUNT];
- Soundtrack soundtracks[SOUNDTRACK_COUNT];
- RenderTexture2D target;
- Floor floor;
- Object hive;
- Array* flowers;
- Player player;
- Bee bee1;
- Camera2D camera;
- Mouse mouse;
- Image image;
-} GameState;
-
-void InitGame(GameState *g, Window *window)
-{
-
- g->assets = (Assets){
- .textureAssets = texAssets,
- .shaderAssets = shaderAssets,
- .soundtrackAssets = soundtrackAssets};
-
- for (int i = 0; i < TEX_COUNT; i++)
- {
- g->textures[i] = LoadTexture(g->assets.textureAssets[i].path);
- }
-
- for (int i = 0; i < SHADER_COUNT; i++)
- {
- g->postFX[i] = CreatePostFX(g->assets.shaderAssets[i].path);
- }
-
- for (int i = 0; i < SOUNDTRACK_COUNT; i++)
- {
- g->soundtracks[i] = LoadSoundtrack(g->assets.soundtrackAssets[i].path);
- }
-
- // Target texture
- g->target = LoadRenderTexture(window->width, window->height);
-
- // Static Entities
- g->flowers = CreateFlowers(g->textures[FLOWER], g->assets.textureAssets[FLOWER].frameWidth, g->assets.textureAssets[FLOWER].rotation, 50.0f);
- g->floor = CreateFloor(g->textures[GRASS], g->assets.textureAssets[GRASS].frameWidth);
- g->hive = CreateHive(g->textures[HIVE], g->assets.textureAssets[HIVE].frameWidth);
-
- // Animated Entities
- g->player = CreatePlayer(IDLE_DOWN, HOE, g->textures[PLAYER], g->assets.textureAssets[PLAYER].frameWidth, 4, 2, g->hive.position, g->assets.textureAssets[PLAYER].rotation, 50.0f);
- // g->bee1 = CreateBee(FLYING, g->textures[BEE], g->assets.textureAssets[BEE].frameWidth, 4, 10, g->hive.position, 10.0f, &g->flowers, &g->hive);
-
- // I/O
- g->camera = CreateCamera(window->width, window->height, g->player.physics.position, 10.0f);
-
- g->mouse = CreateMouse(0.10f, 5.0f, 10.0f, &g->textures[CURSOR]);
-}
-
-void UpdateGame(GameState *g, State *state, Flags *flags)
-{
- if(!state->gameStarted){
- state->gameStarted = true;
- }
-
- if (GetFPS() <= 60)
- {
- SetTargetFPS(0);
- }
- if (IsKeyPressed(KEY_ESCAPE))
- {
- state->currentView = MENU;
- }
- if (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))
- {
- state->running = false;
- }
- for (int i = 0; i < SHADER_COUNT; i++)
- {
- UpdatePostFX(&g->postFX[i]);
- }
- for (int i = 0; i < SOUNDTRACK_COUNT; i++)
- {
- UpdateSoundtrack(&g->soundtracks[i], flags->soundtrackOn);
- }
-
- UpdateMouse(&g->mouse, &g->camera);
- UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse);
- UpdateFloor(&g->floor, &g->camera);
- UpdatePlayer(&g->player, g->flowers);
- UpdateArray(g->flowers, UpdateFlower);
- // UpdateBee(&g->bee1, &g->flowers, &g->hive);
-}
-
-void RenderComponents(GameState *g)
-{
- RenderFloor(&g->floor);
- RenderSprite(&g->hive.sprite);
- RenderArray(g->flowers, RenderFlower);
- RenderSprite(&g->player.sprite);
- RenderSprite(&g->bee1.sprite);
-}
-
-void RenderGame(GameState *g, const State *appState, Flags *flags)
-{
- BeginTextureMode(g->target);
- ClearBackground(BLACK);
- BeginMode2D(g->camera);
- RenderComponents(g);
- EndMode2D();
- DrawTextureRec(g->mouse.cursorTexture, (Rectangle){0, 0, g->mouse.cursorTexture.width, g->mouse.cursorTexture.height}, (Vector2){g->mouse.screenPosition.x, g->mouse.screenPosition.y}, WHITE);
- EndTextureMode();
- BeginDrawing();
- ClearBackground(BLACK);
- for (int i = 0; i < SHADER_COUNT; i++)
- {
- RenderPostFX(&g->postFX[i], &g->target);
- }
- DrawText(TextFormat("Flower Seeds: %d", g->player.inventar.flowerSeedCount), 10, 10, 50, WHITE);
-
- if (flags->showFPS)
- {
- DrawFPS(10, 10);
- }
-
- EndDrawing();
-}
-
-void CleanupGame(GameState *g)
-{
- for (int i = 0; i < SHADER_COUNT; i++)
- {
- UnloadPostFX(&g->postFX[i]);
- }
- for (int i = 0; i < TEX_COUNT; i++)
- {
- if (g->textures[i].id > 0)
- {
- UnloadTexture(g->textures[i]);
- }
- }
- for (int i = 0; i < SOUNDTRACK_COUNT; i++)
- {
- UnloadMusicStream(g->soundtracks[i].music);
- }
- UnloadRenderTexture(g->target);
- FreeArray(&g->flowers);
-}
-
-#endif // GAME_H
diff --git a/include/gameassets.h b/include/gameassets.h
deleted file mode 100644
index bf31de6..0000000
--- a/include/gameassets.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef GAMEASSETS_H
-#define GAMEASSETS_H
-#include
-
-////////////////////////////////////////////////////////////////////////////
-
-typedef enum
-{
- PLAYER,
- PLAYER_ACTIONS,
- TOOLS,
- FLOWER,
- BEE,
- GRASS,
- HIVE,
- CURSOR,
- TEX_COUNT
-} TextureID;
-
-const TextureAsset texAssets[TEX_COUNT] = {
- {"assets/SproutLandsBasic/Characters/character.png", 48.0f, 48.0f, 0.0f},
- {"assets/SproutLandsBasic/Characters/BasicCharakterActions.png", 48.0f, 48.0f, 0.0f},
- {"assets/SproutLandsBasic/Objects/tools.png", 48.0f, 16.0f, 0.0f},
- {"assets/carrot_and_tomato.png", 32.0f, 32.0f, 0.0f},
- {"assets/character_bee.png", 16.0f, 16.0f, 0.0f},
- {"assets/grass.png", 16.0f, 16.0f, 0.0f},
- {"assets/hive.png", 32.0f, 32.0f, 0.0f},
- {"assets/SproutLandsUI/Spritesheets/Mouse sprites/TriangleMouseicon1.png", 16.0f, 16.0f, 0.0f}};
-
-////////////////////////////////////////////////////////////////////////////
-
-typedef enum
-{
- POST_FX,
- SHADER_COUNT
-} ShaderID;
-
-const ShaderAsset shaderAssets[SHADER_COUNT] = {
- {"shaders/postfx.fs"}};
-
-////////////////////////////////////////////////////////////////////////////
-
-typedef enum
-{
- BEE_AMBIENT,
- SOUNDTRACK_COUNT
-} SoundtrackID;
-
-const SoundtrackAsset soundtrackAssets[SOUNDTRACK_COUNT] = {
- {"assets/beez.mp3"}};
-
-////////////////////////////////////////////////////////////////////////////
-
-#endif // GAMEASSETS_H
diff --git a/include/hive.h b/include/hive.h
deleted file mode 100644
index 5c4e9ca..0000000
--- a/include/hive.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef HIVE_H
-#define HIVE_H
-#include
-
-Object CreateHive(Texture2D texture, float frameWidth)
-{
- return (Object){
- .sprite = {
- .texture = texture,
- .sourceRec = (Rectangle){0.0f, 0.0f, frameWidth, frameWidth},
- .destRec = (Rectangle){0.0f, 0.0f, frameWidth, frameWidth},
- .origin = (Vector2){frameWidth / 2, frameWidth / 2},
- .rotation = 0.0f,
- .color = WHITE},
- .position = (Vector2){0.0f, 0.0f}};
-}
-
-#endif // HIVE_H
diff --git a/include/inventar.h b/include/inventar.h
deleted file mode 100644
index e271dca..0000000
--- a/include/inventar.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef INVENTAR_H
-#define INVENTAR_H
-
-
-typedef struct{
- int flowerSeedCount;
-} Inventar;
-
-#endif // INVENTAR_H
diff --git a/include/menuassets.h b/include/menuassets.h
deleted file mode 100644
index 2553985..0000000
--- a/include/menuassets.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef MENUASSETS_H
-#define MENUASSETS_H
-#include
-
-typedef enum
-{
- MENU_CURSOR_TEX,
- MENU_BIG_BUTTONS_TEX,
- MENU_BOARD_TEX,
- MENU_CLOUD_BACKGROUND,
- MENU_CLOUD_MIDGROUND,
- MENU_CLOUD_FOREGROUND,
- MENU_TEX_COUNT
-} MenuTextureID;
-
-const TextureAsset menuTextureAssets[MENU_TEX_COUNT] = {
- {"assets/SproutLandsUI/Spritesheets/Mouse sprites/TriangleMouseicon1.png", 16.0f, 16.0f, 0.0f},
- {"assets/SproutLandsUI/Spritesheets/UIBigPlayButtonHover2.png", 288.0f/3, 96.0f/3, 0.0f},
- {"assets/SproutLandsUI/Spritesheets/Settingmenu.png", 128.0f, 144.0f, 0.0f},
- {"assets/Clouds/Clouds1/1.png", 576.0f, 324.0f, 0.0f},
- {"assets/Clouds/Clouds1/2.png", 576.0f, 324.0f, 0.0f},
- {"assets/Clouds/Clouds1/4.png", 576.0f, 324.0f, 0.0f}};
-
-typedef enum
-{
- MENU_MUSIC,
- MENU_SOUNDTRACK_COUNT
-} MenuSoundtrackID;
-
-const SoundtrackAsset menuSoundtrackAssets[MENU_SOUNDTRACK_COUNT] = {
- {"assets/merrygoround.wav"}};
-
-typedef enum
-{
- HOVER_SOUND,
- CLICK_SOUND,
- MENU_SOUND_COUNT
-} MenuSoundID;
-
-const SoundAsset menuSoundAssets[MENU_SOUND_COUNT] = {
- {"assets/audio/WAV/Minimalist1.wav"},
- {"assets/audio/WAV/Abstract1.wav"}};
-
-#endif // MENUASSETS_H
diff --git a/include/menuview.h b/include/menuview.h
deleted file mode 100644
index 527313f..0000000
--- a/include/menuview.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef MENUVIEW_H
-#define MENUVIEW_H
-
-typedef enum MenuView {
- MAIN = 0,
- SETTINGS = 1
-} MenuView;
-
-#endif // MENUVIEW_H
-
diff --git a/include/player.h b/include/player.h
deleted file mode 100644
index 7bb8912..0000000
--- a/include/player.h
+++ /dev/null
@@ -1,149 +0,0 @@
-#ifndef PLAYER_H
-#define PLAYER_H
-
-#include
-#include
-#include
-#include
-#include
-
-#include "flowers.h"
-#include "inventar.h"
-
-typedef enum
-{
- IDLE,
- WALKING,
- USING_TOOL
-} PlayerState;
-
-typedef enum
-{
- NO_TOOL,
- HOE,
- AXT,
- CAN
-} SelectedTool;
-
-typedef enum
-{
- IDLE_DOWN,
- IDLE_UP,
- IDLE_LEFT,
- IDLE_RIGHT,
- WALKING_DOWN,
- WALKING_UP,
- WALKING_LEFT,
- WALKING_RIGHT,
- HOE_DOWN,
- HOE_UP,
- HOE_RIGHT,
- HOE_LEFT,
- AXT_DOWN,
- AXT_UP,
- AXT_RIGHT,
- AXT_LEFT,
- CAN_DOWN,
- CAN_UP,
- CAN_RIGHT,
- CAN_LEFT,
-} PlayerAnimationState;
-
-typedef struct
-{
- SelectedTool selectedTool;
- Sprite sprite;
- Animation animation;
- Physics physics;
- Inventar inventar;
-} Player;
-
-Player CreatePlayer(PlayerAnimationState animState, SelectedTool selectedTool, Texture2D texture, float frameWidth, int maxFrame, int framesSpeed, Vector2 startPosition, float rotation, float speed)
-{
- return (Player){
- .selectedTool = selectedTool,
- .sprite = {
- .texture = texture,
- .frameSize = {frameWidth, frameWidth},
- .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
- .destRec = {0.0f, 0.0f, frameWidth, frameWidth},
- .origin = {frameWidth / 2, frameWidth / 2},
- .rotation = rotation,
- .color = WHITE},
- .animation = {.state = animState, .currentFrame = 0, .maxFrame = maxFrame, .framesCounter = 0, .framesSpeed = framesSpeed, .animTimer = 0.0f},
- .physics = {.position = startPosition, .direction = (Vector2){0.0f, 0.0f}, .speed = speed},
- .inventar = {.flowerSeedCount = 6}};
-}
-
-void UpdatePlayerAnimationState(int *state, SelectedTool *selectedTool, Vector2 *dir)
-{
-
- if (IsKeyPressed(KEY_ZERO))
- {
- *selectedTool = NO_TOOL;
- }
-
- if (IsKeyPressed(KEY_ONE))
- {
- *selectedTool = HOE;
- }
-
- if (IsKeyPressed(KEY_TWO))
- {
- *selectedTool = AXT;
- }
-
- if (IsKeyPressed(KEY_THREE))
- {
- *selectedTool = CAN;
- }
-
- if (dir->x == 0 && dir->y == 0)
- {
- switch (*state)
- {
- case WALKING_DOWN:
- *state = IDLE_DOWN;
- break;
- case WALKING_UP:
- *state = IDLE_UP;
- break;
- case WALKING_LEFT:
- *state = IDLE_LEFT;
- break;
- case WALKING_RIGHT:
- *state = IDLE_RIGHT;
- break;
- default:
- break;
- }
- }
- else
- {
- if (dir->y == 1)
- *state = WALKING_DOWN;
- else if (dir->y == -1)
- *state = WALKING_UP;
- else if (dir->x == -1)
- *state = WALKING_LEFT;
- else if (dir->x == 1)
- *state = WALKING_RIGHT;
- }
-}
-
-void UpdatePlayer(Player *player, Array* flowers)
-{
- if (IsKeyPressed(KEY_SPACE) && player->inventar.flowerSeedCount > 0)
- {
- AddFlower(flowers, player->sprite.destRec);
- player->inventar.flowerSeedCount--;
- }
- Vector2 dir = GetDirectionVector();
- UpdatePlayerAnimationState(&player->animation.state, &player->selectedTool, &dir);
- UpdatePhysics(&player->physics, dir);
- UpdateSpriteDestRec(&player->sprite, &player->physics.position);
- UpdateAnimation(&player->animation, GetFrameTime());
- UpdateSpriteSourceRec(&player->sprite, &(Vector2){player->sprite.frameSize.x * player->animation.currentFrame, player->sprite.frameSize.y * player->animation.state});
-}
-
-#endif // PLAYER_H
diff --git a/include/state.h b/include/state.h
deleted file mode 100644
index 43e1e2a..0000000
--- a/include/state.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef STATE_H
-#define STATE_H
-
-#include "view.h"
-
-typedef struct {
- View currentView;
- bool running;
- bool gameStarted;
-} State;
-
-#endif // STATE_H
diff --git a/include/view.h b/include/view.h
deleted file mode 100644
index 96374f7..0000000
--- a/include/view.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef VIEW_H
-#define VIEW_H
-
-typedef enum View {
- LOGO = 0,
- MENU = 1,
- GAMEPLAY = 2
-} View;
-
-#endif // SCREEN_H
diff --git a/shaders/water.fs b/shaders/water.fs
new file mode 100644
index 0000000..6cb7fce
--- /dev/null
+++ b/shaders/water.fs
@@ -0,0 +1,137 @@
+#version 330
+
+// -----------------------------
+// Inputs
+in vec2 fragTexCoord;
+in vec4 fragColor;
+
+// -----------------------------
+// Outputs
+out vec4 finalColor;
+
+// -----------------------------
+// Uniforms
+uniform sampler2D texture0; // main texture
+uniform sampler2D waterDepthGradient;
+uniform sampler2D causticTexture;
+uniform sampler2D causticHighlightTexture;
+uniform sampler2D causticNoiseTexture;
+uniform sampler2D causticFadeNoiseTexture;
+uniform sampler2D specularNoiseTexture;
+uniform sampler2D specularMovementLeftNoiseTexture;
+uniform sampler2D specularMovementRightNoiseTexture;
+uniform sampler2D foamTexture;
+
+uniform float aspectRatio = 1.0;
+uniform float pixelization = 2048.0;
+
+uniform vec4 causticColor = vec4(0.455, 0.773, 0.765, 1.0);
+uniform vec4 causticHighlightColor = vec4(0.741, 0.894, 0.898, 1.0);
+uniform float causticScale = 12.0;
+uniform float causticSpeed = 0.005;
+uniform float causticMovementAmount = 0.15;
+uniform float causticFaderMultiplier = 1.45;
+
+uniform vec4 specularColor = vec4(1.0, 1.0, 1.0, 1.0);
+uniform float specularThreshold = 0.35;
+uniform float specularSpeed = 0.025;
+uniform float specularScale = 15.0;
+
+uniform vec4 foamColor = vec4(1.0, 1.0, 1.0, 1.0);
+uniform float foamIntensity = 0.2;
+uniform float foamScale = 15.0;
+
+uniform vec4 outlineColor = vec4(0.675, 0.86, 1.0, 1.0);
+uniform float generalTransparency = 1.0;
+
+uniform float time;
+
+// -----------------------------
+// Helper functions
+
+vec2 blendSubtract_vec2(vec2 base, vec2 blend, float opacity)
+{
+ vec2 result = base - blend;
+ return mix(base, result, opacity);
+}
+
+float blendSubtract_float(float base, float blend, float opacity)
+{
+ float result = base - blend;
+ return mix(base, result, opacity);
+}
+
+float blendOverlay_float(float base, float blend, float opacity)
+{
+ float result1 = 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
+ float result2 = 2.0 * base * blend;
+ float zeroOrOne = step(0.5, base);
+ float res = result2 * zeroOrOne + (1.0 - zeroOrOne) * result1;
+ return mix(base, res, opacity);
+}
+
+vec2 pixelizeCoordinates(vec2 coordinates)
+{
+ return floor(coordinates * pixelization) / pixelization;
+}
+
+vec2 applyAspectRatio(vec2 coordinates)
+{
+ return vec2(coordinates.x, coordinates.y * aspectRatio);
+}
+
+// -----------------------------
+// Shader layers
+
+vec4 caustics(vec2 pixelizedCoordinates)
+{
+ vec4 causticNoise = texture(causticNoiseTexture, time * causticSpeed + pixelizedCoordinates);
+ vec2 noiseCoordinates = blendSubtract_vec2(pixelizedCoordinates * causticScale, causticNoise.rg, causticMovementAmount);
+ vec4 causticHighlight = texture(causticHighlightTexture, noiseCoordinates) * causticHighlightColor;
+ vec4 caustic = texture(causticTexture, noiseCoordinates) * causticColor;
+ vec4 interpolatedCaustics = mix(caustic, causticHighlight, causticHighlight.a);
+ float fadeNoise = texture(causticFadeNoiseTexture, noiseCoordinates).r * causticFaderMultiplier;
+ return vec4(interpolatedCaustics.rgb, clamp(interpolatedCaustics.a - fadeNoise, 0.0, 1.0));
+}
+
+vec4 specular(vec2 pixelizedCoordinates)
+{
+ vec2 scaledCoordinates = pixelizedCoordinates * specularScale;
+ float specularNoise = texture(specularNoiseTexture, scaledCoordinates).r;
+ float leftScrollingNoise = texture(specularMovementLeftNoiseTexture, scaledCoordinates + vec2(time * specularSpeed, 0.0)).r;
+ float rightScrollingNoise = texture(specularMovementRightNoiseTexture, scaledCoordinates + vec2(time * specularSpeed * -1.0, 0.0)).r;
+ float combined = blendSubtract_float(blendOverlay_float(leftScrollingNoise, rightScrollingNoise, 1.0), specularNoise, 1.0);
+ return step(specularThreshold, combined) * specularColor;
+}
+
+vec4 foam(vec2 pixelizedCoordinates, vec4 mainTexColor)
+{
+ vec4 colorizedFoam = texture(foamTexture, pixelizedCoordinates * foamScale) * foamColor;
+ float intensity = clamp(mainTexColor.g * mainTexColor.a - foamIntensity, 0.0, 1.0);
+ return vec4(colorizedFoam.rgb, colorizedFoam.a * intensity);
+}
+
+// -----------------------------
+// Main fragment
+
+void main()
+{
+ vec2 pixelizedCoordinates = pixelizeCoordinates(applyAspectRatio(fragTexCoord));
+ vec4 mainTex = texture(texture0, fragTexCoord);
+ vec4 depthBasedWaterColor = texture(waterDepthGradient, vec2(1.0 - mainTex.b, 1.0));
+
+ vec4 finalCaustics = caustics(pixelizedCoordinates);
+ vec4 finalSpecular = specular(pixelizedCoordinates);
+ vec4 finalFoam = foam(pixelizedCoordinates, mainTex);
+
+ vec4 waterWithCausticLayer = mix(depthBasedWaterColor, finalCaustics, finalCaustics.a);
+ vec4 waterWithCausticAndSpecularLayer = mix(waterWithCausticLayer, finalSpecular, ceil(finalCaustics.a) * finalSpecular.a);
+ vec4 waterWithCausticAndSpecularAndFoamLayer = mix(waterWithCausticAndSpecularLayer, finalFoam, finalFoam.a);
+
+ float outline = mainTex.a * mainTex.r;
+ vec4 finalOutlineColor = outline * outlineColor;
+
+ vec4 finalRGBColor = mix(waterWithCausticAndSpecularAndFoamLayer, finalOutlineColor, outline);
+ finalColor = vec4(finalRGBColor.rgb, mainTex.b * generalTransparency);
+}
+
diff --git a/shaders/water.vs b/shaders/water.vs
new file mode 100644
index 0000000..a8ba9ce
--- /dev/null
+++ b/shaders/water.vs
@@ -0,0 +1,17 @@
+#version 330
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec4 vertexColor;
+
+out vec2 fragTexCoord;
+out vec4 fragColor;
+
+uniform mat4 mvp;
+
+void main()
+{
+ fragTexCoord = vertexTexCoord;
+ fragColor = vertexColor;
+ gl_Position = mvp * vec4(vertexPosition, 1.0);
+}
+
diff --git a/src/app.c b/src/app.c
new file mode 100644
index 0000000..df5d782
--- /dev/null
+++ b/src/app.c
@@ -0,0 +1,51 @@
+#include "app.h"
+
+void ConfigApp(App *app) {
+ InitConfig(&app->config, "config/config.ini");
+ app->state.currentView = GetConfigInt(&app->config, "startView");
+ app->flags.showFPS = GetConfigInt(&app->config, "showFPS");
+ app->flags.limitFPS = GetConfigInt(&app->config, "limitFPS");
+ app->flags.soundtrackOn = GetConfigInt(&app->config, "soundtrackOn");
+ app->window.title = GetConfigString(&app->config, "windowTitle");
+ app->window.width = GetConfigInt(&app->config, "windowWidth");
+ app->window.height = GetConfigInt(&app->config, "windowHeight");
+}
+
+void InitApp(App *app) {
+ InitFont(&app->font, GetConfigString(&app->config, "fontPath"));
+ InitLogo(&app->logo);
+ InitMenu(&app->menu);
+ InitGame(app);
+}
+
+void UpdateApp(App *app) {
+
+ app->state.running = true;
+ app->state.gameStarted = false;
+
+ while (app->state.running) {
+ switch (app->state.currentView) {
+ case LOGO: {
+ UpdateLogo(&app->logo, &app->state.currentView, &app->state.running);
+ RenderLogo(&app->logo, &app->flags);
+ } break;
+ case MENU: {
+ UpdateMenu(&app->menu, &app->state, &app->flags);
+ RenderMenu(&app->menu, &app->font, app->window.title, &app->flags);
+ } break;
+ case GAMEPLAY: {
+ UpdateGame(app);
+ RenderGame(app);
+ } break;
+ default:
+ break;
+ }
+ }
+}
+
+void CleanupApp(App *app) {
+ CleanupMenu(&app->menu);
+ CleanupGame(app);
+ CleanupFont(&app->font);
+ CleanUpConfig(&app->config);
+}
diff --git a/src/appGame.c b/src/appGame.c
new file mode 100644
index 0000000..15ba635
--- /dev/null
+++ b/src/appGame.c
@@ -0,0 +1,122 @@
+#include "app.h"
+
+const ShaderAsset shaderAssets[SHADER_COUNT] = {{"shaders/postfx.fs"}};
+
+const SoundtrackAsset soundtrackAssets[SOUNDTRACK_COUNT] = {{"assets/sea.mp3"}};
+
+void InitGame(App *app) {
+
+ SetRandomSeed(1234);
+ GameState *g = &app->game;
+ g->assets = (Assets){.shaderAssets = shaderAssets,
+ .soundtrackAssets = soundtrackAssets};
+
+ for (int i = 0; i < SHADER_COUNT; i++) {
+ g->postFX[i] = CreatePostFX(g->assets.shaderAssets[i].path);
+ }
+
+ for (int i = 0; i < SOUNDTRACK_COUNT; i++) {
+ g->soundtracks[i] = LoadSoundtrack(g->assets.soundtrackAssets[i].path);
+ }
+
+ g->target = LoadRenderTexture(app->window.width, app->window.height);
+
+ CreatePlayer();
+ Player *player = GetPlayer();
+ CreateCamera(player->physics.position, 10.0f);
+ g->birds = CreateBirds();
+ g->enemies = CreateEnemies();
+ g->islands = CreateIslands();
+ g->floor = CreateFloor();
+ g->projectiles = CreateProjectiles();
+
+ Texture2D mouseTexture = LoadTexture("assets/mouse.png");
+ g->mouse = CreateMouse(0.10f, 5.0f, 10.0f, &mouseTexture);
+}
+
+void StartGame(App *app) {
+ if (!app->state.gameStarted) {
+ app->state.gameStarted = true;
+ }
+}
+
+void UpdateGame(App *app) {
+ GameState *g = &app->game;
+ if (app->flags.limitFPS) {
+ SetTargetFPS(60);
+ } else {
+ SetTargetFPS(0);
+ }
+
+ StartGame(app);
+
+ OnEscapeChangeView(app, MENU);
+ OnWindowClosedStoppApp(app);
+
+ for (int i = 0; i < SHADER_COUNT; i++) {
+ UpdatePostFX(&g->postFX[i]);
+ }
+ for (int i = 0; i < SOUNDTRACK_COUNT; i++) {
+ UpdateSoundtrack(&g->soundtracks[i], app->flags.soundtrackOn);
+ }
+
+ UpdateMouse(&g->mouse);
+ Player *player = GetPlayer();
+ UpdateCamera2D(&player->physics.position, &g->mouse);
+ UpdateFloor(&g->floor);
+ UpdatePlayer();
+ UpdateBirds(&g->birds);
+ UpdateEnemies(&g->enemies);
+ UpdateIslands(&g->islands);
+ UpdateProjectiles(&g->projectiles);
+}
+
+void RenderComponents(App *app) {
+ GameState *g = &app->game;
+ RenderFloor(&g->floor);
+ RenderPlayer();
+ RenderEnemies(&g->enemies);
+ RenderBirds(&g->birds);
+ RenderIslands(&g->islands);
+ RenderProjectiles(&g->projectiles);
+}
+
+void RenderGame(App *app) {
+ GameState *g = &app->game;
+
+ BeginTextureMode(g->target);
+ ClearBackground(BLACK);
+ Camera2D *camera = GetCamera();
+ BeginMode2D(*camera);
+ RenderComponents(app);
+ EndMode2D();
+ DrawTextureRec(
+ g->mouse.cursorTexture,
+ (Rectangle){0, 0, g->mouse.cursorTexture.width,
+ g->mouse.cursorTexture.height},
+ (Vector2){g->mouse.screenPosition.x, g->mouse.screenPosition.y}, WHITE);
+ EndTextureMode();
+
+ BeginDrawing();
+ ClearBackground(BLACK);
+ for (int i = 0; i < SHADER_COUNT; i++) {
+ RenderPostFX(&g->postFX[i], &g->target);
+ }
+
+ if (app->flags.showFPS) {
+ DrawFPS(10, 10);
+ }
+
+ EndDrawing();
+}
+
+void CleanupGame(App *app) {
+ GameState *g = &app->game;
+ for (int i = 0; i < SHADER_COUNT; i++) {
+ UnloadPostFX(&g->postFX[i]);
+ }
+ for (int i = 0; i < SOUNDTRACK_COUNT; i++) {
+ UnloadMusicStream(g->soundtracks[i].music);
+ }
+ UnloadRenderTexture(g->target);
+}
diff --git a/src/appGameBirds.c b/src/appGameBirds.c
new file mode 100644
index 0000000..e9f1699
--- /dev/null
+++ b/src/appGameBirds.c
@@ -0,0 +1,88 @@
+#include "app.h"
+
+
+const TextureAsset birdsTextureAssets[BIRDS_TEX_COUNT] = {
+ {"assets/birds.png", 16.0f, 16.0f, 45.0f}
+};
+
+Birds CreateBirds(void){
+ Birds birds = {.count = MAX_BIRDS};
+ TextureAsset flyingAsset = birdsTextureAssets[FLYING];
+ Texture2D texture = LoadTexture(flyingAsset.path);
+ float frameWidth = flyingAsset.frameWidth;
+ float rotation = flyingAsset.rotation;
+
+ for (int i = 0; i < birds.count; i++)
+ {
+ birds.sprite[i] = (Sprite){
+ .texture = texture,
+ .frameSize = {frameWidth, frameWidth},
+ .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
+ .destRec = {GetScreenWidth()/2, 0.0f, frameWidth, frameWidth},
+ .origin = {frameWidth / 2, frameWidth / 2},
+ .rotation = rotation,
+ .color = WHITE
+ };
+
+ birds.animation[i] = (Animation){
+ .state = 1,
+ .currentFrame = 0,
+ .maxFrame = 2,
+ .framesCounter = 0,
+ .framesSpeed = 2.0f,
+ .animTimer = 0.0f
+ };
+
+ Rectangle cameraRec = GetCameraRectangle();
+
+ birds.physics[i] = (Physics){
+ .position = GetPositionOutsideRectangle(cameraRec, 100, 1000),
+ .direction = (Vector2){0.0f, 0.0f},
+ .speed = 5.0f
+ };
+
+ birds.arrived[i] = true;
+ birds.destPos[i] = (Vector2){0.0f, 0.0f};
+
+ }
+
+ return birds;
+}
+
+void UpdateBirds(Birds *birds){
+ Camera2D *camera = GetCamera();
+ Rectangle cameraRec = GetCameraRectangle();
+
+ for (int i = 0; i < birds->count; i++)
+ {
+ if(birds->arrived[i])
+ {
+ birds->destPos[i] = GetPositionOutsideRectangle(cameraRec, 100, 1000);
+ birds->arrived[i] = false;
+ }
+ if(CheckCollisionPointCircle(birds->physics[i].position, birds->destPos[i], 10.0F))
+ {
+ birds->arrived[i] = true;
+ }
+ if(GetDistanceBetweenTwoVectors(birds->physics[i].position, camera->target) > 1000){
+ birds->physics[i].position = GetPositionOutsideRectangle(cameraRec, 100, 1000);
+ }
+ Vector2 dir = GetDirectionBetweenTwoVectors(birds->physics[i].position, birds->destPos[i]);
+ UpdatePhysics(&birds->physics[i], dir);
+ UpdateSpriteDestRec(&birds->sprite[i], &birds->physics[i].position);
+ float rotation = Vector2ToRotation(dir);
+ UpdateSpriteRotation(&birds->sprite[i], rotation + 45.0f);
+ UpdateAnimation(&birds->animation[i], GetFrameTime());
+ UpdateSpriteSourceRec(&birds->sprite[i], &(Vector2){birds->sprite[i].frameSize.x * birds->animation[i].currentFrame, birds->sprite[i].frameSize.y});
+ }
+}
+
+void RenderBirds(Birds *birds){
+
+ for (int i = 0; i < birds->count; i++)
+ {
+ RenderSprite(&birds->sprite[i]);
+ }
+
+}
+
diff --git a/src/appGameEnemies.c b/src/appGameEnemies.c
new file mode 100644
index 0000000..91c436b
--- /dev/null
+++ b/src/appGameEnemies.c
@@ -0,0 +1,81 @@
+#include "app.h"
+
+const TextureAsset enemiesTextureAssets[ENEMIES_TEX_COUNT] = {
+ {"assets/ship_start.png", 16.0f, 16.0f, 90.0f}};
+
+Enemies CreateEnemies(void) {
+ Enemies enemies = {.count = MAX_ENEMIES};
+ TextureAsset textureAsset = enemiesTextureAssets[BOAT];
+ Texture2D texture = LoadTexture(textureAsset.path);
+ float frameWidth = textureAsset.frameWidth;
+ float rotation = textureAsset.rotation;
+
+ for (int i = 0; i < enemies.count; i++) {
+ enemies.sprite[i] = (Sprite){
+ .texture = texture,
+ .frameSize = {frameWidth, frameWidth},
+ .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
+ .destRec = {GetScreenWidth() / 2, 0.0f, frameWidth, frameWidth},
+ .origin = {frameWidth / 2, frameWidth / 2},
+ .rotation = rotation,
+ .color = WHITE};
+
+ enemies.animation[i] = (Animation){.state = 1,
+ .currentFrame = 0,
+ .maxFrame = 2,
+ .framesCounter = 0,
+ .framesSpeed = 2.0f,
+ .animTimer = 0.0f};
+
+ Rectangle cameraRec = GetCameraRectangle();
+
+ enemies.physics[i] =
+ (Physics){.position = GetPositionOutsideRectangle(cameraRec, 100, 1000),
+ .direction = (Vector2){0.0f, 0.0f},
+ .speed = 5.0f};
+
+ enemies.arrived[i] = true;
+ enemies.destPos[i] = (Vector2){0.0f, 0.0f};
+ }
+
+ return enemies;
+}
+
+void UpdateEnemies(Enemies *enemies) {
+ Camera2D *camera = GetCamera();
+ Rectangle cameraRec = GetCameraRectangle();
+
+ for (int i = 0; i < enemies->count; i++) {
+ if (enemies->arrived[i]) {
+ enemies->destPos[i] = GetPositionOutsideRectangle(cameraRec, 100, 1000);
+ enemies->arrived[i] = false;
+ }
+ if (CheckCollisionPointCircle(enemies->physics[i].position,
+ enemies->destPos[i], 10.0F)) {
+ enemies->arrived[i] = true;
+ }
+ if (GetDistanceBetweenTwoVectors(enemies->physics[i].position,
+ camera->target) > 1000) {
+ enemies->physics[i].position =
+ GetPositionOutsideRectangle(cameraRec, 100, 1000);
+ }
+ Vector2 dir = GetDirectionBetweenTwoVectors(enemies->physics[i].position,
+ enemies->destPos[i]);
+ UpdatePhysics(&enemies->physics[i], dir);
+ UpdateSpriteDestRec(&enemies->sprite[i], &enemies->physics[i].position);
+ float rotation = Vector2ToRotation(dir);
+ UpdateSpriteRotation(&enemies->sprite[i], rotation + 90.0f);
+ UpdateAnimation(&enemies->animation[i], GetFrameTime());
+ UpdateSpriteSourceRec(&enemies->sprite[i],
+ &(Vector2){enemies->sprite[i].frameSize.x *
+ enemies->animation[i].currentFrame,
+ enemies->sprite[i].frameSize.y});
+ }
+}
+
+void RenderEnemies(Enemies *enemies) {
+
+ for (int i = 0; i < enemies->count; i++) {
+ RenderSprite(&enemies->sprite[i]);
+ }
+}
diff --git a/src/appGameFloor.c b/src/appGameFloor.c
new file mode 100644
index 0000000..d8a7e60
--- /dev/null
+++ b/src/appGameFloor.c
@@ -0,0 +1,91 @@
+#include "app.h"
+
+Floor CreateFloor(void)
+{
+
+ Texture2D base = LoadTexture("assets/water_base.png");
+ Texture2D caustic = LoadTexture("assets/water_caustics.png");
+ Texture2D causticHighlight = LoadTexture("assets/water_caustics_highlights.png");
+ Texture2D noise = LoadTexture("assets/water_noise.png");
+ Texture2D cloud = LoadTexture("assets/water_cloudnoise.png");
+ Texture2D voronoise = LoadTexture("assets/water_voronoise.png");
+
+ float textureWidth = 64.0f;
+
+ Floor floor = {
+ .sprite = {
+ .texture = base,
+ .frameSize = {textureWidth, textureWidth},
+ .sourceRec = {0.0f, 0.0f, textureWidth, textureWidth},
+ .destRec = {0.0f, 0.0f, textureWidth, textureWidth},
+ .origin = {textureWidth / 2, textureWidth / 2},
+ .rotation = 0.0f,
+ .color = WHITE},
+ .bounds = {0},
+ .shader = LoadShader("shaders/water.vs", "shaders/water.fs"),
+ .time = 0.0f
+ };
+
+ float worldTileSize = 128.0f;
+ float textureSize = 32.0f;
+
+ floor.sprite.frameSize = (Vector2){worldTileSize, worldTileSize};
+ floor.sprite.sourceRec = (Rectangle){0, 0, textureSize, textureSize};
+ floor.sprite.destRec = (Rectangle){0, 0, worldTileSize, worldTileSize};
+ floor.sprite.origin = (Vector2){0, 0};
+
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "causticTexture"), caustic);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "causticHighlightTexture"), causticHighlight);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "causticNoiseTexture"), noise);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "causticFadeNoiseTexture"), cloud);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "specularNoiseTexture"), voronoise);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "specularMovementLeftNoiseTexture"), voronoise);
+ SetShaderValueTexture(floor.shader, GetShaderLocation(floor.shader, "specularMovementRightNoiseTexture"), cloud);
+
+ float aspect = (float)GetScreenHeight() / (float)GetScreenWidth();
+ float pixelization = 2048.0f;
+ int aspectLoc = GetShaderLocation(floor.shader, "aspectRatio");
+ int pixelLoc = GetShaderLocation(floor.shader, "pixelization");
+ SetShaderValue(floor.shader, aspectLoc, &aspect, SHADER_UNIFORM_FLOAT);
+ SetShaderValue(floor.shader, pixelLoc, &pixelization, SHADER_UNIFORM_FLOAT);
+
+ floor.sprite.texture = base;
+
+ return floor;
+}
+
+void UpdateFloor(Floor *floor)
+{
+ Camera2D *camera = GetCamera();
+ floor->bounds.x = (int)((camera->target.x - (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) - 1;
+ floor->bounds.width = (int)((camera->target.x + (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) + 1;
+ floor->bounds.y = (int)((camera->target.y - (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) - 1;
+ floor->bounds.height = (int)((camera->target.y + (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) + 1;
+
+ floor->time += GetFrameTime();
+ int timeLoc = GetShaderLocation(floor->shader, "time");
+ SetShaderValue(floor->shader, timeLoc, &floor->time, SHADER_UNIFORM_FLOAT);
+}
+
+void RenderFloor(Floor *floor)
+{
+ BeginShaderMode(floor->shader);
+
+ for (int y = (int)floor->bounds.y; y <= (int)floor->bounds.height; y++)
+ {
+ for (int x = (int)floor->bounds.x; x <= (int)floor->bounds.width; x++)
+ {
+ Vector2 floorPosition = {x * floor->sprite.frameSize.x, y * floor->sprite.frameSize.y};
+ UpdateSpriteDestRec(&floor->sprite, &floorPosition);
+ RenderSprite(&floor->sprite);
+ }
+ }
+
+ EndShaderMode();
+}
+
+void UnloadFloor(Floor *floor)
+{
+ UnloadShader(floor->shader);
+}
+
diff --git a/src/appGameIslands.c b/src/appGameIslands.c
new file mode 100644
index 0000000..172b21f
--- /dev/null
+++ b/src/appGameIslands.c
@@ -0,0 +1,39 @@
+#include "app.h"
+
+const TextureAsset islandsTextureAssets[ISLANDS_TEX_COUNT] = {
+ {"assets/island.png", 16.0f, 16.0f, 0.0f}};
+
+Islands CreateIslands(void) {
+ TextureAsset islandAsset = islandsTextureAssets[ISLAND];
+ Texture2D texture = LoadTexture(islandAsset.path);
+ float frameWidth = islandAsset.frameWidth;
+ float rotation = islandAsset.rotation;
+
+ Sprite islandSprite = {
+ .texture = texture,
+ .frameSize = {frameWidth, frameWidth},
+ .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
+ .destRec = {GetScreenWidth() / 2, 0.0f, frameWidth, frameWidth},
+ .origin = {frameWidth / 2, frameWidth / 2},
+ .rotation = rotation,
+ .color = WHITE};
+
+ Physics islandPhysics = {.position = (Vector2){-100.0f, 0.0f},
+ .direction = (Vector2){0.0f, 0.0f},
+ .speed = 10.0f};
+
+ return (Islands){.sprite = islandSprite, .physics = islandPhysics};
+}
+
+void UpdateIslands(Islands *islands) {
+
+ UpdatePhysics(&islands->physics, (Vector2){0.0f, 0.0f});
+ UpdateSpriteDestRec(&islands->sprite, &islands->physics.position);
+ UpdateAnimation(&islands->animation, GetFrameTime());
+ UpdateSpriteSourceRec(
+ &islands->sprite,
+ &(Vector2){islands->sprite.frameSize.x * islands->animation.currentFrame,
+ islands->sprite.frameSize.y});
+}
+
+void RenderIslands(Islands *islands) { RenderSprite(&islands->sprite); }
diff --git a/src/appGamePlayer.c b/src/appGamePlayer.c
new file mode 100644
index 0000000..93608cb
--- /dev/null
+++ b/src/appGamePlayer.c
@@ -0,0 +1,128 @@
+#include "app.h"
+
+const TextureAsset playerTextureAssets[PLAYER_TEX_COUNT] = {
+ {"assets/ship_start.png", 16.0f, 16.0f, 0.0f}
+};
+
+float playerSpeeds[SPEED_COUNT] = {
+ 0.0f,
+ 5.0f,
+ 10.0f
+};
+
+playerSpeedID GetPlayerSpeedID(float speed) {
+ for (int i = 0; i < SPEED_COUNT; i++) {
+ if (playerSpeeds[i] == speed) {
+ return (playerSpeedID)i;
+ }
+ }
+ return ANCHOR;
+}
+
+Player* GetPlayer(void)
+{
+ static Player player;
+ return &player;
+}
+
+void CreatePlayer(void)
+{
+ TextureAsset startShipAsset = playerTextureAssets[START_SHIP];
+
+ Texture2D texture = LoadTexture(startShipAsset.path);
+ float frameWidth = startShipAsset.frameWidth;
+ float rotation = startShipAsset.rotation;
+
+
+ Sprite playerSprite = {
+ .texture = texture,
+ .frameSize = {frameWidth, frameWidth},
+ .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth},
+ .destRec = {0.0f, 0.0f, frameWidth, frameWidth},
+ .origin = {frameWidth / 2, frameWidth / 2},
+ .rotation = rotation,
+ .color = WHITE
+ };
+
+ Animation playerAnimation = {
+ .state = 1,
+ .currentFrame = 0,
+ .maxFrame = 3,
+ .framesCounter = 0,
+ .framesSpeed = 0.0f,
+ .animTimer = 0.0f
+ };
+
+
+ Physics playerPhysics = {
+ .position = (Vector2){0.0f,0.0f},
+ .direction = (Vector2){0.0f, 0.0f},
+ .speed = playerSpeeds[ANCHOR]
+ };
+
+ Player* player = GetPlayer();
+ *player = (Player){
+ .sprite = playerSprite,
+ .animation = playerAnimation,
+ .physics = playerPhysics,
+ .rotation = rotation
+ };
+
+}
+
+void UpdatePlayer(void)
+{
+ Player* player = GetPlayer();
+ if(IsKeyPressed(KEY_W) || IsKeyPressed(KEY_UP)){
+ if(player->physics.speed < playerSpeeds[FAST_AHEAD]){
+ if(player->physics.speed < playerSpeeds[SLOW_AHEAD]){
+ player->physics.speed = playerSpeeds[SLOW_AHEAD];
+ }
+ else {
+ player->physics.speed = playerSpeeds[FAST_AHEAD];
+ }
+ }
+ }
+
+ if(IsKeyPressed(KEY_S) || IsKeyPressed(KEY_DOWN)){
+ if(player->physics.speed > playerSpeeds[ANCHOR]){
+ if(player->physics.speed > playerSpeeds[SLOW_AHEAD]){
+ player->physics.speed = playerSpeeds[SLOW_AHEAD];
+ }
+ else {
+ player->physics.speed = playerSpeeds[ANCHOR];
+
+ }
+ }
+ }
+
+ player->sprite.sourceRec.x = 16.0f * GetPlayerSpeedID(player->physics.speed);
+
+
+ float rotationSpeed = 50.0f;
+
+ if (player->physics.speed > playerSpeeds[ANCHOR]){
+
+ if (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT)) {
+ player->rotation -= rotationSpeed * GetFrameTime();
+ }
+
+ if (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT)) {
+ player->rotation += rotationSpeed * GetFrameTime();
+ }
+ }
+
+ player->sprite.rotation = player->rotation;
+
+ Vector2 dir = RotationToVector2(player->rotation - 90.0f);
+
+
+ UpdatePhysics(&player->physics, dir);
+ UpdateSpriteDestRec(&player->sprite, &player->physics.position);
+}
+
+void RenderPlayer(void){
+ Player* player = GetPlayer();
+ RenderSprite(&player->sprite);
+}
+
diff --git a/src/appGameProjectiles.c b/src/appGameProjectiles.c
new file mode 100644
index 0000000..c71b472
--- /dev/null
+++ b/src/appGameProjectiles.c
@@ -0,0 +1,71 @@
+#include "app.h"
+#include
+#include
+
+Projectiles CreateProjectiles(void) {
+ Projectiles projectiles = {.count = MAX_PROJECTILES};
+
+ for (int i = 0; i < projectiles.count; i++) {
+ projectiles.physics[i] =
+ (Physics){(Vector2){0.0f, 0.0f}, (Vector2){0.0f, 0.0f},
+ (Vector2){0.0f, 0.0f}, 50.0f};
+ projectiles.radius[i] = 1.0f;
+ projectiles.active[i] = false;
+ projectiles.color[i] = GRAY;
+ }
+
+ return projectiles;
+}
+
+void UpdateProjectiles(Projectiles *projectiles) {
+
+ static float lastShotTime = 0.0f;
+ const float reloadTime = 1.0f;
+ float currentTime = GetTime();
+
+ if (IsKeyDown(KEY_Q) && (currentTime - lastShotTime >= reloadTime)) {
+ for (int i = 0; i < projectiles->count; i++) {
+ if (!projectiles->active[i]) {
+ projectiles->active[i] = true;
+ Player *player = GetPlayer();
+ projectiles->physics[i].position = player->physics.position;
+ projectiles->physics[i].direction =
+ Vector2Rotate(player->physics.direction, -90.0f * DEG2RAD);
+ lastShotTime = currentTime;
+ break;
+ }
+ }
+ }
+
+ if (IsKeyDown(KEY_E) && (currentTime - lastShotTime >= reloadTime)) {
+ for (int i = 0; i < projectiles->count; i++) {
+ if (!projectiles->active[i]) {
+ projectiles->active[i] = true;
+ Player *player = GetPlayer();
+ projectiles->physics[i].position = player->physics.position;
+ projectiles->physics[i].direction =
+ Vector2Rotate(player->physics.direction, 90.0f * DEG2RAD);
+ lastShotTime = currentTime;
+ break;
+ }
+ }
+ }
+
+ for (int i = 0; i < projectiles->count; i++) {
+ if (projectiles->active[i]) {
+ UpdatePhysics(&projectiles->physics[i],
+ projectiles->physics[i].direction);
+ }
+ }
+}
+
+void RenderProjectiles(Projectiles *projectiles) {
+ for (int i = 0; i < projectiles->count; i++) {
+ printf("Projectile Active: %d", projectiles->active[i]);
+ if (projectiles->active[i] == true) {
+ DrawCircle(projectiles->physics[i].position.x,
+ projectiles->physics[i].position.y, projectiles->radius[i],
+ projectiles->color[i]);
+ }
+ }
+}
diff --git a/src/appGameShip.c b/src/appGameShip.c
new file mode 100644
index 0000000..0487067
--- /dev/null
+++ b/src/appGameShip.c
@@ -0,0 +1,7 @@
+#include "app.h"
+
+Ship InitShip(int shipID) {
+ Config config;
+ InitConfig(&config, "config/ships.ini");
+ Ship ship;
+}
diff --git a/include/logo.h b/src/appLogo.c
similarity index 91%
rename from include/logo.h
rename to src/appLogo.c
index 6b59944..9e2e653 100644
--- a/include/logo.h
+++ b/src/appLogo.c
@@ -1,18 +1,4 @@
-#ifndef LOGO_H
-#define LOGO_H
-
-typedef struct {
- int frameCounter;
- int positionX;
- int positionY;
- int lettersCount;
- int topSideRecWidth;
- int leftSideRecHeight;
- int bottomSideRecWidth;
- int rightSideRecHeight;
- int state;
- float alpha;
-} LogoState;
+#include "app.h"
void InitLogo(LogoState *l) {
SetTargetFPS(60);
@@ -114,4 +100,3 @@ void RenderLogo(const LogoState *l, Flags *flags) {
EndDrawing();
}
-#endif // LOGO_H
diff --git a/include/menu.h b/src/appMenu.c
similarity index 71%
rename from include/menu.h
rename to src/appMenu.c
index ed60cdc..2bcc27c 100644
--- a/include/menu.h
+++ b/src/appMenu.c
@@ -1,16 +1,4 @@
-#ifndef MENU_H
-#define MENU_H
-
-#include
-#include
-#include
-
-typedef struct
-{
- MenuView menuView;
- MenuMain menuMain;
- MenuSettings menuSettings;
-} MenuState;
+#include "app.h"
void InitMenu(MenuState *m)
{
@@ -30,7 +18,7 @@ void UpdateMenu(MenuState *m, State *state, Flags *flags)
case SETTINGS:
{
- UpdateMenuSettings(&m->menuSettings, &m->menuView, flags);
+ UpdateMenuSettings(&m->menuSettings, &m->menuView, state, flags);
}break;
default: break;
}
@@ -59,4 +47,3 @@ void CleanupMenu(MenuState *m)
CleanupMenuMain(&m->menuMain);
}
-#endif // MENU_H
diff --git a/include/menumain.h b/src/appMenuMain.c
similarity index 90%
rename from include/menumain.h
rename to src/appMenuMain.c
index 0977104..f6949d6 100644
--- a/include/menumain.h
+++ b/src/appMenuMain.c
@@ -1,32 +1,23 @@
-#ifndef MENUMAIN_H
-#define MENUMAIN_H
-
-#include
-#include
-#include
-#include
-#include
-#include "menuassets.h"
-#include "menuview.h"
-#include "colors.h"
-#include "background.h"
+#include "app.h"
-typedef struct {
- Assets assets;
- Mouse mouse;
- Texture2D textures[MENU_TEX_COUNT];
- Sound sounds[MENU_SOUND_COUNT];
- Soundtrack soundtracks[MENU_SOUNDTRACK_COUNT];
- ImageElement board;
- ImageButton playButton;
- ImageButton quitButton;
- ImageButton settingsButton;
- int menuScale;
- Background background;
- Background midground;
- Background foreground;
-} MenuMain;
+const TextureAsset menuTextureAssets[MENU_TEX_COUNT] = {
+ {"assets/mouse.png", 16.0f, 16.0f, 0.0f},
+ {"assets/buttons.png", 288.0f/3, 96.0f/3, 0.0f},
+ {"assets/menu_board.png", 128.0f, 144.0f, 0.0f},
+ {"assets/cloud_background.png", 576.0f, 324.0f, 0.0f},
+ {"assets/cloud_midground.png", 576.0f, 324.0f, 0.0f},
+ {"assets/cloud_foreground.png", 576.0f, 324.0f, 0.0f}};
+
+
+const SoundtrackAsset menuSoundtrackAssets[MENU_SOUNDTRACK_COUNT] = {
+ {"assets/merrygoround.wav"}};
+
+
+const SoundAsset menuSoundAssets[MENU_SOUND_COUNT] = {
+ {"assets/button_hover.wav"},
+ {"assets/button_click.wav"}};
+
void InitMenuMain(MenuMain *m){
@@ -215,4 +206,3 @@ void CleanupMenuMain(MenuMain *m){
}
}
-#endif //MENUMAIN_H
diff --git a/include/background.h b/src/appMenuMainBackground.c
similarity index 88%
rename from include/background.h
rename to src/appMenuMainBackground.c
index 9d335b8..c7bbbe0 100644
--- a/include/background.h
+++ b/src/appMenuMainBackground.c
@@ -1,15 +1,4 @@
-#ifndef BACKGROUND_H
-#define BACKGROUND_H
-#include
-#include
-
-typedef struct {
- Sprite sprite;
- float scrolling;
- float scale;
- float scrollSpeed;
- Vector2 pos;
-} Background;
+#include "app.h"
void InitBackground(float scrollSpeed, Background *bg, Texture2D *texture, const TextureAsset *backgroundAsset){
bg->scrolling = 0.0f;
@@ -67,4 +56,3 @@ void RenderBackground(Background *bg){
}
-#endif // BACKGROUND_H
diff --git a/include/menusettings.h b/src/appMenuSettings.c
similarity index 65%
rename from include/menusettings.h
rename to src/appMenuSettings.c
index bb6a949..c7ea923 100644
--- a/include/menusettings.h
+++ b/src/appMenuSettings.c
@@ -1,17 +1,4 @@
-#ifndef SETTINGS_H
-#define SETTINGS_H
-
-#include
-#include
-#include
-#include "menuview.h"
-
-typedef struct
-{
- Button showFPS;
- Button soundtrackOn;
-
-} MenuSettings;
+#include "app.h"
void InitMenuSettings(MenuSettings *s)
{
@@ -23,20 +10,25 @@ void InitMenuSettings(MenuSettings *s)
int standardSpacing = standardButtonDimensions.y / 2;
Vector2 button1Pos = {windowCenter.x, windowCenter.y};
- Vector2 button2Pos = {windowCenter.x, windowCenter.y + standardButtonDimensions.y + standardSpacing};
+ Vector2 button2Pos = {windowCenter.x, windowCenter.y + standardButtonDimensions.y * 1 + standardSpacing * 1};
+ Vector2 button3Pos = {windowCenter.x, windowCenter.y + standardButtonDimensions.y * 2 + standardSpacing * 2};
s->showFPS = initButton("showFPS", standardButtonDimensions, button1Pos);
- s->soundtrackOn = initButton("soundtrackOn", standardButtonDimensions, button2Pos);
+ s->limitFPS = initButton("limitFPS", standardButtonDimensions, button2Pos);
+ s->soundtrackOn = initButton("soundtrackOn", standardButtonDimensions, button3Pos);
}
-void UpdateMenuSettings(MenuSettings *s, MenuView *menuView,Flags *flags)
+void UpdateMenuSettings(MenuSettings *s, MenuView *menuView, State* state, Flags *flags)
{
- ShowCursor();
if(isButtonClicked(&s->showFPS)){
flags->showFPS = !flags->showFPS;
}
+ if(isButtonClicked(&s->limitFPS)){
+ flags->limitFPS = !flags->limitFPS;
+ }
+
if(isButtonClicked(&s->soundtrackOn)){
flags->soundtrackOn = !flags->soundtrackOn;
}
@@ -45,6 +37,10 @@ void UpdateMenuSettings(MenuSettings *s, MenuView *menuView,Flags *flags)
*menuView = MAIN;
}
+ if (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE)){
+ state->running = false;
+ }
+
}
@@ -54,13 +50,13 @@ void RenderMenuSettings(MenuSettings *s, Flags *flags)
ClearBackground(BLACK);
renderButton(&s->showFPS);
+ renderButton(&s->limitFPS);
+ renderButton(&s->soundtrackOn);
if (flags->showFPS){
DrawFPS(10,10);
}
- renderButton(&s->soundtrackOn);
-
EndDrawing();
}
@@ -69,4 +65,3 @@ void ClenupMenuSettings(MenuSettings *s){
}
-#endif // SETTINGS_H
diff --git a/src/appState.c b/src/appState.c
new file mode 100644
index 0000000..b5114f8
--- /dev/null
+++ b/src/appState.c
@@ -0,0 +1,17 @@
+#include "app.h"
+
+void OnEscapeChangeView(App *app, View view)
+{
+ if (IsKeyPressed(KEY_ESCAPE))
+ {
+ app->state.currentView = view;
+ }
+}
+
+void OnWindowClosedStoppApp(App *app)
+{
+ if (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))
+ {
+ app->state.running = false;
+ }
+}
diff --git a/external/engine/animation.h b/src/engineAnimation.c
similarity index 61%
rename from external/engine/animation.h
rename to src/engineAnimation.c
index b2a85a9..cf6cd30 100644
--- a/external/engine/animation.h
+++ b/src/engineAnimation.c
@@ -1,14 +1,4 @@
-#ifndef ANIMATION_H
-#define ANIMATION_H
-
-typedef struct {
- int state;
- int currentFrame;
- int maxFrame;
- int framesCounter;
- int framesSpeed;
- float animTimer;
-} Animation;
+#include "engine.h"
void UpdateAnimation(Animation *animation, float deltaTime) {
animation->animTimer += deltaTime;
@@ -25,5 +15,3 @@ void UpdateAnimation(Animation *animation, float deltaTime) {
animation->currentFrame = 0;
}
}
-
-#endif // ANIMATION_H
diff --git a/external/engine/array.h b/src/engineArray.c
similarity index 82%
rename from external/engine/array.h
rename to src/engineArray.c
index 3fb9465..fb51f39 100644
--- a/external/engine/array.h
+++ b/src/engineArray.c
@@ -1,13 +1,7 @@
-#ifndef ARRAY_H
-#define ARRAY_H
+#include "engine.h"
-typedef struct {
- void** elements;
- unsigned int count;
- unsigned int capacity;
-} Array;
-
-Array* CreateArray(unsigned int initCapacity){
+Array* CreateArray(unsigned int initCapacity)
+{
Array* array = malloc(sizeof(Array));
if (!array) return NULL;
@@ -22,7 +16,8 @@ Array* CreateArray(unsigned int initCapacity){
return array;
}
-int AddElementToArray(Array* array, void* element){
+int AddElementToArray(Array* array, void* element)
+{
if(array->count >= array->capacity) {
unsigned int newCapacity = array->capacity * 2;
void** newElements = realloc(array->elements, sizeof(void*) * newCapacity);
@@ -48,7 +43,8 @@ int AddElementToArray(Array* array, void* element){
// }
// SWAP AND POP REMOVE
-int RemoveElementFromArray(Array* array, unsigned int index) {
+int RemoveElementFromArray(Array* array, unsigned int index)
+{
if (index >= array->count) return 0;
array->elements[index] = array->elements[array->count - 1];
@@ -58,7 +54,8 @@ int RemoveElementFromArray(Array* array, unsigned int index) {
return 1;
}
-void* GetRandomElementFromArray(Array* array){
+void* GetRandomElementFromArray(Array* array)
+{
if (array == NULL || array->elements == NULL || array->count == 0) {
return NULL;
}
@@ -82,7 +79,8 @@ void RenderArray(Array* array, void (*renderFunc)(void*))
}
}
-void FreeArray(Array** array) {
+void FreeArray(Array** array)
+{
if (!array || !*array) return;
free((*array)->elements);
@@ -92,5 +90,3 @@ void FreeArray(Array** array) {
*array = NULL;
}
-
-#endif // ARRAY_H
diff --git a/src/engineCamera.c b/src/engineCamera.c
new file mode 100644
index 0000000..eb93876
--- /dev/null
+++ b/src/engineCamera.c
@@ -0,0 +1,68 @@
+#include "engine.h"
+
+Camera2D* GetCamera(void){
+ static Camera2D camera;
+ return &camera;
+}
+
+Rectangle GetCameraRectangle(void)
+{
+ Camera2D *camera = GetCamera();
+ float screenWidth = GetScreenWidth();
+ float screenHeight = GetScreenHeight();
+
+ float viewWidth = 0.0f;
+ float viewHeight = 0.0f;
+ float viewX = 0.0f;
+ float viewY = 0.0f;
+ if (camera->zoom < 0.5f)
+ {
+ viewWidth = screenWidth;
+ viewHeight = screenHeight;
+
+ viewX = camera->target.x - camera->offset.x;
+ viewY = camera->target.y - camera->offset.y;
+ } else
+ {
+ viewWidth = screenWidth / camera->zoom;
+ viewHeight = screenHeight / camera->zoom;
+
+ viewX = camera->target.x - (camera->offset.x / camera->zoom);
+ viewY = camera->target.y - (camera->offset.y / camera->zoom);
+ }
+ return (Rectangle){
+ .x = viewX,
+ .y = viewY,
+ .width = viewWidth,
+ .height = viewHeight
+ };
+}
+
+void CreateCamera(Vector2 playerPosition, float initZoom){
+ Camera2D* camera = GetCamera();
+ int windowWidth = GetScreenWidth();
+ int windowHeight = GetScreenHeight();
+ *camera = (Camera2D){
+ .offset = (Vector2){windowWidth / 2.0f, windowHeight / 2.0f},
+ .target = playerPosition,
+ .rotation = 0.0f,
+ .zoom = initZoom
+ };
+}
+
+void UpdateCameraTarget(Vector2 *position, const float smoothness){
+ Camera2D* camera = GetCamera();
+ camera->target = Vector2Lerp(camera->target, *position, smoothness * GetFrameTime());
+}
+
+void UpdateCameraZoom(const float *scaleFactor, const float *minZoom, const float *maxZoom){
+ Camera2D *camera = GetCamera();
+ float targetZoom = Clamp(camera->zoom * *scaleFactor, *minZoom, *maxZoom);
+ camera->zoom = Lerp(camera->zoom, targetZoom, 0.1f);
+}
+
+void UpdateCamera2D(Vector2* position, Mouse* mouse){
+ UpdateCameraTarget(position, 5.0f);
+ UpdateCameraZoom(&mouse->scaleFactor, &mouse->minZoom, &mouse->maxZoom);
+}
+
diff --git a/external/engine/config.h b/src/engineConfig.c
similarity index 91%
rename from external/engine/config.h
rename to src/engineConfig.c
index 0d6eeca..76f7ce4 100644
--- a/external/engine/config.h
+++ b/src/engineConfig.c
@@ -1,16 +1,7 @@
-#ifndef CONFIG_H
-#define CONFIG_H
-
#define RINI_IMPLEMENTATION
#define RINI_VALUE_DELIMITER '='
-#include
-#include
-
-typedef struct {
- char *path;
- rini_config rini;
-} Config;
+#include "engine.h"
void InitConfig(Config *config, const char* path) {
config->rini = rini_load_config(path);
@@ -63,4 +54,3 @@ void CleanUpConfig(Config *config) {
rini_unload_config(&config->rini);
}
-#endif // CONFIG_H
diff --git a/src/engineFont.c b/src/engineFont.c
new file mode 100644
index 0000000..c7acecf
--- /dev/null
+++ b/src/engineFont.c
@@ -0,0 +1,11 @@
+#include "engine.h"
+
+void InitFont(Font *font, const char* path){
+ *font = LoadFont(path);
+ SetTextureFilter(font->texture, TEXTURE_FILTER_POINT);
+}
+
+void CleanupFont(Font *font){
+ UnloadFont(*font);
+}
+
diff --git a/external/engine/gamegui.h b/src/engineGamegui.c
similarity index 85%
rename from external/engine/gamegui.h
rename to src/engineGamegui.c
index 492c485..e1e4b29 100644
--- a/external/engine/gamegui.h
+++ b/src/engineGamegui.c
@@ -1,29 +1,4 @@
-#ifndef GAMEGUI_H
-#define GAMEGUI_H
-
-#include "sprite.h"
-#include
-
-typedef enum {
- NOT_CLICKED,
- HOVER,
- CLICKED
-} ButtonState;
-
-typedef struct
-{
- Sprite sprite;
- Vector2 notClicked;
- Vector2 hover;
- Vector2 clicked;
- bool isHovered;
- bool isClicked;
-} ImageButton;
-
-typedef struct
-{
- Sprite sprite;
-} ImageElement;
+#include "engine.h"
ImageButton CreateImageButton(ButtonState state, Texture2D *texture, const TextureAsset *asset, Vector2 *source, Vector2 *clicked, Vector2 *hover, Rectangle *destRec){
return (ImageButton){
@@ -95,5 +70,3 @@ void renderImageElement(ImageElement *e){
RenderSprite(&e->sprite);
}
-
-#endif // GAMEGUI_H
diff --git a/external/engine/gui.h b/src/engineGui.c
similarity index 78%
rename from external/engine/gui.h
rename to src/engineGui.c
index cd73a3a..6b9454e 100644
--- a/external/engine/gui.h
+++ b/src/engineGui.c
@@ -1,14 +1,6 @@
-#ifndef GUI_H
-#define GUI_H
-
#define RAYGUI_IMPLEMENTATION
-#include
-typedef struct
-{
- Rectangle rec;
- char *text;
-} Button;
+#include "engine.h"
Button initButton(char *text, Vector2 dimensions, Vector2 position)
{
@@ -29,4 +21,3 @@ void renderButton(Button *b)
GuiButton(b->rec, b->text);
}
-#endif // GUI_H
diff --git a/external/engine/input.h b/src/engineInput.c
similarity index 78%
rename from external/engine/input.h
rename to src/engineInput.c
index cf0be60..ebd4009 100644
--- a/external/engine/input.h
+++ b/src/engineInput.c
@@ -1,20 +1,4 @@
-#ifndef INPUT_H
-#define INPUT_H
-
-#include
-
-typedef struct {
- Vector2 screenPosition;
- Vector2 worldPosition;
- float zoomSpeed;
- float minZoom;
- float maxZoom;
- float scaleFactor;
- float wheelMove;
- bool leftButton;
- bool rightButton;
- Texture2D cursorTexture;
-} Mouse;
+#include "engine.h"
Mouse CreateMouse(float zoomSpeed, float minZoom, float maxZoom, Texture2D *texture){
HideCursor();
@@ -31,8 +15,8 @@ void UpdateMouseScreen(Mouse *mouse){
}
-void UpdateMouse(Mouse *mouse, Camera2D *camera) {
-
+void UpdateMouse(Mouse *mouse) {
+ Camera2D* camera = GetCamera();
Vector2 pos = GetMousePosition();
mouse->screenPosition = pos;
mouse->worldPosition = GetScreenToWorld2D(pos, *camera);
@@ -57,5 +41,3 @@ Vector2 GetDirectionVector(void){
if (Vector2Length(vector) > 0.0f) {vector = Vector2Normalize(vector); }
return vector;
}
-
-#endif //INPUT_H
diff --git a/external/engine/object.h b/src/engineObject.c
similarity index 93%
rename from external/engine/object.h
rename to src/engineObject.c
index 73d5a03..3dbe7eb 100644
--- a/external/engine/object.h
+++ b/src/engineObject.c
@@ -1,19 +1,4 @@
-#ifndef OBJECT_H
-#define OBJECT_H
-#include "sprite.h"
-#include "vector.h"
-
-
-typedef struct {
- Sprite sprite;
- Vector2 position;
-} Object;
-
-typedef struct {
- Object *data;
- const Object *prototype;
- size_t count;
-} ObjectArray;
+#include "engine.h"
ObjectArray CreateObjectArray(const Object *prototype, const size_t count) {
ObjectArray objects = {0};
@@ -126,4 +111,3 @@ void RenderObjectArray(const ObjectArray *objects){
}
}
-#endif // OBJECT_H
diff --git a/external/engine/physics.h b/src/enginePhysics.c
similarity index 68%
rename from external/engine/physics.h
rename to src/enginePhysics.c
index ff7824c..20873b8 100644
--- a/external/engine/physics.h
+++ b/src/enginePhysics.c
@@ -1,15 +1,18 @@
-#ifndef PHYSICS_H
-#define PHYSICS_H
+#include "engine.h"
-#include
-
-typedef struct
+Vector2 GetDirectionBetweenTwoVectors(Vector2 vec1, Vector2 vec2)
{
- Vector2 position;
- Vector2 direction;
- Vector2 velocity;
- float speed;
-} Physics;
+ Vector2 dir = {vec2.x - vec1.x, vec2.y - vec1.y};
+ dir = Vector2Normalize(dir);
+ return dir;
+}
+
+float GetDistanceBetweenTwoVectors(Vector2 vec1, Vector2 vec2)
+{
+ float dx = vec1.x - vec2.x;
+ float dy = vec1.y - vec2.y;
+ return sqrtf(dx * dx + dy * dy);
+}
void UpdatePhysicsDirection(Vector2 *direction, Vector2 vector)
{
@@ -38,4 +41,3 @@ void UpdatePhysics(Physics *physics, Vector2 direction)
UpdatePhysicsPosition(&physics->position, &physics->velocity);
}
-#endif // PHYSICS_H
diff --git a/external/engine/postfx.h b/src/enginePostfx.c
similarity index 87%
rename from external/engine/postfx.h
rename to src/enginePostfx.c
index fa3aad7..04776aa 100644
--- a/external/engine/postfx.h
+++ b/src/enginePostfx.c
@@ -1,12 +1,4 @@
-#ifndef POSTFX_H
-#define POSTFX_H
-
-typedef struct {
- Shader shader;
- int resolutionLoc;
- int strengthLoc;
- float strength;
-} PostProcessing;
+#include "engine.h"
PostProcessing CreatePostFX(const char* shaderPath){
PostProcessing postFX = {0};
@@ -17,7 +9,7 @@ PostProcessing CreatePostFX(const char* shaderPath){
return postFX;
}
- postFX.strength = 0.3f;
+ postFX.strength = 0.0f;
postFX.resolutionLoc = GetShaderLocation(postFX.shader, "resolution");
postFX.strengthLoc = GetShaderLocation(postFX.shader, "strength");
Vector2 resolution = { (float)GetScreenWidth(), (float)GetScreenHeight() };
@@ -42,5 +34,3 @@ void UnloadPostFX(PostProcessing *postFX){
if (postFX->shader.id == 0) return;
UnloadShader(postFX->shader);
}
-
-#endif // POSTFX_H
diff --git a/src/engineRectangle.c b/src/engineRectangle.c
new file mode 100644
index 0000000..d581cb7
--- /dev/null
+++ b/src/engineRectangle.c
@@ -0,0 +1,40 @@
+#include "engine.h"
+
+Vector2 GetPositionInsideRectangle(Rectangle rec)
+{
+ int randX = GetRandomValue(rec.x, rec.width);
+ int randY = GetRandomValue(rec.y, rec.height);
+ Vector2 randVector = {randX, randY};
+ return randVector;
+}
+
+Vector2 GetPositionOutsideRectangle(Rectangle rec, int min, int max)
+{
+ int side = GetRandomValue(0, 3);
+ Vector2 pos = {0};
+
+ switch (side)
+ {
+ case 0: // left
+ pos.x = rec.x - GetRandomValue(min, max);
+ pos.y = GetRandomValue((int)rec.y, (int)(rec.y + rec.height));
+ break;
+
+ case 1: // right
+ pos.x = rec.x + rec.width + GetRandomValue(min, max);
+ pos.y = GetRandomValue((int)rec.y, (int)(rec.y + rec.height));
+ break;
+
+ case 2: // top
+ pos.x = GetRandomValue((int)rec.x, (int)(rec.x + rec.width));
+ pos.y = rec.y - GetRandomValue(min, max);
+ break;
+
+ case 3: // bottom
+ pos.x = GetRandomValue((int)rec.x, (int)(rec.x + rec.width));
+ pos.y = rec.y + rec.height + GetRandomValue(min, max);
+ break;
+ }
+
+ return pos;
+}
diff --git a/external/engine/soundtrack.h b/src/engineSoundtrack.c
similarity index 81%
rename from external/engine/soundtrack.h
rename to src/engineSoundtrack.c
index b790d18..f2f1c08 100644
--- a/external/engine/soundtrack.h
+++ b/src/engineSoundtrack.c
@@ -1,11 +1,4 @@
-#ifndef SOUNDTRACK_H
-#define SOUNDTRACK_H
-
-typedef struct {
- Music music;
- bool playing;
- bool paused;
-} Soundtrack;
+#include "engine.h"
Soundtrack LoadSoundtrack(const char* musicPath){
Soundtrack soundtrack = {
@@ -35,5 +28,3 @@ void UpdateSoundtrack(Soundtrack *soundtrack, bool playing){
}
-#endif // SOUNDTRACK_H
-
diff --git a/external/engine/sprite.h b/src/engineSprite.c
similarity index 71%
rename from external/engine/sprite.h
rename to src/engineSprite.c
index 22f511b..b72962d 100644
--- a/external/engine/sprite.h
+++ b/src/engineSprite.c
@@ -1,18 +1,5 @@
-#ifndef SPRITE_H
-#define SPRITE_H
+#include "engine.h"
-#include
-
-typedef struct
-{
- Texture2D texture;
- Rectangle sourceRec;
- Rectangle destRec;
- Vector2 frameSize;
- Vector2 origin;
- float rotation;
- Color color;
-} Sprite;
void UpdateSpriteSourceRec(Sprite *sprite, const Vector2 *vector)
{
@@ -26,14 +13,9 @@ void UpdateSpriteDestRec(Sprite *sprite, const Vector2 *vector)
sprite->destRec.y = vector->y;
}
-void UpdateSpriteRotation(Sprite *sprite, Vector2 *vector)
+void UpdateSpriteRotation(Sprite *sprite, float rotation)
{
- if (Vector2Length(*vector) <= 0.0f)
- {
- return;
- }
- float targetRotation = (float)atan2(vector->y, vector->x) * (180.0f / PI) + 90.0f;
- sprite->rotation = Lerp(sprite->rotation, targetRotation, 0.1f);
+ sprite->rotation = Lerp(sprite->rotation, rotation, 0.1f);
}
void RenderSprite(const Sprite *sprite)
@@ -58,5 +40,3 @@ void PrintSprite(const Sprite *sprite)
printf(" Sprite.rotation: %f\n", sprite->rotation);
printf(" Sprite.color: r = %d, g = %d, b = %d, a = %d\n", sprite->color.r, sprite->color.g, sprite->color.b, sprite->color.a);
}
-
-#endif // SPRITE_H
diff --git a/external/engine/vector.h b/src/engineVector.c
similarity index 55%
rename from external/engine/vector.h
rename to src/engineVector.c
index dfb2056..38a141f 100644
--- a/external/engine/vector.h
+++ b/src/engineVector.c
@@ -1,10 +1,4 @@
-#ifndef VECTOR_H
-#define VECTOR_H
-
-typedef struct {
- Vector2 *data;
- size_t count;
-} Vector2Array;
+#include "engine.h"
bool IsVectorZero(Vector2 v) {
float epsilon = 0.01f;
@@ -18,4 +12,16 @@ Vector2 GetRandomVector(const Rectangle bounds) {
};
}
-#endif // VECTOR_H
+Vector2 RotationToVector2(float rotation)
+{
+ float rad = rotation * (PI / 180.0f);
+ Vector2 vec = { cosf(rad), sinf(rad) };
+ return vec;
+}
+
+float Vector2ToRotation(Vector2 vec)
+{
+ float rad = atan2f(vec.y, vec.x);
+ float deg = rad * (180.0f / PI);
+ return deg;
+}
diff --git a/src/main.c b/src/main.c
index 7e003ce..bdcab9d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,4 +1,3 @@
-#include
#include "app.h"
int main(void)