Added EquipTile/EQUIP. This distinguishes equipable items such as weapons, armour, rings, etc., from non-equipables such as keys and the like.
parent
770ad240e2
commit
b3a3831cd2
|
@ -200,7 +200,14 @@ void inventoryContext(int key_press) {
|
||||||
case 'a':
|
case 'a':
|
||||||
// Hi, ugly code.
|
// Hi, ugly code.
|
||||||
// TODO: make equipment just an Inventory.
|
// TODO: make equipment just an Inventory.
|
||||||
|
switch (inventoryGetSelected(inventory)->tid) {
|
||||||
|
case EQUIP:
|
||||||
inventoryEquip(inventory, inventory->selected);
|
inventoryEquip(inventory, inventory->selected);
|
||||||
|
break;
|
||||||
|
case ITEM:
|
||||||
|
// todo: applying item to another item or something?
|
||||||
|
break;
|
||||||
|
}
|
||||||
//inventoryEquip(inventory, inventory->selected);
|
//inventoryEquip(inventory, inventory->selected);
|
||||||
//checkSlots( &(((struct PlayerTile*)player->data)->slots), &(((struct PlayerTile*)player->data)->used_slots),
|
//checkSlots( &(((struct PlayerTile*)player->data)->slots), &(((struct PlayerTile*)player->data)->used_slots),
|
||||||
// &(((struct ItemTile*)(inventoryGetSelected(inventory)->data))->slots) );
|
// &(((struct ItemTile*)(inventoryGetSelected(inventory)->data))->slots) );
|
||||||
|
|
14
game.c
14
game.c
|
@ -30,8 +30,8 @@ int gameInit() {
|
||||||
((struct PlayerTile*)player->data)->equipment.slots_per_row = 4;
|
((struct PlayerTile*)player->data)->equipment.slots_per_row = 4;
|
||||||
((struct PlayerTile*)player->data)->equipment.owner = player;
|
((struct PlayerTile*)player->data)->equipment.owner = player;
|
||||||
|
|
||||||
addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(ITEM, 1, 0, 0));
|
addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(EQUIP, 1, 0, 0));
|
||||||
addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(ITEM, 0, 0, 0));
|
addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(EQUIP, 0, 0, 0));
|
||||||
|
|
||||||
//gameMoveTile(newTile(ITEM, 0, 4, 4), 4, 4);
|
//gameMoveTile(newTile(ITEM, 0, 4, 4), 4, 4);
|
||||||
|
|
||||||
|
@ -39,10 +39,12 @@ int gameInit() {
|
||||||
allocateMap(¤t_map, 64, 64);
|
allocateMap(¤t_map, 64, 64);
|
||||||
floodMap(¤t_map, TILE_REPLACE, FLOOR, STONE);
|
floodMap(¤t_map, TILE_REPLACE, FLOOR, STONE);
|
||||||
gameMoveTile(player, 2, 2);
|
gameMoveTile(player, 2, 2);
|
||||||
appendTile(&(current_map->matrix[4][4]), ITEM, 0);
|
appendTile(&(current_map->matrix[4][4]), EQUIP, 0);
|
||||||
appendTile(&(current_map->matrix[3][4]), ITEM, 1);
|
appendTile(&(current_map->matrix[3][4]), EQUIP, 1);
|
||||||
appendTile(&(current_map->matrix[2][4]), ITEM, 0);
|
appendTile(&(current_map->matrix[2][4]), EQUIP, 0);
|
||||||
appendTile(&(current_map->matrix[6][4]), ITEM, 1);
|
appendTile(&(current_map->matrix[6][4]), EQUIP, 1);
|
||||||
|
|
||||||
|
appendTile(&(current_map->matrix[5][11]), ITEM, 0);
|
||||||
|
|
||||||
drawPath(¤t_map, TILE_APPEND, WALL, STONE, 6, 1, 8, 12);
|
drawPath(¤t_map, TILE_APPEND, WALL, STONE, 6, 1, 8, 12);
|
||||||
drawPath(¤t_map, TILE_APPEND, WALL, STONE, 12, 4, 7, 13);
|
drawPath(¤t_map, TILE_APPEND, WALL, STONE, 12, 4, 7, 13);
|
||||||
|
|
|
@ -206,6 +206,14 @@ void interfaceDraw() {
|
||||||
attron(COLOR_PAIR(color) | curses_npcs[tile_id].attr);
|
attron(COLOR_PAIR(color) | curses_npcs[tile_id].attr);
|
||||||
mvwaddch(screen, step_y-camera_offset_y, step_x-camera_offset_x, curses_npcs[tile_id].ch);
|
mvwaddch(screen, step_y-camera_offset_y, step_x-camera_offset_x, curses_npcs[tile_id].ch);
|
||||||
attroff(COLOR_PAIR(color) | curses_npcs[tile_id].attr);
|
attroff(COLOR_PAIR(color) | curses_npcs[tile_id].attr);
|
||||||
|
break;
|
||||||
|
case ITEM:
|
||||||
|
color = curses_items[tile_id].fg * COLORS + curses_items[tile_id].bg;
|
||||||
|
attron(COLOR_PAIR(color) | curses_items[tile_id].attr);
|
||||||
|
mvwaddch(screen, step_y-camera_offset_y, step_x-camera_offset_x, curses_items[tile_id].ch);
|
||||||
|
attroff(COLOR_PAIR(color) | curses_items[tile_id].attr);
|
||||||
|
break;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
current_tile = current_tile->next;
|
current_tile = current_tile->next;
|
||||||
|
|
|
@ -203,6 +203,7 @@ void interfaceSetScale(float scale_x, float scale_y) {
|
||||||
void scaleTiles(float scale_x, float scale_y) {
|
void scaleTiles(float scale_x, float scale_y) {
|
||||||
setSpritesheetScale(&player_sprites, scale_x, scale_y);
|
setSpritesheetScale(&player_sprites, scale_x, scale_y);
|
||||||
setSpritesheetScale(&item_sprites, scale_x, scale_y);
|
setSpritesheetScale(&item_sprites, scale_x, scale_y);
|
||||||
|
setSpritesheetScale(&equip_sprites, scale_x, scale_y);
|
||||||
setSpritesheetScale(&shadow_sprites, scale_x, scale_y);
|
setSpritesheetScale(&shadow_sprites, scale_x, scale_y);
|
||||||
setSpritesheetScale(&door_sprites, scale_x, scale_y);
|
setSpritesheetScale(&door_sprites, scale_x, scale_y);
|
||||||
setSpritesheetScale(&npc_sprites, scale_x, scale_y);
|
setSpritesheetScale(&npc_sprites, scale_x, scale_y);
|
||||||
|
@ -252,6 +253,7 @@ int interfaceInit() {
|
||||||
|
|
||||||
loadSpritesheetFromMemory(&player_sprites, player_images, player_images_length, 16, 32, TOTAL_CLASSES);
|
loadSpritesheetFromMemory(&player_sprites, player_images, player_images_length, 16, 32, TOTAL_CLASSES);
|
||||||
loadSpritesheetFromMemory(&item_sprites, item_images, item_images_length, 16, 32, 16);
|
loadSpritesheetFromMemory(&item_sprites, item_images, item_images_length, 16, 32, 16);
|
||||||
|
loadSpritesheetFromMemory(&equip_sprites, equip_images, equip_images_length, 16, 32, 16);
|
||||||
loadSpritesheetFromMemory(&shadow_sprites, shadow_images, shadow_images_length, 16, 32, TOTAL_CLASSES);
|
loadSpritesheetFromMemory(&shadow_sprites, shadow_images, shadow_images_length, 16, 32, TOTAL_CLASSES);
|
||||||
loadSpritesheetFromMemory(&door_sprites, door_images, door_images_length, 16, 32, 16);
|
loadSpritesheetFromMemory(&door_sprites, door_images, door_images_length, 16, 32, 16);
|
||||||
loadSpritesheetFromMemory(&npc_sprites, npc_images, npc_images_length, 16, 32, 16);
|
loadSpritesheetFromMemory(&npc_sprites, npc_images, npc_images_length, 16, 32, 16);
|
||||||
|
@ -344,7 +346,6 @@ void cameraDraw() {
|
||||||
while (step_x < end_x) {
|
while (step_x < end_x) {
|
||||||
step_y = player->y - ((struct PlayerTile*)player->data)->vision;
|
step_y = player->y - ((struct PlayerTile*)player->data)->vision;
|
||||||
while (step_y < end_y) {
|
while (step_y < end_y) {
|
||||||
// TODO: draw the layer immediately in front of the player at partial translucency
|
|
||||||
if (step_x >= 0 && step_y >= 0 && step_x < current_map->width && step_y < current_map->height) {
|
if (step_x >= 0 && step_y >= 0 && step_x < current_map->width && step_y < current_map->height) {
|
||||||
struct Tile *current_tile;
|
struct Tile *current_tile;
|
||||||
current_tile = &(current_map)->matrix[step_x][step_y];
|
current_tile = &(current_map)->matrix[step_x][step_y];
|
||||||
|
@ -367,10 +368,11 @@ void cameraDraw() {
|
||||||
case DOOR:
|
case DOOR:
|
||||||
tile_id = tile_id*4;
|
tile_id = tile_id*4;
|
||||||
tile_id += ((struct DoorTile*)current_tile->data)->state;
|
tile_id += ((struct DoorTile*)current_tile->data)->state;
|
||||||
if (step_x == player->x && step_y == player->y+1)
|
if (step_x == player->x && step_y == player->y+1) {
|
||||||
drawScaledTransparentSprite(&door_sprites, tile_id, 0.75f, camera_surface, (step_x*door_sprites.s_width)-camera_offset_x, (step_y*door_sprites.s_height/2)-camera_offset_y);
|
drawScaledTransparentSprite(&door_sprites, tile_id, 0.75f, camera_surface, (step_x*door_sprites.s_width)-camera_offset_x, (step_y*door_sprites.s_height/2)-camera_offset_y);
|
||||||
else
|
} else {
|
||||||
drawScaledSprite(&door_sprites, tile_id, camera_surface, (step_x*door_sprites.s_width)-camera_offset_x, (step_y*door_sprites.s_height/2)-camera_offset_y);
|
drawScaledSprite(&door_sprites, tile_id, camera_surface, (step_x*door_sprites.s_width)-camera_offset_x, (step_y*door_sprites.s_height/2)-camera_offset_y);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PLAYER:
|
case PLAYER:
|
||||||
drawScaledSprite(&shadow_sprites, 0, camera_surface, (step_x*shadow_sprites.s_width)-camera_offset_x, (step_y*shadow_sprites.s_height/2)-camera_offset_y);
|
drawScaledSprite(&shadow_sprites, 0, camera_surface, (step_x*shadow_sprites.s_width)-camera_offset_x, (step_y*shadow_sprites.s_height/2)-camera_offset_y);
|
||||||
|
@ -380,6 +382,10 @@ void cameraDraw() {
|
||||||
case ITEM:
|
case ITEM:
|
||||||
drawScaledSprite(&item_sprites, current_tile->id, camera_surface, (step_x*item_sprites.s_width)-camera_offset_x, (step_y*item_sprites.s_height/2)-camera_offset_y);
|
drawScaledSprite(&item_sprites, current_tile->id, camera_surface, (step_x*item_sprites.s_width)-camera_offset_x, (step_y*item_sprites.s_height/2)-camera_offset_y);
|
||||||
break;
|
break;
|
||||||
|
case EQUIP:
|
||||||
|
drawScaledSprite(&equip_sprites, current_tile->id, camera_surface, (step_x*equip_sprites.s_width)-camera_offset_x, (step_y*equip_sprites.s_height/2)-camera_offset_y);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
current_tile = current_tile->next;
|
current_tile = current_tile->next;
|
||||||
}
|
}
|
||||||
|
@ -541,34 +547,93 @@ void interfaceDrawInventory() {
|
||||||
y = i / inventory->slots_per_row;
|
y = i / inventory->slots_per_row;
|
||||||
x = i - (inventory->slots_per_row*y);
|
x = i - (inventory->slots_per_row*y);
|
||||||
if (i == ((struct PlayerTile*)player->data)->inventory.selected) {
|
if (i == ((struct PlayerTile*)player->data)->inventory.selected) {
|
||||||
|
switch (current_item->tid) {
|
||||||
|
case ITEM:
|
||||||
drawScaledSprite(&item_sprites, current_item->id, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
drawScaledSprite(&item_sprites, current_item->id, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
||||||
drawScaledSpriteOutline(&item_sprites, current_item->id, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
drawScaledSpriteOutline(&item_sprites, current_item->id, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
||||||
|
|
||||||
interfaceDrawStringF(&font_mini, new_surface, ((struct ItemTile*)current_item->data)->name, inventory_width/2-(strlen(((struct ItemTile*)current_item->data)->name)*font_mini.width*font_mini.scale_x/2), 2);
|
interfaceDrawStringF(&font_mini, new_surface, ((struct ItemTile*)current_item->data)->name, inventory_width/2-(strlen(((struct ItemTile*)current_item->data)->name)*font_mini.width*font_mini.scale_x/2), 2);
|
||||||
|
break;
|
||||||
|
case EQUIP:
|
||||||
|
drawScaledSprite(&equip_sprites, current_item->id, new_surface, x*equip_sprites.s_width, inventory_info+(y*equip_sprites.s_width));
|
||||||
|
drawScaledSpriteOutline(&equip_sprites, current_item->id, new_surface, x*equip_sprites.s_width, inventory_info+(y*equip_sprites.s_width));
|
||||||
|
|
||||||
interfaceDrawStringF(&font_mini, new_surface, ((struct ItemTile*)current_item->data)->required_slots, 0, 1*(font_mini.width*font_mini.scale_y));
|
interfaceDrawStringF(&font_mini, new_surface, ((struct EquipTile*)current_item->data)->name, inventory_width/2-(strlen(((struct EquipTile*)current_item->data)->name)*font_mini.width*font_mini.scale_x/2), 2);
|
||||||
interfaceDrawStringF(&font_mini, new_surface, ((struct ItemTile*)current_item->data)->roll, 0, 2*(font_mini.width*font_mini.scale_y));
|
interfaceDrawStringF(&font_mini, new_surface, ((struct EquipTile*)current_item->data)->required_slots, 0, 1*(font_mini.width*font_mini.scale_y));
|
||||||
|
interfaceDrawStringF(&font_mini, new_surface, ((struct EquipTile*)current_item->data)->damage_mod, 0, 2*(font_mini.width*font_mini.scale_y));
|
||||||
|
interfaceDrawStringF(&font_mini, new_surface, ((struct EquipTile*)current_item->data)->armour_mod, (font_mini.width*font_mini.scale_x*(strlen(((struct EquipTile*)current_item->data)->damage_mod)+1)), 2*(font_mini.width*font_mini.scale_y));
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
switch (current_item->tid) {
|
||||||
|
case ITEM:
|
||||||
drawScaledTransparentSprite(&item_sprites, current_item->id, 0.50f, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
drawScaledTransparentSprite(&item_sprites, current_item->id, 0.50f, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width));
|
||||||
|
break;
|
||||||
|
case EQUIP:
|
||||||
|
drawScaledTransparentSprite(&equip_sprites, current_item->id, 0.50f, new_surface, x*equip_sprites.s_width, inventory_info+(y*equip_sprites.s_width));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
current_item = current_item->next;
|
current_item = current_item->next;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Equipment overlay */
|
||||||
|
char *equipment_slots = slotsBuildTable(((struct PlayerTile*)player->data)->slots);
|
||||||
|
|
||||||
|
// TODO: have a slotsBuildSmallTable() that returns a shortened array of items.
|
||||||
|
i = 0;
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
while (i < 64) {
|
||||||
|
if (equipment_slots[i]) {
|
||||||
|
int j = 0;
|
||||||
|
while (j < equipment_slots[i]) {
|
||||||
|
if (x >= 6) {
|
||||||
|
y++;
|
||||||
|
x = 0;
|
||||||
|
}
|
||||||
|
interfaceDrawCharF(&font_mini, equipment_surface, i+64, x*item_sprites.s_width, (y+2)*item_sprites.s_width);
|
||||||
|
x++;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
slotsFreeTable(equipment_slots);
|
||||||
|
|
||||||
/* Draw equipment */
|
/* Draw equipment */
|
||||||
current_item = ((struct PlayerTile*)player->data)->equipment.tile;
|
current_item = ((struct PlayerTile*)player->data)->equipment.tile;
|
||||||
struct Inventory *equipment = &((struct PlayerTile*)player->data)->equipment;
|
struct Inventory *equipment = &((struct PlayerTile*)player->data)->equipment;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
char *current_item_slots;
|
||||||
|
while (current_item) {
|
||||||
|
current_item_slots = slotsBuildTable(((struct EquipTile*)current_item->data)->required_slots);
|
||||||
|
y = i / equipment->slots_per_row;
|
||||||
|
x = i - (equipment->slots_per_row*y);
|
||||||
|
//drawScaledSprite(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
|
if (i == ((struct PlayerTile*)player->data)->equipment.selected) {
|
||||||
|
drawScaledSprite(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
|
drawScaledSpriteOutline(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
|
} else {
|
||||||
|
drawScaledTransparentSprite(&equip_sprites, current_item->id, 0.50f, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
|
}
|
||||||
|
|
||||||
|
current_item = current_item->next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
while (current_item) {
|
while (current_item) {
|
||||||
y = i / equipment->slots_per_row;
|
y = i / equipment->slots_per_row;
|
||||||
x = i - (equipment->slots_per_row*y);
|
x = i - (equipment->slots_per_row*y);
|
||||||
//drawScaledSprite(&item_sprites, current_item->id, equipment_surface, x*item_sprites.s_width, (y*item_sprites.s_width));
|
//drawScaledSprite(&item_sprites, current_item->id, equipment_surface, x*item_sprites.s_width, (y*item_sprites.s_width));
|
||||||
if (i == ((struct PlayerTile*)player->data)->equipment.selected) {
|
if (i == ((struct PlayerTile*)player->data)->equipment.selected) {
|
||||||
drawScaledSprite(&item_sprites, current_item->id, equipment_surface, x*item_sprites.s_width, (y*item_sprites.s_width));
|
drawScaledSprite(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
drawScaledSpriteOutline(&item_sprites, current_item->id, equipment_surface, x*item_sprites.s_width, (y*item_sprites.s_width));
|
drawScaledSpriteOutline(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
} else {
|
} else {
|
||||||
drawScaledTransparentSprite(&item_sprites, current_item->id, 0.50f, equipment_surface, x*item_sprites.s_width, (y*item_sprites.s_width));
|
drawScaledTransparentSprite(&equip_sprites, current_item->id, 0.50f, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width));
|
||||||
}
|
}
|
||||||
|
|
||||||
current_item = current_item->next;
|
current_item = current_item->next;
|
||||||
|
@ -1128,6 +1193,8 @@ void interfaceClose() {
|
||||||
freeSpritesheet(&floor_sprites);
|
freeSpritesheet(&floor_sprites);
|
||||||
freeSpritesheet(&door_sprites);
|
freeSpritesheet(&door_sprites);
|
||||||
freeSpritesheet(&wall_sprites);
|
freeSpritesheet(&wall_sprites);
|
||||||
|
freeSpritesheet(&item_sprites);
|
||||||
|
freeSpritesheet(&equip_sprites);
|
||||||
|
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ struct Spritesheet {
|
||||||
};
|
};
|
||||||
struct Spritesheet player_sprites;
|
struct Spritesheet player_sprites;
|
||||||
struct Spritesheet item_sprites;
|
struct Spritesheet item_sprites;
|
||||||
|
struct Spritesheet equip_sprites;
|
||||||
struct Spritesheet shadow_sprites;
|
struct Spritesheet shadow_sprites;
|
||||||
struct Spritesheet npc_sprites;
|
struct Spritesheet npc_sprites;
|
||||||
struct Spritesheet door_sprites;
|
struct Spritesheet door_sprites;
|
||||||
|
|
|
@ -30,7 +30,7 @@ int inventoryEquip(struct Inventory *inventory, int selected) {
|
||||||
if (i == selected) {
|
if (i == selected) {
|
||||||
char difference[64];
|
char difference[64];
|
||||||
char string[64];
|
char string[64];
|
||||||
int type = slotsCanAdd(difference, ((struct PlayerTile*)inventory->owner->data)->slots, ((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct ItemTile*)current_tile->data)->required_slots);
|
int type = slotsCanAdd(difference, ((struct PlayerTile*)inventory->owner->data)->slots, ((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct EquipTile*)current_tile->data)->required_slots);
|
||||||
if (type == 2) { //
|
if (type == 2) { //
|
||||||
sprintf(string, MESSAGE_EQUIP_NEED_FREE, difference);
|
sprintf(string, MESSAGE_EQUIP_NEED_FREE, difference);
|
||||||
messageTile(current_tile, inventory->owner, string);
|
messageTile(current_tile, inventory->owner, string);
|
||||||
|
@ -40,7 +40,7 @@ int inventoryEquip(struct Inventory *inventory, int selected) {
|
||||||
} else {
|
} else {
|
||||||
sprintf(string, MESSAGE_EQUIP, ((struct BasicTile*)current_tile->data)->name);
|
sprintf(string, MESSAGE_EQUIP, ((struct BasicTile*)current_tile->data)->name);
|
||||||
|
|
||||||
slotsAddSlots(((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct ItemTile*)current_tile->data)->required_slots);
|
slotsAddSlots(((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct EquipTile*)current_tile->data)->required_slots);
|
||||||
|
|
||||||
inventoryRemove(inventory, current_tile);
|
inventoryRemove(inventory, current_tile);
|
||||||
addToInventory(&((struct PlayerTile*)inventory->owner->data)->equipment, current_tile);
|
addToInventory(&((struct PlayerTile*)inventory->owner->data)->equipment, current_tile);
|
||||||
|
@ -60,7 +60,7 @@ int inventoryUnequip(struct Inventory *inventory, int selected) {
|
||||||
if (i == selected) {
|
if (i == selected) {
|
||||||
char string[64];
|
char string[64];
|
||||||
|
|
||||||
slotsRemoveSlots(((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct ItemTile*)current_tile->data)->required_slots);
|
slotsRemoveSlots(((struct PlayerTile*)inventory->owner->data)->used_slots, ((struct EquipTile*)current_tile->data)->required_slots);
|
||||||
inventoryRemove(inventory, current_tile);
|
inventoryRemove(inventory, current_tile);
|
||||||
addToInventory(&((struct PlayerTile*)inventory->owner->data)->inventory, current_tile);
|
addToInventory(&((struct PlayerTile*)inventory->owner->data)->inventory, current_tile);
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ int main(int argc, char **argv) {
|
||||||
convert("tiles/ui.png", "ui_images");
|
convert("tiles/ui.png", "ui_images");
|
||||||
convert("tiles/players.png", "player_images");
|
convert("tiles/players.png", "player_images");
|
||||||
convert("tiles/items.png", "item_images");
|
convert("tiles/items.png", "item_images");
|
||||||
|
convert("tiles/equips.png", "equip_images");
|
||||||
convert("tiles/npcs.png", "npc_images");
|
convert("tiles/npcs.png", "npc_images");
|
||||||
convert("tiles/walls.png", "wall_images");
|
convert("tiles/walls.png", "wall_images");
|
||||||
convert("tiles/floors.png", "floor_images");
|
convert("tiles/floors.png", "floor_images");
|
||||||
|
|
2
player.c
2
player.c
|
@ -119,7 +119,7 @@ Returns: void
|
||||||
****/
|
****/
|
||||||
void playerPickup() {
|
void playerPickup() {
|
||||||
struct Tile* tile = player->prev;
|
struct Tile* tile = player->prev;
|
||||||
if (tile->tid == ITEM) {
|
if (tile->tid == ITEM || tile->tid == EQUIP) {
|
||||||
removeFromChain(tile);
|
removeFromChain(tile);
|
||||||
addToInventory(&((struct PlayerTile*)player->data)->inventory, tile);
|
addToInventory(&((struct PlayerTile*)player->data)->inventory, tile);
|
||||||
char string[64];
|
char string[64];
|
||||||
|
|
20
tile.c
20
tile.c
|
@ -82,6 +82,11 @@ struct Tile *newTile(unsigned int type_id, short id, short x, short y) {
|
||||||
new_tile->data = (struct ItemTile *) malloc(sizeof(struct ItemTile));
|
new_tile->data = (struct ItemTile *) malloc(sizeof(struct ItemTile));
|
||||||
memcpy(new_tile->data, &items[id], sizeof(struct ItemTile));
|
memcpy(new_tile->data, &items[id], sizeof(struct ItemTile));
|
||||||
break;
|
break;
|
||||||
|
case EQUIP:
|
||||||
|
new_tile->data = (struct EquipTile *) malloc(sizeof(struct EquipTile));
|
||||||
|
memcpy(new_tile->data, &equips[id], sizeof(struct EquipTile));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
new_tile->data = (struct BasicTile *) malloc(sizeof(struct BasicTile));
|
new_tile->data = (struct BasicTile *) malloc(sizeof(struct BasicTile));
|
||||||
memcpy(new_tile->data, &walls[id], sizeof(struct BasicTile));
|
memcpy(new_tile->data, &walls[id], sizeof(struct BasicTile));
|
||||||
|
@ -118,8 +123,6 @@ int activateTile(struct Tile *target_tile, struct Tile *activator_tile) {
|
||||||
case NPC:
|
case NPC:
|
||||||
sprintf(string, MESSAGE_ACTIVATE_NAUGHTY, ((struct BasicTile*)target_tile->data)->name);
|
sprintf(string, MESSAGE_ACTIVATE_NAUGHTY, ((struct BasicTile*)target_tile->data)->name);
|
||||||
break;
|
break;
|
||||||
case ITEM:
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
sprintf(string, MESSAGE_ACTIVATE_FAIL);
|
sprintf(string, MESSAGE_ACTIVATE_FAIL);
|
||||||
break;
|
break;
|
||||||
|
@ -182,7 +185,7 @@ struct DoorTile doors[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PlayerTile players[] = {
|
struct PlayerTile players[] = {
|
||||||
{ "selfie", 16, "S8D8C8I8W8C8", "H1F1N2S2A2a2h2D2T1W1L2l2f2" }
|
{ "selfie", 16, "S8D8C8I8W8C8", "H1F1N2S2A2a2h2D8w2T1W1L2l2f2" }
|
||||||
//{ 10, 10, 8, 6, 6, 6 }, { 1, 1, 1, 2, 2, 2, 2, 10, 1, 1, 2, 2, 2 } }
|
//{ 10, 10, 8, 6, 6, 6 }, { 1, 1, 1, 2, 2, 2, 2, 10, 1, 1, 2, 2, 2 } }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -192,8 +195,11 @@ struct NpcTile npcs[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ItemTile items[] = {
|
struct ItemTile items[] = {
|
||||||
{ "small macana", 1, "P1d4", "h1", "", "" },
|
{ "small key" },
|
||||||
//{ 0, "small macana", 1, "P1d4", { 6, 4 }, { 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0 } },
|
|
||||||
//{ 0, "large macana", 1, "P1d8", { 10, 6 } }
|
|
||||||
{ "large macana", 1, "P1d8", "h2", "", "" }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct EquipTile equips[] = {
|
||||||
|
{ "small macana", 1, "w1", "P1d4", "P1", "", "" },
|
||||||
|
{ "large macana", 1, "w2", "P1d8", "P2", "", "" }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
23
tile.h
23
tile.h
|
@ -12,7 +12,8 @@
|
||||||
#define WALL 3
|
#define WALL 3
|
||||||
#define DOOR 4
|
#define DOOR 4
|
||||||
#define ITEM 5
|
#define ITEM 5
|
||||||
#define NPC 6
|
#define EQUIP 6
|
||||||
|
#define NPC 7
|
||||||
|
|
||||||
#define STATE_CLOSED 0
|
#define STATE_CLOSED 0
|
||||||
#define STATE_OPEN 1
|
#define STATE_OPEN 1
|
||||||
|
@ -83,19 +84,23 @@ struct NpcTile {
|
||||||
};
|
};
|
||||||
extern struct NpcTile npcs[];
|
extern struct NpcTile npcs[];
|
||||||
|
|
||||||
// TODO: equippable items should probably be different from normal items.
|
|
||||||
struct ItemTile {
|
struct ItemTile {
|
||||||
char name[16];
|
char name[16];
|
||||||
int type; // 0 = generic item, 1 = weapons, 2 = armour
|
int type; // 0 = generic item
|
||||||
//char stats[31]; // instead of having each stat a separate property, a string is used. e.g., "P1d8F1d2I1d4" = physical 1d8, fire 1d2, ice 1d4
|
|
||||||
char roll[63];
|
|
||||||
char required_slots[63];
|
|
||||||
char given_slots[63]; // slots given by wearing item
|
|
||||||
char given_stats[63];
|
|
||||||
// struct Slots slots;
|
|
||||||
};
|
};
|
||||||
extern struct ItemTile items[];
|
extern struct ItemTile items[];
|
||||||
|
|
||||||
|
struct EquipTile {
|
||||||
|
char name[16];
|
||||||
|
int type; // TODO: remove?
|
||||||
|
char required_slots[63]; // required slots to equip
|
||||||
|
char damage_mod[63]; // damage given by wearing item
|
||||||
|
char armour_mod[63]; // armour given by wearing item
|
||||||
|
char stat_mod[63]; // stats given by wearing item
|
||||||
|
char slot_mod[63]; // slots given by wearing item
|
||||||
|
};
|
||||||
|
extern struct EquipTile equips[];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
interface used for creating new Tile
|
interface used for creating new Tile
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -79,3 +79,8 @@ CursesTile curses_players[] = {
|
||||||
CursesTile curses_npcs[] = {
|
CursesTile curses_npcs[] = {
|
||||||
{'n', COLOR_RED, COLOR_BLACK, 0}
|
{'n', COLOR_RED, COLOR_BLACK, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CursesTile curses_items[] = {
|
||||||
|
{'/', COLOR_RED, COLOR_BLACK, 0},
|
||||||
|
{'/', COLOR_RED, COLOR_BLACK, A_BOLD},
|
||||||
|
};
|
||||||
|
|
|
@ -14,5 +14,6 @@ extern CursesTile curses_floors[];
|
||||||
extern CursesTile curses_doors[];
|
extern CursesTile curses_doors[];
|
||||||
extern CursesTile curses_players[];
|
extern CursesTile curses_players[];
|
||||||
extern CursesTile curses_npcs[];
|
extern CursesTile curses_npcs[];
|
||||||
|
extern CursesTile curses_items[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 466 B |
BIN
tiles/items.png
BIN
tiles/items.png
Binary file not shown.
Before Width: | Height: | Size: 466 B After Width: | Height: | Size: 375 B |
|
@ -20,9 +20,14 @@ unsigned char player_images[] = {
|
||||||
unsigned int player_images_length = 2099;
|
unsigned int player_images_length = 2099;
|
||||||
|
|
||||||
unsigned char item_images[] = {
|
unsigned char item_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,0x01,0x3e,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xd4,0x31,0x11,0xc0,0x20,0x10,0x44,0x51,0x34,0x64,0xa2,0x21,0x25,0x18,0x88,0x10,0x6c,0xc4,0x7f,0x71,0x54,0x67,0x21,0xcc,0x70,0xef,0x29,0xd8,0xe6,0x6f,0x6b,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,0xc0,0xcf,0xde,0xd1,0x63,0xf7,0x06,0x60,0x83,0x8c,0xff,0xb9,0x2f,0x27,0x00,0x55,0x7c,0x73,0x86,0xf8,0xa1,0xa0,0x8c,0x5f,0xf8,0x50,0x94,0xf8,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,0x0e,0xb1,0x00,0x11,0x0c,0x0f,0xcd,0x0b,0x5e,0xf1,0x6a,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
|
||||||
|
};
|
||||||
|
unsigned int item_images_length = 375;
|
||||||
|
|
||||||
|
unsigned char equip_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,0x01,0x99,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xd7,0xb1,0x0d,0x02,0x31,0x10,0x04,0xc0,0x13,0x75,0x10,0xb8,0x80,0x0b,0x68,0x81,0x80,0x82,0xe8,0x95,0x42,0xe8,0xc0,0x64,0x16,0x7a,0x7d,0xf2,0xf8,0x25,0x63,0x79,0x26,0xb7,0xec,0x64,0xd7,0x77,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x35,0x22,0x6a,0x66,0xd6,0xd1,0x0f,0x81,0xd5,0x5d,0x46,0x5c,0x9a,0x99,0xf1,0x78,0xbf,0x42,0x09,0xc0,0x62,0x32,0xb3,0x3e,0xaf,0x6d,0x02,0x50,0x00,0x30,0x89,0x5a,0x4a,0xa9,0xb7,0xfb,0xef,0xa1,0xdd,0x09,0xbf,0x02,0x80,0x09,0xb4,0xf0,0x97,0x52,0x8e,0x86,0xb6,0x7e,0x9f,0x37,0xf6,0xc3,0x64,0x36,0xe1,0x3f,0x5c,0x00,0x1d,0xe5,0x01,0x8c,0xd4,0x19,0xfe,0xee,0xf3,0xc0,0x18,0xdd,0x3f,0xf7,0x4e,0xf8,0x15,0x00,0x4c,0xe0,0xb4,0x9d,0xdf,0xd8,0x0f,0x93,0xb1,0xf3,0xc3,0xba,0xda,0x0f,0x1e,0x76,0x7e,0x58,0x4e,0x4f,0x70,0xb7,0xe5,0xa1,0x00,0x60,0x22,0xbd,0x81,0x15,0x7a,0x98,0xd4,0x19,0xe1,0x07,0x16,0x24,0xfc,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,0x00,0xff,0xea,0x03,0xd8,0x20,0x6f,0x9c,0x42,0xdb,0x1e,0xc4,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
|
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,0x01,0x99,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xd7,0xb1,0x0d,0x02,0x31,0x10,0x04,0xc0,0x13,0x75,0x10,0xb8,0x80,0x0b,0x68,0x81,0x80,0x82,0xe8,0x95,0x42,0xe8,0xc0,0x64,0x16,0x7a,0x7d,0xf2,0xf8,0x25,0x63,0x79,0x26,0xb7,0xec,0x64,0xd7,0x77,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x35,0x22,0x6a,0x66,0xd6,0xd1,0x0f,0x81,0xd5,0x5d,0x46,0x5c,0x9a,0x99,0xf1,0x78,0xbf,0x42,0x09,0xc0,0x62,0x32,0xb3,0x3e,0xaf,0x6d,0x02,0x50,0x00,0x30,0x89,0x5a,0x4a,0xa9,0xb7,0xfb,0xef,0xa1,0xdd,0x09,0xbf,0x02,0x80,0x09,0xb4,0xf0,0x97,0x52,0x8e,0x86,0xb6,0x7e,0x9f,0x37,0xf6,0xc3,0x64,0x36,0xe1,0x3f,0x5c,0x00,0x1d,0xe5,0x01,0x8c,0xd4,0x19,0xfe,0xee,0xf3,0xc0,0x18,0xdd,0x3f,0xf7,0x4e,0xf8,0x15,0x00,0x4c,0xe0,0xb4,0x9d,0xdf,0xd8,0x0f,0x93,0xb1,0xf3,0xc3,0xba,0xda,0x0f,0x1e,0x76,0x7e,0x58,0x4e,0x4f,0x70,0xb7,0xe5,0xa1,0x00,0x60,0x22,0xbd,0x81,0x15,0x7a,0x98,0xd4,0x19,0xe1,0x07,0x16,0x24,0xfc,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,0x00,0xff,0xea,0x03,0xd8,0x20,0x6f,0x9c,0x42,0xdb,0x1e,0xc4,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
|
||||||
};
|
};
|
||||||
unsigned int item_images_length = 466;
|
unsigned int equip_images_length = 466;
|
||||||
|
|
||||||
unsigned char npc_images[] = {
|
unsigned char npc_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,0x01,0xc1,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xd9,0xb1,0x11,0x82,0x30,0x14,0x06,0x60,0x74,0x02,0x5b,0x3a,0x06,0x60,0x09,0x46,0xa0,0x70,0x5e,0x07,0xa1,0x61,0x08,0xfa,0x67,0x81,0x7a,0x18,0x89,0x56,0x82,0xe6,0xbe,0xaf,0xc9,0x91,0x0b,0x77,0xaf,0xf9,0x5f,0x12,0xa8,0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xb7,0xf5,0x7d,0x1f,0x4d,0xd3,0xc4,0xde,0x75,0x00,0xdf,0x75,0x4c,0x27,0xda,0xb6,0x8d,0x69,0x9a,0xf6,0xa8,0x05,0xd8,0xd8,0x4b,0x03,0xa8,0xeb,0xba,0x1a,0x86,0xa1,0x1a,0xc7,0xf1,0xb0,0x47,0x41,0xc0,0x8e,0x92,0xa3,0x7f,0x24,0x23,0x50,0x90,0xa7,0x13,0xc0,0x4a,0xf8,0x0f,0x8b,0x11,0x28,0x4c,0x1a,0xec,0x58,0xcc,0xc7,0x9b,0x75,0x40,0x01,0x5e,0xbe,0x01,0xdc,0x44,0xc4,0x9c,0xff,0x73,0x9c,0xb7,0xab,0x06,0xd8,0xd4,0xea,0xce,0xde,0xdd,0x76,0xff,0x4b,0x7e,0x9d,0x6b,0x01,0x14,0x20,0x1b,0xe2,0x6e,0x71,0x05,0x48,0x1a,0x81,0xf0,0x43,0x21,0xde,0x06,0x39,0xd3,0x04,0x3e,0xbe,0x07,0xfc,0x87,0xdc,0x37,0x80,0x27,0x97,0x39,0xf0,0xf7,0xd0,0x0b,0x3f,0x14,0x22,0xdb,0x00,0xba,0xf5,0x7f,0xff,0xc2,0x0f,0x05,0xc9,0xfe,0x05,0x98,0x8f,0xfc,0xa7,0xc7,0xf3,0x16,0xc5,0x00,0xbf,0x21,0x0d,0xbc,0x06,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,0x00,0xf0,0xaf,0xae,0x60,0xa0,0x2a,0x6f,0x17,0x2b,0x1d,0xf4,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
|
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,0x01,0xc1,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0xd9,0xb1,0x11,0x82,0x30,0x14,0x06,0x60,0x74,0x02,0x5b,0x3a,0x06,0x60,0x09,0x46,0xa0,0x70,0x5e,0x07,0xa1,0x61,0x08,0xfa,0x67,0x81,0x7a,0x18,0x89,0x56,0x82,0xe6,0xbe,0xaf,0xc9,0x91,0x0b,0x77,0xaf,0xf9,0x5f,0x12,0xa8,0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xb7,0xf5,0x7d,0x1f,0x4d,0xd3,0xc4,0xde,0x75,0x00,0xdf,0x75,0x4c,0x27,0xda,0xb6,0x8d,0x69,0x9a,0xf6,0xa8,0x05,0xd8,0xd8,0x4b,0x03,0xa8,0xeb,0xba,0x1a,0x86,0xa1,0x1a,0xc7,0xf1,0xb0,0x47,0x41,0xc0,0x8e,0x92,0xa3,0x7f,0x24,0x23,0x50,0x90,0xa7,0x13,0xc0,0x4a,0xf8,0x0f,0x8b,0x11,0x28,0x4c,0x1a,0xec,0x58,0xcc,0xc7,0x9b,0x75,0x40,0x01,0x5e,0xbe,0x01,0xdc,0x44,0xc4,0x9c,0xff,0x73,0x9c,0xb7,0xab,0x06,0xd8,0xd4,0xea,0xce,0xde,0xdd,0x76,0xff,0x4b,0x7e,0x9d,0x6b,0x01,0x14,0x20,0x1b,0xe2,0x6e,0x71,0x05,0x48,0x1a,0x81,0xf0,0x43,0x21,0xde,0x06,0x39,0xd3,0x04,0x3e,0xbe,0x07,0xfc,0x87,0xdc,0x37,0x80,0x27,0x97,0x39,0xf0,0xf7,0xd0,0x0b,0x3f,0x14,0x22,0xdb,0x00,0xba,0xf5,0x7f,0xff,0xc2,0x0f,0x05,0xc9,0xfe,0x05,0x98,0x8f,0xfc,0xa7,0xc7,0xf3,0x16,0xc5,0x00,0xbf,0x21,0x0d,0xbc,0x06,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,0x00,0xf0,0xaf,0xae,0x60,0xa0,0x2a,0x6f,0x17,0x2b,0x1d,0xf4,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
|
||||||
|
|
|
@ -18,6 +18,9 @@ extern unsigned int player_images_length;
|
||||||
extern unsigned char item_images[];
|
extern unsigned char item_images[];
|
||||||
extern unsigned int item_images_length;
|
extern unsigned int item_images_length;
|
||||||
|
|
||||||
|
extern unsigned char equip_images[];
|
||||||
|
extern unsigned int equip_images_length;
|
||||||
|
|
||||||
extern unsigned char npc_images[];
|
extern unsigned char npc_images[];
|
||||||
extern unsigned int npc_images_length;
|
extern unsigned int npc_images_length;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue