diff --git a/src/inventory.h b/src/inventory.h index 724792a..ac0e7eb 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -1458,11 +1458,62 @@ struct Inventory { y = options[i].render(x, y, width, slot == i, &stg); } + + StringID getItemName(StringID def, TR::LevelID id, TR::Entity::Type type) { + #define LVLCHECK(L, T, S) if (id == TR::L && type == TR::Entity::INV_##T) return S; + + LVLCHECK(LVL_TR1_2, KEY_ITEM_1, STR_KEY_SILVER); + LVLCHECK(LVL_TR1_2, PUZZLE_1, STR_PUZZLE_GOLD_IDOL); + + LVLCHECK(LVL_TR1_3A, PUZZLE_1, STR_PUZZLE_COG); + + LVLCHECK(LVL_TR1_4, KEY_ITEM_1, STR_KEY_NEPTUNE); + LVLCHECK(LVL_TR1_4, KEY_ITEM_2, STR_KEY_ATLAS); + LVLCHECK(LVL_TR1_4, KEY_ITEM_3, STR_KEY_DAMOCLES); + LVLCHECK(LVL_TR1_4, KEY_ITEM_4, STR_KEY_THOR); + + LVLCHECK(LVL_TR1_5, KEY_ITEM_1, STR_KEY_RUSTY); + + LVLCHECK(LVL_TR1_6, PUZZLE_1, STR_PUZZLE_GOLD_BAR); + + LVLCHECK(LVL_TR1_7A, KEY_ITEM_1, STR_KEY_GOLD); + LVLCHECK(LVL_TR1_7A, KEY_ITEM_2, STR_KEY_SILVER); + LVLCHECK(LVL_TR1_7A, KEY_ITEM_3, STR_KEY_RUSTY); + + LVLCHECK(LVL_TR1_7B, KEY_ITEM_1, STR_KEY_GOLD); + LVLCHECK(LVL_TR1_7B, KEY_ITEM_2, STR_KEY_RUSTY); + LVLCHECK(LVL_TR1_7B, KEY_ITEM_3, STR_KEY_RUSTY); + + LVLCHECK(LVL_TR1_8A, KEY_ITEM_1, STR_KEY_SAPPHIRE); + + LVLCHECK(LVL_TR1_8B, KEY_ITEM_1, STR_KEY_SAPPHIRE); + LVLCHECK(LVL_TR1_8B, PUZZLE_2, STR_PUZZLE_SCARAB); + LVLCHECK(LVL_TR1_8B, PUZZLE_3, STR_PUZZLE_HORUS); + LVLCHECK(LVL_TR1_8B, PUZZLE_4, STR_PUZZLE_ANKH); + LVLCHECK(LVL_TR1_8B, PUZZLE_1, STR_PUZZLE_HORUS); + + LVLCHECK(LVL_TR1_8C, KEY_ITEM_1, STR_KEY_GOLD); + LVLCHECK(LVL_TR1_8C, PUZZLE_1, STR_PUZZLE_ANKH); + LVLCHECK(LVL_TR1_8C, PUZZLE_2, STR_PUZZLE_SCARAB); + + LVLCHECK(LVL_TR1_10A, PUZZLE_1, STR_PUZZLE_FUSE); + LVLCHECK(LVL_TR1_10A, PUZZLE_2, STR_PUZZLE_PYRAMID); + + LVLCHECK(LVL_TR1_EGYPT, KEY_ITEM_1, STR_KEY_GOLD); + LVLCHECK(LVL_TR1_CAT, KEY_ITEM_1, STR_KEY_ORNATE); + + #undef LVLCHECK + + return def; + } + void renderItemText(float eye, Item *item) { if (item->type == TR::Entity::INV_PASSPORT && phaseChoose == 1.0f) { // - } else - UI::textOut(vec2(-eye, 480 - 32), item->desc.str, UI::aCenter, UI::width); + } else { + StringID str = getItemName(item->desc.str, game->getLevel()->id, item->type); + UI::textOut(vec2(-eye, 480 - 32), str, UI::aCenter, UI::width); + } renderItemCount(item, vec2(UI::width / 2 - 160 - eye, 480 - 96), 320); diff --git a/src/ui.h b/src/ui.h index 84cd8a9..3e1f2ea 100644 --- a/src/ui.h +++ b/src/ui.h @@ -103,10 +103,31 @@ enum StringID { , STR_AMMO_UZIS , STR_MEDI_SMALL , STR_MEDI_BIG - , STR_PUZZLE - , STR_KEY , STR_LEAD_BAR , STR_SCION +// keys + , STR_KEY + , STR_KEY_SILVER + , STR_KEY_RUSTY + , STR_KEY_GOLD + , STR_KEY_SAPPHIRE + , STR_KEY_NEPTUNE + , STR_KEY_ATLAS + , STR_KEY_DAMOCLES + , STR_KEY_THOR + , STR_KEY_ORNATE +// puzzles + , STR_PUZZLE + , STR_PUZZLE_GOLD_IDOL + , STR_PUZZLE_GOLD_BAR + , STR_PUZZLE_COG + , STR_PUZZLE_FUSE + , STR_PUZZLE_ANKH + , STR_PUZZLE_HORUS + , STR_PUZZLE_ANUBIS + , STR_PUZZLE_SCARAB + , STR_PUZZLE_PYRAMID + , STR_MAX }; @@ -232,10 +253,30 @@ const char *STR[STR_MAX] = { , "Uzi Clips" , "Small Medi Pack" , "Large Medi Pack" - , "Puzzle" - , "Key" , "Lead Bar" , "Scion" +// keys + , "Key" + , "Silver Key" + , "Rusty Key" + , "Gold Key" + , "Sapphire Key" + , "Neptune Key" + , "Atlas Key" + , "Damocles Key" + , "Thor Key" + , "Ornate Key" +// puzzles + , "Puzzle" + , "Gold Idol" + , "Gold Bar" + , "Machine Cog" + , "Fuse" + , "Ankh" + , "Eye of Horus" + , "Seal of Anubis" + , "Scarab" + , "Pyramid Key" }; namespace UI {