diff --git a/Makefile b/Makefile index f9344f4..416b58a 100755 --- a/Makefile +++ b/Makefile @@ -4,9 +4,9 @@ ifndef $(CFG) CFG=Debug endif -# you can also pass : mingw32 and macosx +# you can also pass : linux and macosx ifndef $(OS) - OS=linux + OS=mingw32 endif LIBNAME=sdlgame @@ -21,9 +21,17 @@ EXESUFFIX= LIBSUFFIX= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows - EXESUFFIX=".exe" - LIBSUFFIX=".a" + ADDL_CFLAGS=-rdynamic -mwindows -DOS_WIN32 + EXESUFFIX=.exe + LIBSUFFIX=.a +endif + +ifeq "$(OS)" "macosx" + ADDL_CFLAGS=-rdynamic -DOS_MACOSX +endif + +ifeq "$(OS)" "linux" + ADDL_CFLAGS=-rdynamic -DOS_LINUX endif ifeq "$(CFG)" "Debug" @@ -42,7 +50,8 @@ endif LINKLIBS=-L../../$(CFG) -L$(OUTDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -LIBOBJ=$(OBJDIR)/Common.o \ +LIBOBJ=$(OBJDIR)/Backtrace.o \ + $(OBJDIR)/Common.o \ $(OBJDIR)/FontRenderer.o \ $(OBJDIR)/Renderable.o \ $(OBJDIR)/SpriteStrip.o \ @@ -53,11 +62,14 @@ LIBOBJ=$(OBJDIR)/Common.o \ $(OBJDIR)/MenuDisplay.o \ $(OBJDIR)/Game.o -DEMOS=bouncingball \ +DEMOS=backtrace \ + bouncingball \ exploder \ explodingball \ frictionball \ - gravity + helloworld \ + gravity \ + tilemap \ CC = gcc CXX = g++ @@ -91,7 +103,7 @@ clean: cd demo && for dir in $(DEMOS); do cd $$dir && make CFG=$(CFG) OS=$(OS) clean; if [ $$? -ne 0 ]; then exit 1 ; fi; cd .. ; done .PHONY: demos demos: - cd demo && for dir in $(DEMOS); do cd $$dir && make CFG=$(CFG) OS=$(OS); if [ $$? -ne 0 ]; then exit 1 ; fi; cd .. ; done + cd demo && for dir in $(DEMOS); do cd $$dir && make "ADDL_CFLAGS=$(ADDL_CFLAGS)" CFG=$(CFG) OS=$(OS); if [ $$? -ne 0 ]; then exit 1 ; fi; cd .. ; done .PHONY: rebuild rebuild: diff --git a/demo/backtrace/Makefile b/demo/backtrace/Makefile new file mode 100755 index 0000000..7dd2271 --- /dev/null +++ b/demo/backtrace/Makefile @@ -0,0 +1,98 @@ +# This makefile is a bit hackish. I wrote it early in the AM. +# Fohgiveuhness, please!! + + +ifndef $(CFG) + CFG=Debug +endif + +# you can also pass : mingw32 and macosx +ifndef $(OS) + OS=linux +endif + +TARGET=demo +BINTARGET=$(TARGET) +PROJECTHOME=$(shell pwd) +SDL_CFLAGS=$(shell sdl-config --cflags) +SDL_LDFLAGS=$(shell sdl-config --libs) +LIBDIR=/usr/lib +HEADERDIR=/usr/include +ADDL_CFLAGS= + +ifeq "$(OS)" "mingw32" + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic +endif +ifeq "$(OS)" "linux" + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic +endif + +# default for release configs +ifeq "$(CFG)" "Release" + OUTDIR=Release + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET).exe + else + BINTARGET=$(TARGET) + endif + LINKLIB=sdlgame + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif +ifeq "$(CFG)" "Debug" + OUTDIR=Debug + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET)-dbg.exe + else + BINTARGET=$(TARGET)-dbg + endif + LINKLIB=sdlgame-dbg + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif + +LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf + +BINOBJ=$(OUTDIR)/demo.o + +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + +CC = gcc +CXX = g++ +LD = $(CXX) +INSTALL = $(which install) + +$(OUTDIR)/%.o : cpp/%.cpp + $(CXX) $(CXXFLAGS) -o $@ $< + +all: bin + +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) + $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ + -pg $(BINOBJ) $(LINKLIBS) + +.PHONY: clean +clean: + rm -f $(OUTDIR)/* + +.PHONY: rebuild +rebuild: + make clean + make CFG=$(CFG) diff --git a/demo/backtrace/cpp/demo.cpp b/demo/backtrace/cpp/demo.cpp new file mode 100755 index 0000000..072fd35 --- /dev/null +++ b/demo/backtrace/cpp/demo.cpp @@ -0,0 +1,28 @@ +/* + * This demo starts up and intentionally crashes itself to prove the backtrace stuff works + */ + +#include + +class Object { +private: + int *x; +public: + int crashme(void); +}; + +int Object::crashme(void) +{ + this->x = 0; + return *(this->x); +} + +int main(int argc, char *argv[]) +{ + RegisterStacktrace(); + + // We don't initialize anything here because we would lose the memory + Object x; + x.crashme(); + return 0; +} diff --git a/demo/backtrace/gfx/tileset_collision.png b/demo/backtrace/gfx/tileset_collision.png new file mode 100755 index 0000000..d470c7b Binary files /dev/null and b/demo/backtrace/gfx/tileset_collision.png differ diff --git a/demo/backtrace/gfx/tileset_mario.png b/demo/backtrace/gfx/tileset_mario.png new file mode 100755 index 0000000..a6b55eb Binary files /dev/null and b/demo/backtrace/gfx/tileset_mario.png differ diff --git a/demo/backtrace/gmon.out b/demo/backtrace/gmon.out new file mode 100755 index 0000000..10d04fa Binary files /dev/null and b/demo/backtrace/gmon.out differ diff --git a/demo/backtrace/map.tmx b/demo/backtrace/map.tmx new file mode 100755 index 0000000..2fd771d --- /dev/null +++ b/demo/backtrace/map.tmx @@ -0,0 +1,7285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/bouncingball/Makefile b/demo/bouncingball/Makefile index 69f4df3..7dd2271 100755 --- a/demo/bouncingball/Makefile +++ b/demo/bouncingball/Makefile @@ -21,10 +21,10 @@ HEADERDIR=/usr/include ADDL_CFLAGS= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic endif ifeq "$(OS)" "linux" - ADDL_CFLAGS=-DBUILD_LINUX + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic endif # default for release configs @@ -53,6 +53,10 @@ LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSD BINOBJ=$(OUTDIR)/demo.o +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + CC = gcc CXX = g++ LD = $(CXX) @@ -63,14 +67,30 @@ $(OUTDIR)/%.o : cpp/%.cpp all: bin -bin: $(BINOBJ) +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ -pg $(BINOBJ) $(LINKLIBS) .PHONY: clean clean: - rm -f $(OUTDIR)/*.o - rm -f $(OUTDIR)/$(BINTARGET) + rm -f $(OUTDIR)/* .PHONY: rebuild rebuild: diff --git a/demo/bouncingball/Release/demo.exe b/demo/bouncingball/Release/demo.exe index ae6d2eb..8b7571b 100755 Binary files a/demo/bouncingball/Release/demo.exe and b/demo/bouncingball/Release/demo.exe differ diff --git a/demo/exploder/Makefile b/demo/exploder/Makefile index 61f9029..7dd2271 100755 --- a/demo/exploder/Makefile +++ b/demo/exploder/Makefile @@ -21,10 +21,10 @@ HEADERDIR=/usr/include ADDL_CFLAGS= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic endif ifeq "$(OS)" "linux" - ADDL_CFLAGS=-DBUILD_LINUX + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic endif # default for release configs @@ -36,7 +36,7 @@ ifeq "$(CFG)" "Release" BINTARGET=$(TARGET) endif LINKLIB=sdlgame - CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -c $(SDL_CFLAGS) $(ADDL_CFLAGS) + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif ifeq "$(CFG)" "Debug" OUTDIR=Debug @@ -53,6 +53,10 @@ LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSD BINOBJ=$(OUTDIR)/demo.o +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + CC = gcc CXX = g++ LD = $(CXX) @@ -63,14 +67,30 @@ $(OUTDIR)/%.o : cpp/%.cpp all: bin -bin: $(BINOBJ) +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ -pg $(BINOBJ) $(LINKLIBS) .PHONY: clean clean: - rm -f $(OUTDIR)/*.o - rm -f $(OUTDIR)/$(BINTARGET) + rm -f $(OUTDIR)/* .PHONY: rebuild rebuild: diff --git a/demo/exploder/Release/demo.exe b/demo/exploder/Release/demo.exe index 111d41b..0d9dded 100755 Binary files a/demo/exploder/Release/demo.exe and b/demo/exploder/Release/demo.exe differ diff --git a/demo/explodingball/Makefile b/demo/explodingball/Makefile index 69f4df3..7dd2271 100755 --- a/demo/explodingball/Makefile +++ b/demo/explodingball/Makefile @@ -21,10 +21,10 @@ HEADERDIR=/usr/include ADDL_CFLAGS= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic endif ifeq "$(OS)" "linux" - ADDL_CFLAGS=-DBUILD_LINUX + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic endif # default for release configs @@ -53,6 +53,10 @@ LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSD BINOBJ=$(OUTDIR)/demo.o +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + CC = gcc CXX = g++ LD = $(CXX) @@ -63,14 +67,30 @@ $(OUTDIR)/%.o : cpp/%.cpp all: bin -bin: $(BINOBJ) +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ -pg $(BINOBJ) $(LINKLIBS) .PHONY: clean clean: - rm -f $(OUTDIR)/*.o - rm -f $(OUTDIR)/$(BINTARGET) + rm -f $(OUTDIR)/* .PHONY: rebuild rebuild: diff --git a/demo/explodingball/Release/demo.exe b/demo/explodingball/Release/demo.exe index 858f390..9fc825c 100755 Binary files a/demo/explodingball/Release/demo.exe and b/demo/explodingball/Release/demo.exe differ diff --git a/demo/frictionball/Makefile b/demo/frictionball/Makefile index 69f4df3..7dd2271 100755 --- a/demo/frictionball/Makefile +++ b/demo/frictionball/Makefile @@ -21,10 +21,10 @@ HEADERDIR=/usr/include ADDL_CFLAGS= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic endif ifeq "$(OS)" "linux" - ADDL_CFLAGS=-DBUILD_LINUX + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic endif # default for release configs @@ -53,6 +53,10 @@ LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSD BINOBJ=$(OUTDIR)/demo.o +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + CC = gcc CXX = g++ LD = $(CXX) @@ -63,14 +67,30 @@ $(OUTDIR)/%.o : cpp/%.cpp all: bin -bin: $(BINOBJ) +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ -pg $(BINOBJ) $(LINKLIBS) .PHONY: clean clean: - rm -f $(OUTDIR)/*.o - rm -f $(OUTDIR)/$(BINTARGET) + rm -f $(OUTDIR)/* .PHONY: rebuild rebuild: diff --git a/demo/frictionball/Release/demo.exe b/demo/frictionball/Release/demo.exe index 62e93da..4c4b541 100755 Binary files a/demo/frictionball/Release/demo.exe and b/demo/frictionball/Release/demo.exe differ diff --git a/demo/gravity/Makefile b/demo/gravity/Makefile index 69f4df3..7dd2271 100755 --- a/demo/gravity/Makefile +++ b/demo/gravity/Makefile @@ -21,10 +21,10 @@ HEADERDIR=/usr/include ADDL_CFLAGS= ifeq "$(OS)" "mingw32" - ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic endif ifeq "$(OS)" "linux" - ADDL_CFLAGS=-DBUILD_LINUX + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic endif # default for release configs @@ -53,6 +53,10 @@ LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSD BINOBJ=$(OUTDIR)/demo.o +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + CC = gcc CXX = g++ LD = $(CXX) @@ -63,14 +67,30 @@ $(OUTDIR)/%.o : cpp/%.cpp all: bin -bin: $(BINOBJ) +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ -pg $(BINOBJ) $(LINKLIBS) .PHONY: clean clean: - rm -f $(OUTDIR)/*.o - rm -f $(OUTDIR)/$(BINTARGET) + rm -f $(OUTDIR)/* .PHONY: rebuild rebuild: diff --git a/demo/gravity/Release/demo.exe b/demo/gravity/Release/demo.exe index e4d0fdc..79ec93c 100755 Binary files a/demo/gravity/Release/demo.exe and b/demo/gravity/Release/demo.exe differ diff --git a/demo/helloworld/Makefile b/demo/helloworld/Makefile new file mode 100755 index 0000000..7dd2271 --- /dev/null +++ b/demo/helloworld/Makefile @@ -0,0 +1,98 @@ +# This makefile is a bit hackish. I wrote it early in the AM. +# Fohgiveuhness, please!! + + +ifndef $(CFG) + CFG=Debug +endif + +# you can also pass : mingw32 and macosx +ifndef $(OS) + OS=linux +endif + +TARGET=demo +BINTARGET=$(TARGET) +PROJECTHOME=$(shell pwd) +SDL_CFLAGS=$(shell sdl-config --cflags) +SDL_LDFLAGS=$(shell sdl-config --libs) +LIBDIR=/usr/lib +HEADERDIR=/usr/include +ADDL_CFLAGS= + +ifeq "$(OS)" "mingw32" + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic +endif +ifeq "$(OS)" "linux" + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic +endif + +# default for release configs +ifeq "$(CFG)" "Release" + OUTDIR=Release + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET).exe + else + BINTARGET=$(TARGET) + endif + LINKLIB=sdlgame + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif +ifeq "$(CFG)" "Debug" + OUTDIR=Debug + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET)-dbg.exe + else + BINTARGET=$(TARGET)-dbg + endif + LINKLIB=sdlgame-dbg + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif + +LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf + +BINOBJ=$(OUTDIR)/demo.o + +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + +CC = gcc +CXX = g++ +LD = $(CXX) +INSTALL = $(which install) + +$(OUTDIR)/%.o : cpp/%.cpp + $(CXX) $(CXXFLAGS) -o $@ $< + +all: bin + +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) + $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ + -pg $(BINOBJ) $(LINKLIBS) + +.PHONY: clean +clean: + rm -f $(OUTDIR)/* + +.PHONY: rebuild +rebuild: + make clean + make CFG=$(CFG) diff --git a/demo/helloworld/cpp/demo.cpp b/demo/helloworld/cpp/demo.cpp new file mode 100755 index 0000000..9e7f2c0 --- /dev/null +++ b/demo/helloworld/cpp/demo.cpp @@ -0,0 +1,33 @@ +/* + * This demo starts up and does nothing until you hit Escape to kill it. + */ + +#include + +int main(int argc, char *argv[]) +{ + Display2D display = Display2D(); + Game &myGame = Game::NewSingleton(); + unsigned int lastTimer = 0; + + myGame.initSDL(); + myGame.initVideo(640, 480, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); + display.initVideo((Vector){0,0,0}, 640, 480, 32, SDL_HWSURFACE); + display.setActive(1); + myGame.windows.push_back(&display); + + lastTimer = SDL_GetTicks(); + + while ( 1 ) { + if ( (SDL_GetTicks() - lastTimer) >= (1000/30) ) { + myGame.update(); + lastTimer = SDL_GetTicks(); + } else { + myGame.update(1); + } + if ( myGame.keyHeldDown(SDLK_ESCAPE) ) { + break; + } + myGame.finishFrame(); + } +} diff --git a/demo/helloworld/gfx/tileset_collision.png b/demo/helloworld/gfx/tileset_collision.png new file mode 100755 index 0000000..d470c7b Binary files /dev/null and b/demo/helloworld/gfx/tileset_collision.png differ diff --git a/demo/helloworld/gfx/tileset_mario.png b/demo/helloworld/gfx/tileset_mario.png new file mode 100755 index 0000000..a6b55eb Binary files /dev/null and b/demo/helloworld/gfx/tileset_mario.png differ diff --git a/demo/helloworld/map.tmx b/demo/helloworld/map.tmx new file mode 100755 index 0000000..2fd771d --- /dev/null +++ b/demo/helloworld/map.tmx @@ -0,0 +1,7285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/tilemap/Makefile b/demo/tilemap/Makefile new file mode 100755 index 0000000..7dd2271 --- /dev/null +++ b/demo/tilemap/Makefile @@ -0,0 +1,98 @@ +# This makefile is a bit hackish. I wrote it early in the AM. +# Fohgiveuhness, please!! + + +ifndef $(CFG) + CFG=Debug +endif + +# you can also pass : mingw32 and macosx +ifndef $(OS) + OS=linux +endif + +TARGET=demo +BINTARGET=$(TARGET) +PROJECTHOME=$(shell pwd) +SDL_CFLAGS=$(shell sdl-config --cflags) +SDL_LDFLAGS=$(shell sdl-config --libs) +LIBDIR=/usr/lib +HEADERDIR=/usr/include +ADDL_CFLAGS= + +ifeq "$(OS)" "mingw32" + ADDL_CFLAGS=-mwindows -DBUILD_MINGW32 -rdynamic +endif +ifeq "$(OS)" "linux" + ADDL_CFLAGS=-DBUILD_LINUX -rdynamic +endif + +# default for release configs +ifeq "$(CFG)" "Release" + OUTDIR=Release + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET).exe + else + BINTARGET=$(TARGET) + endif + LINKLIB=sdlgame + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif +ifeq "$(CFG)" "Debug" + OUTDIR=Debug + ifeq "$(OS)" "mingw32" + BINTARGET=$(TARGET)-dbg.exe + else + BINTARGET=$(TARGET)-dbg + endif + LINKLIB=sdlgame-dbg + CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) +endif + +LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf + +BINOBJ=$(OUTDIR)/demo.o + +ifeq "$(OS)" "mingw32" + BTOBJ=$(OUTDIR)/backtrace.dll +endif + +CC = gcc +CXX = g++ +LD = $(CXX) +INSTALL = $(which install) + +$(OUTDIR)/%.o : cpp/%.cpp + $(CXX) $(CXXFLAGS) -o $@ $< + +all: bin + +.PHONY: $(BTOBJ) +$(BTOBJ): + cp /usr/local/lib/backtrace.dll $(OUTDIR)/ + cp /usr/local/lib/av*dll $(OUTDIR)/ + cp /usr/local/lib/swscale*dll $(OUTDIR)/ + cp /usr/local/bin/*SDL*dll $(OUTDIR)/ + cp /usr/local/bin/freetype*dll $(OUTDIR)/ + cp /usr/local/bin/*png*dll $(OUTDIR)/ + cp /usr/local/bin/*jpeg*dll $(OUTDIR)/ + cp /usr/local/bin/libimage*dll $(OUTDIR)/ + cp /usr/local/bin/libogg*dll $(OUTDIR)/ + cp /usr/local/bin/*vorbis*dll $(OUTDIR)/ + cp /usr/local/bin/librle*dll $(OUTDIR)/ + cp /usr/local/bin/libtiff*dll $(OUTDIR)/ + cp /usr/local/bin/libxml2*dll $(OUTDIR)/ + cp /usr/local/bin/zlib*dll $(OUTDIR)/ + +bin: $(BINOBJ) $(BTOBJ) + $(LD) -pg -o $(OUTDIR)/$(BINTARGET) \ + -pg $(BINOBJ) $(LINKLIBS) + +.PHONY: clean +clean: + rm -f $(OUTDIR)/* + +.PHONY: rebuild +rebuild: + make clean + make CFG=$(CFG) diff --git a/demo/tilemap/cpp/demo.cpp b/demo/tilemap/cpp/demo.cpp new file mode 100755 index 0000000..9e7f2c0 --- /dev/null +++ b/demo/tilemap/cpp/demo.cpp @@ -0,0 +1,33 @@ +/* + * This demo starts up and does nothing until you hit Escape to kill it. + */ + +#include + +int main(int argc, char *argv[]) +{ + Display2D display = Display2D(); + Game &myGame = Game::NewSingleton(); + unsigned int lastTimer = 0; + + myGame.initSDL(); + myGame.initVideo(640, 480, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); + display.initVideo((Vector){0,0,0}, 640, 480, 32, SDL_HWSURFACE); + display.setActive(1); + myGame.windows.push_back(&display); + + lastTimer = SDL_GetTicks(); + + while ( 1 ) { + if ( (SDL_GetTicks() - lastTimer) >= (1000/30) ) { + myGame.update(); + lastTimer = SDL_GetTicks(); + } else { + myGame.update(1); + } + if ( myGame.keyHeldDown(SDLK_ESCAPE) ) { + break; + } + myGame.finishFrame(); + } +} diff --git a/demo/tilemap/gfx/tileset_collision.png b/demo/tilemap/gfx/tileset_collision.png new file mode 100755 index 0000000..d470c7b Binary files /dev/null and b/demo/tilemap/gfx/tileset_collision.png differ diff --git a/demo/tilemap/gfx/tileset_mario.png b/demo/tilemap/gfx/tileset_mario.png new file mode 100755 index 0000000..a6b55eb Binary files /dev/null and b/demo/tilemap/gfx/tileset_mario.png differ diff --git a/demo/tilemap/map.tmx b/demo/tilemap/map.tmx new file mode 100755 index 0000000..2fd771d --- /dev/null +++ b/demo/tilemap/map.tmx @@ -0,0 +1,7285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/Makefile b/deps/Makefile index b93d774..14dd74f 100755 --- a/deps/Makefile +++ b/deps/Makefile @@ -4,7 +4,7 @@ CFLAGS=$(CFLAGS) -I/usr/local/include -I/usr/include LDFLAGS=$(LDFLAGS) -L/usr/local/lib -L/usr/lib .PHONY: packages -packages: SDL zlib libpng libjpeg libtiff SDL_image libvorbis flac SDL_mixer freetype SDL_ttf SDL_gfx libxml2 cmake ffmpeg SDL_ffmpeg +packages: SDL zlib libpng libjpeg libtiff SDL_image libvorbis flac SDL_mixer freetype SDL_ttf SDL_gfx libxml2 cmake ffmpeg SDL_ffmpeg backtrace .PHONY: SDL SDL: @@ -144,6 +144,11 @@ yaml-cpp: cp -vR yaml-cpp/include/yaml-cpp /usr/local/include/ cp yaml-cpp/libyaml-cpp.a /usr/local/lib/ +.PHONY: backtrace +backtrace: + svn checkout http://backtrace-mingw.googlecode.com/svn/trunk/ backtrace-mingw-read-only + cd backtrace-mingw-read-only && make && cp backtrace.dll /usr/local/lib/ + .PHONY: clean clean: rm -rf *gz *zip *bz2 diff --git a/libsdlgame/Backtrace.cpp b/libsdlgame/Backtrace.cpp new file mode 100755 index 0000000..f34fbf4 --- /dev/null +++ b/libsdlgame/Backtrace.cpp @@ -0,0 +1,67 @@ +#ifdef __WIN32__ +#include +#endif + +#include +#include + +void RegisterStacktrace() +{ +#ifdef __WIN32__ + if ( LoadLibraryA("backtrace.dll") == NULL ) { + std::cerr << "Unable to locate backtrace.dll.\n"; + exit(1); + } +#else + signal(SIGSEGV, &__libsdlgame_sigsegvhandler); +#endif +} + +#ifndef __WIN32__ + +#include +#include +#include +#include + +/* Backtrace.cpp + * + * This file is compiled for OS X and Linux targets. mingw32 targets + * use backtrace pulled in the dependencies. + */ + +/* Obtain a backtrace and print it to stdout. */ +void __libsdlgame_show_stacktrace (void) +{ + void *array[10]; + size_t size; + char **strings; + size_t i; + + size = backtrace (array, 10); + // The heap may be corrupt at this point, so this may be an + // invitation to disaster, but we don't have much choice. + strings = backtrace_symbols (array, size); + + fprintf(stderr, "Obtained %zd stack frames.\n", size); + + for (i = 0; i < size; i++) + fprintf(stderr, "%s\n", strings[i]); + + free (strings); +} + +void __libsdlgame_sigsegvhandler(int z) +{ + fprintf(stderr, "Caught segmentation fault; stacktrace follows.\n"); + print_trace(); +#ifdef DEBUG_LOOPONSEGFAULT + fprintf(stderr, "Entering infinite loop; please connect a debugger to me and then kill me.\n"); + fflush(stderr); + while ( 1 ) { }; +#endif + exit(1); +} + +#endif + diff --git a/libsdlgame/Backtrace.h b/libsdlgame/Backtrace.h new file mode 100755 index 0000000..bb3662b --- /dev/null +++ b/libsdlgame/Backtrace.h @@ -0,0 +1,11 @@ +#ifndef __BACKTRACE_H__ +#define __BACKTRACE_H__ + +#ifdef __WIN32__ +extern void __libsdlgame_sigsegvhandler(int z); +extern void __libsdlgame_show_stacktrace(void); +#endif + +extern void RegisterStacktrace(void); + +#endif // __BACKTRACE_H__ diff --git a/libsdlgame/Backtrace.o b/libsdlgame/Backtrace.o new file mode 100755 index 0000000..2c53859 Binary files /dev/null and b/libsdlgame/Backtrace.o differ diff --git a/libsdlgame/Common.h b/libsdlgame/Common.h index 3830acf..7118531 100755 --- a/libsdlgame/Common.h +++ b/libsdlgame/Common.h @@ -5,7 +5,8 @@ /** * @def GAMEFPS - * Redefine this value to change the FPS you want the game to lock to (USUALLY works) + * Redefine this value to change the FPS you want the game to lock to + * (USUALLY works) */ #define GAMEFPS 60 diff --git a/libsdlgame/TileSet.cpp b/libsdlgame/TileSet.cpp index 0e6cd93..e19634f 100755 --- a/libsdlgame/TileSet.cpp +++ b/libsdlgame/TileSet.cpp @@ -7,26 +7,53 @@ int TileDisplay::loadFromTMX(std::string filename) { xmlTextReaderPtr reader; const xmlChar *name; + const xmlChar *attr; const xmlChar *value; int ret; reader = xmlReaderForFile(filename.c_str(), NULL, 0); - if ( reader != NULL ) { - ret = xmlTextReaderRead(reader); - while ( ret == 1) { - name = xmlTextReaderConstName(reader); - if ( name != NULL ) { - if ( !strcmp(name, "map") ) { - - } - value = xmlTextReaderConstValue(reader); - } - // process current node - } - xmlFreeTextReader(reader); - if ( ret == 0 ) { - return 1; - } + if ( reader == NULL ) + goto loadfromtmx_fail; + ret = xmlTextReaderRead(reader); + + name = xmlTextReaderConstName(reader); + // -- buildup the map flags + if ( name != NULL ) { + if ( !strcmp(name, "map") ) { + goto loadfromtmx_fail; + } + attr = xmlTextReaderGetAttribute(reader, ATTR_ORIENTATION_KEY); + if ( !strcmp(attr, ATTR_ORIENTATION_ORTHO) ) + this->flags = this->flags & TILEMAP_ORTHOGONAL; + else if ( !strcmp(attr, ATTR_ORIENTATION_ISO) ) + this->flags = this->flags & TILEMAP_ISOMETRIC; + else + goto loadfromtmx_fail; + this->w = atoi(xmlTextReaderGetAttribute(reader, ATTR_MAPWIDTH_KEY)); + this->h = atoi(xmlTextReaderGetAttribute(reader, ATTR_MAPHEIGHT_KEY)); + this->tw = atoi(xmlTextReaderGetAttribute(reader, ATTR_TILEWIDTH_KEY)); + this->th = atoi(xmlTextReaderGetAttribute(reader, ATTR_TILEHEIGHT_KEY)); } + + // -- load the actual map + while ( ret == 1) { + name = xmlTextReaderConstName(reader); + if ( name != NULL ) { + if ( !strcmp(name, "map") ) { + goto loadfromtmx_fail; + } + value = xmlTextReaderConstValue(reader); + } + // process current node + } + xmlTextReaderClose(reader); + xmlFreeTextReader(reader); return 0; +loadfromtmx_fail: + ret = 1; + if ( reader ) { + xmlTextReaderClose(reader); + xmlFreeTextReader(reader); + } + return ret; } diff --git a/libsdlgame/TileSet.h b/libsdlgame/TileSet.h index 5b8f694..2d548f8 100755 --- a/libsdlgame/TileSet.h +++ b/libsdlgame/TileSet.h @@ -4,6 +4,14 @@ #include #include "Display2D.h" +#define ATTR_ORIENTATION_KEY "orientation" +#define ATTR_ORIENTATION_ORTHO "orthogonal" +#define ATTR_ORIENTATION_ISO "isometric" +#define ATTR_MAPWIDTH_KEY "width" +#define ATTR_MAPHEIGHT_KEY "height" +#define ATTR_TILEWIDTH_KEY "tilewidth" +#define ATTR_TILEHEIGHT_KEY "tileheight" + #define TILEMAP_ORTHOGONAL 1 #define TILEMAP_ISOMETRIC 2 @@ -22,6 +30,7 @@ class TileDisplay : public Display2D { protected: TileGroup tilegroup; std::vector[MAX_LAYERS] layers; + int flags; int w; int h; int tw; diff --git a/libsdlgame/libsdlgame.h b/libsdlgame/libsdlgame.h index 0c1c442..0f2f2ed 100755 --- a/libsdlgame/libsdlgame.h +++ b/libsdlgame/libsdlgame.h @@ -1,6 +1,7 @@ #ifndef __LIBGAME_H__ #define __LIBGAME_H__ +#include "Backtrace.h" #include "Common.h" #include "FontRenderer.h" #include "Renderable.h"