mostly done with fireworks
This commit is contained in:
		
							parent
							
								
									968b06fbbc
								
							
						
					
					
						commit
						9588fc1417
					
				
					 6 changed files with 490 additions and 18 deletions
				
			
		
							
								
								
									
										441
									
								
								Makefile.emscripten
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								Makefile.emscripten
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,441 @@ | |||
| #************************************************************************************************** | ||||
| # | ||||
| #   raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 | ||||
| # | ||||
| #   Copyright (c) 2013-2022 Ramon Santamaria (@raysan5) | ||||
| # | ||||
| #   This software is provided "as-is", without any express or implied warranty. In no event | ||||
| #   will the authors be held liable for any damages arising from the use of this software. | ||||
| # | ||||
| #   Permission is granted to anyone to use this software for any purpose, including commercial | ||||
| #   applications, and to alter it and redistribute it freely, subject to the following restrictions: | ||||
| # | ||||
| #     1. The origin of this software must not be misrepresented; you must not claim that you | ||||
| #     wrote the original software. If you use this software in a product, an acknowledgment | ||||
| #     in the product documentation would be appreciated but is not required. | ||||
| # | ||||
| #     2. Altered source versions must be plainly marked as such, and must not be misrepresented | ||||
| #     as being the original software. | ||||
| # | ||||
| #     3. This notice may not be removed or altered from any source distribution. | ||||
| # | ||||
| #************************************************************************************************** | ||||
| 
 | ||||
| .PHONY: all clean | ||||
| 
 | ||||
| # Define required environment variables | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| # Define target platform: PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB | ||||
| PLATFORM              ?= PLATFORM_DESKTOP | ||||
| 
 | ||||
| # Define project variables | ||||
| PROJECT_NAME          ?= index | ||||
| PROJECT_VERSION       ?= 1.0 | ||||
| PROJECT_BUILD_PATH    ?= . | ||||
| 
 | ||||
| RAYLIB_PATH           ?= ~/raylib | ||||
| 
 | ||||
| # Locations of raylib.h and libraylib.a/libraylib.so | ||||
| # NOTE: Those variables are only used for PLATFORM_OS: LINUX, BSD | ||||
| RAYLIB_INCLUDE_PATH   ?= /usr/local/include | ||||
| RAYLIB_LIB_PATH       ?= /usr/local/lib | ||||
| 
 | ||||
| # Library type compilation: STATIC (.a) or SHARED (.so/.dll) | ||||
| RAYLIB_LIBTYPE        ?= STATIC | ||||
| 
 | ||||
| # Build mode for project: DEBUG or RELEASE | ||||
| BUILD_MODE            ?= RELEASE | ||||
| 
 | ||||
| # Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system) | ||||
| # NOTE: This variable is only used for PLATFORM_OS: LINUX | ||||
| USE_WAYLAND_DISPLAY   ?= FALSE | ||||
| 
 | ||||
| # PLATFORM_WEB: Default properties | ||||
| BUILD_WEB_ASYNCIFY    ?= FALSE | ||||
| BUILD_WEB_SHELL       ?= html5/shell.html | ||||
| BUILD_WEB_HEAP_SIZE   ?= 134217728 | ||||
| BUILD_WEB_RESOURCES   ?= TRUE | ||||
| BUILD_WEB_RESOURCES_PATH  ?= assets | ||||
| 
 | ||||
| # Use cross-compiler for PLATFORM_RPI | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     USE_RPI_CROSS_COMPILER ?= FALSE | ||||
|     ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) | ||||
|         RPI_TOOLCHAIN ?= C:/SysGCC/Raspberry | ||||
|         RPI_TOOLCHAIN_SYSROOT ?= $(RPI_TOOLCHAIN)/arm-linux-gnueabihf/sysroot | ||||
|     endif | ||||
| endif | ||||
| 
 | ||||
