From 8349b60b342d09b8bc89aa28c36456874e5314a5 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Mon, 20 Apr 2020 03:11:23 +0200 Subject: [PATCH] Separate example game to Example.GameLib. --- .gitignore | 1 + Example.GameLib/Makefile | 59 +++ Example.GameLib/Makefile.common.mk | 74 ++++ Example.GameLib/Makefile.emscripten.mk | 31 ++ {data => Example.GameLib/data}/background.png | Bin {data => Example.GameLib/data}/block.png | Bin {data => Example.GameLib/data}/level_01.txt | 142 +++---- {data => Example.GameLib/data}/platform.png | Bin {data => Example.GameLib/data}/player.png | Bin Example.GameLib/dist-emscripten.cmd | 11 + {macosx => Example.GameLib/macosx}/SDLMain.m | 0 {Game => Example.GameLib/src}/GameEnts.c | 368 +++++++++--------- {Game => Example.GameLib/src}/GameEnts.h | 38 +- {Game => Example.GameLib/src}/GameMap.c | 228 +++++------ {Game => Example.GameLib/src}/GameMap.h | 14 +- {Game => Example.GameLib/src}/main.c | 134 +++---- .../web/index.html | 26 +- Makefile | 53 ++- Makefile.common | 172 -------- Makefile.common.mk | 89 +++++ Makefile.emscripten => Makefile.emscripten.mk | 51 ++- Makefile.linux | 17 - Makefile.macosx | 16 - Makefile.mingw | 20 - Makefile.win32 | 20 - dist.emscripten.sh | 12 - dist.sh | 28 -- dist.win32.sh | 26 -- gamelib-config | 12 +- {GameLib => src}/Anim.c | 0 {GameLib => src}/Anim.h | 0 {GameLib => src}/Audio.c | 0 {GameLib => src}/Audio.h | 0 {GameLib => src}/Draw.c | 0 {GameLib => src}/Draw.h | 0 {GameLib => src}/Entity.c | 0 {GameLib => src}/Entity.h | 0 {GameLib => src}/FontData.h | 0 {GameLib => src}/GameLib.c | 0 {GameLib => src}/GameLib.h | 0 {GameLib => src}/Input.c | 0 {GameLib => src}/Input.h | 0 {GameLib => src}/QuadArray2D.c | 0 {GameLib => src}/QuadArray2D.h | 0 {GameLib => src}/Time.c | 0 {GameLib => src}/Time.h | 0 {GameLib => src}/Util.c | 0 {GameLib => src}/Util.h | 0 {GameLib => src}/lodepng.c | 0 {GameLib => src}/lodepng.h | 0 web/playEmbbed.html | 122 ------ 51 files changed, 829 insertions(+), 935 deletions(-) create mode 100644 Example.GameLib/Makefile create mode 100644 Example.GameLib/Makefile.common.mk create mode 100644 Example.GameLib/Makefile.emscripten.mk rename {data => Example.GameLib/data}/background.png (100%) rename {data => Example.GameLib/data}/block.png (100%) rename {data => Example.GameLib/data}/level_01.txt (93%) rename {data => Example.GameLib/data}/platform.png (100%) rename {data => Example.GameLib/data}/player.png (100%) create mode 100644 Example.GameLib/dist-emscripten.cmd rename {macosx => Example.GameLib/macosx}/SDLMain.m (100%) rename {Game => Example.GameLib/src}/GameEnts.c (96%) rename {Game => Example.GameLib/src}/GameEnts.h (94%) rename {Game => Example.GameLib/src}/GameMap.c (94%) rename {Game => Example.GameLib/src}/GameMap.h (95%) rename {Game => Example.GameLib/src}/main.c (95%) rename web/play.html => Example.GameLib/web/index.html (81%) delete mode 100644 Makefile.common create mode 100644 Makefile.common.mk rename Makefile.emscripten => Makefile.emscripten.mk (64%) delete mode 100644 Makefile.linux delete mode 100644 Makefile.macosx delete mode 100644 Makefile.mingw delete mode 100644 Makefile.win32 delete mode 100644 dist.emscripten.sh delete mode 100644 dist.sh delete mode 100644 dist.win32.sh rename {GameLib => src}/Anim.c (100%) rename {GameLib => src}/Anim.h (100%) rename {GameLib => src}/Audio.c (100%) rename {GameLib => src}/Audio.h (100%) rename {GameLib => src}/Draw.c (100%) rename {GameLib => src}/Draw.h (100%) rename {GameLib => src}/Entity.c (100%) rename {GameLib => src}/Entity.h (100%) rename {GameLib => src}/FontData.h (100%) rename {GameLib => src}/GameLib.c (100%) rename {GameLib => src}/GameLib.h (100%) rename {GameLib => src}/Input.c (100%) rename {GameLib => src}/Input.h (100%) rename {GameLib => src}/QuadArray2D.c (100%) rename {GameLib => src}/QuadArray2D.h (100%) rename {GameLib => src}/Time.c (100%) rename {GameLib => src}/Time.h (100%) rename {GameLib => src}/Util.c (100%) rename {GameLib => src}/Util.h (100%) rename {GameLib => src}/lodepng.c (100%) rename {GameLib => src}/lodepng.h (100%) delete mode 100644 web/playEmbbed.html diff --git a/.gitignore b/.gitignore index 09a56ea..9df143f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ shot-????.png .vscode/.BROWSE.VC.DB .vscode/.BROWSE.VC.DB-wal .DS_Store +*/DIST/* diff --git a/Example.GameLib/Makefile b/Example.GameLib/Makefile new file mode 100644 index 0000000..5c9caef --- /dev/null +++ b/Example.GameLib/Makefile @@ -0,0 +1,59 @@ + +VERBOSE_BUILD := false +GAMELIB_DIR := .. +GameLibConfig := $(GAMELIB_DIR)/gamelib-config + +LIBS := $(shell $(GameLibConfig) --libs) +STATICLIBS := $(shell $(GameLibConfig) --static-libs) +CFLAGS := $(shell $(GameLibConfig) --cflags) +PLATFORM := $(shell $(GameLibConfig) --platform) +EXEEXT := $(shell $(GameLibConfig) --exe-extension) +LDFLAGS := + +RES_GAME := game$(EXEEXT) +BUILDDIR := build-$(PLATFORM) + +IsMinGW := $(findstring MINGW,$(shell uname -s)) $(findstring MSYS,$(shell uname -s)) +IsDarwin := $(findstring Darwin,$(shell uname -s)) +ifneq (,$(IsMinGW)) + TARGET_ARCH := mingw +else +ifneq (,$(IsDarwin)) + TARGET_ARCH := macosx +else + TARGET_ARCH := linux +endif +endif + +ifeq ($(TARGET_ARCH),mingw) + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + SLASH := / +endif +ifeq ($(TARGET_ARCH),linux) + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + SLASH := / + +endif +ifeq ($(TARGET_ARCH),macosx) + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + VERBOSE_BUILD := false + SLASH := / + LIBS := $(LIBS) macosx/SDLMain.m +endif + +include Makefile.common.mk \ No newline at end of file diff --git a/Example.GameLib/Makefile.common.mk b/Example.GameLib/Makefile.common.mk new file mode 100644 index 0000000..82855a1 --- /dev/null +++ b/Example.GameLib/Makefile.common.mk @@ -0,0 +1,74 @@ + +######################## +# Utility Declarations # +######################## +ifeq ($(VERBOSE_BUILD),true) + DO_CC=$(CC) $(CFLAGS) -o $@ -c $< + DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $< +else + DO_CC=@$(ECHO) "CC: $@" ;\ + $(CC) $(CFLAGS) -o $@ -c $< + DO_CXX=@$(ECHO) "CXX: $@" ;\ + $(CXX) $(CFLAGS) -o $@ -c $< +endif + +##################### +# Game Declarations # +##################### +GAME_HEADS := $(GAMELIB_HEADS) Game$(SLASH)GameEnts.h Game$(SLASH)GameMap.h +GAME_OBJS := \ + $(BUILDDIR)$(SLASH)Game.o$(SLASH)GameEnts.o \ + $(BUILDDIR)$(SLASH)Game.o$(SLASH)GameMap.o \ + $(BUILDDIR)$(SLASH)Game.o$(SLASH)main.o +RES_GAME_OUT := $(BUILDDIR)$(SLASH)$(RES_GAME) + + +################# +# General Rules # +################# + +.FORCE: + (cd $(GAMELIB_DIR) && make lib $(GAMELIB_MAKEPARAMS)) + +all: .FORCE $(BUILDDIR) $(RES_GAME_OUT) + +$(BUILDDIR): + $(MKDIR) $(BUILDDIR) + $(MKDIR) $(BUILDDIR)$(SLASH)Game.o + +full-clean: clean + (cd $(GAMELIB_DIR) && make clean $(GAMELIB_MAKEPARAMS)) + +clean: + $(RM) $(GAME_OBJS) $(RES_GAME_OUT) + +run: $(BUILDDIR) $(RES_GAME_OUT) + $(LAUNCHER) ./$(RES_GAME_OUT) debug + +rebuild: clean all + + +############## +# Game Rules # +############## + +$(BUILDDIR)$(SLASH)Game.o$(SLASH)GameEnts.o: src$(SLASH)GameEnts.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)Game.o$(SLASH)GameMap.o: src$(SLASH)GameMap.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)Game.o$(SLASH)main.o: src$(SLASH)main.c $(HEADS) + $(DO_CC) + + + +################ +# Result Rules # +################ + +$(RES_GAME_OUT): $(GAME_OBJS) + @$(ECHO) "LINK: $@" + @$(CC) $(GAME_OBJS) $(STATICLIBS) -o $(RES_GAME_OUT) $(LIBS) $(CFLAGS) $(LDFLAGS) + + + + diff --git a/Example.GameLib/Makefile.emscripten.mk b/Example.GameLib/Makefile.emscripten.mk new file mode 100644 index 0000000..7b360e0 --- /dev/null +++ b/Example.GameLib/Makefile.emscripten.mk @@ -0,0 +1,31 @@ +CC := emcc +AR := emar +LAUNCHER := emrun --port 8080 +RM := del +MKDIR := mkdir +ECHO := echo +VERBOSE_BUILD := true +SLASH := \\ + +GAMELIB_DIR := .. +GAMELIB_MAKEPARAMS := -f Makefile.emscripten.mk target=release + +LIBS := +STATICLIBS := $(GAMELIB_DIR)$(SLASH)build-emscripten$(SLASH)libgame.a +CFLAGS := -s FULL_ES2=1 -s ASM_JS=1 -O1 -Wno-implicit-function-declaration -DEMSCRIPTEN -I$(GAMELIB_DIR)$(SLASH)src +PLATFORM := emscripten +EXEEXT := .html +LDFLAGS := --preload-file data -s TOTAL_MEMORY=134217728 -lidbfs.js + +RES_GAME := game$(EXEEXT) +BUILDDIR := build-$(PLATFORM) + +ifeq ($(target),release) + CFLAGS := $(CFLAGS) -O2 + BUILDDIR := build-emscripten-release + GAMELIB_MAKEPARAMS := -f Makefile.emscripten.mk target=release +endif + +include Makefile.common.mk + + diff --git a/data/background.png b/Example.GameLib/data/background.png similarity index 100% rename from data/background.png rename to Example.GameLib/data/background.png diff --git a/data/block.png b/Example.GameLib/data/block.png similarity index 100% rename from data/block.png rename to Example.GameLib/data/block.png diff --git a/data/level_01.txt b/Example.GameLib/data/level_01.txt similarity index 93% rename from data/level_01.txt rename to Example.GameLib/data/level_01.txt index 4f139af..4141de4 100644 --- a/data/level_01.txt +++ b/Example.GameLib/data/level_01.txt @@ -1,71 +1,71 @@ -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -################## ## -############### -############# -############# -############## -########## ### -######### ### -######## ## -######## ## -######## ## ||||| -######## -######### -########## -########### -############ -############# -######## ## # -######### ### -######## ## # -############# -############# -######## -########## -######## -########### -######## -######## -############ -######## -############# -######## -######## -######## # -######## # -######## -######## -######## -######## P -######## -######## -######## -######## -######## -######## -######## -######## -######### -######## -######## -######### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### -###################### - +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +################## ## +############### +############# +############# +############## +########## ### +######### ### +######## ## +######## ## +######## ## ||||| +######## +######### +########## +########### +############ +############# +######## ## # +######### ### +######## ## # +############# +############# +######## +########## +######## +########### +######## +######## +############ +######## +############# +######## +######## +######## # +######## # +######## +######## +######## +######## P +######## +######## +######## +######## +######## +######## +######## +######## +######### +######## +######## +######### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### +###################### + diff --git a/data/platform.png b/Example.GameLib/data/platform.png similarity index 100% rename from data/platform.png rename to Example.GameLib/data/platform.png diff --git a/data/player.png b/Example.GameLib/data/player.png similarity index 100% rename from data/player.png rename to Example.GameLib/data/player.png diff --git a/Example.GameLib/dist-emscripten.cmd b/Example.GameLib/dist-emscripten.cmd new file mode 100644 index 0000000..d44a921 --- /dev/null +++ b/Example.GameLib/dist-emscripten.cmd @@ -0,0 +1,11 @@ +call c:\emsdk\emsdk_env.bat + +make -f Makefile.emscripten.mk target=release full-clean +make -f Makefile.emscripten.mk target=release + +mkdir DIST\web +copy web\* DIST\web\ +copy build-emscripten-release\game.* DIST\web\ + + +pause \ No newline at end of file diff --git a/macosx/SDLMain.m b/Example.GameLib/macosx/SDLMain.m similarity index 100% rename from macosx/SDLMain.m rename to Example.GameLib/macosx/SDLMain.m diff --git a/Game/GameEnts.c b/Example.GameLib/src/GameEnts.c similarity index 96% rename from Game/GameEnts.c rename to Example.GameLib/src/GameEnts.c index 6c4f4b0..1fbab6d 100644 --- a/Game/GameEnts.c +++ b/Example.GameLib/src/GameEnts.c @@ -1,184 +1,184 @@ -// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) - -#include -#include -#include - -#include "GameLib.h" -extern int gamelib_debug; - -#include "GameEnts.h" - -DrawImg img_player; -DrawImg img_platform; -DrawImg img_block; - -Entity ent_Player; -Entity ent_Platform; -Entity ent_Block; - -int EntityApplyGravity(Entity e) { - float grav = 10.0f; - float vTerminal = 50.0f; - vec2 vGrav; - - // Only apply gravity to some entity types - if (!(e->type == Ent_Player || 0)) { - return (1); - } - - // Apply gravity - vec2_set(vGrav, 0.0f, grav); - Entity_AddVelLimit(e, vGrav, vTerminal); - - return (1); -} - -void player_proc(Entity e, int ft) { - float acel = 8.0f; - float maxVel = 30.0f; - float jumpVel = 50.0f; - float airMovementFactor = 0.1f; - - - // Process elasticity - float entityScale[2]; - Entity_GetScale(e, entityScale); - entityScale[0] += (1.0f - entityScale[0]) / 2.0f; - entityScale[1] += (1.0f - entityScale[1]) / 2.0f; - Entity_SetScale(e, entityScale); - - - if (e->A > 0) { - if (Input_GetKey(InputKey_Jump) == InputKey_Pressed || - Input_GetKey(InputKey_Up) == InputKey_Pressed) { - - // Apply jump - if (e->vel[1] > (-jumpVel)) { - e->vel[1] = -jumpVel; - } - Entity_CalcBBox(e); - - Entity_SetScale(e, (float[2]){0.6f, 1.4f}); - - // FIXME: play sound - } - if (Input_GetKey(InputKey_Left)) { - vec2 left; - - // Apply left movement - vec2_set(left, -acel, 0.0f); - Entity_AddVelLimit(e, left, maxVel); - } - if (Input_GetKey(InputKey_Right)) { - vec2 right; - - // Apply right movement - vec2_set(right, acel, 0.0f); - Entity_AddVelLimit(e, right, maxVel); - } - } else { - if (Input_GetKey(InputKey_Left)) { - vec2 left; - - // Apply left movement - vec2_set(left, -(acel * airMovementFactor), 0.0f); - Entity_AddVelLimit(e, left, maxVel * airMovementFactor); - } - if (Input_GetKey(InputKey_Right)) { - vec2 right; - - // Apply right movement - vec2_set(right, acel * airMovementFactor, 0.0f); - Entity_AddVelLimit(e, right, maxVel * airMovementFactor); - } - } - if (Input_GetKey(InputKey_Action1) == InputKey_Pressed || - Input_GetKey(InputKey_Action2) == InputKey_Pressed) { - Entity_SetScale(e, (float[2]){1.0f, 1.0f}); - } - - e->A = 0; -} - -void player_postproc(Entity e, int ft){ - - // Scroll View - GameLib_MoveToPos(e->pos, 0.6f); - //GameLib_MoveToPos(e->pos, 1.0f); -} - -int player_collision(Entity ent, Entity ent2, float t, vec2 n){ - if(n[1] < 0 && fabs(n[1]) > fabs(n[0])){ - ent->A = 1; - } - - if (fabs(n[0]) > fabs(n[1])) { - float intensity = (fabs(ent->vel[0]) - 10.0f) / 40.0f; - if (intensity > 0) { - Entity_SetScale(ent, (float[2]){1.0f - (0.3f * intensity), 1.0f + (0.3f * intensity)}); - } - } else { - float intensity = (fabs(ent->vel[1]) - 10.0f) / 40.0f; - if (intensity > 0) { - Entity_SetScale(ent, (float[2]){1.0f + (0.3f * intensity), 1.0f - (0.3f * intensity)}); - } - } - return -1; -} - -void GameEnts_Init() { - - ///////////////////////////// - // Load and initialize media. - // - - img_player = Draw_LoadImage("data/player.png"); - img_platform = Draw_LoadImage("data/platform.png"); - img_block = Draw_LoadImage("data/block.png"); - - ///////////////////////// - // Initialize entity types. - // - - ent_Player = Entity_New(); - ent_Player->type = Ent_Player; - // ent_Player->flags=EntityFlag_Light; - // Entity_SetLight(ent_Player,.2,.2,.2,200); - ent_Player->flags = EntityFlag_Collision | EntityFlag_Overlap; - ent_Player->zorder = 0; - AnimPlay_SetImg(&ent_Player->anim, img_player); - ent_Player->proc = player_proc; - ent_Player->postproc = player_postproc; - ent_Player->collision = player_collision; - ent_Player->mass = 1.0f; - ent_Player->radius = 12; - ent_Player->width = 24; - ent_Player->height = 24; - ent_Player->fric_static = 0.0f; - ent_Player->fric_dynamic = 0.2f; - - ent_Platform = Entity_New(); - ent_Platform->type = Ent_Platform; - ent_Platform->flags = EntityFlag_PlatformCollision; - ent_Platform->zorder = -1; - AnimPlay_SetImg(&ent_Platform->anim, img_platform); - ent_Platform->mass = 0.0f; - ent_Platform->radius = 12; - ent_Platform->width = 64; - ent_Platform->height = 16; - ent_Platform->fric_static = 0.0f; - ent_Platform->fric_dynamic = 0.2f; - - ent_Block = Entity_New(); - ent_Block->type = Ent_Block; - ent_Block->flags = EntityFlag_BlockCollision; - ent_Block->zorder = -1; - AnimPlay_SetImg(&ent_Block->anim, img_block); - ent_Block->mass = 0.0f; - ent_Block->radius = 32; - ent_Block->width = 64; - ent_Block->height = 64; - ent_Block->fric_static = 0.0f; - ent_Block->fric_dynamic = 0.2f; -} +// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) + +#include +#include +#include + +#include "GameLib.h" +extern int gamelib_debug; + +#include "GameEnts.h" + +DrawImg img_player; +DrawImg img_platform; +DrawImg img_block; + +Entity ent_Player; +Entity ent_Platform; +Entity ent_Block; + +int EntityApplyGravity(Entity e) { + float grav = 10.0f; + float vTerminal = 50.0f; + vec2 vGrav; + + // Only apply gravity to some entity types + if (!(e->type == Ent_Player || 0)) { + return (1); + } + + // Apply gravity + vec2_set(vGrav, 0.0f, grav); + Entity_AddVelLimit(e, vGrav, vTerminal); + + return (1); +} + +void player_proc(Entity e, int ft) { + float acel = 8.0f; + float maxVel = 30.0f; + float jumpVel = 50.0f; + float airMovementFactor = 0.1f; + + + // Process elasticity + float entityScale[2]; + Entity_GetScale(e, entityScale); + entityScale[0] += (1.0f - entityScale[0]) / 2.0f; + entityScale[1] += (1.0f - entityScale[1]) / 2.0f; + Entity_SetScale(e, entityScale); + + + if (e->A > 0) { + if (Input_GetKey(InputKey_Jump) == InputKey_Pressed || + Input_GetKey(InputKey_Up) == InputKey_Pressed) { + + // Apply jump + if (e->vel[1] > (-jumpVel)) { + e->vel[1] = -jumpVel; + } + Entity_CalcBBox(e); + + Entity_SetScale(e, (float[2]){0.6f, 1.4f}); + + // FIXME: play sound + } + if (Input_GetKey(InputKey_Left)) { + vec2 left; + + // Apply left movement + vec2_set(left, -acel, 0.0f); + Entity_AddVelLimit(e, left, maxVel); + } + if (Input_GetKey(InputKey_Right)) { + vec2 right; + + // Apply right movement + vec2_set(right, acel, 0.0f); + Entity_AddVelLimit(e, right, maxVel); + } + } else { + if (Input_GetKey(InputKey_Left)) { + vec2 left; + + // Apply left movement + vec2_set(left, -(acel * airMovementFactor), 0.0f); + Entity_AddVelLimit(e, left, maxVel * airMovementFactor); + } + if (Input_GetKey(InputKey_Right)) { + vec2 right; + + // Apply right movement + vec2_set(right, acel * airMovementFactor, 0.0f); + Entity_AddVelLimit(e, right, maxVel * airMovementFactor); + } + } + if (Input_GetKey(InputKey_Action1) == InputKey_Pressed || + Input_GetKey(InputKey_Action2) == InputKey_Pressed) { + Entity_SetScale(e, (float[2]){1.0f, 1.0f}); + } + + e->A = 0; +} + +void player_postproc(Entity e, int ft){ + + // Scroll View + GameLib_MoveToPos(e->pos, 0.6f); + //GameLib_MoveToPos(e->pos, 1.0f); +} + +int player_collision(Entity ent, Entity ent2, float t, vec2 n){ + if(n[1] < 0 && fabs(n[1]) > fabs(n[0])){ + ent->A = 1; + } + + if (fabs(n[0]) > fabs(n[1])) { + float intensity = (fabs(ent->vel[0]) - 10.0f) / 40.0f; + if (intensity > 0) { + Entity_SetScale(ent, (float[2]){1.0f - (0.3f * intensity), 1.0f + (0.3f * intensity)}); + } + } else { + float intensity = (fabs(ent->vel[1]) - 10.0f) / 40.0f; + if (intensity > 0) { + Entity_SetScale(ent, (float[2]){1.0f + (0.3f * intensity), 1.0f - (0.3f * intensity)}); + } + } + return -1; +} + +void GameEnts_Init() { + + ///////////////////////////// + // Load and initialize media. + // + + img_player = Draw_LoadImage("data/player.png"); + img_platform = Draw_LoadImage("data/platform.png"); + img_block = Draw_LoadImage("data/block.png"); + + ///////////////////////// + // Initialize entity types. + // + + ent_Player = Entity_New(); + ent_Player->type = Ent_Player; + // ent_Player->flags=EntityFlag_Light; + // Entity_SetLight(ent_Player,.2,.2,.2,200); + ent_Player->flags = EntityFlag_Collision | EntityFlag_Overlap; + ent_Player->zorder = 0; + AnimPlay_SetImg(&ent_Player->anim, img_player); + ent_Player->proc = player_proc; + ent_Player->postproc = player_postproc; + ent_Player->collision = player_collision; + ent_Player->mass = 1.0f; + ent_Player->radius = 12; + ent_Player->width = 24; + ent_Player->height = 24; + ent_Player->fric_static = 0.0f; + ent_Player->fric_dynamic = 0.2f; + + ent_Platform = Entity_New(); + ent_Platform->type = Ent_Platform; + ent_Platform->flags = EntityFlag_PlatformCollision; + ent_Platform->zorder = -1; + AnimPlay_SetImg(&ent_Platform->anim, img_platform); + ent_Platform->mass = 0.0f; + ent_Platform->radius = 12; + ent_Platform->width = 64; + ent_Platform->height = 16; + ent_Platform->fric_static = 0.0f; + ent_Platform->fric_dynamic = 0.2f; + + ent_Block = Entity_New(); + ent_Block->type = Ent_Block; + ent_Block->flags = EntityFlag_BlockCollision; + ent_Block->zorder = -1; + AnimPlay_SetImg(&ent_Block->anim, img_block); + ent_Block->mass = 0.0f; + ent_Block->radius = 32; + ent_Block->width = 64; + ent_Block->height = 64; + ent_Block->fric_static = 0.0f; + ent_Block->fric_dynamic = 0.2f; +} diff --git a/Game/GameEnts.h b/Example.GameLib/src/GameEnts.h similarity index 94% rename from Game/GameEnts.h rename to Example.GameLib/src/GameEnts.h index fbcb4b3..bd65ad6 100644 --- a/Game/GameEnts.h +++ b/Example.GameLib/src/GameEnts.h @@ -1,19 +1,19 @@ -// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) - -#ifndef _GAMEENTS_H_ -#define _GAMEENTS_H_ - - -#define Ent_Player 1 -#define Ent_Platform 2 -#define Ent_Block 3 - -extern Entity ent_Player; -extern Entity ent_Platform; -extern Entity ent_Block; - -int EntityApplyGravity(Entity e); - -void GameEnts_Init(); - -#endif +// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) + +#ifndef _GAMEENTS_H_ +#define _GAMEENTS_H_ + + +#define Ent_Player 1 +#define Ent_Platform 2 +#define Ent_Block 3 + +extern Entity ent_Player; +extern Entity ent_Platform; +extern Entity ent_Block; + +int EntityApplyGravity(Entity e); + +void GameEnts_Init(); + +#endif diff --git a/Game/GameMap.c b/Example.GameLib/src/GameMap.c similarity index 94% rename from Game/GameMap.c rename to Example.GameLib/src/GameMap.c index dcff548..ad4b93d 100644 --- a/Game/GameMap.c +++ b/Example.GameLib/src/GameMap.c @@ -1,115 +1,115 @@ -// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) - -#include -#include -#include -#include - -#include "GameLib.h" - -#include "GameEnts.h" -#include "GameMap.h" - -int ReadLine(FILE *f, char *line, int max) { - int c; - int i = 0; - while (i < (max - 1)) { - c = fgetc(f); - if (c == EOF) { - line[i] = 0; - return (-1); - } - if (c == '\r') { - continue; - } - if (c == '\n') { - line[i] = 0; - return (i); - } - line[i] = c; - i++; - } - line[i] = 0; - return (i); -} - -Entity GameMapAux_CreateEnt(Entity ent, int i, int j, int res) { - Entity e; - vec2 pos; - e = Entity_Copy(ent); - vec2_set(pos, (res / 2) + i * res, (res / 2) + j * res); - vec2_plus(e->pos, e->pos, pos); - Entity_CalcBBox(e); - GameLib_AddEntity(e); - return (e); -} - -#define MaxLineLen 1024 - -int GameMap_LoadLevel(char *filename, int res) { - FILE *file; - char line[MaxLineLen]; - int len, i, j; - int width, height; - char *map; - - // Open the file - file = fopen(filename, "rb"); - if (!file) { - return (0); - } - - // Read the file to determine sizes - width = 0; - height = 0; - do { - len = ReadLine(file, line, MaxLineLen); - if (len > -1) { - if (len > height) { - height = len; - } - width++; - } - } while (len > -1); - fseek(file, 0, SEEK_SET); - - // Build the map - map = malloc(sizeof(char) * width * height); - memset(map, 0, width * height); -#define MAP(x, y) map[(x) + ((y)*width)] - j = 0; - do { - len = ReadLine(file, line, MaxLineLen); - for (i = 0; i < len; i++) { - MAP(j, (height - 1) - i) = line[i]; - } - j++; - } while (len > -1); - - // Close the file - fclose(file); - - // Parse the map - for (j = 0; j < height; j++) { - for (i = 0; i < width; i++) { - if (MAP(i, j) == 'P') { - // Player - GameMapAux_CreateEnt(ent_Player, i, j, res); - } - if (MAP(i, j) == '#') { - // Block - GameMapAux_CreateEnt(ent_Block, i, j, res); - } - if (MAP(i, j) == '|') { - // Platform - GameMapAux_CreateEnt(ent_Platform, i, j, res); - } - } - } - - // Cleanup - free(map); -#undef MAP - - return (1); +// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) + +#include +#include +#include +#include + +#include "GameLib.h" + +#include "GameEnts.h" +#include "GameMap.h" + +int ReadLine(FILE *f, char *line, int max) { + int c; + int i = 0; + while (i < (max - 1)) { + c = fgetc(f); + if (c == EOF) { + line[i] = 0; + return (-1); + } + if (c == '\r') { + continue; + } + if (c == '\n') { + line[i] = 0; + return (i); + } + line[i] = c; + i++; + } + line[i] = 0; + return (i); +} + +Entity GameMapAux_CreateEnt(Entity ent, int i, int j, int res) { + Entity e; + vec2 pos; + e = Entity_Copy(ent); + vec2_set(pos, (res / 2) + i * res, (res / 2) + j * res); + vec2_plus(e->pos, e->pos, pos); + Entity_CalcBBox(e); + GameLib_AddEntity(e); + return (e); +} + +#define MaxLineLen 1024 + +int GameMap_LoadLevel(char *filename, int res) { + FILE *file; + char line[MaxLineLen]; + int len, i, j; + int width, height; + char *map; + + // Open the file + file = fopen(filename, "rb"); + if (!file) { + return (0); + } + + // Read the file to determine sizes + width = 0; + height = 0; + do { + len = ReadLine(file, line, MaxLineLen); + if (len > -1) { + if (len > height) { + height = len; + } + width++; + } + } while (len > -1); + fseek(file, 0, SEEK_SET); + + // Build the map + map = malloc(sizeof(char) * width * height); + memset(map, 0, width * height); +#define MAP(x, y) map[(x) + ((y)*width)] + j = 0; + do { + len = ReadLine(file, line, MaxLineLen); + for (i = 0; i < len; i++) { + MAP(j, (height - 1) - i) = line[i]; + } + j++; + } while (len > -1); + + // Close the file + fclose(file); + + // Parse the map + for (j = 0; j < height; j++) { + for (i = 0; i < width; i++) { + if (MAP(i, j) == 'P') { + // Player + GameMapAux_CreateEnt(ent_Player, i, j, res); + } + if (MAP(i, j) == '#') { + // Block + GameMapAux_CreateEnt(ent_Block, i, j, res); + } + if (MAP(i, j) == '|') { + // Platform + GameMapAux_CreateEnt(ent_Platform, i, j, res); + } + } + } + + // Cleanup + free(map); +#undef MAP + + return (1); } \ No newline at end of file diff --git a/Game/GameMap.h b/Example.GameLib/src/GameMap.h similarity index 95% rename from Game/GameMap.h rename to Example.GameLib/src/GameMap.h index 3fc2109..44e5ec2 100644 --- a/Game/GameMap.h +++ b/Example.GameLib/src/GameMap.h @@ -1,7 +1,7 @@ -// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) -#ifndef _GAMEMAP_H_ -#define _GAMEMAP_H_ - -int GameMap_LoadLevel(char *filename, int res); - -#endif +// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) +#ifndef _GAMEMAP_H_ +#define _GAMEMAP_H_ + +int GameMap_LoadLevel(char *filename, int res); + +#endif diff --git a/Game/main.c b/Example.GameLib/src/main.c similarity index 95% rename from Game/main.c rename to Example.GameLib/src/main.c index dea4184..8a4bd33 100644 --- a/Game/main.c +++ b/Example.GameLib/src/main.c @@ -1,68 +1,68 @@ -// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) - -#include -#include -#include -#include -#include - - -#include "GameLib.h" -extern int gamelib_debug; - -#include "GameEnts.h" -#include "GameMap.h" - -DrawFnt font; -DrawImg imgBackground; - -void MainGame_Text(int x, int y, char *text) { - Draw_SetColor(0.0f, 0.0f, 0.0f, 0.5f); - Draw_DrawText(font, text, x + 1, y + 1); - Draw_SetColor(1.0f, 1.0f, 1.0f, 1.0f); - Draw_DrawText(font, text, x, y); -} - -void ProcGame() {} -void PostProcGame() { - // Apply gravity to every entity - GameLib_ForEachEnt(EntityApplyGravity); -} -void PreDrawGame(float f) {} -void DrawGame(float f) { MainGame_Text(8, 8, "Hello world!"); } - -int main(int argc, char *argv[]) { - - if (argc > 1) { - if (!strcmp(argv[1], "debug")) { - gamelib_debug = 1; - printf("Debug Mode Activated!\n"); - } - } - - GameLib_Init(640, 480, "Game", 20, 60); - - ///////////////////////////// - // Load and initialize media. - // - font = Draw_DefaultFont(255, 255, 255, 255); - imgBackground = Draw_LoadImage("data/background.png"); - Draw_SetOffset(imgBackground, 0, 0); - GameEnts_Init(); - - ///////////////////////// - // Initialize world. - // - GameLib_DelEnts(); - GameMap_LoadLevel("data/level_01.txt", 64); - - ///////////////////////// - // Run the world. - // - GameLib_CleanParallaxBackgrounds(); - GameLib_AddParallaxBackground(imgBackground, (int[2]){512, 512}, - (int[2]){0, 0}, (float[2]){0.5f, 0.0f}); - GameLib_Loop(ProcGame, PostProcGame, PreDrawGame, DrawGame); - - return (0); +// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) + +#include +#include +#include +#include +#include + + +#include "GameLib.h" +extern int gamelib_debug; + +#include "GameEnts.h" +#include "GameMap.h" + +DrawFnt font; +DrawImg imgBackground; + +void MainGame_Text(int x, int y, char *text) { + Draw_SetColor(0.0f, 0.0f, 0.0f, 0.5f); + Draw_DrawText(font, text, x + 1, y + 1); + Draw_SetColor(1.0f, 1.0f, 1.0f, 1.0f); + Draw_DrawText(font, text, x, y); +} + +void ProcGame() {} +void PostProcGame() { + // Apply gravity to every entity + GameLib_ForEachEnt(EntityApplyGravity); +} +void PreDrawGame(float f) {} +void DrawGame(float f) { MainGame_Text(8, 8, "Hello world!"); } + +int main(int argc, char *argv[]) { + + if (argc > 1) { + if (!strcmp(argv[1], "debug")) { + gamelib_debug = 1; + printf("Debug Mode Activated!\n"); + } + } + + GameLib_Init(640, 480, "Game", 20, 60); + + ///////////////////////////// + // Load and initialize media. + // + font = Draw_DefaultFont(255, 255, 255, 255); + imgBackground = Draw_LoadImage("data/background.png"); + Draw_SetOffset(imgBackground, 0, 0); + GameEnts_Init(); + + ///////////////////////// + // Initialize world. + // + GameLib_DelEnts(); + GameMap_LoadLevel("data/level_01.txt", 64); + + ///////////////////////// + // Run the world. + // + GameLib_CleanParallaxBackgrounds(); + GameLib_AddParallaxBackground(imgBackground, (int[2]){512, 512}, + (int[2]){0, 0}, (float[2]){0.5f, 0.0f}); + GameLib_Loop(ProcGame, PostProcGame, PreDrawGame, DrawGame); + + return (0); } \ No newline at end of file diff --git a/web/play.html b/Example.GameLib/web/index.html similarity index 81% rename from web/play.html rename to Example.GameLib/web/index.html index fa7b6cf..4e5bdc1 100644 --- a/web/play.html +++ b/Example.GameLib/web/index.html @@ -81,20 +81,26 @@ }); }], postRun: [], - canvas: document.getElementById('canvas'), progressContainer: document.getElementById('progress-container'), progressCode: document.getElementById('progress-code'), progressData: document.getElementById('progress-data'), - print: function(text) { + printErr: function(text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); if(console && console.log){ console.log(text); } }, - printErr: function(text) { - this.print(text); - }, + canvas: (function() { + var canvas = document.getElementById('canvas'); + + // As a default initial behavior, pop up an alert when webgl context is lost. To make your + // application robust, you may want to override this behavior before shipping! + // See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2 + canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false); + + return canvas; + })(), setStatus: function(text) { - this.print(text); var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); if(m){ this.progressData.value = parseInt(m[2]); @@ -121,7 +127,12 @@ xhr.onload = function(event) { var packageData = xhr.response; // Launch loaded code - eval.call(null,packageData); + try{ + eval.call(null,packageData); + }catch(e){ + alert("Error "+parent+" "+e); + parent.postMessage("Error",""); + } }; xhr.onerror = function(event) { alert(event); @@ -131,6 +142,5 @@ }; Module.LaunchCode(); - \ No newline at end of file diff --git a/Makefile b/Makefile index 7605e40..7906360 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ -IsMinGW := $(findstring MINGW,$(shell uname -s)) +VERBOSE_BUILD := false + +IsMinGW := $(findstring MINGW,$(shell uname -s)) $(findstring MSYS,$(shell uname -s)) IsDarwin := $(findstring Darwin,$(shell uname -s)) ifneq (,$(IsMinGW)) TARGET_ARCH := mingw @@ -12,11 +14,54 @@ endif endif ifeq ($(TARGET_ARCH),mingw) - include Makefile.win32 + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + SLASH := / + + LIBS := -L/mingw/lib -lopengl32 -lSDL -lm + CFLAGS := -g -mwindows -D_GNU_SOURCE=1 -DWIN32 + LDFLAGS := -g -mwindows -D_GNU_SOURCE=1 + + RES_GAMELIB := libgame.a + BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut --delimiter=' ' --fields=2) endif ifeq ($(TARGET_ARCH),linux) - include Makefile.linux + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + SLASH := / + + LIBS := -lSDL -lpthread -L/usr/X11R6/lib -L/usr/lib -lm -lGL -lX11 + CFLAGS := -Wall -g -I/usr/include/ -I/usr/include/SDL/ -I/usr/X11R6/include/ + LDFLAGS := + + RES_GAMELIB := libgame.a + RES_GAME := game + BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut --delimiter=' ' --fields=2) endif ifeq ($(TARGET_ARCH),macosx) - include Makefile.macosx + CC := gcc + AR := ar + LAUNCHER := + RM := rm -rf + MKDIR := mkdir + ECHO := echo + VERBOSE_BUILD := false + SLASH := / + + LIBS := -framework Cocoa -lm -framework OpenGL -framework SDL macosx/SDLMain.m + CFLAGS := -Wall -g -DMACOSX -ObjC -Dmain=SDL_main -I/usr/include/ -I/usr/include/SDL/ -I/usr/X11R6/include/ + LDFLAGS := + + RES_GAMELIB := libgame.a + BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut -d ' ' -f 2) endif + +include Makefile.common.mk \ No newline at end of file diff --git a/Makefile.common b/Makefile.common deleted file mode 100644 index 6a4552b..0000000 --- a/Makefile.common +++ /dev/null @@ -1,172 +0,0 @@ - -######################## -# Utility Declarations # -######################## -ifeq ($(VERBOSE_BUILD),true) - DO_CC=$(CC) $(CFLAGS) -o $@ -c $< - DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $< -else - DO_CC=@$(ECHO) "CC: $@" ;\ - $(CC) $(CFLAGS) -o $@ -c $< - DO_CXX=@$(ECHO) "CXX: $@" ;\ - $(CXX) $(CFLAGS) -o $@ -c $< -endif - -######################## -# GameLib Declarations # -######################## -CFLAGS += -IGameLib -GAMELIB_HEADS := \ - GameLib$(SLASH)Time.h \ - GameLib$(SLASH)Util.h \ - GameLib$(SLASH)QuadArray2D.h \ - GameLib$(SLASH)Draw.h \ - GameLib$(SLASH)Input.h \ - GameLib$(SLASH)Audio.h \ - GameLib$(SLASH)Anim.h \ - GameLib$(SLASH)Entity.h \ - GameLib$(SLASH)GameLib.h -GAMELIBS_OBJS := \ -<<<<<<< HEAD - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Time.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Util.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)QuadArray2D.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Draw.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Input.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Audio.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Anim.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)Entity.o \ - $(BUILDDIR)$(SLASH)GameLib$(SLASH)GameLib.o -RES_GAMELIB_OUT := $(BUILDDIR)$(SLASH)$(RES_GAMELIB) -======= - $(BUILDDIR)/GameLib.o/Time.o \ - $(BUILDDIR)/GameLib.o/Util.o \ - $(BUILDDIR)/GameLib.o/QuadArray2D.o \ - $(BUILDDIR)/GameLib.o/Draw.o \ - $(BUILDDIR)/GameLib.o/Input.o \ - $(BUILDDIR)/GameLib.o/Audio.o \ - $(BUILDDIR)/GameLib.o/Anim.o \ - $(BUILDDIR)/GameLib.o/Entity.o \ - $(BUILDDIR)/GameLib.o/GameLib.o -RES_GAMELIB_OUT := $(BUILDDIR)/$(RES_GAMELIB) ->>>>>>> c38b321 (Add support for MacOSX) - -##################### -# Game Declarations # -##################### -GAME_HEADS := $(GAMELIB_HEADS) Game$(SLASH)GameEnts.h Game$(SLASH)GameMap.h -GAME_OBJS := \ -<<<<<<< HEAD - $(BUILDDIR)$(SLASH)Game$(SLASH)GameEnts.o \ - $(BUILDDIR)$(SLASH)Game$(SLASH)GameMap.o \ - $(BUILDDIR)$(SLASH)Game$(SLASH)main.o -RES_GAME_OUT := $(BUILDDIR)$(SLASH)$(RES_GAME) -======= - $(BUILDDIR)/Game.o/GameEnts.o \ - $(BUILDDIR)/Game.o/GameMap.o \ - $(BUILDDIR)/Game.o/main.o -RES_GAME_OUT := $(BUILDDIR)/$(RES_GAME) ->>>>>>> c38b321 (Add support for MacOSX) - - -################# -# General Rules # -################# -all: $(BUILDDIR) $(RES_GAME_OUT) - -$(BUILDDIR): - $(MKDIR) $(BUILDDIR) -<<<<<<< HEAD - $(MKDIR) $(BUILDDIR)$(SLASH)GameLib - $(MKDIR) $(BUILDDIR)$(SLASH)Game -======= - $(MKDIR) $(BUILDDIR)/GameLib.o - $(MKDIR) $(BUILDDIR)/Game.o ->>>>>>> c38b321 (Add support for MacOSX) - -clean: - $(RM) $(GAMELIBS_OBJS) $(RES_GAMELIB_OUT) $(GAME_OBJS) $(RES_GAME_OUT) - -run: $(BUILDDIR) $(RES_GAME_OUT) - $(LAUNCHER) .$(SLASH)$(RES_GAME_OUT) debug - -rebuild: clean all - -################# -# GameLib Rules # -################# -<<<<<<< HEAD -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Time.o: GameLib$(SLASH)Time.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Util.o: GameLib$(SLASH)Util.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)QuadArray2D.o: GameLib$(SLASH)QuadArray2D.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Draw.o: GameLib$(SLASH)Draw.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Input.o: GameLib$(SLASH)Input.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Audio.o: GameLib$(SLASH)Audio.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Entity.o: GameLib$(SLASH)Entity.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)Anim.o: GameLib$(SLASH)Anim.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)GameLib$(SLASH)GameLib.o: GameLib$(SLASH)GameLib.c $(HEADS) -======= -$(BUILDDIR)/GameLib.o/Time.o: GameLib/Time.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Util.o: GameLib/Util.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/QuadArray2D.o: GameLib/QuadArray2D.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Draw.o: GameLib/Draw.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Input.o: GameLib/Input.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Audio.o: GameLib/Audio.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Entity.o: GameLib/Entity.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/Anim.o: GameLib/Anim.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/GameLib.o/GameLib.o: GameLib/GameLib.c $(HEADS) ->>>>>>> c38b321 (Add support for MacOSX) - $(DO_CC) - - -############## -# Game Rules # -############## - -<<<<<<< HEAD -$(BUILDDIR)$(SLASH)Game$(SLASH)GameEnts.o: Game$(SLASH)GameEnts.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)Game$(SLASH)GameMap.o: Game$(SLASH)GameMap.c $(HEADS) - $(DO_CC) -$(BUILDDIR)$(SLASH)Game$(SLASH)main.o: Game$(SLASH)main.c $(HEADS) -======= -$(BUILDDIR)/Game.o/GameEnts.o: Game/GameEnts.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/Game.o/GameMap.o: Game/GameMap.c $(HEADS) - $(DO_CC) -$(BUILDDIR)/Game.o/main.o: Game/main.c $(HEADS) ->>>>>>> c38b321 (Add support for MacOSX) - $(DO_CC) - - -################ -# Result Rules # -################ - -$(RES_GAMELIB_OUT): $(GAMELIBS_OBJS) - @$(ECHO) "STATICLIB: $@" - @$(AR) rcs $(RES_GAMELIB_OUT) $(GAMELIBS_OBJS) - -$(RES_GAME_OUT): $(RES_GAMELIB_OUT) $(GAME_OBJS) - @$(ECHO) "LINK: $@" - @$(CC) $(GAME_OBJS) $(RES_GAMELIB_OUT) -o $(RES_GAME_OUT) $(CFLAGS) $(LIBS) $(LDFLAGS) - - - - diff --git a/Makefile.common.mk b/Makefile.common.mk new file mode 100644 index 0000000..481f378 --- /dev/null +++ b/Makefile.common.mk @@ -0,0 +1,89 @@ + +######################## +# Utility Declarations # +######################## +ifeq ($(VERBOSE_BUILD),true) + DO_CC=$(CC) $(CFLAGS) -o $@ -c $< + DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $< +else + DO_CC=@$(ECHO) "CC: $@" ;\ + $(CC) $(CFLAGS) -o $@ -c $< + DO_CXX=@$(ECHO) "CXX: $@" ;\ + $(CXX) $(CFLAGS) -o $@ -c $< +endif + +######################## +# GameLib Declarations # +######################## +CFLAGS += -Isrc +GAMELIB_HEADS := \ + src$(SLASH)Time.h \ + src$(SLASH)Util.h \ + src$(SLASH)QuadArray2D.h \ + src$(SLASH)Draw.h \ + src$(SLASH)Input.h \ + src$(SLASH)Audio.h \ + src$(SLASH)Anim.h \ + src$(SLASH)Entity.h \ + src$(SLASH)GameLib.h +GAMELIBS_OBJS := \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Time.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Util.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)QuadArray2D.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Draw.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Input.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Audio.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Anim.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Entity.o \ + $(BUILDDIR)$(SLASH)GameLib.o$(SLASH)GameLib.o +RES_GAMELIB_OUT := $(BUILDDIR)$(SLASH)$(RES_GAMELIB) + +################# +# General Rules # +################# +all: $(BUILDDIR) $(RES_GAMELIB_OUT) + +$(BUILDDIR): + $(MKDIR) $(BUILDDIR) + $(MKDIR) $(BUILDDIR)$(SLASH)GameLib.o + +clean: + $(RM) $(GAMELIBS_OBJS) $(RES_GAMELIB_OUT) + +lib: $(BUILDDIR) $(RES_GAMELIB_OUT) + +rebuild: clean all + +################# +# GameLib Rules # +################# +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Time.o: src$(SLASH)Time.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Util.o: src$(SLASH)Util.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)QuadArray2D.o: src$(SLASH)QuadArray2D.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Draw.o: src$(SLASH)Draw.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Input.o: src$(SLASH)Input.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Audio.o: src$(SLASH)Audio.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Entity.o: src$(SLASH)Entity.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)Anim.o: src$(SLASH)Anim.c $(HEADS) + $(DO_CC) +$(BUILDDIR)$(SLASH)GameLib.o$(SLASH)GameLib.o: src$(SLASH)GameLib.c $(HEADS) + $(DO_CC) + + +################ +# Result Rules # +################ + +$(RES_GAMELIB_OUT): $(GAMELIBS_OBJS) + @$(ECHO) "STATICLIB: $@" + @$(AR) rcs $(RES_GAMELIB_OUT) $(GAMELIBS_OBJS) + + + diff --git a/Makefile.emscripten b/Makefile.emscripten.mk similarity index 64% rename from Makefile.emscripten rename to Makefile.emscripten.mk index 950dbcb..dac2b53 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten.mk @@ -1,26 +1,25 @@ -CC := emcc -AR := emar -LAUNCHER := emrun --port 8080 -RM := del -MKDIR := mkdir -ECHO := echo -SLASH := \\ -VERBOSE_BUILD := true - -LIBS := -CFLAGS := -s FULL_ES2=1 -s ASM_JS=1 -O1 -Wno-implicit-function-declaration -DEMSCRIPTEN -LDFLAGS := --preload-file data -s TOTAL_MEMORY=134217728 - -RES_GAMELIB := libgame.a -RES_GAME := game.html -BUILDDIR := build-emscripten - -ifeq ($(target),release) - CFLAGS := -s FULL_ES2=1 -s ASM_JS=1 -O1 --llvm-lto 1 -Wno-implicit-function-declaration -DEMSCRIPTEN - BUILDDIR := build-emscripten-release - LDFLAGS := --preload-file data -s TOTAL_MEMORY=134217728 --emrun -endif - -include Makefile.common - - +CC := emcc +AR := emar +LAUNCHER := emrun --port 8080 +RM := del +MKDIR := mkdir +ECHO := echo +VERBOSE_BUILD := true +SLASH := \\ + +LIBS := +CFLAGS := -s FULL_ES2=1 -s ASM_JS=1 -O1 -Wno-implicit-function-declaration -DEMSCRIPTEN +LDFLAGS := --preload-file data -s TOTAL_MEMORY=134217728 -lidbfs.js + +RES_GAMELIB := libgame.a +BUILDDIR := build-emscripten + +ifeq ($(target),release) + CFLAGS := $(CFLAGS) -O2 + BUILDDIR := build-emscripten-release + LDFLAGS := --preload-file data -s TOTAL_MEMORY=134217728 --emrun +endif + +include Makefile.common.mk + + diff --git a/Makefile.linux b/Makefile.linux deleted file mode 100644 index 0135b05..0000000 --- a/Makefile.linux +++ /dev/null @@ -1,17 +0,0 @@ -CC := gcc -AR := ar -LAUNCHER := -RM := rm -rf -MKDIR := mkdir -ECHO := echo -SLASH := / - -LIBS := -lSDL -lpthread -L/usr/X11R6/lib -L/usr/lib -lm -lGL -lX11 -CFLAGS := -Wall -g -I/usr/include/ -I/usr/include/SDL/ -I/usr/X11R6/include/ -LDFLAGS := - -RES_GAMELIB := libgame.a -RES_GAME := game -BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut --delimiter=' ' --fields=2) - -include Makefile.common diff --git a/Makefile.macosx b/Makefile.macosx deleted file mode 100644 index f5462a0..0000000 --- a/Makefile.macosx +++ /dev/null @@ -1,16 +0,0 @@ -CC := gcc -AR := ar -LAUNCHER := -RM := rm -rf -MKDIR := mkdir -ECHO := echo - -LIBS := -framework Cocoa -lm -framework OpenGL -framework SDL macosx/SDLMain.m -CFLAGS := -Wall -g -DMACOSX -ObjC -Dmain=SDL_main -I/usr/include/ -I/usr/include/SDL/ -I/usr/X11R6/include/ -LDFLAGS := - -RES_GAMELIB := libgame.a -RES_GAME := game -BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut -d ' ' -f 2) - -include Makefile.common diff --git a/Makefile.mingw b/Makefile.mingw deleted file mode 100644 index 9b373f3..0000000 --- a/Makefile.mingw +++ /dev/null @@ -1,20 +0,0 @@ -CC := gcc -AR := ar -LAUNCHER := -RM := rm -rf -MKDIR := mkdir -ECHO := echo -SLASH := / - -LIBS := -L/mingw/lib -lopengl32 -lSDL -lm -#CFLAGS := -I/mingw/include -g -mwindows -D_GNU_SOURCE=1 -CFLAGS := -g -mwindows -D_GNU_SOURCE=1 -DWIN32 -LDFLAGS := -g -mwindows -D_GNU_SOURCE=1 - -RES_GAMELIB := libgame.a -RES_GAME := game.exe -BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut --delimiter=' ' --fields=2) - -include Makefile.common - - diff --git a/Makefile.win32 b/Makefile.win32 deleted file mode 100644 index 9b373f3..0000000 --- a/Makefile.win32 +++ /dev/null @@ -1,20 +0,0 @@ -CC := gcc -AR := ar -LAUNCHER := -RM := rm -rf -MKDIR := mkdir -ECHO := echo -SLASH := / - -LIBS := -L/mingw/lib -lopengl32 -lSDL -lm -#CFLAGS := -I/mingw/include -g -mwindows -D_GNU_SOURCE=1 -CFLAGS := -g -mwindows -D_GNU_SOURCE=1 -DWIN32 -LDFLAGS := -g -mwindows -D_GNU_SOURCE=1 - -RES_GAMELIB := libgame.a -RES_GAME := game.exe -BUILDDIR := build-$(shell gcc -v 2>&1 | grep "Target:" | cut --delimiter=' ' --fields=2) - -include Makefile.common - - diff --git a/dist.emscripten.sh b/dist.emscripten.sh deleted file mode 100644 index 0d40968..0000000 --- a/dist.emscripten.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -#make -f Makefile.emscripten target=release clean -#make -f Makefile.emscripten target=release - -make -f Makefile.emscripten clean -make -f Makefile.emscripten - -mkdir -p DIST/web -cp -Rv web/* DIST/web/ -#cp -v build-emscripten-release/game.* DIST/web/ -cp -v build-emscripten/game.* DIST/web/ diff --git a/dist.sh b/dist.sh deleted file mode 100644 index 9988696..0000000 --- a/dist.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -DIRNAME="TestGame" - -DATE=$(date +%Y%m%d) -ZIPNAME="$DIRNAME.$DATE.zip" - -make -f Makefile.linux -make -f Makefile.mingw - -mkdir $DIRNAME -cd $DIRNAME -cp -v ../readme.txt ./ -cp -v ../build-mingw/game.exe ./game-windows.exe -cp -v ../build-linux/game ./game-linux.bin -cp -v ../SDL.dll ./ -cp -v ../libSDL-1.2.so.0 ./ -mkdir data -cp -v ../data/*.bmp data/ -cp -v ../data/*.wav data/ -cp -v ../data/level_*.txt data/ -cd .. - -rm $ZIPNAME -zip -r $ZIPNAME $DIRNAME - -rm -rf $DIRNAME - diff --git a/dist.win32.sh b/dist.win32.sh deleted file mode 100644 index 2976be5..0000000 --- a/dist.win32.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -DIRNAME="TestGame" - -DATE=$(date +%Y%m%d) -ZIPNAME="$DIRNAME.$DATE.zip" - -make -f Makefile.win32 clean -make -f Makefile.win32 - -mkdir $DIRNAME -cd $DIRNAME -cp -v ../readme.txt ./ -cp -v ../build-mingw/game.exe ./game.exe -cp -v ../SDL.dll ./ -mkdir data -cp -v ../data/*.bmp data/ -cp -v ../data/*.wav data/ -cp -v ../data/level_*.txt data/ -cd .. - -rm $ZIPNAME -zip -r $ZIPNAME $DIRNAME - -rm -rf $DIRNAME - diff --git a/gamelib-config b/gamelib-config index d0be37a..72ff9b7 100644 --- a/gamelib-config +++ b/gamelib-config @@ -24,7 +24,7 @@ case "$uname" in *MINGW* | *MSYS*) # Configuracion de Win32/Mingw libs="-L/mingw/lib -lopengl32 -lSDL" - cflags="-g -mwindows -D_GNU_SOURCE=1" + cflags="-g -mwindows -D_GNU_SOURCE=1 -DWIN32" builddir="build-$gcctarget" platform="$gcctarget" exeextension=".exe" @@ -37,6 +37,14 @@ case "$uname" in platform="emscripten" exeextension=".html" ;; + *Darwin*) + # Configuracion de MacOSX + libs="-framework Cocoa -lm -framework OpenGL -framework SDL" + cflags="-Wall -g -DMACOSX -ObjC -Dmain=SDL_main -I/usr/include/ -I/usr/include/SDL/ -I/usr/X11R6/include/" + builddir="build-$gcctarget" + platform="$gcctarget" + exeextension="" + ;; *) # Configuracion de Linux libs="-lSDL -lpthread -L/usr/X11R6/lib -L/usr/lib -lm -lGL -lX11" @@ -50,7 +58,7 @@ esac while test $# -gt 0; do case $1 in --cflags) - echo "$cflags -I$prefix/GameLib" + echo "$cflags -I$prefix/src" ;; --libs) echo "$libs" diff --git a/GameLib/Anim.c b/src/Anim.c similarity index 100% rename from GameLib/Anim.c rename to src/Anim.c diff --git a/GameLib/Anim.h b/src/Anim.h similarity index 100% rename from GameLib/Anim.h rename to src/Anim.h diff --git a/GameLib/Audio.c b/src/Audio.c similarity index 100% rename from GameLib/Audio.c rename to src/Audio.c diff --git a/GameLib/Audio.h b/src/Audio.h similarity index 100% rename from GameLib/Audio.h rename to src/Audio.h diff --git a/GameLib/Draw.c b/src/Draw.c similarity index 100% rename from GameLib/Draw.c rename to src/Draw.c diff --git a/GameLib/Draw.h b/src/Draw.h similarity index 100% rename from GameLib/Draw.h rename to src/Draw.h diff --git a/GameLib/Entity.c b/src/Entity.c similarity index 100% rename from GameLib/Entity.c rename to src/Entity.c diff --git a/GameLib/Entity.h b/src/Entity.h similarity index 100% rename from GameLib/Entity.h rename to src/Entity.h diff --git a/GameLib/FontData.h b/src/FontData.h similarity index 100% rename from GameLib/FontData.h rename to src/FontData.h diff --git a/GameLib/GameLib.c b/src/GameLib.c similarity index 100% rename from GameLib/GameLib.c rename to src/GameLib.c diff --git a/GameLib/GameLib.h b/src/GameLib.h similarity index 100% rename from GameLib/GameLib.h rename to src/GameLib.h diff --git a/GameLib/Input.c b/src/Input.c similarity index 100% rename from GameLib/Input.c rename to src/Input.c diff --git a/GameLib/Input.h b/src/Input.h similarity index 100% rename from GameLib/Input.h rename to src/Input.h diff --git a/GameLib/QuadArray2D.c b/src/QuadArray2D.c similarity index 100% rename from GameLib/QuadArray2D.c rename to src/QuadArray2D.c diff --git a/GameLib/QuadArray2D.h b/src/QuadArray2D.h similarity index 100% rename from GameLib/QuadArray2D.h rename to src/QuadArray2D.h diff --git a/GameLib/Time.c b/src/Time.c similarity index 100% rename from GameLib/Time.c rename to src/Time.c diff --git a/GameLib/Time.h b/src/Time.h similarity index 100% rename from GameLib/Time.h rename to src/Time.h diff --git a/GameLib/Util.c b/src/Util.c similarity index 100% rename from GameLib/Util.c rename to src/Util.c diff --git a/GameLib/Util.h b/src/Util.h similarity index 100% rename from GameLib/Util.h rename to src/Util.h diff --git a/GameLib/lodepng.c b/src/lodepng.c similarity index 100% rename from GameLib/lodepng.c rename to src/lodepng.c diff --git a/GameLib/lodepng.h b/src/lodepng.h similarity index 100% rename from GameLib/lodepng.h rename to src/lodepng.h diff --git a/web/playEmbbed.html b/web/playEmbbed.html deleted file mode 100644 index 5b43f20..0000000 --- a/web/playEmbbed.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Game - - - -
-

Loading...

- Code:
-
-
- Data:
-
-
-
- -
- - - - - - \ No newline at end of file