diff --git a/context.c b/context.c index 8202bb9..0508a40 100644 --- a/context.c +++ b/context.c @@ -200,7 +200,14 @@ void inventoryContext(int key_press) { case 'a': // Hi, ugly code. // TODO: make equipment just an Inventory. - inventoryEquip(inventory, inventory->selected); + switch (inventoryGetSelected(inventory)->tid) { + case EQUIP: + inventoryEquip(inventory, inventory->selected); + break; + case ITEM: + // todo: applying item to another item or something? + break; + } //inventoryEquip(inventory, inventory->selected); //checkSlots( &(((struct PlayerTile*)player->data)->slots), &(((struct PlayerTile*)player->data)->used_slots), // &(((struct ItemTile*)(inventoryGetSelected(inventory)->data))->slots) ); diff --git a/game.c b/game.c index 5714309..3565745 100644 --- a/game.c +++ b/game.c @@ -30,8 +30,8 @@ int gameInit() { ((struct PlayerTile*)player->data)->equipment.slots_per_row = 4; ((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(ITEM, 0, 0, 0)); + addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(EQUIP, 1, 0, 0)); + addToInventory( &((struct PlayerTile*)player->data)->inventory, newTile(EQUIP, 0, 0, 0)); //gameMoveTile(newTile(ITEM, 0, 4, 4), 4, 4); @@ -39,10 +39,12 @@ int gameInit() { allocateMap(¤t_map, 64, 64); floodMap(¤t_map, TILE_REPLACE, FLOOR, STONE); gameMoveTile(player, 2, 2); - appendTile(&(current_map->matrix[4][4]), ITEM, 0); - appendTile(&(current_map->matrix[3][4]), ITEM, 1); - appendTile(&(current_map->matrix[2][4]), ITEM, 0); - appendTile(&(current_map->matrix[6][4]), ITEM, 1); + appendTile(&(current_map->matrix[4][4]), EQUIP, 0); + appendTile(&(current_map->matrix[3][4]), EQUIP, 1); + appendTile(&(current_map->matrix[2][4]), EQUIP, 0); + 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, 12, 4, 7, 13); diff --git a/interface/curses.c b/interface/curses.c index 5f6e9ec..a15ef50 100644 --- a/interface/curses.c +++ b/interface/curses.c @@ -206,6 +206,14 @@ void interfaceDraw() { 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); 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; } current_tile = current_tile->next; diff --git a/interface/sdl.c b/interface/sdl.c index 85654ce..f042ca0 100644 --- a/interface/sdl.c +++ b/interface/sdl.c @@ -203,6 +203,7 @@ void interfaceSetScale(float scale_x, float scale_y) { void scaleTiles(float scale_x, float scale_y) { setSpritesheetScale(&player_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(&door_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(&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(&door_sprites, door_images, door_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) { step_y = player->y - ((struct PlayerTile*)player->data)->vision; 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) { struct Tile *current_tile; current_tile = &(current_map)->matrix[step_x][step_y]; @@ -367,10 +368,11 @@ void cameraDraw() { case DOOR: tile_id = tile_id*4; 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); - 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); + } break; 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); @@ -380,6 +382,10 @@ void cameraDraw() { 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); 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; } @@ -541,34 +547,93 @@ void interfaceDrawInventory() { y = i / inventory->slots_per_row; x = i - (inventory->slots_per_row*y); if (i == ((struct PlayerTile*)player->data)->inventory.selected) { - 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)); + 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)); + 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 ItemTile*)current_item->data)->roll, 0, 2*(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 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 { - drawScaledTransparentSprite(&item_sprites, current_item->id, 0.50f, new_surface, x*item_sprites.s_width, inventory_info+(y*item_sprites.s_width)); + 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)); + 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; 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 */ current_item = ((struct PlayerTile*)player->data)->equipment.tile; struct Inventory *equipment = &((struct PlayerTile*)player->data)->equipment; 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) { y = i / equipment->slots_per_row; 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)); 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)); - drawScaledSpriteOutline(&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(&equip_sprites, current_item->id, equipment_surface, x*equip_sprites.s_width, (y*equip_sprites.s_width)); } 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; @@ -1128,6 +1193,8 @@ void interfaceClose() { freeSpritesheet(&floor_sprites); freeSpritesheet(&door_sprites); freeSpritesheet(&wall_sprites); + freeSpritesheet(&item_sprites); + freeSpritesheet(&equip_sprites); SDL_Quit(); } diff --git a/interface/sdl.h b/interface/sdl.h index e1c1c55..ae0f618 100644 --- a/interface/sdl.h +++ b/interface/sdl.h @@ -38,6 +38,7 @@ struct Spritesheet { }; struct Spritesheet player_sprites; struct Spritesheet item_sprites; +struct Spritesheet equip_sprites; struct Spritesheet shadow_sprites; struct Spritesheet npc_sprites; struct Spritesheet door_sprites; diff --git a/inventory.c b/inventory.c index 7791ecb..0f2bcd4 100644 --- a/inventory.c +++ b/inventory.c @@ -30,7 +30,7 @@ int inventoryEquip(struct Inventory *inventory, int selected) { if (i == selected) { char difference[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) { // sprintf(string, MESSAGE_EQUIP_NEED_FREE, difference); messageTile(current_tile, inventory->owner, string); @@ -40,7 +40,7 @@ int inventoryEquip(struct Inventory *inventory, int selected) { } else { 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); addToInventory(&((struct PlayerTile*)inventory->owner->data)->equipment, current_tile); @@ -60,7 +60,7 @@ int inventoryUnequip(struct Inventory *inventory, int selected) { if (i == selected) { 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); addToInventory(&((struct PlayerTile*)inventory->owner->data)->inventory, current_tile); diff --git a/pack_tiles.c b/pack_tiles.c index 32816be..43b2586 100644 --- a/pack_tiles.c +++ b/pack_tiles.c @@ -35,6 +35,7 @@ int main(int argc, char **argv) { convert("tiles/ui.png", "ui_images"); convert("tiles/players.png", "player_images"); convert("tiles/items.png", "item_images"); + convert("tiles/equips.png", "equip_images"); convert("tiles/npcs.png", "npc_images"); convert("tiles/walls.png", "wall_images"); convert("tiles/floors.png", "floor_images"); diff --git a/player.c b/player.c index 09c8fae..6728190 100644 --- a/player.c +++ b/player.c @@ -119,7 +119,7 @@ Returns: void ****/ void playerPickup() { struct Tile* tile = player->prev; - if (tile->tid == ITEM) { + if (tile->tid == ITEM || tile->tid == EQUIP) { removeFromChain(tile); addToInventory(&((struct PlayerTile*)player->data)->inventory, tile); char string[64]; diff --git a/tile.c b/tile.c index 6a39d77..ade4a13 100644 --- a/tile.c +++ b/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)); memcpy(new_tile->data, &items[id], sizeof(struct ItemTile)); break; + case EQUIP: + new_tile->data = (struct EquipTile *) malloc(sizeof(struct EquipTile)); + memcpy(new_tile->data, &equips[id], sizeof(struct EquipTile)); + break; + default: new_tile->data = (struct BasicTile *) malloc(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: sprintf(string, MESSAGE_ACTIVATE_NAUGHTY, ((struct BasicTile*)target_tile->data)->name); break; - case ITEM: - break; default: sprintf(string, MESSAGE_ACTIVATE_FAIL); break; @@ -182,7 +185,7 @@ struct DoorTile doors[] = { }; 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 } } }; @@ -192,8 +195,11 @@ struct NpcTile npcs[] = { }; struct ItemTile items[] = { - { "small macana", 1, "P1d4", "h1", "", "" }, - //{ 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", "", "" } + { "small key" }, }; + +struct EquipTile equips[] = { + { "small macana", 1, "w1", "P1d4", "P1", "", "" }, + { "large macana", 1, "w2", "P1d8", "P2", "", "" } +}; + diff --git a/tile.h b/tile.h index 553b948..05098a0 100644 --- a/tile.h +++ b/tile.h @@ -12,7 +12,8 @@ #define WALL 3 #define DOOR 4 #define ITEM 5 -#define NPC 6 +#define EQUIP 6 +#define NPC 7 #define STATE_CLOSED 0 #define STATE_OPEN 1 @@ -83,19 +84,23 @@ struct NpcTile { }; extern struct NpcTile npcs[]; -// TODO: equippable items should probably be different from normal items. struct ItemTile { char name[16]; - int type; // 0 = generic item, 1 = weapons, 2 = armour - //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; + int type; // 0 = generic item }; 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 */ diff --git a/tiles/curses_tiles.c b/tiles/curses_tiles.c index c701f23..2ef5a02 100644 --- a/tiles/curses_tiles.c +++ b/tiles/curses_tiles.c @@ -79,3 +79,8 @@ CursesTile curses_players[] = { CursesTile curses_npcs[] = { {'n', COLOR_RED, COLOR_BLACK, 0} }; + +CursesTile curses_items[] = { + {'/', COLOR_RED, COLOR_BLACK, 0}, + {'/', COLOR_RED, COLOR_BLACK, A_BOLD}, +}; diff --git a/tiles/curses_tiles.h b/tiles/curses_tiles.h index e0bc767..a6421b5 100644 --- a/tiles/curses_tiles.h +++ b/tiles/curses_tiles.h @@ -14,5 +14,6 @@ extern CursesTile curses_floors[]; extern CursesTile curses_doors[]; extern CursesTile curses_players[]; extern CursesTile curses_npcs[]; +extern CursesTile curses_items[]; #endif diff --git a/tiles/equips.png b/tiles/equips.png new file mode 100644 index 0000000..1c37e59 Binary files /dev/null and b/tiles/equips.png differ diff --git a/tiles/items.png b/tiles/items.png index 1c37e59..4e981e1 100644 Binary files a/tiles/items.png and b/tiles/items.png differ diff --git a/tiles/tiles.c b/tiles/tiles.c index e570aab..69fee54 100644 --- a/tiles/tiles.c +++ b/tiles/tiles.c @@ -20,9 +20,14 @@ unsigned char player_images[] = { unsigned int player_images_length = 2099; 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, }; -unsigned int item_images_length = 466; +unsigned int equip_images_length = 466; 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, diff --git a/tiles/tiles.h b/tiles/tiles.h index 7b90e26..7429ce8 100644 --- a/tiles/tiles.h +++ b/tiles/tiles.h @@ -18,6 +18,9 @@ extern unsigned int player_images_length; extern unsigned char item_images[]; extern unsigned int item_images_length; +extern unsigned char equip_images[]; +extern unsigned int equip_images_length; + extern unsigned char npc_images[]; extern unsigned int npc_images_length;