Added support for doors. A DoorTile is a fairly basic tile - at the moment - sporting a state int to specify its current state via STATE_OPEN, STATE_CLOSED, STATE_BROKEN, or STATE_MISSING. Graphically/ascii-ly, the proper visual appearance is acquired by multiplying the door id by the total door states(4) and adding the current state value to the result. For example, for a door with the id of 0, you would have visual tile 0 for closed, 1 for open, 2 for broken, and 3 for missing. Beyond the doors, the curses tiles were moved from interface/curses.(c/h) to tiles/curses_tiles.(c/h) - they should, at some point, be generated in a similar manner to the tiles for the SDL client (using pack_tiles).

netcode
kts 2013-10-17 14:45:42 -07:00
parent 22e2d1c3a8
commit 4c204db4f3
33 changed files with 492 additions and 264 deletions

View File

@ -2,7 +2,7 @@ CC = gcc
PREFIX = ./
BINARY=timesynk
OBJS = main.o game.o context.o player.o tile.o map.o wall.o net/sockets.o helper.o
CURSES_OBJS = interface/curses.o
CURSES_OBJS = interface/curses.o tiles/curses_tiles.o
SDL_OBJS = interface/sdl.o tiles/tiles.o
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
@ -38,6 +38,9 @@ tiles: pack_tiles
./pack_tiles
$(CC) $(CFLAGS) -c tiles/tiles.c
curses_tiles:
$(CC) $(CFLAGS) -c tiles/curses_tiles.c
main.o: main.c stubs.h wall.h wall.c context.h interface/curses.c net/sockets.c
$(CC) $(CFLAGS) -c main.c

View File

@ -38,6 +38,14 @@ void walkContext(int key_press) {
case 'h':
(*player_commands[PLAYER_MOVE])(WEST, 1);
break;
case 'a':
current_context = &activateContext;
interfacePrint("Activate what?");
break;
case 'L':
current_context = &lookContext;
interfacePrint("Look where?");
break;
}
}
@ -68,3 +76,31 @@ void lookContext(int key_press) {
}
current_context = &walkContext;
}
void activateContext(int key_press) {
switch(key_press) {
case KEY_ESC:
interfacePrint("back in action, bb!");
break;
case KEY_UP:
case 'k':
(*player_commands[PLAYER_ACTIVATE])(player.x, player.y-1);
break;
case KEY_DOWN:
case 'j':
(*player_commands[PLAYER_ACTIVATE])(player.x, player.y+1);
break;
case KEY_RIGHT:
case 'l':
(*player_commands[PLAYER_ACTIVATE])(player.x+1, player.y);
break;
case KEY_LEFT:
case 'h':
(*player_commands[PLAYER_ACTIVATE])(player.x-1, player.y);
break;
default:
interfacePrint("invalid direction");
break;
}
current_context = &walkContext;
}

View File

@ -17,4 +17,5 @@ void (*current_context)(int key_press); // pointer to current context
void walkContext(int key_press);
void lookContext(int key_press);
void activateContext(int key_press);
#endif

15
game.c
View File

@ -24,6 +24,13 @@ int gameInit() {
drawPath(&current_map, TILE_APPEND, WALL, STONE, 6, 1, 8, 12);
drawPath(&current_map, TILE_APPEND, WALL, STONE, 12, 4, 7, 13);
drawLine(&current_map, TILE_APPEND, WALL, STONE, 18, 0, 18, 15);
replaceTile((current_map->matrix[18][10]).next, DOOR, 0);
drawLine(&current_map, TILE_APPEND, WALL, STONE, 8, 11, 17, 11);
replaceTile((current_map->matrix[15][11]).next, DOOR, 0);
replaceTile((current_map->matrix[13][11]).next, DOOR, 0);
replaceTile((current_map->matrix[10][11]).next, DOOR, 0);
drawLine(&current_map, TILE_APPEND, WALL, STONE, 0, 0, 31, 0);
drawLine(&current_map, TILE_APPEND, WALL, STONE, 0, 15, 31, 15);
drawLine(&current_map, TILE_APPEND, WALL, STONE, 0, 0, 0, 15);
@ -35,7 +42,6 @@ void gameLoop() {
}
void gameClose() {
// FIXME: breaks on SDL OS X
freeMap(&current_map);
}
@ -53,6 +59,13 @@ int gameCollision(target_x, target_y) {
case FLOOR:
// return 0;
break;
case DOOR:
switch(((struct DoorTile*)debug_tile->data)->state) {
case STATE_CLOSED:
return 1;
break;
}
break;
}
debug_tile = debug_tile->next;
}

View File