| # Determine PLATFORM_OS in case PLATFORM_DESKTOP selected | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     # No uname.exe on MinGW!, but OS=Windows_NT on Windows! | ||||
|     # ifeq ($(UNAME),Msys) -> Windows | ||||
|     ifeq ($(OS),Windows_NT) | ||||
|         PLATFORM_OS = WINDOWS | ||||
|     else | ||||
|         UNAMEOS = $(shell uname) | ||||
|         ifeq ($(UNAMEOS),Linux) | ||||
|             PLATFORM_OS = LINUX | ||||
|         endif | ||||
|         ifeq ($(UNAMEOS),FreeBSD) | ||||
|             PLATFORM_OS = BSD | ||||
|         endif | ||||
|         ifeq ($(UNAMEOS),OpenBSD) | ||||
|             PLATFORM_OS = BSD | ||||
|         endif | ||||
|         ifeq ($(UNAMEOS),NetBSD) | ||||
|             PLATFORM_OS = BSD | ||||
|         endif | ||||
|         ifeq ($(UNAMEOS),DragonFly) | ||||
|             PLATFORM_OS = BSD | ||||
|         endif | ||||
|         ifeq ($(UNAMEOS),Darwin) | ||||
|             PLATFORM_OS = OSX | ||||
|         endif | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     UNAMEOS = $(shell uname) | ||||
|     ifeq ($(UNAMEOS),Linux) | ||||
|         PLATFORM_OS = LINUX | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
|     UNAMEOS = $(shell uname) | ||||
|     ifeq ($(UNAMEOS),Linux) | ||||
|         PLATFORM_OS = LINUX | ||||
|     endif | ||||
| endif | ||||
| 
 | ||||
| # RAYLIB_PATH adjustment for LINUX platform | ||||
| # TODO: Do we really need this? | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
|         RAYLIB_PREFIX  ?= .. | ||||
|         RAYLIB_PATH     = $(realpath $(RAYLIB_PREFIX)) | ||||
|     endif | ||||
| endif | ||||
| 
 | ||||
| # Default path for raylib on Raspberry Pi | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     RAYLIB_PATH        ?= /home/pi/raylib | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
|     RAYLIB_PATH        ?= /home/pi/raylib | ||||
| endif | ||||
| 
 | ||||
| # Define raylib release directory for compiled library | ||||
| RAYLIB_RELEASE_PATH 	?= $(RAYLIB_PATH)/src | ||||
| 
 | ||||
| ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
|     # Emscripten required variables | ||||
|     EMSDK_PATH         ?= ~/emsdk | ||||
|     EMSCRIPTEN_PATH    ?= $(EMSDK_PATH)/upstream/emscripten | ||||
|     CLANG_PATH          = $(EMSDK_PATH)/upstream/bin | ||||
|     PYTHON_PATH         = $(EMSDK_PATH)/python/3.9.2-1_64bit | ||||
|     NODE_PATH           = $(EMSDK_PATH)/node/14.18.2_64bit/bin | ||||
|     export PATH         = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) | ||||
| endif | ||||
| 
 | ||||
| # Define default C compiler: CC | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| CC = clang | ||||
| 
 | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),OSX) | ||||
|         # OSX default compiler | ||||
|         CC = clang | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),BSD) | ||||
|         # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler | ||||
|         CC = clang | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) | ||||
|         # Define RPI cross-compiler | ||||
|         #CC = armv6j-hardfloat-linux-gnueabi-gcc | ||||
|         CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
|     # HTML5 emscripten compiler | ||||
|     # WARNING: To compile to HTML5, code must be redesigned | ||||
|     # to use emscripten.h and emscripten_set_main_loop() | ||||
|     CC = emcc | ||||
| endif | ||||
| 
 | ||||
| # Define default make program: MAKE | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| MAKE ?= make | ||||
| 
 | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),WINDOWS) | ||||
|         MAKE = mingw32-make | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_ANDROID) | ||||
|     MAKE = mingw32-make | ||||
| endif | ||||
| 
 | ||||
