From df73d846d822a7107f8a395ab815826fc860cea5 Mon Sep 17 00:00:00 2001 From: kts Date: Mon, 4 Nov 2013 11:59:49 -0800 Subject: [PATCH] Both SDL and curses clients work on WIN32/64. The SDL client is fully working, as is expected, but the gameLoop timer/signal system does not work. The code is in place via preprocessor conditions but it would require a fake window to be created so the messaging system can be used. --- devcpp/Makefile.win | 9 ++++++--- devcpp/timesynk-pdcurses.dev | 24 ++++++++++++++++++++++-- devcpp/timesynk-pdcurses.layout | 28 +++++++++++++++++----------- devcpp/timesynk-sdl.dev | 22 +++++++++++++++++++++- devcpp/timesynk-sdl.layout | 32 +++++++++++++++++++------------- interface/curses.c | 10 ++++++++++ interface/curses.h | 10 +++++++++- tiles.o | Bin 10152 -> 0 bytes 8 files changed, 104 insertions(+), 31 deletions(-) delete mode 100644 tiles.o diff --git a/devcpp/Makefile.win b/devcpp/Makefile.win index 06455b2..da61e2f 100644 --- a/devcpp/Makefile.win +++ b/devcpp/Makefile.win @@ -4,9 +4,9 @@ CPP = g++.exe CC = gcc.exe WINDRES = windres.exe -OBJ = ../main.o ../interface/curses.o ../net/sockets.o ../game.o ../player.o ../wall.o ../console.o ../context.o ../helper.o ../map.o ../npc.o ../tile.o ../tiles/curses_tiles.o -LINKOBJ = ../main.o ../interface/curses.o ../net/sockets.o ../game.o ../player.o ../wall.o ../console.o ../context.o ../helper.o ../map.o ../npc.o ../tile.o ../tiles/curses_tiles.o -LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib" -static-libstdc++ -static-libgcc ../../PDCurses/pdcurses.lib -g3 +OBJ = ../main.o ../interface/curses.o ../net/sockets.o ../game.o ../player.o ../wall.o ../console.o ../context.o ../helper.o ../map.o ../npc.o ../tile.o ../tiles/curses_tiles.o ../message.o +LINKOBJ = ../main.o ../interface/curses.o ../net/sockets.o ../game.o ../player.o ../wall.o ../console.o ../context.o ../helper.o ../map.o ../npc.o ../tile.o ../tiles/curses_tiles.o ../message.o +LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib" -static-libstdc++ -static-libgcc ../../PDCurses/pdcurses.lib ../../../Windows/System32/ws2_32.dll -g3 INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/include" -I"../../PDCurses" CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/include" -I"../../PDCurses" BIN = timesynk-pdcurses.exe @@ -63,3 +63,6 @@ $(BIN): $(OBJ) ../tiles/curses_tiles.o: ../tiles/curses_tiles.c $(CC) -c ../tiles/curses_tiles.c -o ../tiles/curses_tiles.o $(CFLAGS) + +../message.o: ../message.c + $(CC) -c ../message.c -o ../message.o $(CFLAGS) diff --git a/devcpp/timesynk-pdcurses.dev b/devcpp/timesynk-pdcurses.dev index b7b3623..bd2749c 100644 --- a/devcpp/timesynk-pdcurses.dev +++ b/devcpp/timesynk-pdcurses.dev @@ -11,7 +11,7 @@ ResourceIncludes= MakeIncludes= Compiler= CppCompiler= -Linker=../../PDCurses/pdcurses.lib_@@_ +Linker=../../PDCurses/pdcurses.lib_@@_../../../Windows/System32/ws2_32.dll_@@_ IsCpp=0 Icon= ExeOutput= @@ -29,7 +29,7 @@ IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 CompilerSettings=0000000000000000001000000 -UnitCount=28 +UnitCount=30 [VersionInfo] Major=1 @@ -330,3 +330,23 @@ Priority=1000 OverrideBuildCmd=0 BuildCmd= +[Unit29] +FileName=..\message.c +CompileCpp=0 +Folder=timesynk-pdcurses +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit30] +FileName=..\message.h +CompileCpp=0 +Folder=timesynk-pdcurses +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/devcpp/timesynk-pdcurses.layout b/devcpp/timesynk-pdcurses.layout index dd21574..6b867b6 100644 --- a/devcpp/timesynk-pdcurses.layout +++ b/devcpp/timesynk-pdcurses.layout @@ -1,12 +1,12 @@ [Editor_0] CursorCol=1 -CursorRow=1 +CursorRow=10 TopLine=1 LeftChar=1 -Open=0 +Open=1 Top=0 [Editors] -Order= +Order=-1 Focused=-1 [Editor_1] Open=0 @@ -30,17 +30,17 @@ CursorRow=1 TopLine=1 LeftChar=1 [Editor_4] -Open=0 +Open=1 Top=0 -CursorCol=1 -CursorRow=61 -TopLine=46 +CursorCol=24 +CursorRow=31 +TopLine=1 LeftChar=1 [Editor_5] -Open=0 -Top=0 -CursorCol=1 -CursorRow=1 +Open=1 +Top=1 +CursorCol=115 +CursorRow=22 TopLine=1 LeftChar=1 [Editor_6] @@ -141,3 +141,9 @@ Top=0 [Editor_27] Open=0 Top=0 +[Editor_28] +Open=0 +Top=0 +[Editor_29] +Open=0 +Top=0 diff --git a/devcpp/timesynk-sdl.dev b/devcpp/timesynk-sdl.dev index 31f3cc5..5dc1c66 100644 --- a/devcpp/timesynk-sdl.dev +++ b/devcpp/timesynk-sdl.dev @@ -29,7 +29,7 @@ IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 CompilerSettings=0000000000000000001000000 -UnitCount=28 +UnitCount=30 [VersionInfo] Major=1 @@ -330,3 +330,23 @@ Priority=1000 OverrideBuildCmd=0 BuildCmd= +[Unit29] +FileName=..\message.c +CompileCpp=0 +Folder=timesynk-sdl +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit30] +FileName=..\message.h +CompileCpp=0 +Folder=timesynk-sdl +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + diff --git a/devcpp/timesynk-sdl.layout b/devcpp/timesynk-sdl.layout index 2630790..692c275 100644 --- a/devcpp/timesynk-sdl.layout +++ b/devcpp/timesynk-sdl.layout @@ -3,10 +3,10 @@ CursorCol=7 CursorRow=13 TopLine=1 LeftChar=1 -Open=1 +Open=0 Top=0 [Editors] -Order=-1 +Order= Focused=-1 [Editor_1] Open=0 @@ -30,14 +30,14 @@ CursorRow=1 TopLine=1 LeftChar=1 [Editor_4] -Open=1 +Open=0 Top=0 -CursorCol=24 -CursorRow=48 -TopLine=16 +CursorCol=22 +CursorRow=97 +TopLine=58 LeftChar=1 [Editor_5] -Open=1 +Open=0 Top=0 CursorCol=1 CursorRow=26 @@ -93,22 +93,22 @@ Top=0 Open=0 Top=0 [Editor_17] -Open=1 +Open=0 Top=0 CursorCol=30 CursorRow=58 TopLine=35 LeftChar=1 [Editor_18] -Open=1 +Open=0 Top=0 CursorCol=21 CursorRow=33 TopLine=1 LeftChar=1 [Editor_19] -Open=1 -Top=1 +Open=0 +Top=0 CursorCol=28 CursorRow=32 TopLine=13 @@ -117,14 +117,14 @@ LeftChar=1 Open=0 Top=0 [Editor_21] -Open=1 +Open=0 Top=0 CursorCol=32 CursorRow=31 TopLine=4 LeftChar=1 [Editor_22] -Open=1 +Open=0 Top=0 CursorCol=1 CursorRow=11 @@ -149,3 +149,9 @@ LeftChar=1 [Editor_27] Open=0 Top=0 +[Editor_28] +Open=0 +Top=0 +[Editor_29] +Open=0 +Top=0 diff --git a/interface/curses.c b/interface/curses.c index ff96a0a..bedf83b 100644 --- a/interface/curses.c +++ b/interface/curses.c @@ -28,10 +28,15 @@ void tickSignal() { void interfaceSetInterval(const char *input_string) { if (input_string) { int tickrate = atoi(input_string); + #if _WIN32 | _WIN64 + KillTimer(NULL, win_timer); + win_timer = SetTimer(NULL, 1, tickrate, (TIMERPROC) tickSignal); + #else getitimer(ITIMER_REAL, &interval); interval.it_interval.tv_sec = tickrate / 1000; interval.it_interval.tv_usec = (tickrate*1000) % 1000000; setitimer(ITIMER_REAL, &interval, NULL); + #endif } } @@ -66,6 +71,10 @@ int interfaceInit() { FD_SET(interface_fd, &master_fds); max_fd = interface_fd; + #if _WIN32 | _WIN64 + win_timer = SetTimer(NULL, 1, 500, tickSignal); + consoleLog("augh"); + #else /* basically instead of using linux-only timer fds, we use SIGALRM for updating the game world instead. I don't know if I agree with it. */ if (signal(SIGALRM, (void (*)(int)) tickSignal) == SIG_ERR) { consoleLog("Unable to catch SIGALARM for gameLoop, game is broken."); @@ -76,6 +85,7 @@ int interfaceInit() { if (setitimer(ITIMER_REAL, &interval, NULL) == -1) { consoleLog("error calling setitmer(), game is broken"); } + #endif /* add our commands */ consoleAddCommand("tickrate", interfaceSetInterval); diff --git a/interface/curses.h b/interface/curses.h index 8ceb6d6..a1400f8 100644 --- a/interface/curses.h +++ b/interface/curses.h @@ -1,7 +1,11 @@ #ifndef NCURSES_H #define NCURSES_H +#if _WIN32 | _WIN64 +#include +#else #include // fd_set, etc. +#endif WINDOW * screen; int cols; @@ -15,9 +19,13 @@ fd_set master_fds; fd_set read_fds; int max_fd; - +// TODO: gameLoop timer does not work on win32. Code is there, but needs a fake window for handling message events // called on SIGALRM, calls gameLoop(); void tickSignal(); +#if _WIN32 | _WIN64 +HWND win_timer; +#else // our so-called timer for ticking the world. aka a sigalrm struct itimerval interval; #endif +#endif diff --git a/tiles.o b/tiles.o deleted file mode 100644 index e92b43c15dbdc79cb423d00f1d9ef4ba11f17067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10152 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 VMKnNf5;hdJTtEZ#7V($T{{WnU#Ge2F