@ -9,43 +9,8 @@
#include "../common.h"
#include "../context.h"
#include "../stubs.h"
/*
Acceptable colors for foreground and background (from manpage, curs_color):
COLOR_BLACK
COLOR_RED
COLOR_GREEN
COLOR_YELLOW
COLOR_BLUE
COLOR_MAGENTA
COLOR_CYAN
COLOR_WHITE
Acceptable attributes (from manpage, curs_attr):
A_NORMAL Normal display (no highlight)
A_STANDOUT Best highlighting mode of the terminal.
A_UNDERLINE Underlining
A_REVERSE Reverse video
A_BLINK Blinking
A_DIM Half bright
A_BOLD Extra bright or bold
A_PROTECT Protected mode
A_INVIS Invisible or blank mode
A_ALTCHARSET Alternate character set
A_CHARTEXT Bit-mask to extract a character
*/
CursesTile ascii_walls[] = {
// {'.', COLOR_WHITE, COLOR_BLACK, 0}, // 0=WALL_NULL
{'#', COLOR_WHITE, COLOR_BLACK, 0}, // 0=WALL_STONE
{'#', COLOR_YELLOW, COLOR_BLACK, 0}, // 1=WALL_WOOD
{'#', COLOR_WHITE, COLOR_BLACK, A_BOLD} // 2=WALL_STEEL
};
CursesTile ascii_floors[] = {
{},
{'.', COLOR_WHITE, COLOR_BLACK, 0},
{'.', COLOR_YELLOW, COLOR_BLACK, 0},
{'.', COLOR_WHITE, COLOR_BLACK, A_BOLD}
};
#include "../tile.h" // for DoorTile, etc.
#include "../tiles/curses_tiles.h"
int interfaceInit() {
// initialize ncurses library
@ -74,14 +39,16 @@ int interfaceInit() {
void interfaceLoop() {
int key = getch();
if (key == 'L') {
/* if (key == 'L') {
current_context = &lookContext;
interfacePrint("Look where?");
} else if (key == 'M') {
current_context = &walkContext;
} else {
(*current_context)(key);
}
} else if (key == 'a') {
current_context = &activateContext;
} else { */
(*current_context)(key);
//}
}
void interfaceDraw() {
@ -95,22 +62,42 @@ void interfaceDraw() {
while (step_y < end_y) {
//if (visible_matrix[step_x][step_y] & TILE_VISIBLE) {
if (step_x >= 0 && step_y >= 0 && step_x < current_map->width && step_y < current_map->height) {
short tile_id = current_map->matrix[step_x][step_y].id;
unsigned int type_id = current_map->matrix[step_x][step_y].tid;
int color;
switch (type_id) {
case WALL:
color = ascii_walls[tile_id].fg * COLORS + ascii_walls[tile_id].bg;
attron(COLOR_PAIR(color) | ascii_walls[tile_id].attr);
mvwaddch(screen, step_y, step_x, ascii_walls[tile_id].ch);
attroff(COLOR_PAIR(color) | ascii_walls[tile_id].attr);
break;
case FLOOR:
color = ascii_walls[tile_id].fg * COLORS + ascii_walls[tile_id].bg;
attron(COLOR_PAIR(color) | ascii_walls[tile_id].attr);
mvwaddch(screen, step_y, step_x, '.');
attroff(COLOR_PAIR(color) | ascii_walls[tile_id].attr);
break;
struct Tile *current_tile;
current_tile = &(current_map)->matrix[step_x][step_y];
while(current_tile) {
short tile_id = current_tile->id;
unsigned int type_id = current_tile->tid;
int color;
switch (type_id) {
case WALL:
color = curses_walls[tile_id].fg * COLORS + curses_walls[tile_id].bg;
attron(COLOR_PAIR(color) | curses_walls[tile_id].attr);
mvwaddch(screen, step_y, step_x, curses_walls[tile_id].ch);
attroff(COLOR_PAIR(color) | curses_walls[tile_id].attr);
break;
case FLOOR:
color = curses_walls[tile_id].fg * COLORS + curses_walls[tile_id].bg;
attron(COLOR_PAIR(color) | curses_walls[tile_id].attr);
mvwaddch(screen, step_y, step_x, '.');
attroff(COLOR_PAIR(color) | curses_walls[tile_id].attr);
break;
case DOOR:
// doors work by taking the original id(0) and adding the current state(0=closed,1=open,2=broken,3=missing). For one door, you need 4 individual tiles.
tile_id = tile_id*4;
tile_id += ((struct DoorTile*)(current_tile->data))->state;
color = curses_doors[tile_id].fg * COLORS + curses_doors[tile_id].bg;
attron(COLOR_PAIR(color) | curses_doors[tile_id].attr);
mvwaddch(screen, step_y, step_x, curses_doors[tile_id].ch);
attroff(COLOR_PAIR(color) | curses_doors[tile_id].attr);
break;
case PLAYER:
color = curses_players[tile_id].fg * COLORS + curses_players[tile_id].bg;
attron(COLOR_PAIR(color) | curses_players[tile_id].attr);
mvwaddch(screen, step_y, step_x, '@');
attroff(COLOR_PAIR(color) | curses_players[tile_id].attr);
break;
}
current_tile = current_tile->next;
}
}
step_y++; // move down
@ -126,7 +113,7 @@ void interfaceDraw() {
mvwaddstr(screen, 19, 8, "py: ");
mvwaddstr(screen, 19, 12, string);
// draw player last
mvwaddch(screen, player.y, player.x, '@');
//mvwaddch(screen, player.y, player.x, '@');
move(player.y, player.x);
refresh();
}
@ -165,7 +152,7 @@ void interfacePrintf(const char *input_string, ...) {
format_step++;
//formatted_string[format_step] = *byte_location;
formatted_string[format_step] = byte_offset;
// convert decimal to ascii
// convert decimal to curses
break;
case 's':
handle_format = 0;

View File

@ -5,15 +5,5 @@ WINDOW * screen;
int cols;
int rows;
typedef struct {
char ch;
int fg;
int bg;
int attr;
} CursesTile;
extern CursesTile ascii_walls[];
extern CursesTile ascii_tiles[];
int original_cursor;
#endif

View File

@ -27,6 +27,7 @@ int interfaceInit() {
player_spritesheet = IMG_Load_RW(SDL_RWFromMem(&player_images, player_images_length), 1);
wall_spritesheet = IMG_Load_RW(SDL_RWFromMem(&wall_images, wall_images_length), 1);
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};
@ -59,6 +60,7 @@ void cameraDraw() {
if (step_x >= 0 && step_y >= 0 && step_x < current_map->width && step_y < current_map->height) {
struct Tile *current_tile;
current_tile = &(current_map)->matrix[step_x][step_y];
int tile_id = current_tile->id;
while(current_tile) {
int x_offset = current_tile->id / 16; // 16 tiles across in spritesheet
int y_offset = current_tile->id - (x_offset*16);
@ -71,6 +73,15 @@ void cameraDraw() {
case FLOOR:
SDL_BlitSurface(floor_spritesheet, &sprite_offset, camera_surface, &tile_rect);
break;
case DOOR:
tile_id = tile_id*4;
tile_id += ((struct DoorTile*)current_tile->data)->state;
y_offset = tile_id / 16;
x_offset = tile_id - (y_offset*16);
sprite_offset.x = x_offset*TILE_WIDTH;
sprite_offset.y = y_offset*TILE_HEIGHT;
SDL_BlitSurface(door_spritesheet, &sprite_offset, camera_surface, &tile_rect);
break;
case PLAYER:
y_offset = current_tile->id / TOTAL_CLASSES;
x_offset = current_tile->id - (y_offset*TOTAL_CLASSES);

View File

@ -6,6 +6,7 @@
SDL_Surface* shadow_spritesheet;
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;

1
main.c
View File

@ -17,6 +17,7 @@ int main(int argc, char *argv[]) {
// h'okay, let's add our default player commands
playerSetCommand(PLAYER_MOVE, playerMove);
playerSetCommand(PLAYER_ACTIVATE, playerActivate);
playerSetCommand(PLAYER_LOOK, playerLook);
gameInit();

5
map.c
View File

@ -128,7 +128,7 @@ void replaceTile(struct Tile *tile, unsigned int tid, short id) {
tile->tid = tid;
tile->id = id;
// @@ CHECK IT OUT
free(tile->data); // free old data, just in case
//free(tile->data); // free old data, just in case
//tile->data = NULL;
if (tid == FLOOR) {
tile->data = malloc(sizeof(FloorTile));
@ -136,6 +136,9 @@ void replaceTile(struct Tile *tile, unsigned int tid, short id) {
} else if (tid == WALL) {
tile->data = malloc(sizeof(WallTile));
memcpy(tile->data, &walls[id], sizeof(WallTile));
} else if (tid == DOOR) {
tile->data = malloc(sizeof(struct DoorTile));
memcpy(tile->data, &doors[id], sizeof(struct DoorTile));
}
}

View File

@ -33,6 +33,7 @@ int main(int argc, char **argv) {
convert("tiles/players.png", "player_images");
convert("tiles/walls.png", "wall_images");
convert("tiles/floors.png", "floor_images");
convert("tiles/doors.png", "door_images");
convert("tiles/shadows.png", "shadow_images");
fprintf(tiles_h, "#endif\n");

View File

@ -81,3 +81,38 @@ void playerLook(int x, int y) {
interfacePrint("You gaze into the void...");
}
}
void playerActivate(int x, int y) {
char string[32];
struct Tile* debug_tile;
if ((x < current_map->width && x >= 0) && (y < current_map->height && y >= 0)) {
if (current_map->matrix[x][y].tid) {
debug_tile = &current_map->matrix[x][y];
while(debug_tile->next != NULL) {
debug_tile = debug_tile->next;
}
switch (debug_tile->tid) {
case DOOR:
switch (((struct DoorTile*)debug_tile->data)->state) {
case STATE_OPEN:
((struct DoorTile*)debug_tile->data)->state = STATE_CLOSED;
strcat(string, "You close the ");
strcat(string, ((struct BasicTile*)debug_tile->data)->name);
interfacePrint(string);
break;
case STATE_CLOSED:
((struct DoorTile*)debug_tile->data)->state = STATE_OPEN;
strcat(string, "You open the ");
strcat(string, ((struct BasicTile*)debug_tile->data)->name);
interfacePrint(string);
break;
}
break;
default:
strcat(string, "There is nothing there to activate.");
interfacePrint(string);
break;
}
}
}
}

View File

@ -5,9 +5,10 @@
#define MAX_PLAYER_COMMANDS 128
/* list of standard command ids */
#define PLAYER_MOVE 1
#define PLAYER_KICK 2
#define PLAYER_TUMBLE 3
#define PLAYER_LOOK 4
#define PLAYER_ACTIVATE 2
#define PLAYER_KICK 3
#define PLAYER_TUMBLE 4
#define PLAYER_LOOK 5
#define TOTAL_RACES 5
#define RACE_HUMAN 0
@ -42,5 +43,6 @@ void playerSetCommand(int command_id, void(*function));
void playerMove(int direction, int distance);
void playerLook(int x, int y);
void playerActivate(int x, int y);
#endif

8
tile.c
View File

@ -42,6 +42,10 @@ struct Tile *newTile(unsigned int type_id, short id, short x, short y) {
new_tile->data = (FloorTile *) malloc(sizeof(FloorTile));
memcpy(new_tile->data, &floors[id], sizeof(FloorTile));
break;
case DOOR:
new_tile->data = (struct DoorTile *) malloc(sizeof(struct DoorTile));
memcpy(new_tile->data, &doors[id], sizeof(struct DoorTile));
break;
default:
new_tile->data = (struct BasicTile *) malloc(sizeof(struct BasicTile));
memcpy(new_tile->data, &walls[id], sizeof(struct BasicTile));
@ -49,3 +53,7 @@ struct Tile *newTile(unsigned int type_id, short id, short x, short y) {
}
return (new_tile);
}
struct DoorTile doors[] = {
{ NO_PASS, "wooden door", STATE_CLOSED } // 0
};

17
tile.h
View File

@ -8,8 +8,14 @@
#define PLAYER 1
#define FLOOR 2
#define WALL 3
#define ITEM 4
#define MONSTER 5
#define DOOR 4
#define ITEM 5
#define MONSTER 6
#define STATE_CLOSED 0
#define STATE_OPEN 1
#define STATE_BROKEN 2
#define STATE_MISSING 3
/*** Tile
struct Tile is the overarching struct for all objects on the map, be they walls, items, monsters, or even the players.
@ -31,6 +37,13 @@ struct BasicTile {
char name[16];
};
struct DoorTile {
int collision;
char name[16];
int state;
};
extern struct DoorTile doors[];
/*
interface used for creating new Tile
*/

BIN
tiles.o

Binary file not shown.

View File

@ -0,0 +1,77 @@
#include "curses_tiles.h"
#include <curses.h>
/*
Acceptable colors for foreground and background (from manpage, curs_color):
COLOR_BLACK
COLOR_RED
COLOR_GREEN
COLOR_YELLOW
COLOR_BLUE
COLOR_MAGENTA
COLOR_CYAN
COLOR_WHITE
Acceptable attributes (from manpage, curs_attr):
A_NORMAL Normal display (no highlight)
A_STANDOUT Best highlighting mode of the terminal.
A_UNDERLINE Underlining
A_REVERSE Reverse video
A_BLINK Blinking
A_DIM Half bright
A_BOLD Extra bright or bold
A_PROTECT Protected mode
A_INVIS Invisible or blank mode
A_ALTCHARSET Alternate character set
A_CHARTEXT Bit-mask to extract a character
*/
CursesTile curses_walls[] = {
{'#', COLOR_WHITE, COLOR_BLACK, 0},
{'#', COLOR_YELLOW, COLOR_BLACK, 0},
{'#', COLOR_WHITE, COLOR_BLACK, A_BOLD}
};
CursesTile curses_floors[] = {
{'.', COLOR_BLACK, COLOR_WHITE, A_BOLD},
{'.', COLOR_YELLOW, COLOR_BLACK, 0},
{'.', COLOR_WHITE, COLOR_BLACK, A_BOLD}
};
CursesTile curses_doors[] = {
{'+', COLOR_WHITE, COLOR_BLACK},
{'\'', COLOR_WHITE, COLOR_BLACK},
{',', COLOR_WHITE, COLOR_BLACK},
{' ', COLOR_WHITE, COLOR_BLACK}
};
CursesTile curses_players[] = {
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_WHITE, COLOR_BLACK, 0}, //0-5 human
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_GREEN, COLOR_BLACK, 0}, //6-11 manitou
{'@', COLOR_RED, COLOR_BLACK, 0}, //12-17 capran
{'@', COLOR_RED, COLOR_BLACK, 0}, //12-17 capran
{'@', COLOR_RED, COLOR_BLACK, 0}, //12-17 capran
{'@', COLOR_RED, COLOR_BLACK, 0}, //12-17 capran
{'@', COLOR_RED, COLOR_BLACK, 0}, //12-17 capran
{'@', COLOR_RED, COLOR_BLACK, A_BOLD}, //12-17 capran
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, A_BOLD}, //18-23 big dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
{'@', COLOR_CYAN, COLOR_BLACK, 0}, //24-29 lil dude
};

View File

@ -0,0 +1,17 @@
#ifndef CURSES_TILES_H
#define CURSES_TILES_H
// TODO: generate curses tiles akin to the graphical tiles
typedef struct {
char ch;
int fg;
int bg;
int attr;
} CursesTile;
extern CursesTile curses_walls[];
extern CursesTile curses_floors[];
extern CursesTile curses_doors[];
extern CursesTile curses_players[];
#endif

BIN
tiles/doors.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

View File

@ -14,6 +14,11 @@ unsigned char floor_images[] = {
};
unsigned int floor_images_length = 626;
unsigned char door_images[] = {
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x08,0x06,0x00,0x00,0x00,0x5c,0x72,0xa8,0x66,0x00,0x00,0x03,0x48,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xdc,0x2d,0x72,0xdb,0x40,0x14,0x00,0xe0,0x67,0x8f,0x49,0x59,0x60,0xa1,0x8e,0x90,0x32,0x53,0x81,0x1c,0xc0,0x47,0xe8,0x11,0x74,0x92,0x1c,0xc8,0x40,0x30,0x99,0x29,0x15,0x0b,0x68,0x60,0x61,0x58,0x48,0x66,0x54,0x50,0x4b,0x91,0x25,0xff,0x48,0x96,0x9c,0x7a,0xec,0xef,0x23,0xb6,0x34,0xbb,0x7e,0x4b,0xde,0x6a,0xe7,0xed,0xca,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xb5,0x98,0x35,0x2f,0xd2,0x34,0xca,0x3e,0x9d,0xf2,0x7c,0xbb,0x5f,0x43,0xaf,0xfe,0xed,0xb8,0xbb,0xe2,0xe7,0xf9,0x56,0xdb,0x32,0x4d,0xcf,0x1f,0x1f,0x6e,0x4d,0x9d,0x08,0x69,0x1a,0x65,0xfc,0xee,0xdf,0x31,0x7f,0xed,0x4e,0x1e,0x9b,0xa4,0x3d,0x96,0x5c,0x55,0x92,0x76,0x27,0x9f,0x46,0xfc,0xfc,0x75,0xab,0x4d,0x99,0x26,0x87,0xe3,0x6f,0x7e,0xb7,0x6f,0x62,0x0f,0x69,0x0b,0x57,0x6b,0x1e,0x31,0x3c,0xf9,0x23,0x22,0xd2,0xe4,0xf3,0x69,0x3b,0xb0,0x7f,0x9d,0xd4,0xfb,0xfa,0x6f,0x92,0x7f,0x4b,0x75,0xaf,0xfa,0x6c,0xc6,0x8f,0xe1,0x09,0x3d,0x8b,0xfe,0xab,0x05,0xb8,0x5a,0xf3,0x88,0x88,0xa1,0xc9,0xdf,0x31,0xbc,0xff,0x76,0xb2,0x6e,0xfa,0xb7,0x12,0x7f,0xd6,0xfe,0x9e,0xbf,0x46,0xa4,0xc9,0xe0,0x58,0xc0,0x1e,0xf3,0xff,0x3d,0x80,0xa6,0x34,0xd9,0x9a,0x04,0xda,0x4f,0xe8,0x7a,0x12,0xd8,0xb5,0x42,0x00,0x86,0x9b,0x47,0x44,0xdc,0xaf,0xb2,0xad,0x9b,0xed,0xeb,0xa3,0xde,0x22,0xee,0x7e,0xac,0x4e,0x1e,0x44,0x33,0x5e,0x9a,0x44,0x64,0xd9,0xde,0xf8,0xb3,0xaa,0x0d,0x30,0xde,0x22,0x22,0xa2,0x28,0x8a,0xad,0x24,0x6c,0x5f,0xef,0x93,0x3f,0x3e,0x46,0x44,0xc4,0xfd,0xcf,0x2c,0x8a,0xa2,0x38,0x79,0x10,0xbb,0xe2,0xef,0x50,0xb6,0x27,0x86,0x2a,0x3e,0x70,0x9a,0x45,0xf5,0xa5,0x9d,0x74,0x43,0x12,0xba,0x28,0x8a,0xf8,0xf8,0xb5,0x1e,0x35,0x90,0x3e,0xf1,0xc6,0x4c,0x32,0x40,0x57,0xb5,0xa4,0x3e,0xa9,0x22,0x5e,0x6d,0xc5,0x55,0xfd,0x5b,0x5b,0x77,0xc7,0x34,0x2b,0xf7,0xf5,0x36,0xdf,0x81,0x42,0x60,0xb9,0x89,0xd5,0x89,0x1f,0xa7,0x6d,0xeb,0xd9,0x0a,0xe4,0xe6,0x5d,0x44,0x11,0x30,0x4d,0x3a,0xc5,0xbd,0x59,0x74,0x93,0xb3,0x2e,0x02,0x02,0xd3,0x58,0x1c,0x6f,0xf2,0xa5,0x0e,0x3d,0x91,0xed,0xdb,0xc3,0xc4,0x06,0xad,0x00,0xee,0x57,0x59,0xbc,0x7f,0x5f,0xc6,0xfb,0xf7,0xe5,0xb9,0xc6,0x73,0x30,0xc9,0xb3,0x2c,0x8b,0xe5,0xf2,0xac,0xf1,0xe1,0xa6,0x0c,0x9a,0x00,0x9e,0x9e,0x9e,0xe2,0xf9,0xf9,0x79,0xf2,0x41,0xf4,0x3d,0xe0,0x73,0xae,0xf8,0x70,0xab,0x2e,0xa6,0x06,0x00,0x7c,0xbd,0xc1,0x13,0xc0,0x72,0x79,0x9e,0xe5,0x77,0xdf,0xe2,0xde,0xb9,0xe2,0xc3,0x2d,0x1a,0x54,0x04,0xfc,0xf6,0xe7,0x3c,0xcb,0xef,0x56,0xf5,0xff,0x68,0x7c,0xef,0x04,0xc0,0x34,0xa6,0x39,0x0a,0x1c,0xe3,0x8e,0x02,0x37,0x4e,0xf8,0x95,0x71,0xa4,0x10,0x68,0x1b,0x10,0xa6,0x33,0xcd,0x51,0xe0,0xd5,0xf8,0xa3,0xc0,0xd5,0x24,0xf0,0x78,0xe0,0x78,0x6f,0x95,0xfc,0x55,0x5b,0x47,0x81,0x61,0x9c,0x8b,0x3a,0x0a,0xbc,0x5e,0x1f,0xfc,0x8d,0x59,0x44,0x94,0x0f,0x0f,0x0f,0x8e,0x04,0xc3,0x44,0x16,0x11,0x11,0x1f,0x2f,0xe3,0x92,0xf7,0xe3,0x65,0x1d,0x71,0x17,0x11,0x6f,0xa7,0xf5,0x6f,0x24,0xfe,0xd1,0xa3,0xb9,0x63,0xc7,0x0a,0x7c,0xba,0x88,0x6d,0xc0,0x96,0x32,0xba,0xb5,0x80,0xfa,0x5a,0x0d,0x00,0xa6,0x73,0x11,0x13,0x40,0x9a,0xd4,0x5f,0xdb,0x2f,0xfc,0x94,0xcd,0x7b,0x8d,0xfb,0xc0,0x04,0xce,0xf1,0x2e,0xc0,0x49,0x67,0xf6,0xd3,0xe4,0xdf,0x67,0xe3,0x3f,0xff,0x6a,0xcd,0xa7,0x7e,0xf3,0xfe,0x14,0x71,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xae,0xde,0x5f,0xdf,0x20,0xe6,0x08,0x11,0x51,0xfd,0xb0,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
};
unsigned int door_images_length = 897;
unsigned char shadow_images[] = {
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x08,0x06,0x00,0x00,0x00,0x1b,0x89,0xf8,0xcc,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xdd,0x0a,0x0f,0x16,0x17,0x3b,0xdc,0x84,0x1f,0xd6,0x00,0x00,0x00,0x26,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0x60,0x18,0x05,0xa3,0x60,0x14,0x8c,0x82,0x51,0x30,0x0a,0x46,0x01,0x55,0x01,0x23,0x0e,0xf1,0x06,0x4a,0x0c,0x68,0xa0,0x97,0x0b,0x1a,0x18,0x18,0x18,0x18,0x00,0xad,0x26,0x02,0x04,0xd1,0x96,0xc8,0xd6,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
};

View File

@ -12,6 +12,9 @@ extern unsigned int wall_images_length;
extern unsigned char floor_images[];
extern unsigned int floor_images_length;
extern unsigned char door_images[];
extern unsigned int door_images_length;
extern unsigned char shadow_images[];
extern unsigned int shadow_images_length;

View File

@ -216,10 +216,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>20F90AFF180E369400242709</string>
<string>203852F11810908E00BA5BC2</string>
<key>history</key>
<array>
<string>20F90ADF180E35F200242709</string>
<string>2088594E180FE315007E7565</string>
</array>
</dict>
<key>SplitCount</key>
@ -341,7 +341,7 @@
<real>186</real>
</array>
<key>RubberWindowFrame</key>
<string>0 59 1024 687 0 0 1024 746 </string>
<string>-3 59 1024 687 0 0 1024 746 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -359,7 +359,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>player.h</string>
<string>game.c</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -367,39 +367,40 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>player.h</string>
<string>game.c</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>20F90AFE180E369400242709</string>
<string>203852F01810908E00BA5BC2</string>
<key>history</key>
<array>
<string>20567ECF17E95DEC0002B1A9</string>
<string>2002F0D917E972B3003CF277</string>
<string>20568DE817EC16C60022F314</string>
<string>203B68D117F7D77900272675</string>
<string>20DE9D9D18050D980047B2DD</string>
<string>20664C1C1808D0EF00942104</string>
<string>20664C1D1808D0EF00942104</string>
<string>206D5FA91808EAE800C0DE49</string>
<string>206D5FAA1808EAE800C0DE49</string>
<string>206D5FAD1808EAE800C0DE49</string>
<string>206D60391808F3A600C0DE49</string>
<string>206D603A1808F3A600C0DE49</string>
<string>206D60481808F92000C0DE49</string>
<string>206D604A1808F92000C0DE49</string>
<string>206D604B1808F92000C0DE49</string>
<string>206D604C1808F92000C0DE49</string>
<string>206D607B1808FED800C0DE49</string>
<string>206D6096180904FB00C0DE49</string>
<string>206D6097180904FB00C0DE49</string>
<string>206D60B2180907AC00C0DE49</string>
<string>206D60B3180907AC00C0DE49</string>
<string>206D60B4180907AC00C0DE49</string>
<string>206D60B5180907AC00C0DE49</string>
<string>206D60C918090A6700C0DE49</string>
<string>20F90AE1180E362100242709</string>
<string>20F90AE2180E362100242709</string>
<string>20CD0577180FBCD8005A8231</string>
<string>20CD0578180FBCD8005A8231</string>
<string>20CD0579180FBCD8005A8231</string>
<string>20CD057A180FBCD8005A8231</string>
<string>20CD057B180FBCD8005A8231</string>
<string>20CD057C180FBCD8005A8231</string>
<string>20CD057D180FBCD8005A8231</string>
<string>20CD057E180FBCD8005A8231</string>
<string>2088594D180FE315007E7565</string>
</array>
<key>prevStack</key>
<array>
@ -429,7 +430,7 @@
<string>206D60541808F92000C0DE49</string>
<string>206D605B1808F99A00C0DE49</string>
<string>206D60B7180907AC00C0DE49</string>
<string>20F90AE3180E362100242709</string>
<string>20CD05AE180FBCD8005A8231</string>
</array>
</dict>
<key>SplitCount</key>
@ -443,7 +444,7 @@
<key>Frame</key>
<string>{{0, 0}, {816, 517}}</string>
<key>RubberWindowFrame</key>
<string>0 59 1024 687 0 0 1024 746 </string>
<string>-3 59 1024 687 0 0 1024 746 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@ -463,7 +464,7 @@
<key>Frame</key>
<string>{{0, 522}, {816, 124}}</string>
<key>RubberWindowFrame</key>
<string>0 59 1024 687 0 0 1024 746 </string>
<string>-3 59 1024 687 0 0 1024 746 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -487,9 +488,9 @@
</array>
<key>TableOfContents</key>
<array>
<string>20F90AE5180E362100242709</string>
<string>203852E31810908D00BA5BC2</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>20F90AE6180E362100242709</string>
<string>203852E41810908D00BA5BC2</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@ -623,16 +624,16 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>20F90AF7180E367E00242709</string>
<string>20F90AF8180E367E00242709</string>
<string>203852EE1810908D00BA5BC2</string>
<string>203852EF1810908D00BA5BC2</string>
<string>1C78EAAD065D492600B07095</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>20F90AE7180E362100242709</string>
<string>20F6A1B417E95A6200BAD261</string>
<string>20F90AE7180E362100242709</string>
<string>/Users/kts/Devel/timesynk/xcode/timesynk.xcodeproj</string>
</array>
<key>WindowString</key>
<string>0 59 1024 687 0 0 1024 746 </string>
<string>-3 59 1024 687 0 0 1024 746 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@ -653,7 +654,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string>player.h</string>
<string></string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@ -670,8 +671,6 @@
<string>218pt</string>
</dict>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@ -711,7 +710,7 @@
<key>TableOfContents</key>
<array>
<string>20F6A1B417E95A6200BAD261</string>
<string>20F90AEA180E362100242709</string>
<string>203852E61810908D00BA5BC2</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@ -722,7 +721,7 @@
<key>WindowToolGUID</key>
<string>20F6A1B417E95A6200BAD261</string>
<key>WindowToolIsVisible</key>
<true/>
<false/>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
@ -831,13 +830,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>20F90AEB180E362100242709</string>
<string>203852E71810908D00BA5BC2</string>
<string>1C162984064C10D400B95A72</string>
<string>20F90AEC180E362100242709</string>
<string>20F90AED180E362100242709</string>
<string>20F90AEE180E362100242709</string>
<string>20F90AEF180E362100242709</string>
<string>20F90AF0180E362100242709</string>
<string>203852E81810908D00BA5BC2</string>
<string>203852E91810908D00BA5BC2</string>
<string>203852EA1810908D00BA5BC2</string>
<string>203852EB1810908D00BA5BC2</string>
<string>203852EC1810908D00BA5BC2</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@ -976,7 +975,7 @@
<key>Frame</key>
<string>{{0, 0}, {650, 209}}</string>
<key>RubberWindowFrame</key>
<string>55 476 650 250 0 0 1024 746 </string>
<string>171 480 650 250 0 0 1024 746 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
@ -999,13 +998,13 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
<string>20F90AF1180E362100242709</string>
<string>203852ED1810908D00BA5BC2</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
<string>55 476 650 250 0 0 1024 746 </string>
<string>171 480 650 250 0 0 1024 746 </string>
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>

View File

@ -42,6 +42,26 @@
vrLen = 508;
vrLoc = 0;
};
203852F01810908E00BA5BC2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD217EBE9490022F314 /* game.c */;
name = "game.c: 22";
rLen = 0;
rLoc = 433;
rType = 0;
vrLen = 1212;
vrLoc = 12;
};
203852F11810908E00BA5BC2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 5";
rLen = 0;
rLoc = 101;
rType = 0;
vrLen = 1500;
vrLoc = 1969;
};
203B68D117F7D77900272675 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1D417E95AD300BAD261 /* stubs.h */;
@ -54,9 +74,9 @@
};
204F942218005466007B4DAD /* helper.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {738, 378}}";
sepNavIntBoundsRect = "{{0, 0}, {755, 485}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 506}";
sepNavVisRange = "{0, 656}";
};
};
204F942318005466007B4DAD /* helper.h */ = {
@ -68,16 +88,23 @@
};
204F942418005466007B4DAD /* map.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {510, 1764}}";
sepNavSelRange = "{3428, 0}";
sepNavVisRange = "{206, 482}";
sepNavIntBoundsRect = "{{0, 0}, {1002, 2982}}";
sepNavSelRange = "{4114, 0}";
sepNavVisRange = "{3454, 1186}";
};
};
204F942518005466007B4DAD /* map.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1584, 714}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1820}";
};
};
204F942618005466007B4DAD /* tile.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {755, 770}}";
sepNavSelRange = "{418, 0}";
sepNavVisRange = "{0, 802}";
sepNavIntBoundsRect = "{{0, 0}, {755, 910}}";
sepNavSelRange = "{448, 0}";
sepNavVisRange = "{87, 750}";
};
};
204F943D18005532007B4DAD /* PBXTextBookmark */ = {
@ -139,30 +166,30 @@
};
20568DD217EBE9490022F314 /* game.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {519, 826}}";
sepNavSelRange = "{454, 0}";
sepNavVisRange = "{123, 566}";
sepNavIntBoundsRect = "{{0, 0}, {755, 1428}}";
sepNavSelRange = "{433, 0}";
sepNavVisRange = "{12, 1212}";
};
};
20568DD317EBE9490022F314 /* game.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {519, 364}}";
sepNavIntBoundsRect = "{{0, 0}, {755, 485}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 321}";
sepNavVisRange = "{0, 478}";
};
};
20568DD417EBE9490022F314 /* player.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {519, 1316}}";
sepNavIntBoundsRect = "{{0, 0}, {755, 1708}}";
sepNavSelRange = "{614, 0}";
sepNavVisRange = "{0, 585}";
sepNavVisRange = "{0, 1020}";
};
};
20568DD517EBE9490022F314 /* player.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {439, 742}}";
sepNavSelRange = "{51, 0}";
sepNavVisRange = "{0, 277}";
sepNavIntBoundsRect = "{{0, 0}, {1200, 728}}";
sepNavSelRange = "{559, 0}";
sepNavVisRange = "{0, 607}";
};
};
20568DE817EC16C60022F314 /* PBXTextBookmark */ = {
@ -175,16 +202,6 @@
vrLen = 179;
vrLoc = 0;
};
20664C1C1808D0EF00942104 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942218005466007B4DAD /* helper.c */;
name = "helper.c: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 506;
vrLoc = 0;
};
20664C1D1808D0EF00942104 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 089C165DFE840E0CC02AAC07 /* English */;
@ -215,16 +232,6 @@
vrLen = 316;
vrLoc = 0;
};
206D5FA91808EAE800C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD317EBE9490022F314 /* game.h */;
name = "game.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 321;
vrLoc = 0;
};
206D5FAA1808EAE800C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20DE9D061804FE1A0047B2DD /* context.h */;
@ -306,16 +313,6 @@
sepNavVisRange = "{0, 154}";
};
};
206D60481808F92000C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD417EBE9490022F314 /* player.c */;
name = "player.c: 20";
rLen = 0;
rLoc = 614;
rType = 0;
vrLen = 585;
vrLoc = 0;
};
206D604A1808F92000C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1C217E95AAA00BAD261 /* main.c */;
@ -396,16 +393,6 @@
vrLen = 178;
vrLoc = 0;
};
206D6097180904FB00C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD217EBE9490022F314 /* game.c */;
name = "game.c: 19";
rLen = 0;
rLoc = 454;
rType = 0;
vrLen = 566;
vrLoc = 123;
};
206D60B2180907AC00C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20DE9D051804FE1A0047B2DD /* context.c */;
@ -436,16 +423,6 @@
vrLen = 154;
vrLoc = 0;
};
206D60B5180907AC00C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942618005466007B4DAD /* tile.c */;
name = "tile.c: 19";
rLen = 0;
rLoc = 418;
rType = 0;
vrLen = 802;
vrLoc = 0;
};
206D60B7180907AC00C0DE49 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 206D60431808F90700C0DE49 /* tiles.c */;
@ -466,6 +443,26 @@
vrLen = 1159;
vrLoc = 0;
};
2088594D180FE315007E7565 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD217EBE9490022F314 /* game.c */;
name = "game.c: 22";
rLen = 0;
rLoc = 433;
rType = 0;
vrLen = 1212;
vrLoc = 12;
};
2088594E180FE315007E7565 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 5";
rLen = 0;
rLoc = 101;
rType = 0;
vrLen = 1500;
vrLoc = 1969;
};
2090287B17E95E780051A253 /* timesynk_Prefix.pch */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {600, 253}}";
@ -504,6 +501,96 @@
vrLen = 175;
vrLoc = 0;
};
20CD0577180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD317EBE9490022F314 /* game.h */;
name = "game.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 478;
vrLoc = 0;
};
20CD0578180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942418005466007B4DAD /* map.c */;
name = "map.c: 148";
rLen = 0;
rLoc = 4114;
rType = 0;
vrLen = 1186;
vrLoc = 3454;
};
20CD0579180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942218005466007B4DAD /* helper.c */;
name = "helper.c: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 656;
vrLoc = 0;
};
20CD057A180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD417EBE9490022F314 /* player.c */;
name = "player.c: 23";
rLen = 0;
rLoc = 614;
rType = 0;
vrLen = 1020;
vrLoc = 0;
};
20CD057B180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD517EBE9490022F314 /* player.h */;
name = "player.h: 29";
rLen = 0;
rLoc = 559;
rType = 0;
vrLen = 607;
vrLoc = 0;
};
20CD057C180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 79";
rLen = 0;
rLoc = 3320;
rType = 0;
vrLen = 1791;
vrLoc = 1999;
};
20CD057D180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942518005466007B4DAD /* map.h */;
name = "map.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1820;
vrLoc = 0;
};
20CD057E180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942618005466007B4DAD /* tile.c */;
name = "tile.c: 21";
rLen = 0;
rLoc = 448;
rType = 0;
vrLen = 750;
vrLoc = 87;
};
20CD05AE180FBCD8005A8231 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942518005466007B4DAD /* map.h */;
name = "map.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1820;
vrLoc = 0;
};
20DE9D051804FE1A0047B2DD /* context.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {755, 994}}";
@ -538,16 +625,6 @@
vrLen = 634;
vrLoc = 2116;
};
20DE9D9D18050D980047B2DD /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 204F942418005466007B4DAD /* map.c */;
name = "map.c: 118";
rLen = 0;
rLoc = 3268;
rType = 0;
vrLen = 409;
vrLoc = 909;
};
20EC59781808D7A100F759CD /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20DE9D051804FE1A0047B2DD /* context.c */;
@ -678,9 +755,9 @@
};
20F6A1F017E95B6F00BAD261 /* sdl.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1134, 1764}}";
sepNavIntBoundsRect = "{{0, 0}, {1224, 1862}}";
sepNavSelRange = "{101, 0}";
sepNavVisRange = "{0, 1079}";
sepNavVisRange = "{1969, 1500}";
sepNavWindowFrame = "{{174, 72}, {750, 558}}";
};
};
@ -718,62 +795,6 @@
vrLen = 238;
vrLoc = 0;
};
20F90ADF180E35F200242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: SDL/SDL_image.h: No such file or directory";
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
rLen = 1;
rLoc = 2;
rType = 1;
};
20F90AE1180E362100242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 47";
rLen = 0;
rLoc = 1838;
rType = 0;
vrLen = 1704;
vrLoc = 1054;
};
20F90AE2180E362100242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "error: storage size of 'player' isn't known";
fRef = 20568DD517EBE9490022F314 /* player.h */;
rLen = 1;
rLoc = 30;
rType = 1;
};
20F90AE3180E362100242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 47";
rLen = 0;
rLoc = 1838;
rType = 0;
vrLen = 1704;
vrLoc = 1054;
};
20F90AFE180E369400242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20568DD517EBE9490022F314 /* player.h */;
name = "player.h: 30";
rLen = 0;
rLoc = 559;
rType = 0;
vrLen = 952;
vrLoc = 233;
};
20F90AFF180E369400242709 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 20F6A1F017E95B6F00BAD261 /* sdl.c */;
name = "sdl.c: 5";
rLen = 0;
rLoc = 101;
rType = 0;
vrLen = 1079;
vrLoc = 0;
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeBuildConfigurationName = Debug;
activeExecutable = 20F6A19417E9598B00BAD261 /* timesynk */;
@ -862,12 +883,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 403584391;
PBXWorkspaceStateSaveDate = 403584391;
PBXPerProjectTemplateStateSaveDate = 403738651;
PBXWorkspaceStateSaveDate = 403738651;
};
perUserProjectItems = {
2002F0D917E972B3003CF277 /* PlistBookmark */ = 2002F0D917E972B3003CF277 /* PlistBookmark */;
2007C93017ECF2EB00268653 /* PBXTextBookmark */ = 2007C93017ECF2EB00268653 /* PBXTextBookmark */;
203852F01810908E00BA5BC2 /* PBXTextBookmark */ = 203852F01810908E00BA5BC2 /* PBXTextBookmark */;
203852F11810908E00BA5BC2 /* PBXTextBookmark */ = 203852F11810908E00BA5BC2 /* PBXTextBookmark */;
203B68D117F7D77900272675 /* PBXTextBookmark */ = 203B68D117F7D77900272675 /* PBXTextBookmark */;
204F943D18005532007B4DAD /* PBXTextBookmark */ = 204F943D18005532007B4DAD /* PBXTextBookmark */;
2050562217ED9E6100F572B7 /* PBXTextBookmark */ = 2050562217ED9E6100F572B7 /* PBXTextBookmark */;
@ -875,18 +898,15 @@
20567ED217E95DEC0002B1A9 /* PBXTextBookmark */ = 20567ED217E95DEC0002B1A9 /* PBXTextBookmark */;
20567ED517E95DEC0002B1A9 /* PBXTextBookmark */ = 20567ED517E95DEC0002B1A9 /* PBXTextBookmark */;
20568DE817EC16C60022F314 /* PBXTextBookmark */ = 20568DE817EC16C60022F314 /* PBXTextBookmark */;
20664C1C1808D0EF00942104 /* PBXTextBookmark */ = 20664C1C1808D0EF00942104 /* PBXTextBookmark */;
20664C1D1808D0EF00942104 /* PBXTextBookmark */ = 20664C1D1808D0EF00942104 /* PBXTextBookmark */;
20664C241808D0EF00942104 /* PBXTextBookmark */ = 20664C241808D0EF00942104 /* PBXTextBookmark */;
20664C291808D0EF00942104 /* PBXTextBookmark */ = 20664C291808D0EF00942104 /* PBXTextBookmark */;
206D5FA91808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FA91808EAE800C0DE49 /* PBXTextBookmark */;
206D5FAA1808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FAA1808EAE800C0DE49 /* PBXTextBookmark */;
206D5FAD1808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FAD1808EAE800C0DE49 /* PBXTextBookmark */;
206D5FB01808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FB01808EAE800C0DE49 /* PBXTextBookmark */;
206D5FB61808EAE800C0DE49 /* PBXTextBookmark */ = 206D5FB61808EAE800C0DE49 /* PBXTextBookmark */;
206D60391808F3A600C0DE49 /* PBXTextBookmark */ = 206D60391808F3A600C0DE49 /* PBXTextBookmark */;
206D603A1808F3A600C0DE49 /* PBXTextBookmark */ = 206D603A1808F3A600C0DE49 /* PBXTextBookmark */;
206D60481808F92000C0DE49 /* PBXTextBookmark */ = 206D60481808F92000C0DE49 /* PBXTextBookmark */;
206D604A1808F92000C0DE49 /* PBXTextBookmark */ = 206D604A1808F92000C0DE49 /* PBXTextBookmark */;
206D604B1808F92000C0DE49 /* PBXTextBookmark */ = 206D604B1808F92000C0DE49 /* PBXTextBookmark */;
206D604C1808F92000C0DE49 /* PBXTextBookmark */ = 206D604C1808F92000C0DE49 /* PBXTextBookmark */;
@ -895,19 +915,27 @@
206D605B1808F99A00C0DE49 /* PBXTextBookmark */ = 206D605B1808F99A00C0DE49 /* PBXTextBookmark */;
206D607B1808FED800C0DE49 /* PBXTextBookmark */ = 206D607B1808FED800C0DE49 /* PBXTextBookmark */;
206D6096180904FB00C0DE49 /* PBXTextBookmark */ = 206D6096180904FB00C0DE49 /* PBXTextBookmark */;
206D6097180904FB00C0DE49 /* PBXTextBookmark */ = 206D6097180904FB00C0DE49 /* PBXTextBookmark */;
206D60B2180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B2180907AC00C0DE49 /* PBXTextBookmark */;
206D60B3180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B3180907AC00C0DE49 /* PBXTextBookmark */;
206D60B4180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B4180907AC00C0DE49 /* PBXTextBookmark */;
206D60B5180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B5180907AC00C0DE49 /* PBXTextBookmark */;
206D60B7180907AC00C0DE49 /* PBXTextBookmark */ = 206D60B7180907AC00C0DE49 /* PBXTextBookmark */;
206D60C918090A6700C0DE49 /* PBXTextBookmark */ = 206D60C918090A6700C0DE49 /* PBXTextBookmark */;
2088594D180FE315007E7565 /* PBXTextBookmark */ = 2088594D180FE315007E7565 /* PBXTextBookmark */;
2088594E180FE315007E7565 /* PBXTextBookmark */ = 2088594E180FE315007E7565 /* PBXTextBookmark */;
2090289E17E95F9E0051A253 /* PBXTextBookmark */ = 2090289E17E95F9E0051A253 /* PBXTextBookmark */;
2090289F17E95F9E0051A253 /* PBXTextBookmark */ = 2090289F17E95F9E0051A253 /* PBXTextBookmark */;
209028A517E95F9E0051A253 /* PBXTextBookmark */ = 209028A517E95F9E0051A253 /* PBXTextBookmark */;
20CD0577180FBCD8005A8231 /* PBXTextBookmark */ = 20CD0577180FBCD8005A8231 /* PBXTextBookmark */;
20CD0578180FBCD8005A8231 /* PBXTextBookmark */ = 20CD0578180FBCD8005A8231 /* PBXTextBookmark */;
20CD0579180FBCD8005A8231 /* PBXTextBookmark */ = 20CD0579180FBCD8005A8231 /* PBXTextBookmark */;
20CD057A180FBCD8005A8231 /* PBXTextBookmark */ = 20CD057A180FBCD8005A8231 /* PBXTextBookmark */;
20CD057B180FBCD8005A8231 /* PBXTextBookmark */ = 20CD057B180FBCD8005A8231 /* PBXTextBookmark */;
20CD057C180FBCD8005A8231 /* PBXTextBookmark */ = 20CD057C180FBCD8005A8231 /* PBXTextBookmark */;
20CD057D180FBCD8005A8231 /* PBXTextBookmark */ = 20CD057D180FBCD8005A8231 /* PBXTextBookmark */;
20CD057E180FBCD8005A8231 /* PBXTextBookmark */ = 20CD057E180FBCD8005A8231 /* PBXTextBookmark */;
20CD05AE180FBCD8005A8231 /* PBXTextBookmark */ = 20CD05AE180FBCD8005A8231 /* PBXTextBookmark */;
20DE9D35180500990047B2DD /* PBXTextBookmark */ = 20DE9D35180500990047B2DD /* PBXTextBookmark */;
20DE9D36180500990047B2DD /* PBXTextBookmark */ = 20DE9D36180500990047B2DD /* PBXTextBookmark */;
20DE9D9D18050D980047B2DD /* PBXTextBookmark */ = 20DE9D9D18050D980047B2DD /* PBXTextBookmark */;
20EC59781808D7A100F759CD /* PBXTextBookmark */ = 20EC59781808D7A100F759CD /* PBXTextBookmark */;
20F6A1AC17E95A6200BAD261 /* PBXTextBookmark */ = 20F6A1AC17E95A6200BAD261 /* PBXTextBookmark */;
20F6A1AE17E95A6200BAD261 /* PBXTextBookmark */ = 20F6A1AE17E95A6200BAD261 /* PBXTextBookmark */;
@ -916,12 +944,6 @@
20F6A1EA17E95B5200BAD261 /* PBXTextBookmark */ = 20F6A1EA17E95B5200BAD261 /* PBXTextBookmark */;
20F6A21A17E95C1200BAD261 /* PBXTextBookmark */ = 20F6A21A17E95C1200BAD261 /* PBXTextBookmark */;
20F6A21E17E95C1200BAD261 /* PBXTextBookmark */ = 20F6A21E17E95C1200BAD261 /* PBXTextBookmark */;
20F90ADF180E35F200242709 /* PBXTextBookmark */ = 20F90ADF180E35F200242709 /* PBXTextBookmark */;
20F90AE1180E362100242709 /* PBXTextBookmark */ = 20F90AE1180E362100242709 /* PBXTextBookmark */;
20F90AE2180E362100242709 /* PBXTextBookmark */ = 20F90AE2180E362100242709 /* PBXTextBookmark */;
20F90AE3180E362100242709 /* PBXTextBookmark */ = 20F90AE3180E362100242709 /* PBXTextBookmark */;
20F90AFE180E369400242709 /* PBXTextBookmark */ = 20F90AFE180E369400242709 /* PBXTextBookmark */;
20F90AFF180E369400242709 /* PBXTextBookmark */ = 20F90AFF180E369400242709 /* PBXTextBookmark */;
};
sourceControlManager = 20F6A1A517E959A000BAD261 /* Source Control */;
userBuildSettings = {