diff --git a/games/Makefile b/games/Makefile index 60f38bff..00f82d19 100644 --- a/games/Makefile +++ b/games/Makefile @@ -1,6 +1,6 @@ #************************************************************************************************** # -# raylib makefile for desktop platforms, Raspberry Pi and HTML5 (emscripten) +# raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # # Copyright (c) 2013-2017 Ramon Santamaria (@raysan5) # @@ -23,29 +23,30 @@ .PHONY: all clean -# define raylib platform to compile for -# possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB +# Define required raylib variables # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() PLATFORM ?= PLATFORM_DESKTOP +RAYLIB_PATH ?= .. +PROJECT_NAME ?= advance_game -# define NO to use OpenAL Soft as static library (shared by default) -SHARED_OPENAL ?= NO +# Library type used for raylib and OpenAL Soft: STATIC (.a) or SHARED (.so/.dll) +# NOTE: Libraries should be provided in the selected form +RAYLIB_LIBTYPE ?= STATIC +OPENAL_LIBTYPE ?= STATIC +# On PLATFORM_WEB force OpenAL Soft shared library ifeq ($(PLATFORM),PLATFORM_WEB) - SHARED_OPENAL = NO + OPENAL_LIBTYPE = SHARED endif -# define raylib directory for include and library -RAYLIB_PATH ?= C:\raylib\raylib - -# determine PLATFORM_OS in case PLATFORM_DESKTOP selected +# 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 LIBPATH=win32 else - UNAMEOS:=$(shell uname) + UNAMEOS=$(shell uname) ifeq ($(UNAMEOS),Linux) PLATFORM_OS=LINUX LIBPATH=linux @@ -58,22 +59,72 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) endif endif -# define compiler: gcc for C program, define as g++ for C++ -ifeq ($(PLATFORM),PLATFORM_WEB) - # define emscripten compiler - CC = emcc -else -ifeq ($(PLATFORM_OS),OSX) - # define llvm compiler for mac - CC = clang -else - # define default gcc compiler - CC = gcc -endif +ifeq ($(PLATFORM),PLATFORM_RPI) + # RPI cross-compiler + RPI_CROSS_COMPILE ?= NO endif -# define compiler flags: -# -O2 defines optimization level +ifeq ($(PLATFORM),PLATFORM_WEB) + # Emscripten required variables + EMSDK_PATH = C:/emsdk + EMSCRIPTEN_VERSION = 1.37.21 + CLANG_VERSION=e1.37.21_64bit + PYTHON_VERSION=2.7.5.3_64bit + NODE_VERSION=4.1.1_64bit + export PATH=$(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) + EMSCRIPTEN=$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) +endif + +# Define raylib release directory for compiled library +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/win32/mingw32 + endif + ifeq ($(PLATFORM_OS),LINUX) + RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/linux + endif + ifeq ($(PLATFORM_OS),OSX) + RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/osx + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/html5 +endif +ifeq ($(PLATFORM),PLATFORM_RPI) + RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/rpi +endif + +# Define default C compiler: gcc +CC = gcc + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),OSX) + # OSX default compiler + CC = clang + endif +endif +ifeq ($(PLATFORM),PLATFORM_RPI) + ifeq ($(RPI_CROSS_COMPILE),YES) + # RPI cross-compiler + CC = armv6j-hardfloat-linux-gnueabi-gcc + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # HTML5 emscripten compiler + CC = emcc +endif + +# Define default make program: Mingw32-make +MAKE = mingw32-make + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),LINUX) + MAKE = make + endif +endif + +# Define compiler flags: +# -O1 defines optimization level # -Og enable debugging # -s strip unnecessary data from build # -Wall turns on most, but not all, compiler warnings @@ -82,140 +133,98 @@ endif # -fgnu89-inline declaring inline functions support (GCC optimized) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec +CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -fgnu89-inline -Wno-missing-braces + +# Additional flags for compiler (if desired) +#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - CFLAGS = -O2 -s -Wall -std=c99 - endif ifeq ($(PLATFORM_OS),LINUX) - CFLAGS = -O2 -s -Wall -std=c99 -D_DEFAULT_SOURCE - endif - ifeq ($(PLATFORM_OS),OSX) - CFLAGS = -O2 -s -Wall -std=c99 + CFLAGS += -no-pie -D_DEFAULT_SOURCE endif endif +ifeq ($(PLATFORM),PLATFORM_RPI) + CFLAGS += -std=gnu99 +endif ifeq ($(PLATFORM),PLATFORM_WEB) - CFLAGS = -O1 -Wall -std=c99 -D_DEFAULT_SOURCE -s USE_GLFW=3 -s ASSERTIONS=1 -s --profiling - # -O2 # if used, also set --memory-init-file 0 - # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) - # -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing - # -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) - # --preload-file file.res # embbed file.res resource into .data file -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - CFLAGS = -O2 -s -Wall -std=gnu99 -fgnu89-inline -endif -#CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes - -# define raylib release directory for compiled library -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - RAYLIB_RELEASE = $(RAYLIB_PATH)/release/win32/mingw32 - endif - ifeq ($(PLATFORM_OS),LINUX) - RAYLIB_RELEASE = $(RAYLIB_PATH)/release/linux - endif - ifeq ($(PLATFORM_OS),OSX) - RAYLIB_RELEASE = $(RAYLIB_PATH)/release/osx - endif -endif -ifeq ($(PLATFORM),PLATFORM_WEB) - RAYLIB_RELEASE = $(RAYLIB_PATH)/release/html5 -endif -ifeq ($(PLATFORM),PLATFORM_RPI) - RAYLIB_RELEASE = $(RAYLIB_PATH)/release/rpi + # -O2 # if used, also set --memory-init-file 0 + # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) + # -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing + # -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) + # -s USE_PTHREADS=1 # multithreading support + CFLAGS += -s USE_GLFW=3 -s ASSERTIONS=1 --profiling -s TOTAL_MEMORY=16777216 --preload-file resources endif -# define any directories containing required header files -INCLUDES = -I. -I$(RAYLIB_RELEASE) -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external +# Define include paths for required headers +# NOTE: Several external required libraries (stb and others) +INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/release/include -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external + +# Define additional directories containing required header files +ifeq ($(PLATFORM),PLATFORM_RPI) + # RPI requried libraries + INCLUDE_PATHS += -I/opt/vc/include + INCLUDE_PATHS += -I/opt/vc/include/interface/vmcs_host/linux + INCLUDE_PATHS += -I/opt/vc/include/interface/vcos/pthreads +endif + +# Define library paths containing required libs +LDFLAGS = -L. -L$(RAYLIB_RELEASE) -L$(RAYLIB_PATH)/src ifeq ($(PLATFORM),PLATFORM_RPI) - INCLUDES += -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -endif -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # external libraries headers - # GLFW3 - INCLUDES += -I$(RAYLIB_PATH)/src/external/glfw3/include - # OpenAL Soft - INCLUDES += -I$(RAYLIB_PATH)/src/external/openal_soft/include - endif - ifeq ($(PLATFORM_OS),LINUX) - # you may optionally create this directory and install raylib - # and related headers there. Edit ../src/Makefile appropriately. - INCLUDES += -I/usr/local/include/raylib - endif - ifeq ($(PLATFORM_OS),OSX) - # additional directories for MacOS - endif + LDFLAGS += -L/opt/vc/lib endif -# define library paths containing required libs -LFLAGS = -L. -L$(RAYLIB_RELEASE) -L$(RAYLIB_PATH)/src - -ifeq ($(PLATFORM),PLATFORM_RPI) - LFLAGS += -L/opt/vc/lib -endif -ifeq ($(PLATFORM),PLATFORM_DESKTOP) - # add standard directories for GNU/Linux - ifeq ($(PLATFORM_OS),WINDOWS) - # external libraries to link with - # GLFW3 - LFLAGS += -L$(RAYLIB_PATH)/src/external/glfw3/lib/$(LIBPATH) - # OpenAL Soft - LFLAGS += -L$(RAYLIB_PATH)/src/external/openal_soft/lib/$(LIBPATH) - endif -endif - -# define any libraries to link into executable +# Define any libraries required on linking # if you want to link libraries (libname.so or libname.a), use the -lname ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),LINUX) - # libraries for Debian GNU/Linux desktop compiling - # requires the following packages: - # libglfw3-dev libopenal-dev libegl1-mesa-dev - LIBS = -lraylib -lglfw3 -lGL -lopenal -lm -lpthread -ldl - # on XWindow requires also below libraries - LIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - else - ifeq ($(PLATFORM_OS),OSX) - # libraries for OSX 10.9 desktop compiling - # requires the following packages: - # libglfw3-dev libopenal-dev libegl1-mesa-dev - LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa - else - # libraries for Windows desktop compiling + ifeq ($(PLATFORM_OS),WINDOWS) + # Libraries for Windows desktop compiling # NOTE: GLFW3 and OpenAL Soft libraries should be installed - LIBS = -lraylib -lglfw3 -lopengl32 -lgdi32 - # if static OpenAL Soft required, define the corresponding libs - ifeq ($(SHARED_OPENAL),NO) - LIBS += -lopenal32 -lwinmm - CFLAGS += -Wl,-allow-multiple-definition + LDLIBS = -lraylib -lglfw3 -lopengl32 -lgdi32 + + # Define required flags and libs for OpenAL Soft STATIC/SHARED usage + # NOTE: ALLIBS flag only required for raylib Win32 SHARED library building + ifeq ($(OPENAL_LIBTYPE),STATIC) + LDLIBS += -lopenal32 -lwinmm + CFLAGS += -DAL_LIBTYPE_STATIC -Wl,-allow-multiple-definition else - LIBS += -lopenal32dll + LDLIBS += -lopenal32dll endif endif + ifeq ($(PLATFORM_OS),LINUX) + # Libraries for Debian GNU/Linux desktop compiling + # NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev + LDLIBS = -lraylib -lglfw3 -lGL -lopenal -lm -lpthread -ldl + + # On XWindow requires also below libraries + LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor + endif + ifeq ($(PLATFORM_OS),OSX) + # Libraries for OSX 10.9 desktop compiling + # NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev + LDLIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa endif endif ifeq ($(PLATFORM),PLATFORM_RPI) - # libraries for Raspberry Pi compiling - # NOTE: OpenAL Soft library should be installed (libopenal1 package) - LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal + # Libraries for Raspberry Pi compiling + # NOTE: Required packages: libopenal1 + LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal endif ifeq ($(PLATFORM),PLATFORM_WEB) - # NOTE: Set the correct path to libraylib.bc - LIBS = $(RAYLIB_RELEASE)/libraylib.bc + # Libraries for web (HTML5) compiling + LDLIBS = $(RAYLIB_RELEASE)/libraylib.bc endif -# define additional parameters and flags for windows +# Define additional parameters and flags for windows ifeq ($(PLATFORM_OS),WINDOWS) - # resources file contains windows exe icon + # resources file contains raylib icon for windows .exe # -Wl,--subsystem,windows hides the console window - WINFLAGS = $(RAYLIB_PATH)/src/resources -Wl,--subsystem,windows + CFLAGS += $(RAYLIB_PATH)/src/resources -Wl,--subsystem,windows endif +# Define output extension to generate a .html file using provided shell ifeq ($(PLATFORM),PLATFORM_WEB) EXT = .html - WEB_SHELL = --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html + CFLAGS += --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html endif # define all object files required @@ -231,58 +240,16 @@ SAMPLES = \ snake \ space_invaders \ tetris \ - fix_dylib \ - # typing 'make' will invoke the default target entry -default: samples +all: $(SAMPLES) -# compile all game samples -samples: $(SAMPLES) - -# compile game sample - arkanoid -arkanoid: arkanoid.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - steroids -asteroids: asteroids.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - asteroids_survival -asteroids_survival: asteroids_survival.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - floppy -floppy: floppy.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - gold_fever -gold_fever: gold_fever.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - gorilas -gorilas: gorilas.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - missile_commander -missile_commander: missile_commander.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - pang -pang: pang.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - snake -snake: snake.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - space_invaders -space_invaders: space_invaders.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) - -# compile game sample - tetris -tetris: tetris.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) +%: %.c +ifeq ($(PLATFORM),PLATFORM_ANDROID) + mingw32-make -f Makefile.Android PROJECT_NAME=$@ PROJECT_SOURCE_FILES=$< +else + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +endif # fix dylib install path name for each executable (MAC) fix_dylib: @@ -290,18 +257,18 @@ ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -print0 | xargs -t -0 -R 1 -I file install_name_tool -change libglfw.3.0.dylib ../external/glfw3/lib/osx/libglfw.3.0.dylib file endif -# clean everything +# Clean everything clean: ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + del *.o *.exe /s + endif + ifeq ($(PLATFORM_OS),LINUX) + find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -f + endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete rm -f *.o - else - ifeq ($(PLATFORM_OS),LINUX) - find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -f - else - del *.o *.exe /s - endif endif endif ifeq ($(PLATFORM),PLATFORM_RPI) @@ -312,8 +279,3 @@ ifeq ($(PLATFORM),PLATFORM_WEB) del *.o *.html *.js endif @echo Cleaning done - -# instead of defining every module one by one, we can define a pattern -# this pattern below will automatically compile every module defined on $(OBJS) -#%.exe : %.c -# $(CC) -o $@ $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) diff --git a/games/arkanoid.c b/games/arkanoid.c index 6231fb8b..1da80a1e 100644 --- a/games/arkanoid.c +++ b/games/arkanoid.c @@ -18,6 +18,10 @@ #include #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -59,7 +63,6 @@ typedef struct Brick { static int screenWidth = 800; static int screenHeight = 450; -static int framesCounter; static bool gameOver; static bool pause; @@ -80,11 +83,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: arkanoid"); +#endif InitGame(); @@ -98,14 +109,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -116,8 +122,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/asteroids.c b/games/asteroids.c index 11063889..dc8a9e07 100644 --- a/games/asteroids.c +++ b/games/asteroids.c @@ -15,6 +15,10 @@ #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -68,7 +72,6 @@ typedef struct Meteor { static int screenWidth = 800; static int screenHeight = 450; -static int framesCounter; static bool gameOver; static bool pause; static bool victory; @@ -95,16 +98,22 @@ static void DrawGame(void); // Draw game (one frame) static void UnloadGame(void); // Unload game static void UpdateDrawFrame(void); // Update and Draw (one frame) -static void DrawSpaceship(Vector2 position, float rotation, Color color); - //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: asteroids"); +#endif InitGame(); @@ -118,14 +127,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -136,8 +140,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/asteroids_survival.c b/games/asteroids_survival.c index aa21112d..12759606 100644 --- a/games/asteroids_survival.c +++ b/games/asteroids_survival.c @@ -15,6 +15,10 @@ #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -80,11 +84,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: asteroids survival"); +#endif InitGame(); @@ -98,14 +110,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -116,8 +123,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/floppy.c b/games/floppy.c index f48ea235..d7c4f129 100644 --- a/games/floppy.c +++ b/games/floppy.c @@ -13,6 +13,10 @@ #include "raylib.h" +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -45,7 +49,6 @@ typedef struct Tubes { static int screenWidth = 800; static int screenHeight = 450; -static int framesCounter; static bool gameOver; static bool pause; static int score; @@ -69,11 +72,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: floppy"); +#endif InitGame(); @@ -87,14 +98,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -105,8 +111,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ // Module Functions Definitions (local) diff --git a/games/gold_fever.c b/games/gold_fever.c index 5a435027..1d8b6b7c 100644 --- a/games/gold_fever.c +++ b/games/gold_fever.c @@ -13,6 +13,10 @@ #include "raylib.h" +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -54,7 +58,6 @@ typedef struct Home { static int screenWidth = 800; static int screenHeight = 450; -static int framesCounter; static bool gameOver; static bool pause; static int score; @@ -78,12 +81,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- - + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: gold fever"); +#endif InitGame(); @@ -97,14 +107,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -115,8 +120,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/gorilas.c b/games/gorilas.c index 86fd3f5b..75decd96 100644 --- a/games/gorilas.c +++ b/games/gorilas.c @@ -18,6 +18,10 @@ #include #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -116,11 +120,19 @@ static bool UpdateBall(int playerTurn); //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: gorilas"); +#endif InitGame(); @@ -134,14 +146,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -152,8 +159,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/missile_commander.c b/games/missile_commander.c index 6317c41a..245cefd1 100644 --- a/games/missile_commander.c +++ b/games/missile_commander.c @@ -18,6 +18,10 @@ #include #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -115,11 +119,19 @@ static void UpdateIncomingFire(); //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: missile commander"); +#endif InitGame(); @@ -133,14 +145,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -151,8 +158,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //-------------------------------------------------------------------------------------- diff --git a/games/pang.c b/games/pang.c index fe1c3005..731234ae 100644 --- a/games/pang.c +++ b/games/pang.c @@ -15,6 +15,10 @@ #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -106,9 +110,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { + // Initialization + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: pang"); +#endif InitGame(); @@ -122,14 +136,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -140,8 +149,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/snake.c b/games/snake.c index ac2f6132..c971ce15 100644 --- a/games/snake.c +++ b/games/snake.c @@ -13,6 +13,10 @@ #include "raylib.h" +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -69,11 +73,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: snake"); +#endif InitGame(); @@ -87,14 +99,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -105,8 +112,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/space_invaders.c b/games/space_invaders.c index c2dd0c61..b80de050 100644 --- a/games/space_invaders.c +++ b/games/space_invaders.c @@ -13,6 +13,10 @@ #include "raylib.h" +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -57,7 +61,6 @@ typedef struct Shoot{ static int screenWidth = 800; static int screenHeight = 450; -static int framesCounter; static bool gameOver; static bool pause; static int score; @@ -87,11 +90,19 @@ static void UpdateDrawFrame(void); // Update and Draw (one frame) //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: space invaders"); +#endif InitGame(); @@ -105,14 +116,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -123,8 +129,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //------------------------------------------------------------------------------------ diff --git a/games/tetris.c b/games/tetris.c index 84ba9196..e02d7f18 100644 --- a/games/tetris.c +++ b/games/tetris.c @@ -18,6 +18,10 @@ #include #include +#if defined(PLATFORM_ANDROID) + #include "android_native_app_glue.h" +#endif + #if defined(PLATFORM_WEB) #include #endif @@ -105,11 +109,19 @@ static void DeleteCompleteLines(); //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main() +#if defined(PLATFORM_ANDROID) +void android_main(struct android_app *app) +#else +int main(void) +#endif { // Initialization - //-------------------------------------------------------------------------------------- + //--------------------------------------------------------- +#if defined(PLATFORM_ANDROID) + InitWindow(screenWidth, screenHeight, app); +#else InitWindow(screenWidth, screenHeight, "sample game: tetris"); +#endif InitGame(); @@ -123,14 +135,9 @@ int main() // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Update + // Update and Draw //---------------------------------------------------------------------------------- - UpdateGame(); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - DrawGame(); + UpdateDrawFrame(); //---------------------------------------------------------------------------------- } #endif @@ -141,8 +148,9 @@ int main() CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - +#if !defined(PLATFORM_ANDROID) return 0; +#endif } //--------------------------------------------------------------------------------------