| # Define compiler flags: CFLAGS | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| #  -O1                  defines optimization level | ||||
| #  -g                   include debug information on compilation | ||||
| #  -s                   strip unnecessary data from build | ||||
| #  -Wall                turns on most, but not all, compiler warnings | ||||
| #  -std=c99             defines C language mode (standard C from 1999 revision) | ||||
| #  -std=gnu99           defines C language mode (GNU C from 1999 revision) | ||||
| #  -Wno-missing-braces  ignore invalid warning (GCC bug 53119) | ||||
| #  -Wno-unused-value    ignore unused return values of some functions (i.e. fread()) | ||||
| #  -D_DEFAULT_SOURCE    use with -std=c99 on Linux and PLATFORM_WEB, required for timespec | ||||
| CFLAGS = -std=c99 -Wall -Wno-missing-braces -Wunused-result -D_DEFAULT_SOURCE | ||||
| 
 | ||||
| ifeq ($(BUILD_MODE),DEBUG) | ||||
|     CFLAGS += -g -D_DEBUG | ||||
| else | ||||
|     ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
|         ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) | ||||
|             CFLAGS += -O3 | ||||
|         else | ||||
|             CFLAGS += -Os | ||||
|         endif | ||||
|     else | ||||
|         CFLAGS += -s -O2 | ||||
|     endif | ||||
| endif | ||||
| 
 | ||||
| # Additional flags for compiler (if desired) | ||||
| #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
|         ifeq ($(RAYLIB_LIBTYPE),STATIC) | ||||
|             CFLAGS += -D_DEFAULT_SOURCE | ||||
|         endif | ||||
|         ifeq ($(RAYLIB_LIBTYPE),SHARED) | ||||
|             # Explicitly enable runtime link to libraylib.so | ||||
|             CFLAGS += -Wl,-rpath,$(RAYLIB_RELEASE_PATH) | ||||
|         endif | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     CFLAGS += -std=gnu99 | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
|     CFLAGS += -std=gnu99 -DEGL_NO_X11 | ||||
| endif | ||||
| 
 | ||||
| # Define include paths for required headers: INCLUDE_PATHS | ||||
| # NOTE: Some external/extras libraries could be required (stb, physac, easings...) | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external -I$(RAYLIB_PATH)/src/extras | ||||
| 
 | ||||
| # Define additional directories containing required header files | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),BSD) | ||||
|         INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
|         INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include | ||||
|     INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include/interface/vmcs_host/linux | ||||
|     INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include/interface/vcos/pthreads | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
|     INCLUDE_PATHS += -I/usr/include/libdrm | ||||
| endif | ||||
| 
 | ||||
| # Define library paths containing required libs: LDFLAGS | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src | ||||
| 
 | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),WINDOWS) | ||||
|         # NOTE: The resource .rc file contains windows executable icon and properties | ||||
|         LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data | ||||
|         # -Wl,--subsystem,windows hides the console window | ||||
|         ifeq ($(BUILD_MODE), RELEASE) | ||||
|             LDFLAGS += -Wl,--subsystem,windows | ||||
|         endif | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
|         LDFLAGS += -L$(RAYLIB_LIB_PATH) | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),BSD) | ||||
|         LDFLAGS += -Lsrc -L$(RAYLIB_LIB_PATH) | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
|     # -Os                        # size optimization | ||||
|     # -O2                        # optimization level 2, if used, also set --memory-init-file 0 | ||||
|     # -s USE_GLFW=3              # Use glfw3 library (context/input management) | ||||
|     # -s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing -> WARNING: Audio buffers could FAIL! | ||||
|     # -s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) (67108864 = 64MB) | ||||
|     # -s USE_PTHREADS=1          # multithreading support | ||||
|     # -s WASM=0                  # disable Web Assembly, emitted by default | ||||
|     # -s ASYNCIFY                # lets synchronous C/C++ code interact with asynchronous JS | ||||
|     # -s FORCE_FILESYSTEM=1      # force filesystem to load/save files data | ||||
|     # -s ASSERTIONS=1            # enable runtime checks for common memory allocation errors (-O1 and above turn it off) | ||||
|     # --profiling                # include information for code profiling | ||||
|     # --memory-init-file 0       # to avoid an external memory initialization code file (.mem) | ||||
|     # --preload-file resources   # specify a resources folder for data compilation | ||||
|     # --source-map-base          # allow debugging in browser with source map | ||||
|     LDFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -s FORCE_FILESYSTEM=1 | ||||
| 
 | ||||
