diff --git a/Makefile b/Makefile index ecca195..b583fe2 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,13 @@ CURSES_LFLAGS = -lcurses XCURSES_LFLAGS = -lXCurses SDL_LFLAGS = -lSDL -lSDL_image LFLAGS = -Wall $(DEBUG) +ifeq ($(OS),Windows_NT) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),SunOS) + LFLAGS += -lsocket -lnsl + endif +endif $(BINARY): $(OBJS) $(CURSES_OBJS) $(CC) $(OBJS) $(CURSES_OBJS) $(CURSES_LFLAGS) -o $(BINARY) diff --git a/common.h b/common.h index eb39335..2b5b284 100644 --- a/common.h +++ b/common.h @@ -10,4 +10,6 @@ Contains common variables, such as return codes. #define ERROR 1 #define SUCCESS 0 +int is_networking; + #endif diff --git a/console.h b/console.h index bacccab..7bb8b90 100644 --- a/console.h +++ b/console.h @@ -1,6 +1,6 @@ #ifndef CONSOLE_H #define CONSOLE_H -#define COMMAND_HASH_SIZE 64 +#define COMMAND_HASH_SIZE 256 #include "helper.h" /*** ConsoleEntry ConsoleEntry, akin to Tiles, stores pointers to the previous and next ConsoleEntry structs in a chain. diff --git a/game.h b/game.h index 80c237f..6e86de1 100644 --- a/game.h +++ b/game.h @@ -14,6 +14,9 @@ #define NORTHWEST 9 #define SOUTHEAST 1 #define SOUTHWEST 3 + +int tickrate; + struct Map *current_map; int gameInit(); diff --git a/interface/curses.c b/interface/curses.c index bedf83b..f44d7f5 100644 --- a/interface/curses.c +++ b/interface/curses.c @@ -18,6 +18,8 @@ #include "../tile.h" // for DoorTile, etc. #include "../tiles/curses_tiles.h" +#include "../net/sockets.h" + #include "../console.h" void tickSignal() { @@ -73,7 +75,6 @@ int interfaceInit() { #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) { @@ -89,13 +90,16 @@ int interfaceInit() { /* add our commands */ consoleAddCommand("tickrate", interfaceSetInterval); - return SUCCESS; } int interfaceLoop() { int i; - char data_buffer[31]; + char data_buffer[2048]; + if (is_networking) { + FD_SET(net_socket, &master_fds); + max_fd = net_socket; + } while (is_running) { read_fds = master_fds; if (select(max_fd+1, &read_fds, NULL, NULL, NULL) == -1) { @@ -109,8 +113,38 @@ int interfaceLoop() { } else { globalContext(data_buffer[0]); } - } else if (i == network_fd) { - // do network processing + } else if (i == net_socket) { + struct sockaddr_storage client_address; + socklen_t address_length = sizeof(client_address); + int new_fd = accept(net_socket, (struct sockaddr *)&client_address, &address_length); + if (new_fd == -1) { +// consoleLog("accept() error'd"); + } else { + FD_SET(new_fd, &master_fds); + if (new_fd > max_fd) { + max_fd = new_fd; + } + char string[32]; + char remote_ip[INET6_ADDRSTRLEN]; + sprintf(string, "accept()'d, new client from %s on fd %d", inet_ntop(client_address.ss_family, get_in_addr((struct sockaddr *)&client_address), remote_ip, INET6_ADDRSTRLEN), new_fd); + consoleLog(string); + } + } else if (i > net_socket) { // handle existing client data + int bytes = 0; + if((bytes = recv(i, data_buffer, sizeof data_buffer, 0)) <= 0) { + if (bytes == 0) { + consoleLog("lost client"); + } else { + consoleLog("recv() error'd"); + } + close(i); + FD_CLR(i, &master_fds); + } else { // good data + //char string[sizeof data_buffer]; + //sprintf(string, "client: %s", data_buffer); + //consoleLog(string); + consoleLog("client message"); + } } } } diff --git a/interface/curses.h b/interface/curses.h index a1400f8..801b5eb 100644 --- a/interface/curses.h +++ b/interface/curses.h @@ -15,9 +15,6 @@ int original_cursor; int interface_fd; // STDIN, generally int network_fd; // socket -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(); diff --git a/interface/sdl.c b/interface/sdl.c index e792bd1..8d0223b 100644 --- a/interface/sdl.c +++ b/interface/sdl.c @@ -16,15 +16,157 @@ #include "../tile.h" #include "../console.h" +#include "../net/sockets.h" + void interfaceSetInterval(const char *input_string) { if (input_string) { - int tickrate = atoi(input_string); + int new_tickrate = atoi(input_string); SDL_RemoveTimer(timer_id); - if (tickrate > 0) + if (new_tickrate > 0) { + tickrate = new_tickrate; timer_id = SDL_AddTimer(tickrate, pushTickEvent, NULL); + } } } +static int networkThread(void *nada) { + int reuse = 1; + int net_socket; + struct sockaddr_in server_address; + + if ((net_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + consoleLog("socket() success'd"); + return ERROR; + } + consoleLog("socket() success'd"); + if (setsockopt(net_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)) < 0) { + consoleLog("setsockopt() error'd"); + } + consoleLog("setsockopt() success'd"); + //fcntl(net_socket, F_SETFL, O_NONBLOCK); + memset(&server_address, 0, sizeof(server_address)); + server_address.sin_family = AF_INET; + server_address.sin_addr.s_addr = htonl(INADDR_ANY); + server_address.sin_port = htons(31337); + if (bind(net_socket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) { + consoleLog("bind() error'd"); + return ERROR; + } + consoleLog("bind() success'd"); + if (listen(net_socket, 32) < 0) { + consoleLog("listen() error'd"); + return ERROR; + } + consoleLog("listen() success'd"); + + char test_string[31]; + sprintf(test_string, "server running on fd %d!", net_socket); + consoleLog(test_string); + /******/ +// fd_set master_fds; +// fd_set read_fds; +// int max_fd; + int i; // current fd in for + char data_buffer[2048]; + /* set up our fds */ + FD_ZERO(&master_fds); + FD_ZERO(&read_fds); + + FD_SET(net_socket, &master_fds); + max_fd = net_socket; + + SDL_Event event; + SDL_UserEvent user_event; + + user_event.type = SDL_USEREVENT; + user_event.code = EVENT_NET; + user_event.data1 = NULL; + user_event.data2 = NULL; + event.type = SDL_USEREVENT; + event.user = user_event; + + while(1 == 1) { + //while (is_networking) { + read_fds = master_fds; + if (select(max_fd+1, &read_fds, NULL, NULL, NULL) == -1) { + consoleLog("error on network select()"); + } + for (i=0;i <= max_fd; i++) { + if (FD_ISSET(i, &read_fds)) { + if (i == net_socket) { + struct sockaddr_storage client_address; + socklen_t address_length = sizeof(client_address); + int new_fd = accept(net_socket, (struct sockaddr *)&client_address, &address_length); + if (new_fd == -1) { + consoleLog("accept() error'd"); + } else { + FD_SET(new_fd, &master_fds); + if (new_fd > max_fd) { + max_fd = new_fd; + } + char remote_ip[INET6_ADDRSTRLEN]; + event.user.data1 = (void *)new_fd; + event.user.data2 = (void *)inet_ntop(client_address.ss_family, get_in_addr((struct sockaddr *)&client_address), remote_ip, INET6_ADDRSTRLEN); + event.user.code = EVENT_NET_ACCEPT; + SDL_PushEvent(&event); + } + } else if (i == client_socket) { + int bytes = 0; + if((bytes = recv(i, data_buffer, sizeof data_buffer, 0)) <= 0) { + if (bytes == 0) { + event.user.code = EVENT_NET_CLIENT_LOST; + event.user.data1 = (void *)i; + } else { + event.user.code = EVENT_NET_CLIENT_ERROR; + event.user.data1 = (void *)i; + } + SDL_PushEvent(&event); + close(i); + FD_CLR(i, &master_fds); + } else { + data_buffer[bytes] = '\0'; // TEMP + struct NetMessage *net_message; + net_message = malloc(sizeof(struct NetMessage)); + net_message->fd = i; + net_message->size = bytes; + net_message->data = (void *)data_buffer; + event.user.code = EVENT_NET_CLIENT_RECV; + event.user.data1 = (void *)i; + event.user.data2 = (void *)net_message; + SDL_PushEvent(&event); + } + } else if (i > net_socket) { // handle existing client data + int bytes = 0; + if((bytes = recv(i, data_buffer, sizeof data_buffer, 0)) <= 0) { + if (bytes == 0) { + event.user.code = EVENT_NET_LOST; + event.user.data1 = (void *)i; + } else { + event.user.code = EVENT_NET_ERROR; + event.user.data1 = (void *)i; + } + SDL_PushEvent(&event); + close(i); + FD_CLR(i, &master_fds); + } else { // good data + data_buffer[bytes] = '\0'; // TEMP + struct NetMessage *net_message; + net_message = malloc(sizeof(struct NetMessage)); + net_message->fd = i; + net_message->size = bytes; + net_message->data = (void *)data_buffer; + event.user.code = EVENT_NET_RECV; + event.user.data1 = (void *)i; + event.user.data2 = (void *)net_message; + SDL_PushEvent(&event); + } + } + } + } + } + return 0; +} + Uint32 pushTickEvent(Uint32 interval, void *param) { SDL_Event event; SDL_UserEvent user_event; @@ -39,14 +181,18 @@ Uint32 pushTickEvent(Uint32 interval, void *param) { return interval; } - int interfaceInit() { // TODO: read OS's best fullscreen resolution and use it video_width = 800; video_height = 600; video_mode = 0; // Load it up! + // since we use threads, Mac OS 10+ support only. Also threaded os. + #if _WIN32 | _WIN64 + SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_EVENTTHREAD); + #else SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER); + #endif // Enable Unicode, for later text input SDL_EnableUNICODE(SDL_ENABLE); // Set up our SDL Window @@ -59,6 +205,7 @@ int interfaceInit() { consoleAddCommand("set_video", interfaceVideoSetSize); camera_surface = SDL_CreateRGBSurface(screen->flags, screen->w, screen->h, screen->format->BitsPerPixel, screen->format->Rmask, screen->format->Gmask, screen->format->Bmask, screen->format->Amask); + /* load our surfaces from memory */ font_spritesheet = IMG_Load_RW(SDL_RWFromMem(&font_images, font_images_length), 1); player_spritesheet = IMG_Load_RW(SDL_RWFromMem(&player_images, player_images_length), 1); npc_spritesheet = IMG_Load_RW(SDL_RWFromMem(&npc_images, npc_images_length), 1); @@ -66,24 +213,16 @@ int interfaceInit() { floor_spritesheet = IMG_Load_RW(SDL_RWFromMem(&floor_images, floor_images_length), 1); door_spritesheet = IMG_Load_RW(SDL_RWFromMem(&door_images, door_images_length), 1); shadow_spritesheet = IMG_Load_RW(SDL_RWFromMem(&shadow_images, shadow_images_length), 1); - int race, class; - SDL_Rect sprite_offset = {0, 0, TILE_WIDTH, TILE_HEIGHT}; - for (race = 0; race < TOTAL_RACES;race++) { - for(class = 0; class < TOTAL_CLASSES;class++) { - player_sprites[race][class] = SDL_CreateRGBSurface(screen->flags, 16, 32, screen->format->BitsPerPixel, screen->format->Rmask, screen->format->Gmask, screen->format->Bmask, screen->format->Amask); - SDL_BlitSurface(player_spritesheet, &sprite_offset, player_sprites[race][class], NULL); - } - } // Fill our screen w/ black SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 32, 128, 64)); // Update! SDL_Flip(screen); /* now we load up our timer, woo */ - delay = 500; - timer_id = SDL_AddTimer(delay, pushTickEvent, NULL); + tickrate = 500; + timer_id = SDL_AddTimer(tickrate, pushTickEvent, NULL); /* now we spawn a network thread that will push user events to SDL */ - + network_thread = SDL_CreateThread(networkThread, NULL); return SUCCESS; } @@ -151,6 +290,9 @@ void cameraDraw() { } //SDL_BlitSurface(interfaceScaleSurface(camera_surface, camera_surface->w*(camera_surface->w/camera_rect.w), camera_surface->h*(camera_surface->h/camera_rect.h)), NULL, screen, &camera_rect); SDL_BlitSurface(camera_surface, NULL, screen, &camera_rect); + char test[12]; + itoa(tickrate, test, 10); + interfaceDrawString(test, screen->w-strlen(test)*TILE_WIDTH, 0); } int interfaceLoop() { @@ -159,8 +301,32 @@ int interfaceLoop() { case SDL_USEREVENT: if (event.user.code == EVENT_TICK) { // timer gameLoop(); - } else if (event.user.code == EVENT_NET) { // net - + } else if (event.user.code == EVENT_NET_ACCEPT) { // net + char string[127]; + sprintf(string, "net accept of %s on fd %d", (char*)event.user.data2, (int*)event.user.data1); + consoleLog(string); + } else if (event.user.code == EVENT_NET_RECV) { + char string[255]; + struct NetMessage *net_message = (struct NetMessage*)event.user.data2; + sprintf(string, "client(%d): %s", net_message->fd, net_message->data); + consoleLog(string); + sprintf(string, "%s", net_message->data); + send(net_message->fd, string, net_message->size, 0); + free(net_message); + } else if (event.user.code == EVENT_NET_LOST) { + char string[23]; + sprintf(string, "net lost for fd %d", (int*)event.user.data1); + consoleLog(string); + } else if (event.user.code == EVENT_NET_ERROR) { + char string[23]; + sprintf(string, "net error for fd %d", (int*)event.user.data1); + consoleLog(string); + } else if (event.user.code == EVENT_NET_CLIENT_RECV) {// begin client + char string[255]; + struct NetMessage *net_message = (struct NetMessage*)event.user.data2; + sprintf(string, "server(%d): %s", net_message->fd, net_message->data); + consoleLog(string); + free(net_message); } break; case SDL_QUIT: diff --git a/interface/sdl.h b/interface/sdl.h index 705a0b4..9879e22 100644 --- a/interface/sdl.h +++ b/interface/sdl.h @@ -4,6 +4,13 @@ #define EVENT_TICK 1 #define EVENT_NET 2 +#define EVENT_NET_ACCEPT 3 +#define EVENT_NET_RECV 4 +#define EVENT_NET_LOST 5 +#define EVENT_NET_ERROR 6 +#define EVENT_NET_CLIENT_RECV 7 +#define EVENT_NET_CLIENT_LOST 8 +#define EVENT_NET_CLIENT_ERROR 9 SDL_Surface* screen; SDL_Surface* font_spritesheet; @@ -13,7 +20,6 @@ SDL_Surface* wall_spritesheet; SDL_Surface* floor_spritesheet; SDL_Surface* door_spritesheet; - SDL_Surface* player_sprites[TOTAL_RACES][TOTAL_CLASSES]; SDL_Surface* camera_surface; SDL_Event event; @@ -31,6 +37,9 @@ void interfaceDrawChar(char ch, int start_x, int start_y); void interfaceVideoSetSize(const char *input_string); SDL_Surface *interfaceScaleSurface(SDL_Surface *Surface, Uint16 Width, Uint16 Height); +static int networkThread(void *nada); +SDL_Thread *network_thread; + Uint32 pushTickEvent(Uint32 interval, void *param); #endif diff --git a/main.c b/main.c index de015a6..d934f43 100644 --- a/main.c +++ b/main.c @@ -10,10 +10,7 @@ int main(int argc, char *argv[]) { if (interfaceInit() == ERROR) { return ERROR; } - // initialize our network system (sockets, winsock, etc.) - if (netInit() == ERROR) { - return ERROR; - } + is_running = 1; consoleLog(" "); @@ -24,6 +21,9 @@ int main(int argc, char *argv[]) { playerSetCommand(PLAYER_ACTIVATE, playerActivate); playerSetCommand(PLAYER_LOOK, playerLook); + // initialize our network system (sockets, winsock, etc.) + netInit(); + gameInit(); // start our program loop! interfaceLoop(); diff --git a/main.h b/main.h index 8048adf..70d439f 100644 --- a/main.h +++ b/main.h @@ -1,7 +1,6 @@ #ifndef MAIN_H #define MAIN_H int is_running; -int is_networking; void appQuit(); #endif diff --git a/net/sockets.c b/net/sockets.c index d552a8f..e7a7372 100644 --- a/net/sockets.c +++ b/net/sockets.c @@ -1,11 +1,153 @@ +#include "sockets.h" +#include +#include #include "../common.h" #include "../stubs.h" -int netInit() { +#include +void *get_in_addr(struct sockaddr *sa) { + if (sa->sa_family == AF_INET) { + return &(((struct sockaddr_in*)sa)->sin_addr); + } + return &(((struct sockaddr_in6*)sa)->sin6_addr); +} + +int netInit() { + consoleAddCommand("connect", consoleNetConnect); + consoleAddCommand("disconnect", consoleNetDisconnect); + consoleAddCommand("send", consoleNetSend); + client_socket = -1; +/* int reuse = 1; + if ((net_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + consoleLog("socket() success'd"); + return ERROR; + } + consoleLog("socket() success'd"); + if (setsockopt(net_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)) < 0) { + consoleLog("setsockopt() error'd"); + } + consoleLog("setsockopt() success'd"); + //fcntl(net_socket, F_SETFL, O_NONBLOCK); + memset(&server_address, 0, sizeof(server_address)); + server_address.sin_family = AF_INET; + server_address.sin_addr.s_addr = htonl(INADDR_ANY); + server_address.sin_port = htons(1337357); + if (bind(net_socket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) { + consoleLog("bind() error'd"); + return ERROR; + } + consoleLog("bind() success'd"); + if (listen(net_socket, 32) < 0) { + consoleLog("listen() error'd"); + return ERROR; + } + consoleLog("listen() success'd"); + + char test_string[31]; + sprintf(test_string, "net is running on fd %d!", net_socket); + consoleLog(test_string); + + is_networking = 1; */ return SUCCESS; } -void netLoop() { +int netConnect(const char *server_string, const char *port_string) { + if (client_socket < 0) { + if ((client_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + return -2; + } + memset(&connected_address, 0, sizeof(connected_address)); + connected_address.sin_family = AF_INET; + connected_address.sin_addr.s_addr = inet_addr(server_string); + connected_address.sin_port = htons(atoi(port_string)); + + if (connect(client_socket, (struct sockaddr *) &connected_address, sizeof(connected_address)) < 0) { + client_socket = -1; + return -3; + } + FD_SET(client_socket, &master_fds); + if (max_fd < client_socket) { + max_fd = client_socket; + } + return 0; // success! + } + return -1; // already connected +} + +int netDisconnect() { + if (client_socket >= 0) { + close(client_socket); + FD_CLR(client_socket, &master_fds); + client_socket = -1; + return 0; // success + } + return -1; +} + +/* console commands */ +void consoleNetConnect(const char *input_string) { + if (input_string) { + int i = 0; + int j = 0; + char server[63]; + char port[10]; + int position = 0; + while(input_string[i] != '\0') { + if (input_string[i] == ' ') { + server[j] = '\0'; + position = 1; + i++; + j = 0; // reset + } + if (position == 0) { + server[j] = input_string[i]; + } else if (position == 1) { + port[j] = input_string[i]; + } + j++; + i++; + } + if (position < 1) { + server[j] = '\0'; + port[0] = '3'; + port[1] = '1'; + port[2] = '3'; + port[3] = '3'; + port[4] = '7'; + port[5] = '\0'; + } else if (position == 1) { + port[j] = '\0'; + } + char string[127]; + sprintf(string, "connecting to %s:%s", server, port); + consoleLog(string); + int net_return = netConnect(server, port); + if (net_return != 0) { + sprintf(string, "connect error %d", net_return); + consoleLog(string); + } else { + sprintf(string, "now connected on fd %d", client_socket); + consoleLog(string); + } + } +} + +void consoleNetDisconnect() { + if (netDisconnect() == -1) { + consoleLog("not connected"); + } else { + consoleLog("disconnected"); + } +} + +void consoleNetSend(const char *message) { + if (client_socket >= 0) { + if (send(client_socket, message, strlen(message), 0) < 0) { + consoleLog("couldn't send() message"); + } + } else { + consoleLog("not connected to a server"); + } } diff --git a/net/sockets.h b/net/sockets.h new file mode 100644 index 0000000..e0470c1 --- /dev/null +++ b/net/sockets.h @@ -0,0 +1,46 @@ +#ifndef SOCKETS_H +#define SOCKETS_H +#if _WIN32 | _WIN64 + #include + #include + #include +#else + #include + #include + #include + #include + #if defined (sun) + /* For Solaris 2.6, as it lacks SIOCGIFCONF */ + #include + #endif +#endif +void *get_in_addr(struct sockaddr *sa); + +int net_socket; +struct sockaddr_in server_address; + +fd_set master_fds; +fd_set read_fds; +int max_fd; + +struct NetMessage { + int fd; + int size; + void *data; +}; + +int client_socket; // send/recv socket for clients only +struct sockaddr_in connected_address; + +/* console commands */ +// handles input "servername port" and calls netConnect +void consoleNetConnect(const char *input_string); +// simply calls netDisconnect +void consoleNetDisconnect(); +// sends a message to server // NOTE: will be removed, just for testing +void consoleNetSend(const char *message); +/* client-> server funcs */ +int netConnect(const char *server_string, const char *port_string); +int netDisconnect(); + +#endif diff --git a/stubs.h b/stubs.h index 75936ff..4543ab0 100644 --- a/stubs.h +++ b/stubs.h @@ -18,6 +18,5 @@ void interfaceDrawConsole(); void interfaceSetInterval(const char *input_string); int netInit(); -void netLoop(); #endif diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/categories.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/categories.pbxbtree index 8d17264..9b8ad73 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/categories.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/categories.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/cdecls.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/cdecls.pbxbtree index 549ba70..72b10bf 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/cdecls.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/cdecls.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/decls.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/decls.pbxbtree index 266bd80..0ff4db8 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/decls.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/decls.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/files.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/files.pbxbtree index 0802021..c486db8 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/files.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/files.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/imports.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/imports.pbxbtree index 5b174f0..10198e1 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/imports.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/imports.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/pbxindex.header b/xcode/build/timesynk.build/timesynk.pbxindex/pbxindex.header index 9462cb0..6b34e33 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/pbxindex.header and b/xcode/build/timesynk.build/timesynk.pbxindex/pbxindex.header differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/refs.pbxbtree b/xcode/build/timesynk.build/timesynk.pbxindex/refs.pbxbtree index 0c1b78e..c11ec48 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/refs.pbxbtree and b/xcode/build/timesynk.build/timesynk.pbxindex/refs.pbxbtree differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/control b/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/control index e0e41c2..0946b81 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/control and b/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/control differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/strings b/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/strings index 21cb70b..859acf8 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/strings and b/xcode/build/timesynk.build/timesynk.pbxindex/strings.pbxstrings/strings differ diff --git a/xcode/build/timesynk.build/timesynk.pbxindex/symbols0.pbxsymbols b/xcode/build/timesynk.build/timesynk.pbxindex/symbols0.pbxsymbols index acf86a9..00cd24a 100644 Binary files a/xcode/build/timesynk.build/timesynk.pbxindex/symbols0.pbxsymbols and b/xcode/build/timesynk.build/timesynk.pbxindex/symbols0.pbxsymbols differ diff --git a/xcode/timesynk.xcodeproj/kts.mode1v3 b/xcode/timesynk.xcodeproj/kts.mode1v3 index 1d229c6..90579bd 100644 --- a/xcode/timesynk.xcodeproj/kts.mode1v3 +++ b/xcode/timesynk.xcodeproj/kts.mode1v3 @@ -311,12 +311,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - npc.h + player.c PBXSplitModuleInNavigatorKey Split0 @@ -324,11 +326,11 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - npc.h + player.c _historyCapacity 0 bookmark - 204EC1291827ADB00035FB9D + 204EC241182B7A630035FB9D history 20568DE817EC16C60022F314 @@ -338,19 +340,14 @@ 206D60B3180907AC00C0DE49 206D60B4180907AC00C0DE49 205CBE4718134A20009DA0FF - 205AEFD81814CBEE00F6F9FF 205AEFD91814CBEE00F6F9FF 205AEFFA1814D0F800F6F9FF 205AEFFB1814D0F800F6F9FF 205AEFFC1814D0F800F6F9FF 205AF0B0181615E200F6F9FF 205AF3261816681B00F6F9FF - 205AF3271816681B00F6F9FF 205AF37618166E8900F6F9FF - 205AF396181670B300F6F9FF 205AF39C181670DB00F6F9FF - 205AF39E181670DB00F6F9FF - 205AF3B818167E1100F6F9FF 205AF3B918167E1100F6F9FF 20E2179D18179A08003112DE 20E2179E18179A08003112DE @@ -359,8 +356,14 @@ 20E217CB18186B4C003112DE 20E217CC18186B4C003112DE 204EC0F6182788230035FB9D - 204EC1261827ADB00035FB9D - 204EC1271827ADB00035FB9D + 204EC15718285FB20035FB9D + 204EC15818285FB20035FB9D + 204EC15918285FB20035FB9D + 204EC15A18285FB20035FB9D + 204EC171182889AD0035FB9D + 204EC176182889C80035FB9D + 204EC18218288AF90035FB9D + 204EC18318288AF90035FB9D prevStack @@ -394,11 +397,17 @@ 205AF2A3181662B000F6F9FF 205AF3B11816778B00F6F9FF 20E217A518179A08003112DE - 204EC0F8182788230035FB9D - 204EC0F9182788230035FB9D - 204EC10D18278AFA0035FB9D - 204EC1191827A9360035FB9D - 204EC1281827ADB00035FB9D + 204EC15B18285FB20035FB9D + 204EC15C18285FB20035FB9D + 204EC15D18285FB20035FB9D + 204EC15E18285FB20035FB9D + 204EC15F18285FB20035FB9D + 204EC16018285FB20035FB9D + 204EC16118285FB20035FB9D + 204EC16918285FE00035FB9D + 204EC173182889AD0035FB9D + 204EC178182889C80035FB9D + 204EC18418288AF90035FB9D SplitCount @@ -420,8 +429,6 @@ 517pt - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -458,9 +465,9 @@ TableOfContents - 204EC0E4182787230035FB9D + 204EC16318285FB20035FB9D 1CE0B1FE06471DED0097A5F4 - 204EC0E5182787230035FB9D + 204EC16418285FB20035FB9D 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -594,11 +601,11 @@ 5 WindowOrderList - 204EC11E1827A99C0035FB9D - 204EC11F1827A99C0035FB9D + 204EC21B1829F2EA0035FB9D + 204EC21C1829F2EA0035FB9D + 20F6A1B417E95A6200BAD261 1C78EAAD065D492600B07095 1CD10A99069EF8BA00B06720 - 20F6A1B417E95A6200BAD261 /Users/kts/Devel/timesynk/xcode/timesynk.xcodeproj WindowString @@ -623,7 +630,7 @@ PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - sdl.c + sockets.c StatusBarVisibility @@ -632,7 +639,7 @@ Frame {{0, 0}, {500, 218}} RubberWindowFrame - 53 221 500 500 0 0 1024 746 + 309 191 500 500 0 0 1024 746 Module PBXNavigatorGroup @@ -658,7 +665,7 @@ Frame {{0, 223}, {500, 236}} RubberWindowFrame - 53 221 500 500 0 0 1024 746 + 309 191 500 500 0 0 1024 746 Module PBXBuildResultsModule @@ -681,18 +688,18 @@ TableOfContents 20F6A1B417E95A6200BAD261 - 204EC0E6182787230035FB9D + 204EC14F18285FB00035FB9D 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.buildV3 WindowString - 53 221 500 500 0 0 1024 746 + 309 191 500 500 0 0 1024 746 WindowToolGUID 20F6A1B417E95A6200BAD261 WindowToolIsVisible - + FirstTimeWindowDisplayed @@ -775,10 +782,10 @@ Frame {{316, 0}, {378, 203}} RubberWindowFrame - 48 97 694 422 0 0 1024 746 + 198 130 694 422 0 0 1024 746 RubberWindowFrame - 48 97 694 422 0 0 1024 746 + 198 130 694 422 0 0 1024 746 Module PBXDebugSessionModule @@ -801,22 +808,22 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 204EC0EC182787AA0035FB9D + 204EC15018285FB00035FB9D 1C162984064C10D400B95A72 - 204EC0ED182787AA0035FB9D - 204EC0EE182787AA0035FB9D - 204EC0EF182787AA0035FB9D - 204EC0F0182787AA0035FB9D - 204EC0F1182787AA0035FB9D + 204EC15118285FB00035FB9D + 204EC15218285FB00035FB9D + 204EC15318285FB00035FB9D + 204EC15418285FB00035FB9D + 204EC15518285FB00035FB9D ToolbarConfiguration xcode.toolbar.config.debugV3 WindowString - 48 97 694 422 0 0 1024 746 + 198 130 694 422 0 0 1024 746 WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible - + Identifier @@ -934,6 +941,8 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -946,7 +955,7 @@ Frame {{0, 0}, {650, 209}} RubberWindowFrame - 290 308 650 250 0 0 1024 746 + 290 212 650 250 0 0 1024 746 Module PBXDebugCLIModule @@ -969,17 +978,17 @@ TableOfContents 1C78EAAD065D492600B07095 - 204EC0F2182787AA0035FB9D + 204EC15618285FB00035FB9D 1C78EAAC065D492600B07095 ToolbarConfiguration xcode.toolbar.config.consoleV3 WindowString - 290 308 650 250 0 0 1024 746 + 290 212 650 250 0 0 1024 746 WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible - + Identifier diff --git a/xcode/timesynk.xcodeproj/kts.pbxuser b/xcode/timesynk.xcodeproj/kts.pbxuser index afe9bcd..e0408ef 100644 --- a/xcode/timesynk.xcodeproj/kts.pbxuser +++ b/xcode/timesynk.xcodeproj/kts.pbxuser @@ -31,54 +31,6 @@ vrLen = 508; vrLoc = 0; }; - 204EC0E3182787230035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 68"; - rLen = 0; - rLoc = 2795; - rType = 0; - vrLen = 1937; - vrLoc = 2195; - }; - 204EC0E81827877B0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: ‘SDL_Event’ has no member named ‘code’"; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - rLen = 1; - rLoc = 129; - rType = 1; - }; - 204EC0E91827877B0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 130"; - rLen = 49; - rLoc = 5894; - rType = 0; - vrLen = 1034; - vrLoc = 5227; - }; - 204EC0EB182787AA0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 361"; - rLen = 0; - rLoc = 12733; - rType = 0; - vrLen = 1556; - vrLoc = 3971; - }; - 204EC0F4182787F70035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 361"; - rLen = 0; - rLoc = 12732; - rType = 0; - vrLen = 1954; - vrLoc = 2710; - }; 204EC0F6182788230035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 20DE9D051804FE1A0047B2DD /* context.c */; @@ -89,153 +41,37 @@ vrLen = 850; vrLoc = 0; }; - 204EC0F7182788230035FB9D /* PBXTextBookmark */ = { + 204EC15718285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 361"; - rLen = 0; - rLoc = 12732; - rType = 0; - vrLen = 1975; - vrLoc = 2710; - }; - 204EC0F8182788230035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 361"; - rLen = 0; - rLoc = 12732; - rType = 0; - vrLen = 1975; - vrLoc = 2710; - }; - 204EC0F9182788230035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20DE9D051804FE1A0047B2DD /* context.c */; - name = "context.c: 1"; + fRef = 20F6A1C417E95AD300BAD261 /* common.h */; + name = "common.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 850; + vrLen = 272; vrLoc = 0; }; - 204EC0FA182788230035FB9D /* PBXTextBookmark */ = { + 204EC15818285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 361"; + fRef = 20568DD217EBE9490022F314 /* game.c */; + name = "game.c: 165"; rLen = 0; - rLoc = 12732; + rLoc = 4885; rType = 0; - vrLen = 999; - vrLoc = 5523; + vrLen = 848; + vrLoc = 4079; }; - 204EC0FD182789ED0035FB9D /* PBXTextBookmark */ = { + 204EC15918285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "error: ‘pushTickEvent’ undeclared (first use in this function)"; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - rLen = 1; - rLoc = 58; - rType = 1; - }; - 204EC0FE182789ED0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 59"; - rLen = 56; - rLoc = 2265; - rType = 0; - vrLen = 170; - vrLoc = 2227; - }; - 204EC0FF182789EE0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; + fRef = 20568DD317EBE9490022F314 /* game.h */; + name = "game.h: 18"; rLen = 0; - rLoc = 13186; + rLoc = 293; rType = 0; - vrLen = 1700; - vrLoc = 4249; + vrLen = 647; + vrLoc = 0; }; - 204EC10118278A000035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: ‘pushTickEvent’ undeclared (first use in this function)"; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - rLen = 1; - rLoc = 58; - rType = 1; - }; - 204EC10218278A000035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 59"; - rLen = 56; - rLoc = 2265; - rType = 0; - vrLen = 1000; - vrLoc = 1595; - }; - 204EC10418278A210035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13185; - rType = 0; - vrLen = 1000; - vrLoc = 1595; - }; - 204EC10618278A6C0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13200; - rType = 0; - vrLen = 1054; - vrLoc = 1499; - }; - 204EC10818278AAE0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13189; - rType = 0; - vrLen = 1102; - vrLoc = 1413; - }; - 204EC10A18278ACF0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13190; - rType = 0; - vrLen = 1103; - vrLoc = 1413; - }; - 204EC10C18278AFA0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13190; - rType = 0; - vrLen = 1157; - vrLoc = 1413; - }; - 204EC10D18278AFA0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 379"; - rLen = 0; - rLoc = 13190; - rType = 0; - vrLen = 1157; - vrLoc = 1413; - }; - 204EC10E18278AFA0035FB9D /* PBXTextBookmark */ = { + 204EC15A18285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 209A27C71812256F00B15CEC /* npc.h */; name = "npc.h: 1"; @@ -245,7 +81,27 @@ vrLen = 434; vrLoc = 0; }; - 204EC11218278BBD0035FB9D /* PBXTextBookmark */ = { + 204EC15B18285FB20035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20F6A1C417E95AD300BAD261 /* common.h */; + name = "common.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 272; + vrLoc = 0; + }; + 204EC15C18285FB20035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; + name = "sdl.c: 385"; + rLen = 0; + rLoc = 13657; + rType = 0; + vrLen = 830; + vrLoc = 21; + }; + 204EC15D18285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 209A27C71812256F00B15CEC /* npc.h */; name = "npc.h: 1"; @@ -255,7 +111,37 @@ vrLen = 434; vrLoc = 0; }; - 204EC11518278C0E0035FB9D /* PBXTextBookmark */ = { + 204EC15E18285FB20035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20568DD217EBE9490022F314 /* game.c */; + name = "game.c: 165"; + rLen = 0; + rLoc = 4885; + rType = 0; + vrLen = 848; + vrLoc = 4079; + }; + 204EC15F18285FB20035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20568DD317EBE9490022F314 /* game.h */; + name = "game.h: 18"; + rLen = 0; + rLoc = 293; + rType = 0; + vrLen = 647; + vrLoc = 0; + }; + 204EC16018285FB20035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; + name = "sdl.c: 26"; + rLen = 0; + rLoc = 610; + rType = 0; + vrLen = 814; + vrLoc = 0; + }; + 204EC16118285FB20035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 209A27C71812256F00B15CEC /* npc.h */; name = "npc.h: 1"; @@ -265,105 +151,95 @@ vrLen = 434; vrLoc = 0; }; - 204EC1181827A9360035FB9D /* PBXTextBookmark */ = { + 204EC16918285FE00035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 209A27C71812256F00B15CEC /* npc.h */; - name = "npc.h: 1"; + fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; + name = "sdl.c: 37"; + rLen = 0; + rLoc = 839; + rType = 0; + vrLen = 822; + vrLoc = 216; + }; + 204EC171182889AD0035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20568DD517EBE9490022F314 /* player.h */; + name = "player.h: 30"; + rLen = 0; + rLoc = 559; + rType = 0; + vrLen = 959; + vrLoc = 0; + }; + 204EC173182889AD0035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20568DD517EBE9490022F314 /* player.h */; + name = "player.h: 30"; + rLen = 0; + rLoc = 559; + rType = 0; + vrLen = 959; + vrLoc = 0; + }; + 204EC176182889C80035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 209A27C61812256F00B15CEC /* npc.c */; + name = "npc.c: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 434; + vrLen = 951; vrLoc = 0; }; - 204EC1191827A9360035FB9D /* PBXTextBookmark */ = { + 204EC178182889C80035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 209A27C71812256F00B15CEC /* npc.h */; - name = "npc.h: 1"; + fRef = 209A27C61812256F00B15CEC /* npc.c */; + name = "npc.c: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 434; + vrLen = 951; vrLoc = 0; }; - 204EC11A1827A9360035FB9D /* PBXTextBookmark */ = { + 204EC18218288AF90035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 389"; + name = "sdl.c: 97"; rLen = 0; - rLoc = 13402; + rLoc = 2811; rType = 0; - vrLen = 1626; - vrLoc = 4926; + vrLen = 829; + vrLoc = 2551; }; - 204EC11B1827A9540035FB9D /* PBXTextBookmark */ = { + 204EC18318288AF90035FB9D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 20568DD417EBE9490022F314 /* player.c */; + name = "player.c: 22"; + rLen = 0; + rLoc = 614; + rType = 0; + vrLen = 1097; + vrLoc = 216; + }; + 204EC18418288AF90035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 390"; + name = "sdl.c: 97"; rLen = 0; - rLoc = 13457; + rLoc = 2811; rType = 0; - vrLen = 1895; - vrLoc = 4270; + vrLen = 829; + vrLoc = 2551; }; - 204EC11D1827A99C0035FB9D /* PBXTextBookmark */ = { + 204EC241182B7A630035FB9D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 391"; + fRef = 20568DD417EBE9490022F314 /* player.c */; + name = "player.c: 25"; rLen = 0; - rLoc = 13458; + rLoc = 762; rType = 0; - vrLen = 1966; - vrLoc = 3779; - }; - 204EC1211827ACCE0035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 391"; - rLen = 0; - rLoc = 13481; - rType = 0; - vrLen = 2065; - vrLoc = 3136; - }; - 204EC1261827ADB00035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 391"; - rLen = 0; - rLoc = 13481; - rType = 0; - vrLen = 860; - vrLoc = 12621; - }; - 204EC1271827ADB00035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 209A27C71812256F00B15CEC /* npc.h */; - name = "npc.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 434; - vrLoc = 0; - }; - 204EC1281827ADB00035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 391"; - rLen = 0; - rLoc = 13481; - rType = 0; - vrLen = 860; - vrLoc = 12621; - }; - 204EC1291827ADB00035FB9D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 209A27C71812256F00B15CEC /* npc.h */; - name = "npc.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 434; - vrLoc = 0; + vrLen = 1097; + vrLoc = 216; }; 204F942218005466007B4DAD /* helper.c */ = { uiCtxt = { @@ -456,30 +332,30 @@ }; 20568DD217EBE9490022F314 /* game.c */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {755, 2394}}"; + sepNavIntBoundsRect = "{{0, 0}, {755, 2632}}"; sepNavSelRange = "{4885, 0}"; - sepNavVisRange = "{4158, 727}"; + sepNavVisRange = "{4079, 848}"; }; }; 20568DD317EBE9490022F314 /* game.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {755, 485}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 506}"; + sepNavIntBoundsRect = "{{0, 0}, {755, 490}}"; + sepNavSelRange = "{293, 0}"; + sepNavVisRange = "{0, 647}"; }; }; 20568DD417EBE9490022F314 /* player.c */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {755, 1652}}"; - sepNavSelRange = "{614, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {755, 1176}}"; + sepNavSelRange = "{762, 0}"; sepNavVisRange = "{216, 1097}"; }; }; 20568DD517EBE9490022F314 /* player.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1200, 728}}"; + sepNavIntBoundsRect = "{{0, 0}, {1200, 630}}"; sepNavSelRange = "{559, 0}"; - sepNavVisRange = "{0, 683}"; + sepNavVisRange = "{0, 959}"; }; }; 20568DE817EC16C60022F314 /* PBXTextBookmark */ = { @@ -499,16 +375,6 @@ sepNavVisRange = "{1124, 1020}"; }; }; - 205AEFD81814CBEE00F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1C417E95AD300BAD261 /* common.h */; - name = "common.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 272; - vrLoc = 0; - }; 205AEFD91814CBEE00F6F9FF /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 089C165DFE840E0CC02AAC07 /* English */; @@ -569,16 +435,6 @@ vrLen = 980; vrLoc = 1245; }; - 205AF31A1816677A00F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20DE9D051804FE1A0047B2DD /* context.c */; - name = "context.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 846; - vrLoc = 0; - }; 205AF3261816681B00F6F9FF /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 204F942218005466007B4DAD /* helper.c */; @@ -589,16 +445,6 @@ vrLen = 651; vrLoc = 320; }; - 205AF3271816681B00F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20568DD317EBE9490022F314 /* game.h */; - name = "game.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 506; - vrLoc = 0; - }; 205AF37618166E8900F6F9FF /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 20F6A1F117E95B6F00BAD261 /* sdl.h */; @@ -609,16 +455,6 @@ vrLen = 810; vrLoc = 0; }; - 205AF396181670B300F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20568DD417EBE9490022F314 /* player.c */; - name = "player.c: 22"; - rLen = 0; - rLoc = 614; - rType = 0; - vrLen = 1097; - vrLoc = 216; - }; 205AF39C181670DB00F6F9FF /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 204F942318005466007B4DAD /* helper.h */; @@ -629,26 +465,6 @@ vrLen = 286; vrLoc = 0; }; - 205AF39E181670DB00F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20568DD517EBE9490022F314 /* player.h */; - name = "player.h: 29"; - rLen = 0; - rLoc = 559; - rType = 0; - vrLen = 683; - vrLoc = 0; - }; - 205AF3AF1816778B00F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 209A27C71812256F00B15CEC /* npc.h */; - name = "npc.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 434; - vrLoc = 0; - }; 205AF3B11816778B00F6F9FF /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 209A27C71812256F00B15CEC /* npc.h */; @@ -659,16 +475,6 @@ vrLen = 434; vrLoc = 0; }; - 205AF3B818167E1100F6F9FF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20568DD217EBE9490022F314 /* game.c */; - name = "game.c: 171"; - rLen = 0; - rLoc = 4885; - rType = 0; - vrLen = 727; - vrLoc = 4158; - }; 205AF3B918167E1100F6F9FF /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D1107310486CEB800E47090 /* Info.plist */; @@ -879,15 +685,12 @@ vrLen = 175; vrLoc = 0; }; - 209860B918277B00009D5BE0 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 68"; - rLen = 0; - rLoc = 2795; - rType = 0; - vrLen = 1937; - vrLoc = 2195; + 209A27C61812256F00B15CEC /* npc.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {755, 1274}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 951}"; + }; }; 209A27C71812256F00B15CEC /* npc.h */ = { uiCtxt = { @@ -1010,16 +813,6 @@ vrLen = 989; vrLoc = 57; }; - 20E217E71818B5D0003112DE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */; - name = "sdl.c: 68"; - rLen = 0; - rLoc = 2795; - rType = 0; - vrLen = 1937; - vrLoc = 2195; - }; 20EC59781808D7A100F759CD /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 20DE9D051804FE1A0047B2DD /* context.c */; @@ -1150,9 +943,9 @@ }; 20F6A1F017E95B6F00BAD261 /* sdl.c */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1224, 5082}}"; - sepNavSelRange = "{13481, 0}"; - sepNavVisRange = "{12621, 860}"; + sepNavIntBoundsRect = "{{0, 0}, {1206, 7336}}"; + sepNavSelRange = "{18100, 0}"; + sepNavVisRange = "{5536, 843}"; sepNavWindowFrame = "{{174, 72}, {750, 558}}"; }; }; @@ -1165,9 +958,9 @@ }; 20F6A20217E95BC400BAD261 /* sockets.c */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {755, 485}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 104}"; + sepNavIntBoundsRect = "{{0, 0}, {439, 2268}}"; + sepNavSelRange = "{4057, 0}"; + sepNavVisRange = "{3467, 339}"; }; }; 20F6A21A17E95C1200BAD261 /* PBXTextBookmark */ = { @@ -1278,105 +1071,83 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 405243665; - PBXWorkspaceStateSaveDate = 405243665; + PBXPerProjectTemplateStateSaveDate = 405290465; + PBXWorkspaceStateSaveDate = 405290465; }; perUserProjectItems = { - 2007C93017ECF2EB00268653 = 2007C93017ECF2EB00268653 /* PBXTextBookmark */; - 204EC0E3182787230035FB9D /* PBXTextBookmark */ = 204EC0E3182787230035FB9D /* PBXTextBookmark */; - 204EC0E81827877B0035FB9D /* PBXTextBookmark */ = 204EC0E81827877B0035FB9D /* PBXTextBookmark */; - 204EC0E91827877B0035FB9D /* PBXTextBookmark */ = 204EC0E91827877B0035FB9D /* PBXTextBookmark */; - 204EC0EB182787AA0035FB9D /* PBXTextBookmark */ = 204EC0EB182787AA0035FB9D /* PBXTextBookmark */; - 204EC0F4182787F70035FB9D /* PBXTextBookmark */ = 204EC0F4182787F70035FB9D /* PBXTextBookmark */; + 2007C93017ECF2EB00268653 /* PBXTextBookmark */ = 2007C93017ECF2EB00268653 /* PBXTextBookmark */; 204EC0F6182788230035FB9D /* PBXTextBookmark */ = 204EC0F6182788230035FB9D /* PBXTextBookmark */; - 204EC0F7182788230035FB9D /* PBXTextBookmark */ = 204EC0F7182788230035FB9D /* PBXTextBookmark */; - 204EC0F8182788230035FB9D /* PBXTextBookmark */ = 204EC0F8182788230035FB9D /* PBXTextBookmark */; - 204EC0F9182788230035FB9D /* PBXTextBookmark */ = 204EC0F9182788230035FB9D /* PBXTextBookmark */; - 204EC0FA182788230035FB9D /* PBXTextBookmark */ = 204EC0FA182788230035FB9D /* PBXTextBookmark */; - 204EC0FD182789ED0035FB9D /* PBXTextBookmark */ = 204EC0FD182789ED0035FB9D /* PBXTextBookmark */; - 204EC0FE182789ED0035FB9D /* PBXTextBookmark */ = 204EC0FE182789ED0035FB9D /* PBXTextBookmark */; - 204EC0FF182789EE0035FB9D /* PBXTextBookmark */ = 204EC0FF182789EE0035FB9D /* PBXTextBookmark */; - 204EC10118278A000035FB9D /* PBXTextBookmark */ = 204EC10118278A000035FB9D /* PBXTextBookmark */; - 204EC10218278A000035FB9D /* PBXTextBookmark */ = 204EC10218278A000035FB9D /* PBXTextBookmark */; - 204EC10418278A210035FB9D /* PBXTextBookmark */ = 204EC10418278A210035FB9D /* PBXTextBookmark */; - 204EC10618278A6C0035FB9D /* PBXTextBookmark */ = 204EC10618278A6C0035FB9D /* PBXTextBookmark */; - 204EC10818278AAE0035FB9D /* PBXTextBookmark */ = 204EC10818278AAE0035FB9D /* PBXTextBookmark */; - 204EC10A18278ACF0035FB9D /* PBXTextBookmark */ = 204EC10A18278ACF0035FB9D /* PBXTextBookmark */; - 204EC10C18278AFA0035FB9D /* PBXTextBookmark */ = 204EC10C18278AFA0035FB9D /* PBXTextBookmark */; - 204EC10D18278AFA0035FB9D /* PBXTextBookmark */ = 204EC10D18278AFA0035FB9D /* PBXTextBookmark */; - 204EC10E18278AFA0035FB9D /* PBXTextBookmark */ = 204EC10E18278AFA0035FB9D /* PBXTextBookmark */; - 204EC11218278BBD0035FB9D /* PBXTextBookmark */ = 204EC11218278BBD0035FB9D /* PBXTextBookmark */; - 204EC11518278C0E0035FB9D /* PBXTextBookmark */ = 204EC11518278C0E0035FB9D /* PBXTextBookmark */; - 204EC1181827A9360035FB9D /* PBXTextBookmark */ = 204EC1181827A9360035FB9D /* PBXTextBookmark */; - 204EC1191827A9360035FB9D /* PBXTextBookmark */ = 204EC1191827A9360035FB9D /* PBXTextBookmark */; - 204EC11A1827A9360035FB9D /* PBXTextBookmark */ = 204EC11A1827A9360035FB9D /* PBXTextBookmark */; - 204EC11B1827A9540035FB9D /* PBXTextBookmark */ = 204EC11B1827A9540035FB9D /* PBXTextBookmark */; - 204EC11D1827A99C0035FB9D /* PBXTextBookmark */ = 204EC11D1827A99C0035FB9D /* PBXTextBookmark */; - 204EC1211827ACCE0035FB9D /* PBXTextBookmark */ = 204EC1211827ACCE0035FB9D /* PBXTextBookmark */; - 204EC1261827ADB00035FB9D /* PBXTextBookmark */ = 204EC1261827ADB00035FB9D /* PBXTextBookmark */; - 204EC1271827ADB00035FB9D /* PBXTextBookmark */ = 204EC1271827ADB00035FB9D /* PBXTextBookmark */; - 204EC1281827ADB00035FB9D /* PBXTextBookmark */ = 204EC1281827ADB00035FB9D /* PBXTextBookmark */; - 204EC1291827ADB00035FB9D /* PBXTextBookmark */ = 204EC1291827ADB00035FB9D /* PBXTextBookmark */; - 204F943D18005532007B4DAD = 204F943D18005532007B4DAD /* PBXTextBookmark */; - 2050562217ED9E6100F572B7 = 2050562217ED9E6100F572B7 /* PBXTextBookmark */; - 20567ED217E95DEC0002B1A9 = 20567ED217E95DEC0002B1A9 /* PBXTextBookmark */; - 20567ED517E95DEC0002B1A9 = 20567ED517E95DEC0002B1A9 /* PBXTextBookmark */; - 20568DE817EC16C60022F314 = 20568DE817EC16C60022F314 /* PBXTextBookmark */; - 205AEFD81814CBEE00F6F9FF = 205AEFD81814CBEE00F6F9FF /* PBXTextBookmark */; - 205AEFD91814CBEE00F6F9FF = 205AEFD91814CBEE00F6F9FF /* PBXTextBookmark */; - 205AEFFA1814D0F800F6F9FF = 205AEFFA1814D0F800F6F9FF /* PBXTextBookmark */; - 205AEFFB1814D0F800F6F9FF = 205AEFFB1814D0F800F6F9FF /* PBXTextBookmark */; - 205AEFFC1814D0F800F6F9FF = 205AEFFC1814D0F800F6F9FF /* PBXTextBookmark */; - 205AF0B0181615E200F6F9FF = 205AF0B0181615E200F6F9FF /* PBXTextBookmark */; - 205AF2A3181662B000F6F9FF = 205AF2A3181662B000F6F9FF /* PBXTextBookmark */; - 205AF31A1816677A00F6F9FF = 205AF31A1816677A00F6F9FF /* PBXTextBookmark */; - 205AF3261816681B00F6F9FF = 205AF3261816681B00F6F9FF /* PBXTextBookmark */; - 205AF3271816681B00F6F9FF = 205AF3271816681B00F6F9FF /* PBXTextBookmark */; - 205AF37618166E8900F6F9FF = 205AF37618166E8900F6F9FF /* PBXTextBookmark */; - 205AF396181670B300F6F9FF = 205AF396181670B300F6F9FF /* PBXTextBookmark */; - 205AF39C181670DB00F6F9FF = 205AF39C181670DB00F6F9FF /* PBXTextBookmark */; - 205AF39E181670DB00F6F9FF = 205AF39E181670DB00F6F9FF /* PBXTextBookmark */; - 205AF3AF1816778B00F6F9FF = 205AF3AF1816778B00F6F9FF /* PBXTextBookmark */; - 205AF3B11816778B00F6F9FF = 205AF3B11816778B00F6F9FF /* PBXTextBookmark */; - 205AF3B818167E1100F6F9FF = 205AF3B818167E1100F6F9FF /* PBXTextBookmark */; - 205AF3B918167E1100F6F9FF = 205AF3B918167E1100F6F9FF /* PlistBookmark */; - 205CBE4718134A20009DA0FF = 205CBE4718134A20009DA0FF /* PBXTextBookmark */; - 20664C241808D0EF00942104 = 20664C241808D0EF00942104 /* PBXTextBookmark */; - 20664C291808D0EF00942104 = 20664C291808D0EF00942104 /* PBXTextBookmark */; - 206D5FB01808EAE800C0DE49 = 206D5FB01808EAE800C0DE49 /* PBXTextBookmark */; - 206D5FB61808EAE800C0DE49 = 206D5FB61808EAE800C0DE49 /* PBXTextBookmark */; - 206D60391808F3A600C0DE49 = 206D60391808F3A600C0DE49 /* PBXTextBookmark */; - 206D604B1808F92000C0DE49 = 206D604B1808F92000C0DE49 /* PBXTextBookmark */; - 206D60511808F92000C0DE49 = 206D60511808F92000C0DE49 /* PBXTextBookmark */; - 206D60541808F92000C0DE49 = 206D60541808F92000C0DE49 /* PBXTextBookmark */; - 206D605B1808F99A00C0DE49 = 206D605B1808F99A00C0DE49 /* PBXTextBookmark */; - 206D6096180904FB00C0DE49 = 206D6096180904FB00C0DE49 /* PBXTextBookmark */; - 206D60B3180907AC00C0DE49 = 206D60B3180907AC00C0DE49 /* PBXTextBookmark */; - 206D60B4180907AC00C0DE49 = 206D60B4180907AC00C0DE49 /* PBXTextBookmark */; - 206D60B7180907AC00C0DE49 = 206D60B7180907AC00C0DE49 /* PBXTextBookmark */; - 2090289E17E95F9E0051A253 = 2090289E17E95F9E0051A253 /* PBXTextBookmark */; - 2090289F17E95F9E0051A253 = 2090289F17E95F9E0051A253 /* PBXTextBookmark */; - 209028A517E95F9E0051A253 = 209028A517E95F9E0051A253 /* PBXTextBookmark */; - 209860B918277B00009D5BE0 = 209860B918277B00009D5BE0 /* PBXTextBookmark */; - 20CD05AE180FBCD8005A8231 = 20CD05AE180FBCD8005A8231 /* PBXTextBookmark */; - 20DE9D35180500990047B2DD = 20DE9D35180500990047B2DD /* PBXTextBookmark */; - 20DE9D36180500990047B2DD = 20DE9D36180500990047B2DD /* PBXTextBookmark */; - 20E2179D18179A08003112DE = 20E2179D18179A08003112DE /* PBXTextBookmark */; - 20E2179E18179A08003112DE = 20E2179E18179A08003112DE /* PBXTextBookmark */; - 20E2179F18179A08003112DE = 20E2179F18179A08003112DE /* PBXTextBookmark */; - 20E217A118179A08003112DE = 20E217A118179A08003112DE /* PBXTextBookmark */; - 20E217A518179A08003112DE = 20E217A518179A08003112DE /* PBXTextBookmark */; - 20E217CB18186B4C003112DE = 20E217CB18186B4C003112DE /* PBXTextBookmark */; - 20E217CC18186B4C003112DE = 20E217CC18186B4C003112DE /* PBXTextBookmark */; - 20E217E71818B5D0003112DE = 20E217E71818B5D0003112DE /* PBXTextBookmark */; - 20EC59781808D7A100F759CD = 20EC59781808D7A100F759CD /* PBXTextBookmark */; - 20F6A1AC17E95A6200BAD261 = 20F6A1AC17E95A6200BAD261 /* PBXTextBookmark */; - 20F6A1AE17E95A6200BAD261 = 20F6A1AE17E95A6200BAD261 /* PBXTextBookmark */; - 20F6A1B117E95A6200BAD261 = 20F6A1B117E95A6200BAD261 /* PlistBookmark */; - 20F6A1E917E95B5200BAD261 = 20F6A1E917E95B5200BAD261 /* PBXTextBookmark */; - 20F6A1EA17E95B5200BAD261 = 20F6A1EA17E95B5200BAD261 /* PBXTextBookmark */; - 20F6A21A17E95C1200BAD261 = 20F6A21A17E95C1200BAD261 /* PBXTextBookmark */; - 20F6A21E17E95C1200BAD261 = 20F6A21E17E95C1200BAD261 /* PBXTextBookmark */; + 204EC15718285FB20035FB9D /* PBXTextBookmark */ = 204EC15718285FB20035FB9D /* PBXTextBookmark */; + 204EC15818285FB20035FB9D /* PBXTextBookmark */ = 204EC15818285FB20035FB9D /* PBXTextBookmark */; + 204EC15918285FB20035FB9D /* PBXTextBookmark */ = 204EC15918285FB20035FB9D /* PBXTextBookmark */; + 204EC15A18285FB20035FB9D /* PBXTextBookmark */ = 204EC15A18285FB20035FB9D /* PBXTextBookmark */; + 204EC15B18285FB20035FB9D /* PBXTextBookmark */ = 204EC15B18285FB20035FB9D /* PBXTextBookmark */; + 204EC15C18285FB20035FB9D /* PBXTextBookmark */ = 204EC15C18285FB20035FB9D /* PBXTextBookmark */; + 204EC15D18285FB20035FB9D /* PBXTextBookmark */ = 204EC15D18285FB20035FB9D /* PBXTextBookmark */; + 204EC15E18285FB20035FB9D /* PBXTextBookmark */ = 204EC15E18285FB20035FB9D /* PBXTextBookmark */; + 204EC15F18285FB20035FB9D /* PBXTextBookmark */ = 204EC15F18285FB20035FB9D /* PBXTextBookmark */; + 204EC16018285FB20035FB9D /* PBXTextBookmark */ = 204EC16018285FB20035FB9D /* PBXTextBookmark */; + 204EC16118285FB20035FB9D /* PBXTextBookmark */ = 204EC16118285FB20035FB9D /* PBXTextBookmark */; + 204EC16918285FE00035FB9D /* PBXTextBookmark */ = 204EC16918285FE00035FB9D /* PBXTextBookmark */; + 204EC171182889AD0035FB9D /* PBXTextBookmark */ = 204EC171182889AD0035FB9D /* PBXTextBookmark */; + 204EC173182889AD0035FB9D /* PBXTextBookmark */ = 204EC173182889AD0035FB9D /* PBXTextBookmark */; + 204EC176182889C80035FB9D /* PBXTextBookmark */ = 204EC176182889C80035FB9D /* PBXTextBookmark */; + 204EC178182889C80035FB9D /* PBXTextBookmark */ = 204EC178182889C80035FB9D /* PBXTextBookmark */; + 204EC18218288AF90035FB9D /* PBXTextBookmark */ = 204EC18218288AF90035FB9D /* PBXTextBookmark */; + 204EC18318288AF90035FB9D /* PBXTextBookmark */ = 204EC18318288AF90035FB9D /* PBXTextBookmark */; + 204EC18418288AF90035FB9D /* PBXTextBookmark */ = 204EC18418288AF90035FB9D /* PBXTextBookmark */; + 204EC241182B7A630035FB9D /* PBXTextBookmark */ = 204EC241182B7A630035FB9D /* PBXTextBookmark */; + 204F943D18005532007B4DAD /* PBXTextBookmark */ = 204F943D18005532007B4DAD /* PBXTextBookmark */; + 2050562217ED9E6100F572B7 /* PBXTextBookmark */ = 2050562217ED9E6100F572B7 /* PBXTextBookmark */; + 20567ED217E95DEC0002B1A9 /* PBXTextBookmark */ = 20567ED217E95DEC0002B1A9 /* PBXTextBookmark */; + 20567ED517E95DEC0002B1A9 /* PBXTextBookmark */ = 20567ED517E95DEC0002B1A9 /* PBXTextBookmark */; + 20568DE817EC16C60022F314 /* PBXTextBookmark */ = 20568DE817EC16C60022F314 /* PBXTextBookmark */; + 205AEFD91814CBEE00F6F9FF /* PBXTextBookmark */ = 205AEFD91814CBEE00F6F9FF /* PBXTextBookmark */; + 205AEFFA1814D0F800F6F9FF /* PBXTextBookmark */ = 205AEFFA1814D0F800F6F9FF /* PBXTextBookmark */; + 205AEFFB1814D0F800F6F9FF /* PBXTextBookmark */ = 205AEFFB1814D0F800F6F9FF /* PBXTextBookmark */; + 205AEFFC1814D0F800F6F9FF /* PBXTextBookmark */ = 205AEFFC1814D0F800F6F9FF /* PBXTextBookmark */; + 205AF0B0181615E200F6F9FF /* PBXTextBookmark */ = 205AF0B0181615E200F6F9FF /* PBXTextBookmark */; + 205AF2A3181662B000F6F9FF /* PBXTextBookmark */ = 205AF2A3181662B000F6F9FF /* PBXTextBookmark */; + 205AF3261816681B00F6F9FF /* PBXTextBookmark */ = 205AF3261816681B00F6F9FF /* PBXTextBookmark */; + 205AF37618166E8900F6F9FF /* PBXTextBookmark */ = 205AF37618166E8900F6F9FF /* PBXTextBookmark */; + 205AF39C181670DB00F6F9FF /* PBXTextBookmark */ = 205AF39C181670DB00F6F9FF /* PBXTextBookmark */; + 205AF3B11816778B00F6F9FF /* PBXTextBookmark */ = 205AF3B11816778B00F6F9FF /* PBXTextBookmark */; + 205AF3B918167E1100F6F9FF /* PlistBookmark */ = 205AF3B918167E1100F6F9FF /* PlistBookmark */; + 205CBE4718134A20009DA0FF /* PBXTextBookmark */ = 205CBE4718134A20009DA0FF /* PBXTextBookmark */; + 20664C241808D0EF00942104 /* PBXTextBookmark */ = 20664C241808D0EF00942104 /* PBXTextBookmark */; + 20664C291808D0EF00942104 /* PBXTextBookmark */ = 20664C291808D0EF00942104 /* PBXTextBookmark */; + 206D5FB01808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FB01808EAE800C0DE49 /* PBXTextBookmark */; + 206D5FB61808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FB61808EAE800C0DE49 /* PBXTextBookmark */; + 206D60391808F3A600C0DE49 /* PBXTextBookmark */ = 206D60391808F3A600C0DE49 /* PBXTextBookmark */; + 206D604B1808F92000C0DE49 /* PBXTextBookmark */ = 206D604B1808F92000C0DE49 /* PBXTextBookmark */; + 206D60511808F92000C0DE49 /* PBXTextBookmark */ = 206D60511808F92000C0DE49 /* PBXTextBookmark */; + 206D60541808F92000C0DE49 /* PBXTextBookmark */ = 206D60541808F92000C0DE49 /* PBXTextBookmark */; + 206D605B1808F99A00C0DE49 /* PBXTextBookmark */ = 206D605B1808F99A00C0DE49 /* PBXTextBookmark */; + 206D6096180904FB00C0DE49 /* PBXTextBookmark */ = 206D6096180904FB00C0DE49 /* PBXTextBookmark */; + 206D60B3180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B3180907AC00C0DE49 /* PBXTextBookmark */; + 206D60B4180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B4180907AC00C0DE49 /* PBXTextBookmark */; + 206D60B7180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B7180907AC00C0DE49 /* PBXTextBookmark */; + 2090289E17E95F9E0051A253 /* PBXTextBookmark */ = 2090289E17E95F9E0051A253 /* PBXTextBookmark */; + 2090289F17E95F9E0051A253 /* PBXTextBookmark */ = 2090289F17E95F9E0051A253 /* PBXTextBookmark */; + 209028A517E95F9E0051A253 /* PBXTextBookmark */ = 209028A517E95F9E0051A253 /* PBXTextBookmark */; + 20CD05AE180FBCD8005A8231 /* PBXTextBookmark */ = 20CD05AE180FBCD8005A8231 /* PBXTextBookmark */; + 20DE9D35180500990047B2DD /* PBXTextBookmark */ = 20DE9D35180500990047B2DD /* PBXTextBookmark */; + 20DE9D36180500990047B2DD /* PBXTextBookmark */ = 20DE9D36180500990047B2DD /* PBXTextBookmark */; + 20E2179D18179A08003112DE /* PBXTextBookmark */ = 20E2179D18179A08003112DE /* PBXTextBookmark */; + 20E2179E18179A08003112DE /* PBXTextBookmark */ = 20E2179E18179A08003112DE /* PBXTextBookmark */; + 20E2179F18179A08003112DE /* PBXTextBookmark */ = 20E2179F18179A08003112DE /* PBXTextBookmark */; + 20E217A118179A08003112DE /* PBXTextBookmark */ = 20E217A118179A08003112DE /* PBXTextBookmark */; + 20E217A518179A08003112DE /* PBXTextBookmark */ = 20E217A518179A08003112DE /* PBXTextBookmark */; + 20E217CB18186B4C003112DE /* PBXTextBookmark */ = 20E217CB18186B4C003112DE /* PBXTextBookmark */; + 20E217CC18186B4C003112DE /* PBXTextBookmark */ = 20E217CC18186B4C003112DE /* PBXTextBookmark */; + 20EC59781808D7A100F759CD /* PBXTextBookmark */ = 20EC59781808D7A100F759CD /* PBXTextBookmark */; + 20F6A1AC17E95A6200BAD261 /* PBXTextBookmark */ = 20F6A1AC17E95A6200BAD261 /* PBXTextBookmark */; + 20F6A1AE17E95A6200BAD261 /* PBXTextBookmark */ = 20F6A1AE17E95A6200BAD261 /* PBXTextBookmark */; + 20F6A1B117E95A6200BAD261 /* PlistBookmark */ = 20F6A1B117E95A6200BAD261 /* PlistBookmark */; + 20F6A1E917E95B5200BAD261 /* PBXTextBookmark */ = 20F6A1E917E95B5200BAD261 /* PBXTextBookmark */; + 20F6A1EA17E95B5200BAD261 /* PBXTextBookmark */ = 20F6A1EA17E95B5200BAD261 /* PBXTextBookmark */; + 20F6A21A17E95C1200BAD261 /* PBXTextBookmark */ = 20F6A21A17E95C1200BAD261 /* PBXTextBookmark */; + 20F6A21E17E95C1200BAD261 /* PBXTextBookmark */ = 20F6A21E17E95C1200BAD261 /* PBXTextBookmark */; }; sourceControlManager = 20F6A1A517E959A000BAD261 /* Source Control */; userBuildSettings = {