Added much code for the foundation of the netcode. Server automatically starts on port 31337 and runs as a separate thread in the SDL client. This TCP server functions as a basic echo server and can be connected to thru telnet or by typing 'connect 127.0.0.1 31337' in timesynk's console. Once connected, the echo functionality can be tested by using console command 'send my message goes here'. Somewhat buggy and crashses on occasion - suspected cause is consoleLog()ing a string that is not properly nul terminated, resulting in reading memory out of bounds. Curses client does not run the server properly at the moment, probably due to using select on server, clients, and stdin when combined with ncurses - will look into this later.
parent
df73d846d8
commit
7bc43929e0
7
Makefile
7
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)
|
||||
|
|
2
common.h
2
common.h
|
@ -10,4 +10,6 @@ Contains common variables, such as return codes.
|
|||
#define ERROR 1
|
||||
#define SUCCESS 0
|
||||
|
||||
int is_networking;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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.
|
||||
|
|
3
game.h
3
game.h
|
@ -14,6 +14,9 @@
|
|||
#define NORTHWEST 9
|
||||
#define SOUTHEAST 1
|
||||
#define SOUTHWEST 3
|
||||
|
||||
int tickrate;
|
||||
|
||||
struct Map *current_map;
|
||||
|
||||
int gameInit();
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
198
interface/sdl.c
198
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:
|
||||
|
|
|
@ -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
|
||||
|
|
8
main.c
8
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();
|
||||
|
|
1
main.h
1
main.h
|
@ -1,7 +1,6 @@
|
|||
#ifndef MAIN_H
|
||||
#define MAIN_H
|
||||
int is_running;
|
||||
int is_networking;
|
||||
|
||||
void appQuit();
|
||||
#endif
|
||||
|
|
146
net/sockets.c
146
net/sockets.c
|
@ -1,11 +1,153 @@
|
|||
#include "sockets.h"
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
#include "../common.h"
|
||||
#include "../stubs.h"
|
||||
|
||||
int netInit() {
|
||||
#include <fcntl.h>
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
#ifndef SOCKETS_H
|
||||
#define SOCKETS_H
|
||||
#if _WIN32 | _WIN64
|
||||
#include <Windows.h>
|
||||
#include <Ws2tcpip.h>
|
||||
#include <Winsock2.h>
|
||||
#else
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <unistd.h>
|
||||
#if defined (sun)
|
||||
/* For Solaris 2.6, as it lacks SIOCGIFCONF */
|
||||
#include <sys/sockio.h>
|
||||
#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
|
1
stubs.h
1
stubs.h
|
@ -18,6 +18,5 @@ void interfaceDrawConsole();
|
|||
void interfaceSetInterval(const char *input_string);
|
||||
|
||||
int netInit();
|
||||
void netLoop();
|
||||
|
||||
#endif
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -311,12 +311,14 @@
|
|||
<key>Dock</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CE0B20306471E060097A5F4</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>npc.h</string>
|
||||
<string>player.c</string>
|
||||
<key>PBXSplitModuleInNavigatorKey</key>
|
||||
<dict>
|
||||
<key>Split0</key>
|
||||
|
@ -324,11 +326,11 @@
|
|||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CE0B20406471E060097A5F4</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>npc.h</string>
|
||||
<string>player.c</string>
|
||||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>204EC1291827ADB00035FB9D</string>
|
||||
<string>204EC241182B7A630035FB9D</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>20568DE817EC16C60022F314</string>
|
||||
|
@ -338,19 +340,14 @@
|
|||
<string>206D60B3180907AC00C0DE49</string>
|
||||
<string>206D60B4180907AC00C0DE49</string>
|
||||
<string>205CBE4718134A20009DA0FF</string>
|
||||
<string>205AEFD81814CBEE00F6F9FF</string>
|
||||
<string>205AEFD91814CBEE00F6F9FF</string>
|
||||
<string>205AEFFA1814D0F800F6F9FF</string>
|
||||
<string>205AEFFB1814D0F800F6F9FF</string>
|
||||
<string>205AEFFC1814D0F800F6F9FF</string>
|
||||
<string>205AF0B0181615E200F6F9FF</string>
|
||||
<string>205AF3261816681B00F6F9FF</string>
|
||||
<string>205AF3271816681B00F6F9FF</string>
|
||||
<string>205AF37618166E8900F6F9FF</string>
|
||||
<string>205AF396181670B300F6F9FF</string>
|
||||
<string>205AF39C181670DB00F6F9FF</string>
|
||||
<string>205AF39E181670DB00F6F9FF</string>
|
||||
<string>205AF3B818167E1100F6F9FF</string>
|
||||
<string>205AF3B918167E1100F6F9FF</string>
|
||||
<string>20E2179D18179A08003112DE</string>
|
||||
<string>20E2179E18179A08003112DE</string>
|
||||
|
@ -359,8 +356,14 @@
|
|||
<string>20E217CB18186B4C003112DE</string>
|
||||
<string>20E217CC18186B4C003112DE</string>
|
||||
<string>204EC0F6182788230035FB9D</string>
|
||||
<string>204EC1261827ADB00035FB9D</string>
|
||||
<string>204EC1271827ADB00035FB9D</string>
|
||||
<string>204EC15718285FB20035FB9D</string>
|
||||
<string>204EC15818285FB20035FB9D</string>
|
||||
<string>204EC15918285FB20035FB9D</string>
|
||||
<string>204EC15A18285FB20035FB9D</string>
|
||||
<string>204EC171182889AD0035FB9D</string>
|
||||
<string>204EC176182889C80035FB9D</string>
|
||||
<string>204EC18218288AF90035FB9D</string>
|
||||
<string>204EC18318288AF90035FB9D</string>
|
||||
</array>
|
||||
<key>prevStack</key>
|
||||
<array>
|
||||
|
@ -394,11 +397,17 @@
|
|||
<string>205AF2A3181662B000F6F9FF</string>
|
||||
<string>205AF3B11816778B00F6F9FF</string>
|
||||
<string>20E217A518179A08003112DE</string>
|
||||
<string>204EC0F8182788230035FB9D</string>
|
||||
<string>204EC0F9182788230035FB9D</string>
|
||||
<string>204EC10D18278AFA0035FB9D</string>
|
||||
<string>204EC1191827A9360035FB9D</string>
|
||||
<string>204EC1281827ADB00035FB9D</string>
|
||||
<string>204EC15B18285FB20035FB9D</string>
|
||||
<string>204EC15C18285FB20035FB9D</string>
|
||||
<string>204EC15D18285FB20035FB9D</string>
|
||||
<string>204EC15E18285FB20035FB9D</string>
|
||||
<string>204EC15F18285FB20035FB9D</string>
|
||||
<string>204EC16018285FB20035FB9D</string>
|
||||
<string>204EC16118285FB20035FB9D</string>
|
||||
<string>204EC16918285FE00035FB9D</string>
|
||||
<string>204EC173182889AD0035FB9D</string>
|
||||
<string>204EC178182889C80035FB9D</string>
|
||||
<string>204EC18418288AF90035FB9D</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
|
@ -420,8 +429,6 @@
|
|||
<string>517pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
|
@ -458,9 +465,9 @@
|
|||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>204EC0E4182787230035FB9D</string>
|
||||
<string>204EC16318285FB20035FB9D</string>
|
||||
<string>1CE0B1FE06471DED0097A5F4</string>
|
||||
<string>204EC0E5182787230035FB9D</string>
|
||||
<string>204EC16418285FB20035FB9D</string>
|
||||
<string>1CE0B20306471E060097A5F4</string>
|
||||
<string>1CE0B20506471E060097A5F4</string>
|
||||
</array>
|
||||
|
@ -594,11 +601,11 @@
|
|||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>204EC11E1827A99C0035FB9D</string>
|
||||
<string>204EC11F1827A99C0035FB9D</string>
|
||||
<string>204EC21B1829F2EA0035FB9D</string>
|
||||
<string>204EC21C1829F2EA0035FB9D</string>
|
||||
<string>20F6A1B417E95A6200BAD261</string>
|
||||
<string>1C78EAAD065D492600B07095</string>
|
||||
<string>1CD10A99069EF8BA00B06720</string>
|
||||
<string>20F6A1B417E95A6200BAD261</string>
|
||||
<string>/Users/kts/Devel/timesynk/xcode/timesynk.xcodeproj</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
|
@ -623,7 +630,7 @@
|
|||
<key>PBXProjectModuleGUID</key>
|
||||
<string>1CD0528F0623707200166675</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>sdl.c</string>
|
||||
<string>sockets.c</string>
|
||||
<key>StatusBarVisibility</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
@ -632,7 +639,7 @@
|
|||
<key>Frame</key>
|
||||
<string>{{0, 0}, {500, 218}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>53 221 500 500 0 0 1024 746 </string>
|
||||
<string>309 191 500 500 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
|
@ -658,7 +665,7 @@
|
|||
<key>Frame</key>
|
||||
<string>{{0, 223}, {500, 236}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>53 221 500 500 0 0 1024 746 </string>
|
||||
<string>309 191 500 500 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXBuildResultsModule</string>
|
||||
|
@ -681,18 +688,18 @@
|
|||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>20F6A1B417E95A6200BAD261</string>
|
||||
<string>204EC0E6182787230035FB9D</string>
|
||||
<string>204EC14F18285FB00035FB9D</string>
|
||||
<string>1CD0528F0623707200166675</string>
|
||||
<string>XCMainBuildResultsModuleGUID</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.buildV3</string>
|
||||
<key>WindowString</key>
|
||||
<string>53 221 500 500 0 0 1024 746 </string>
|
||||
<string>309 191 500 500 0 0 1024 746 </string>
|
||||
<key>WindowToolGUID</key>
|
||||
<string>20F6A1B417E95A6200BAD261</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FirstTimeWindowDisplayed</key>
|
||||
|
@ -775,10 +782,10 @@
|
|||
<key>Frame</key>
|
||||
<string>{{316, 0}, {378, 203}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>48 97 694 422 0 0 1024 746 </string>
|
||||
<string>198 130 694 422 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>48 97 694 422 0 0 1024 746 </string>
|
||||
<string>198 130 694 422 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXDebugSessionModule</string>
|
||||
|
@ -801,22 +808,22 @@
|
|||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>1CD10A99069EF8BA00B06720</string>
|
||||
<string>204EC0EC182787AA0035FB9D</string>
|
||||
<string>204EC15018285FB00035FB9D</string>
|
||||
<string>1C162984064C10D400B95A72</string>
|
||||
<string>204EC0ED182787AA0035FB9D</string>
|
||||
<string>204EC0EE182787AA0035FB9D</string>
|
||||
<string>204EC0EF182787AA0035FB9D</string>
|
||||
<string>204EC0F0182787AA0035FB9D</string>
|
||||
<string>204EC0F1182787AA0035FB9D</string>
|
||||
<string>204EC15118285FB00035FB9D</string>
|
||||
<string>204EC15218285FB00035FB9D</string>
|
||||
<string>204EC15318285FB00035FB9D</string>
|
||||
<string>204EC15418285FB00035FB9D</string>
|
||||
<string>204EC15518285FB00035FB9D</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.debugV3</string>
|
||||
<key>WindowString</key>
|
||||
<string>48 97 694 422 0 0 1024 746 </string>
|
||||
<string>198 130 694 422 0 0 1024 746 </string>
|
||||
<key>WindowToolGUID</key>
|
||||
<string>1CD10A99069EF8BA00B06720</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Identifier</key>
|
||||
|
@ -934,6 +941,8 @@
|
|||
<key>Dock</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
|
@ -946,7 +955,7 @@
|
|||
<key>Frame</key>
|
||||
<string>{{0, 0}, {650, 209}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>290 308 650 250 0 0 1024 746 </string>
|
||||
<string>290 212 650 250 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXDebugCLIModule</string>
|
||||
|
@ -969,17 +978,17 @@
|
|||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>1C78EAAD065D492600B07095</string>
|
||||
<string>204EC0F2182787AA0035FB9D</string>
|
||||
<string>204EC15618285FB00035FB9D</string>
|
||||
<string>1C78EAAC065D492600B07095</string>
|
||||
</array>
|
||||
<key>ToolbarConfiguration</key>
|
||||
<string>xcode.toolbar.config.consoleV3</string>
|
||||
<key>WindowString</key>
|
||||
<string>290 308 650 250 0 0 1024 746 </string>
|
||||
<string>290 212 650 250 0 0 1024 746 </string>
|
||||
<key>WindowToolGUID</key>
|
||||
<string>1C78EAAD065D492600B07095</string>
|
||||
<key>WindowToolIsVisible</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Identifier</key>
|
||||
|
|
|
@ -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 = {
|
||||
|
|
Loading…
Reference in New Issue