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.

netcode
kts 2013-11-04 11:59:49 -08:00
parent 8fc710f3a2
commit df73d846d8
8 changed files with 104 additions and 31 deletions

View File

@ -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)

View File

@ -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=

View File

@ -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

View File

@ -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=

View File

@ -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

View File

@ -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);

View File

@ -1,7 +1,11 @@
#ifndef NCURSES_H
#define NCURSES_H
#if _WIN32 | _WIN64
#include <Winsock2.h>
#else
#include <sys/select.h> // 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

BIN
tiles.o

Binary file not shown.