|     # Build using asyncify | ||||
|     ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) | ||||
|         LDFLAGS += -s ASYNCIFY | ||||
|     endif | ||||
| 
 | ||||
|     # Add resources building if required | ||||
|     ifeq ($(BUILD_WEB_RESOURCES),TRUE) | ||||
|         LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) | ||||
|     endif | ||||
| 
 | ||||
|     # Add debug mode flags if required | ||||
|     ifeq ($(BUILD_MODE),DEBUG) | ||||
|         LDFLAGS += -s ASSERTIONS=1 --profiling | ||||
|     endif | ||||
| 
 | ||||
| 		PROJECT_NAME ?= index | ||||
| 
 | ||||
|     # Define a custom shell .html and output extension | ||||
|     LDFLAGS += --shell-file $(BUILD_WEB_SHELL) | ||||
|     EXT = .html | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     LDFLAGS += -L$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/lib | ||||
| endif | ||||
| 
 | ||||
| # Define libraries required on linking: LDLIBS | ||||
| # NOTE: To link libraries (lib<name>.so or lib<name>.a), use -l<name> | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),WINDOWS) | ||||
|         # Libraries for Windows desktop compilation | ||||
|         # NOTE: WinMM library required to set high-res timer resolution | ||||
|         LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm | ||||
|         # Required for physac examples | ||||
|         LDLIBS += -static -lpthread | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
|         # Libraries for Debian GNU/Linux desktop compiling | ||||
|         # NOTE: Required packages: libegl1-mesa-dev | ||||
|         LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt | ||||
| 
 | ||||
|         # On X11 requires also below libraries | ||||
|         LDLIBS += -lX11 | ||||
|         # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them | ||||
|         #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor | ||||
| 
 | ||||
|         # On Wayland windowing system, additional libraries requires | ||||
|         ifeq ($(USE_WAYLAND_DISPLAY),TRUE) | ||||
|             LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon | ||||
|         endif | ||||
|         # Explicit link to libc | ||||
|         ifeq ($(RAYLIB_LIBTYPE),SHARED) | ||||
|             LDLIBS += -lc | ||||
|         endif | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),OSX) | ||||
|         # Libraries for OSX 10.9 desktop compiling | ||||
|         # NOTE: Required packages: libopenal-dev libegl1-mesa-dev | ||||
|         LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),BSD) | ||||
|         # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling | ||||
|         # NOTE: Required packages: mesa-libs | ||||
|         LDLIBS = -lraylib -lGL -lpthread -lm | ||||
| 
 | ||||
|         # On XWindow requires also below libraries | ||||
|         LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
|     # Libraries for Raspberry Pi compiling | ||||
|     # NOTE: Required packages: libasound2-dev (ALSA) | ||||
|     LDLIBS = -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -ldl | ||||
|     ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) | ||||
|         LDLIBS += -lvchiq_arm -lvcos | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
|     # Libraries for DRM compiling | ||||
|     # NOTE: Required packages: libasound2-dev (ALSA) | ||||
|     LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
|     # Libraries for web (HTML5) compiling | ||||
|     LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.a | ||||
| endif | ||||
| 
 | ||||
| # Define source code object files required | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| PROJECT_SOURCE_PATH = src | ||||
| 
 | ||||
| PROJECT_SOURCE_FILES ?= \ | ||||
|     $(PROJECT_SOURCE_PATH)/Main.c \ | ||||
|     $(PROJECT_SOURCE_PATH)/Gameplay.c \ | ||||
|     $(PROJECT_SOURCE_PATH)/Title.c \ | ||||
|     $(PROJECT_SOURCE_PATH)/Credits.c \ | ||||
|     $(PROJECT_SOURCE_PATH)/Gameover.c | ||||
| 
 | ||||
