mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-23 14:22:16 -05:00
Change ItemTableID to be uint16_t so we can use ModIndex for it.
This commit is contained in:
parent
95d439bb30
commit
63ace6a4cc
@ -7,12 +7,12 @@ ItemTableManager::~ItemTableManager() {
|
||||
this->itemTables.clear();
|
||||
}
|
||||
|
||||
bool ItemTableManager::AddItemTable(std::string tableID) {
|
||||
bool ItemTableManager::AddItemTable(uint16_t tableID) {
|
||||
ItemTable newItemTable;
|
||||
return itemTables.emplace(tableID, newItemTable).second;
|
||||
}
|
||||
|
||||
bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, uint8_t itemID, uint16_t objectID, int8_t drawID, uint8_t textID, uint8_t field, bool chestAnim) {
|
||||
bool ItemTableManager::AddItemEntry(uint16_t tableID, uint16_t getItemID, uint16_t itemID, uint16_t objectID, int16_t drawID, uint16_t textID, uint16_t field, bool chestAnim) {
|
||||
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||
if (itemTable == NULL) {
|
||||
return false;
|
||||
@ -21,7 +21,7 @@ bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, uint
|
||||
return itemTable->emplace(getItemID, getItemEntry).second;
|
||||
}
|
||||
|
||||
bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, GetItemEntry getItemEntry) {
|
||||
bool ItemTableManager::AddItemEntry(uint16_t tableID, uint16_t getItemID, GetItemEntry getItemEntry) {
|
||||
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||
if (itemTable == NULL) {
|
||||
return false;
|
||||
@ -29,7 +29,7 @@ bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, GetI
|
||||
return itemTable->emplace(getItemID, getItemEntry).second;
|
||||
}
|
||||
|
||||
GetItemEntry ItemTableManager::RetrieveItemEntry(std::string tableID, uint8_t itemID) {
|
||||
GetItemEntry ItemTableManager::RetrieveItemEntry(uint16_t tableID, uint16_t itemID) {
|
||||
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||
if (itemTable != NULL) {
|
||||
auto foundItemEntry = itemTable->find(itemID);
|
||||
@ -40,7 +40,7 @@ GetItemEntry ItemTableManager::RetrieveItemEntry(std::string tableID, uint8_t it
|
||||
return GET_ITEM_NONE;
|
||||
}
|
||||
|
||||
bool ItemTableManager::ClearItemTable(std::string tableID) {
|
||||
bool ItemTableManager::ClearItemTable(uint16_t tableID) {
|
||||
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||
if (itemTable != NULL) {
|
||||
itemTable->clear();
|
||||
@ -49,7 +49,7 @@ bool ItemTableManager::ClearItemTable(std::string tableID) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ItemTable* ItemTableManager::RetrieveItemTable(std::string tableID) {
|
||||
ItemTable* ItemTableManager::RetrieveItemTable(uint16_t tableID) {
|
||||
auto foundItemTable = itemTables.find(tableID);
|
||||
if (foundItemTable == itemTables.end()) {
|
||||
return nullptr;
|
||||
|
@ -12,21 +12,21 @@
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
typedef std::unordered_map<uint8_t, GetItemEntry> ItemTable;
|
||||
typedef std::unordered_map<uint16_t, GetItemEntry> ItemTable;
|
||||
|
||||
class ItemTableManager {
|
||||
public:
|
||||
static ItemTableManager* Instance;
|
||||
ItemTableManager();
|
||||
~ItemTableManager();
|
||||
bool AddItemTable(std::string tableID);
|
||||
bool AddItemEntry(std::string tableID, uint8_t getItemID, uint8_t itemID, uint16_t objectID, int8_t drawID, uint8_t textID, uint8_t field, bool chestAnim);
|
||||
bool AddItemEntry(std::string tableID, uint8_t getItemID, GetItemEntry getItemEntry);
|
||||
GetItemEntry RetrieveItemEntry(std::string tableID, uint8_t itemID);
|
||||
bool ClearItemTable(std::string tableID);
|
||||
bool AddItemTable(uint16_t tableID);
|
||||
bool AddItemEntry(uint16_t tableID, uint16_t getItemID, uint16_t itemID, uint16_t objectID, int16_t drawID, uint16_t textID, uint16_t field, bool chestAnim);
|
||||
bool AddItemEntry(uint16_t tableID, uint16_t getItemID, GetItemEntry getItemEntry);
|
||||
GetItemEntry RetrieveItemEntry(uint16_t tableID, uint16_t itemID);
|
||||
bool ClearItemTable(uint16_t tableID);
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, ItemTable> itemTables;
|
||||
std::unordered_map<uint16_t, ItemTable> itemTables;
|
||||
|
||||
ItemTable* RetrieveItemTable(std::string tableID);
|
||||
ItemTable* RetrieveItemTable(uint16_t tableID);
|
||||
};
|
||||
|
@ -4,10 +4,10 @@
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uint8_t itemId;
|
||||
/* 0x01 */ uint8_t field; // various bit-packed data
|
||||
/* 0x02 */ int8_t gi; // defines the draw id and chest opening animation
|
||||
/* 0x03 */ uint8_t textId;
|
||||
/* 0x00 */ uint16_t itemId;
|
||||
/* 0x01 */ uint16_t field; // various bit-packed data
|
||||
/* 0x02 */ int16_t gi; // defines the draw id and chest opening animation
|
||||
/* 0x03 */ uint16_t textId;
|
||||
/* 0x04 */ uint16_t objectId;
|
||||
/* 0x06 */ uint16_t modIndex; // 0 = Vanilla, 1 = Randomizer, future mods will increment up?
|
||||
} GetItemEntry; // size = 0x06
|
||||
|
@ -4823,7 +4823,7 @@ void InitRandoItemTable() {
|
||||
GET_ITEM(RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG),
|
||||
GET_ITEM(RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, 0xF9, 0x80, CHEST_ANIM_LONG),
|
||||
};
|
||||
ItemTableManager::Instance->AddItemTable("Randomizer");
|
||||
ItemTableManager::Instance->AddItemTable(MOD_RANDOMIZER);
|
||||
for (int i = 0; i < ARRAY_SIZE(getItemTable); i++) {
|
||||
if (i < 21) {
|
||||
// We want to use vanilla Give_Item code for indices 0-20 since
|
||||
@ -4903,7 +4903,7 @@ void InitRandoItemTable() {
|
||||
getItemID = getItemTable[i].itemId;
|
||||
break;
|
||||
}
|
||||
ItemTableManager::Instance->AddItemEntry("Randomizer", getItemID, getItemTable[i]);
|
||||
ItemTableManager::Instance->AddItemEntry(MOD_RANDOMIZER, getItemID, getItemTable[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -220,10 +220,10 @@ extern "C" void VanillaItemTable_Init() {
|
||||
GET_ITEM_NONE,
|
||||
GET_ITEM_NONE,
|
||||
};
|
||||
ItemTableManager::Instance->AddItemTable("Vanilla");
|
||||
ItemTableManager::Instance->AddItemTable(MOD_VANILLA);
|
||||
for (uint8_t i = 0; i < ARRAY_SIZE(getItemTable); i++) {
|
||||
getItemTable[i].modIndex = MOD_VANILLA;
|
||||
ItemTableManager::Instance->AddItemEntry("Vanilla", i, getItemTable[i]);
|
||||
ItemTableManager::Instance->AddItemEntry(MOD_VANILLA, i, getItemTable[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1669,15 +1669,10 @@ extern "C" bool Randomizer_ItemIsIceTrap(RandomizerCheck randomizerCheck, GetIte
|
||||
return gSaveContext.n64ddFlag && Randomizer_GetItemIdFromKnownCheck(randomizerCheck, ogId) == GI_ICE_TRAP;
|
||||
}
|
||||
|
||||
extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) {
|
||||
std::string itemTableID;
|
||||
|
||||
if (OTRGlobals::Instance->getItemModIndex == MOD_VANILLA) {
|
||||
itemTableID = "Vanilla";
|
||||
} else {
|
||||
itemTableID = "Randomizer";
|
||||
extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) {
|
||||
if (OTRGlobals::Instance->getItemModIndex != MOD_VANILLA) {
|
||||
getItemID++; // counteracts the - 1 offset used for vanilla table
|
||||
}
|
||||
|
||||
return ItemTableManager::Instance->RetrieveItemEntry(itemTableID, getItemID);
|
||||
return ItemTableManager::Instance->RetrieveItemEntry(OTRGlobals::Instance->getItemModIndex, getItemID);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user