refine PlayerInventoryItem
This commit is contained in:
Binary file not shown.
@@ -101,6 +101,7 @@ void ClientGameData::create_challenge_overlay(size_t template_index, shared_ptr<
|
|||||||
for (size_t z = 0; z < overlay->inventory.items.size(); z++) {
|
for (size_t z = 0; z < overlay->inventory.items.size(); z++) {
|
||||||
auto& i = overlay->inventory.items[z];
|
auto& i = overlay->inventory.items[z];
|
||||||
i.present = 0;
|
i.present = 0;
|
||||||
|
i.unknown_a1 = 0;
|
||||||
i.extension_data1 = 0;
|
i.extension_data1 = 0;
|
||||||
i.extension_data2 = 0;
|
i.extension_data2 = 0;
|
||||||
i.flags = 0;
|
i.flags = 0;
|
||||||
@@ -124,6 +125,7 @@ void ClientGameData::create_challenge_overlay(size_t template_index, shared_ptr<
|
|||||||
for (size_t z = 0; z < tpl.items.size(); z++) {
|
for (size_t z = 0; z < tpl.items.size(); z++) {
|
||||||
auto& inv_item = overlay->inventory.items[z];
|
auto& inv_item = overlay->inventory.items[z];
|
||||||
inv_item.present = tpl.items[z].present;
|
inv_item.present = tpl.items[z].present;
|
||||||
|
inv_item.unknown_a1 = tpl.items[z].unknown_a1;
|
||||||
inv_item.flags = tpl.items[z].flags;
|
inv_item.flags = tpl.items[z].flags;
|
||||||
inv_item.data = tpl.items[z].data;
|
inv_item.data = tpl.items[z].data;
|
||||||
}
|
}
|
||||||
@@ -350,6 +352,7 @@ void SavedPlayerDataBB::add_item(const ItemData& item) {
|
|||||||
}
|
}
|
||||||
auto& inv_item = this->inventory.items[this->inventory.num_items];
|
auto& inv_item = this->inventory.items[this->inventory.num_items];
|
||||||
inv_item.present = 1;
|
inv_item.present = 1;
|
||||||
|
inv_item.unknown_a1 = 0;
|
||||||
inv_item.flags = 0;
|
inv_item.flags = 0;
|
||||||
inv_item.data = item;
|
inv_item.data = item;
|
||||||
this->inventory.num_items++;
|
this->inventory.num_items++;
|
||||||
@@ -395,6 +398,7 @@ ItemData SavedPlayerDataBB::remove_item(uint32_t item_id, uint32_t amount, bool
|
|||||||
}
|
}
|
||||||
auto& last_item = this->inventory.items[this->inventory.num_items];
|
auto& last_item = this->inventory.items[this->inventory.num_items];
|
||||||
last_item.present = 0;
|
last_item.present = 0;
|
||||||
|
last_item.unknown_a1 = 0;
|
||||||
last_item.flags = 0;
|
last_item.flags = 0;
|
||||||
last_item.data.clear();
|
last_item.data.clear();
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -562,6 +562,7 @@ size_t PlayerInventory::remove_all_items_of_type(uint8_t data1_0, int16_t data1_
|
|||||||
if (!should_delete) {
|
if (!should_delete) {
|
||||||
if (read_offset != write_offset) {
|
if (read_offset != write_offset) {
|
||||||
this->items[write_offset].present = this->items[read_offset].present;
|
this->items[write_offset].present = this->items[read_offset].present;
|
||||||
|
this->items[write_offset].unknown_a1 = this->items[read_offset].unknown_a1;
|
||||||
this->items[write_offset].flags = this->items[read_offset].flags;
|
this->items[write_offset].flags = this->items[read_offset].flags;
|
||||||
this->items[write_offset].data = this->items[read_offset].data;
|
this->items[write_offset].data = this->items[read_offset].data;
|
||||||
}
|
}
|
||||||
@@ -809,6 +810,7 @@ const ChallengeTemplateDefinition& get_challenge_template_definition(uint32_t cl
|
|||||||
static auto make_template_item = +[](bool equipped, uint64_t first_data, uint64_t second_data = 0) -> PlayerInventoryItem {
|
static auto make_template_item = +[](bool equipped, uint64_t first_data, uint64_t second_data = 0) -> PlayerInventoryItem {
|
||||||
PlayerInventoryItem ret = {
|
PlayerInventoryItem ret = {
|
||||||
.present = 1,
|
.present = 1,
|
||||||
|
.unknown_a1 = 0,
|
||||||
.extension_data1 = 0,
|
.extension_data1 = 0,
|
||||||
.extension_data2 = 0,
|
.extension_data2 = 0,
|
||||||
.flags = (equipped ? 8 : 0),
|
.flags = (equipped ? 8 : 0),
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ extern FileContentsCache player_files_cache;
|
|||||||
// Unknown. These are not an array, but do appear to be related.
|
// Unknown. These are not an array, but do appear to be related.
|
||||||
|
|
||||||
struct PlayerInventoryItem {
|
struct PlayerInventoryItem {
|
||||||
/* 00 */ le_uint16_t present = 0;
|
/* 00 */ uint8_t present = 0;
|
||||||
|
/* 01 */ uint8_t unknown_a1 = 0;
|
||||||
// See note above about these fields
|
// See note above about these fields
|
||||||
/* 02 */ uint8_t extension_data1 = 0;
|
/* 02 */ uint8_t extension_data1 = 0;
|
||||||
/* 03 */ uint8_t extension_data2 = 0;
|
/* 03 */ uint8_t extension_data2 = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user