| # Define all object files from source files | ||||
| OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) | ||||
| 
 | ||||
| 
 | ||||
| # Define processes to execute | ||||
| #------------------------------------------------------------------------------------------------ | ||||
| # For Android platform we call a custom Makefile.Android | ||||
| ifeq ($(PLATFORM),PLATFORM_ANDROID) | ||||
|     MAKEFILE_PARAMS = -f Makefile.Android | ||||
|     export PROJECT_NAME | ||||
|     export PROJECT_SOURCE_FILES | ||||
| else | ||||
|     MAKEFILE_PARAMS = $(PROJECT_NAME) | ||||
| endif | ||||
| 
 | ||||
| # Default target entry | ||||
| # NOTE: We call this Makefile target or Makefile.Android target | ||||
| all: | ||||
| 	$(MAKE) $(MAKEFILE_PARAMS) | ||||
| 
 | ||||
| # Project target defined by PROJECT_NAME | ||||
| $(PROJECT_NAME): $(OBJS) | ||||
| 	$(CC) -o $(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) | ||||
| 
 | ||||
| # Compile source files | ||||
| # NOTE: This pattern will compile every module defined on $(OBJS) | ||||
| %.o: %.c | ||||
| 	$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) | ||||
| 
 | ||||
| # Clean everything | ||||
| clean: | ||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||
|     ifeq ($(PLATFORM_OS),WINDOWS) | ||||
| 		del *.o *.exe /s | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),LINUX) | ||||
| 		find . -type f -executable -delete | ||||
| 		rm -fv $(PROJECT_SOURCE_PATH)/*.o | ||||
|     endif | ||||
|     ifeq ($(PLATFORM_OS),OSX) | ||||
| 		find . -type f -perm +ugo+x -delete | ||||
| 		rm -f *.o | ||||
|     endif | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ||||
| 	find . -type f -executable -delete | ||||
| 	rm -fv *.o | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_DRM) | ||||
| 	find . -type f -executable -delete | ||||
| 	rm -fv *.o | ||||
| endif | ||||
| ifeq ($(PLATFORM),PLATFORM_WEB) | ||||
| 	del *.o *.html *.js | ||||
| endif | ||||
| 	@echo Cleaning done | ||||
|  | @ -1 +1 @@ | |||
| {"modelVersion":2,"piskel":{"name":"firework","description":"","fps":12,"height":10,"width":40,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAKCAYAAADGmhxQAAAAhklEQVQ4jdXTsQ2AIBAF0F/YULqFu1AyuWM4xbcgkONEQMGoP7mCkHAvBwA/Dt8GlMLNGMIjR9R4XACS5LwwiVyX9khGoLOgs/3YiJPAHiTgYbJCM70Wfes4DSyhWoAaJXHO+t5cp+qEm4GtSGTe4Nl11yZ4QGrgnSnmgCPy6V8ckU8dfCU7mL+YWpQapCIAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[""]}} | ||||
| {"modelVersion":2,"piskel":{"name":"firework","description":"","fps":12,"height":10,"width":35,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAKCAYAAAA+euenAAAAg0lEQVQ4jc3TMQrAIAwF0D90cewtehdHT95j9BS/gxhiUNEq1A8ZRDCPqMDm4d+AFD7OERG0ouYgCUOS58Uset3aIymY4MHgx2AC0ZgZEBARulIzu1Z9c4jFtAA9GAvQkOBjb95HNrluTC8IhTdTuzI9meqbmZlOCTOabX6TgFYc8iUv0pOYWiMhsUMAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[]}} | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 288 B After Width: | Height: | Size: 291 B | 
|  | @ -33,8 +33,8 @@ void InitGameplayScreen(void) | |||
|    (float) player_sprite.height | ||||
|   }; | ||||
|   player.hitbox = (Rectangle) { | ||||
|     GetScreenWidth()/2.0f - 30, | ||||
|     GetScreenHeight()/2.0f - 30, | ||||
|     0, | ||||
|     50, | ||||
|     (float) player_sprite.width/3, | ||||
|     (float) player_sprite.height | ||||
|   }; | ||||
|  | @ -44,7 +44,7 @@ void InitGameplayScreen(void) | |||
|   enemy.speed = 100.0f; | ||||
|   enemy.hp = 30; | ||||
|   enemy.hitbox = (Rectangle) { | ||||
|     740, | ||||
|     690, | ||||
|     10, | ||||
|     (float) enemy_sprite.width, | ||||
|     (float) enemy_sprite.height | ||||
|  | @ -63,11 +63,11 @@ void InitGameplayScreen(void) | |||
|   firework_sprite = LoadTexture("assets/gfx/firework.png"); | ||||
|   for (int i = 0; i < MAX_FIREWORKS; i++) { | ||||
|     fireworks[i].currentframe = 0; | ||||
|     fireworks[i].speed = 200.0f; | ||||
|     fireworks[i].hp = 1; | ||||
|     fireworks[i].speed = 300.0f; | ||||
|     fireworks[i].hp = 0; | ||||
|     fireworks[i].hitbox = (Rectangle) { | ||||
|       50 * i, | ||||
|       100 * i, | ||||
|       630, | ||||
|       GetRandomValue(0, GetScreenHeight()), | ||||
|       (float) firework_sprite.width, | ||||
|       (float) firework_sprite.height | ||||
|     }; | ||||
|  | @ -86,8 +86,8 @@ void ResetGameplayScreen(void) | |||
|    player.speed = 300.0f; | ||||
|    player.hp = 30; | ||||
|    player.hitbox = (Rectangle) { | ||||
|      GetScreenWidth()/2.0f - 30, | ||||
|      GetScreenHeight()/2.0f - 30, | ||||
|      0, | ||||
|      50, | ||||
|      (float) player_sprite.width/3, | ||||
|      (float) player_sprite.height | ||||
|    }; | ||||
|  | @ -96,7 +96,7 @@ void ResetGameplayScreen(void) | |||
|    enemy.speed = 100.0f; | ||||
|    enemy.hp = 30; | ||||
|    enemy.hitbox = (Rectangle) { | ||||
|      740, | ||||
|      690, | ||||
|      10, | ||||
|      (float) enemy_sprite.width, | ||||
|      (float) enemy_sprite.height | ||||
|  | @ -112,11 +112,11 @@ void ResetGameplayScreen(void) | |||
| 
 | ||||
|    for (int i = 0; i < MAX_FIREWORKS; i++) { | ||||
|      fireworks[i].currentframe = 0; | ||||
|      fireworks[i].speed = 200.0f; | ||||
|      fireworks[i].hp = 1; | ||||
|      fireworks[i].speed = 300.0f; | ||||
|      fireworks[i].hp = 0; | ||||
|      fireworks[i].hitbox = (Rectangle) { | ||||
|        50 * i, | ||||
|        100 * i, | ||||
|        630, | ||||
|        GetRandomValue(0, GetScreenHeight()), | ||||
|        (float) firework_sprite.width, | ||||
|        (float) firework_sprite.height | ||||
|      }; | ||||
|  | @ -200,11 +200,25 @@ void UpdateGameplayScreen(void) | |||
|            } else player.currentframe = 0; | ||||
|          } | ||||
| 
 | ||||
|          for (int i = 0; i <= MAX_FIREWORKS; i++) { | ||||
|          for (int i = 0; i < MAX_FIREWORKS; i++) { | ||||
|            if (CheckCollisionRecs(player.hitbox, fireworks[i].hitbox)) { | ||||
|              player.hp -= GetFrameTime() * 3.0f; | ||||
|              player.currentframe = 1; | ||||
|            } | ||||
| 
 | ||||
|            switch (fireworks[i].hp) { | ||||
|              case 0: | ||||
|                  fireworks[i].hitbox.x = enemy.hitbox.x - 20; | ||||
|                  fireworks[i].hitbox.y = enemy.hitbox.y - 20; | ||||
| 
 | ||||
|                  if (GetRandomValue(0, 50) == 50) fireworks[i].hp = 1; | ||||
|                  break; | ||||
|              case 1: | ||||
|                fireworks[i].hitbox.x += GetFrameTime() * -fireworks[i].speed; | ||||
|                if (((fireworks[i].hitbox.x + -firework_sprite.width) > GetScreenWidth() | ||||
|                || (fireworks[i].hitbox.x <= -firework_sprite.width))) fireworks[i].hp = 0; | ||||
|                break; | ||||
|            } | ||||
|          } | ||||
| 
 | ||||
|        } | ||||
|  | @ -218,8 +232,12 @@ void DrawGameplayScreen(void) | |||
|   if (DebugMode) { | ||||
|     DrawRectangleRec(player.hitbox, BLUE); | ||||
|     DrawRectangleRec(heart.hitbox, GREEN); | ||||
|     DrawText(TextFormat("enemy.hitbox.y: %f", enemy.hitbox.y), 10, 200, 20, RED); | ||||
|     DrawText(TextFormat("player.hitbox.y: %f", player.hitbox.y), 10, 230, 20, RED); | ||||
|     DrawRectangleRec(enemy.hitbox, BLACK); | ||||
|     DrawText(TextFormat("firework_sprite.width: %d", firework_sprite.width), 10, 270, 20, RED); | ||||
|     for (int i = 0; i < MAX_FIREWORKS; i++) { | ||||
|       DrawText(TextFormat("fireworks[i].hp: %d", fireworks[i].hp), 10, 250, 20, RED); | ||||
|       DrawRectangleRec(fireworks[i].hitbox, BLACK); | ||||
|     } | ||||
|   } | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| #ifndef GAMEPLAY_HEADER | ||||
| #define GAMEPLAY_HEADER | ||||
| 
 | ||||
| #define MAX_FIREWORKS 5 | ||||
| #define MAX_FIREWORKS 10 | ||||
| 
 | ||||
| struct Actor { | ||||
|     float speed; | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/Title.c
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								src/Title.c
									
										
									
									
									
								
							|  | @ -15,6 +15,19 @@ | |||
| 
 | ||||
| int titleSelected = 0; | ||||
| 
 | ||||
| void DrawScore(void) | ||||
| { | ||||
|   if (bestscore >= 10000) { | ||||
|      DrawText(TextFormat("BEST: %i", bestscore), 600, 0, 30, YELLOW); | ||||
|   } else if (bestscore >= 5000) { | ||||
|      DrawText(TextFormat("BEST: %i", bestscore), 600, 0, 30, DARKGRAY); | ||||
|   } else if (bestscore >= 1000) { | ||||
|      DrawText(TextFormat("BEST: %i", bestscore), 600, 0, 30, DARKBROWN); | ||||
|   } else { | ||||
|      DrawText(TextFormat("BEST: %i", bestscore), 600, 0, 30, BLUE); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void InitTitleScreen(void) | ||||
| { | ||||
|   background = LoadTexture("assets/gfx/background.png"); | ||||
|  | @ -36,7 +49,7 @@ void DrawTitleScreen(void) | |||
| { | ||||
|   DrawTexture(background, 0, 0, GRAY); | ||||
|   DrawText("Controls", 10, 10, 30, BLUE); | ||||
|   DrawText(TextFormat("BEST: %i", bestscore), 600, 0, 30, WHITE); | ||||
|   DrawScore(); | ||||
|   DrawText("Press the arrow keys or 'DPAD' to move and 'X' to dash", 10, 40, 10, WHITE); | ||||
|   DrawText("Press 'ENTER' or 'START' to pause", 10, 60, 10, WHITE); | ||||
|   DrawText("Press 'M' to mute", 10, 80, 10, WHITE); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue