mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-23 22:32:50 -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();
|
this->itemTables.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ItemTableManager::AddItemTable(std::string tableID) {
|
bool ItemTableManager::AddItemTable(uint16_t tableID) {
|
||||||
ItemTable newItemTable;
|
ItemTable newItemTable;
|
||||||
return itemTables.emplace(tableID, newItemTable).second;
|
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);
|
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||||
if (itemTable == NULL) {
|
if (itemTable == NULL) {
|
||||||
return false;
|
return false;
|
||||||
@ -21,7 +21,7 @@ bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, uint
|
|||||||
return itemTable->emplace(getItemID, getItemEntry).second;
|
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);
|
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||||
if (itemTable == NULL) {
|
if (itemTable == NULL) {
|
||||||
return false;
|
return false;
|
||||||
@ -29,7 +29,7 @@ bool ItemTableManager::AddItemEntry(std::string tableID, uint8_t getItemID, GetI
|
|||||||
return itemTable->emplace(getItemID, getItemEntry).second;
|
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);
|
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||||
if (itemTable != NULL) {
|
if (itemTable != NULL) {
|
||||||
auto foundItemEntry = itemTable->find(itemID);
|
auto foundItemEntry = itemTable->find(itemID);
|
||||||
@ -40,7 +40,7 @@ GetItemEntry ItemTableManager::RetrieveItemEntry(std::string tableID, uint8_t it
|
|||||||
return GET_ITEM_NONE;
|
return GET_ITEM_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ItemTableManager::ClearItemTable(std::string tableID) {
|
bool ItemTableManager::ClearItemTable(uint16_t tableID) {
|
||||||
ItemTable* itemTable = RetrieveItemTable(tableID);
|
ItemTable* itemTable = RetrieveItemTable(tableID);
|
||||||
if (itemTable != NULL) {
|
if (itemTable != NULL) {
|
||||||
itemTable->clear();
|
itemTable->clear();
|
||||||
@ -49,7 +49,7 @@ bool ItemTableManager::ClearItemTable(std::string tableID) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemTable* ItemTableManager::RetrieveItemTable(std::string tableID) {
|
ItemTable* ItemTableManager::RetrieveItemTable(uint16_t tableID) {
|
||||||
auto foundItemTable = itemTables.find(tableID);
|
auto foundItemTable = itemTables.find(tableID);
|
||||||
if (foundItemTable == itemTables.end()) {
|
if (foundItemTable == itemTables.end()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -12,21 +12,21 @@
|
|||||||
|
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
typedef std::unordered_map<uint8_t, GetItemEntry> ItemTable;
|
typedef std::unordered_map<uint16_t, GetItemEntry> ItemTable;
|
||||||
|
|
||||||
class ItemTableManager {
|
class ItemTableManager {
|
||||||
public:
|
public:
|
||||||
static ItemTableManager* Instance;
|
static ItemTableManager* Instance;
|
||||||
ItemTableManager();
|
ItemTableManager();
|
||||||
~ItemTableManager();
|
~ItemTableManager();
|
||||||
bool AddItemTable(std::string tableID);
|
bool AddItemTable(uint16_t 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(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(std::string tableID, uint8_t getItemID, GetItemEntry getItemEntry);
|
bool AddItemEntry(uint16_t tableID, uint16_t getItemID, GetItemEntry getItemEntry);
|
||||||
GetItemEntry RetrieveItemEntry(std::string tableID, uint8_t itemID);
|
GetItemEntry RetrieveItemEntry(uint16_t tableID, uint16_t itemID);
|
||||||
bool ClearItemTable(std::string tableID);
|
bool ClearItemTable(uint16_t tableID);
|
||||||
|
|
||||||
private:
|
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
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ uint8_t itemId;
|
/* 0x00 */ uint16_t itemId;
|
||||||
/* 0x01 */ uint8_t field; // various bit-packed data
|
/* 0x01 */ uint16_t field; // various bit-packed data
|
||||||
/* 0x02 */ int8_t gi; // defines the draw id and chest opening animation
|
/* 0x02 */ int16_t gi; // defines the draw id and chest opening animation
|
||||||
/* 0x03 */ uint8_t textId;
|
/* 0x03 */ uint16_t textId;
|
||||||
/* 0x04 */ uint16_t objectId;
|
/* 0x04 */ uint16_t objectId;
|
||||||
/* 0x06 */ uint16_t modIndex; // 0 = Vanilla, 1 = Randomizer, future mods will increment up?
|
/* 0x06 */ uint16_t modIndex; // 0 = Vanilla, 1 = Randomizer, future mods will increment up?
|
||||||
} GetItemEntry; // size = 0x06
|
} 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_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),
|
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++) {
|
for (int i = 0; i < ARRAY_SIZE(getItemTable); i++) {
|
||||||
if (i < 21) {
|
if (i < 21) {
|
||||||
// We want to use vanilla Give_Item code for indices 0-20 since
|
// We want to use vanilla Give_Item code for indices 0-20 since
|
||||||
@ -4903,7 +4903,7 @@ void InitRandoItemTable() {
|
|||||||
getItemID = getItemTable[i].itemId;
|
getItemID = getItemTable[i].itemId;
|
||||||
break;
|
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,
|
||||||
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++) {
|
for (uint8_t i = 0; i < ARRAY_SIZE(getItemTable); i++) {
|
||||||
getItemTable[i].modIndex = MOD_VANILLA;
|
getItemTable[i].modIndex = MOD_VANILLA;
|
||||||
ItemTableManager::Instance->AddItemEntry("Vanilla", i, getItemTable[i]);
|
ItemTableManager::Instance->AddItemEntry(MOD_VANILLA, i, getItemTable[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1670,14 +1670,9 @@ extern "C" bool Randomizer_ItemIsIceTrap(RandomizerCheck randomizerCheck, GetIte
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) {
|
extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) {
|
||||||
std::string itemTableID;
|
if (OTRGlobals::Instance->getItemModIndex != MOD_VANILLA) {
|
||||||
|
|
||||||
if (OTRGlobals::Instance->getItemModIndex == MOD_VANILLA) {
|
|
||||||
itemTableID = "Vanilla";
|
|
||||||
} else {
|
|
||||||
itemTableID = "Randomizer";
|
|
||||||
getItemID++; // counteracts the - 1 offset used for vanilla table
|
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