mirror of
https://github.com/luanti-org/luanti.git
synced 2025-09-15 18:57:08 +00:00
Apply suggestions
This commit is contained in:
parent
6248707548
commit
69a2d0a511
9 changed files with 69 additions and 72 deletions
|
@ -2010,7 +2010,7 @@ void Game::dropSelectedItem(bool single_item)
|
||||||
a->count = single_item ? 1 : 0;
|
a->count = single_item ? 1 : 0;
|
||||||
a->from_inv.setCurrentPlayer();
|
a->from_inv.setCurrentPlayer();
|
||||||
|
|
||||||
LocalPlayer* player = client->getEnv().getLocalPlayer();
|
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||||
u16 index;
|
u16 index;
|
||||||
if (player->hotbar_source.getInventoryFromWieldIndex(player->getWieldIndex(),
|
if (player->hotbar_source.getInventoryFromWieldIndex(player->getWieldIndex(),
|
||||||
a->from_list, index)) {
|
a->from_list, index)) {
|
||||||
|
|
|
@ -229,7 +229,7 @@ void Hud::drawItem(const ItemStack &item, const core::rect<s32>& rect,
|
||||||
client, selected ? IT_ROT_SELECTED : IT_ROT_NONE);
|
client, selected ? IT_ROT_SELECTED : IT_ROT_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hud::drawItems(const v2s32& pos, s32 inv_size, s32 inv_offset, InventoryList *mainlist,
|
void Hud::drawItems(v2s32 pos, s32 inv_size, s32 inv_offset, InventoryList *mainlist,
|
||||||
u16 selectitem, u16 direction, bool is_hotbar, u16 hotbar_touchcontrol_offset)
|
u16 selectitem, u16 direction, bool is_hotbar, u16 hotbar_touchcontrol_offset)
|
||||||
{
|
{
|
||||||
// Store hotbar_selected_image in member variable, used by drawItem()
|
// Store hotbar_selected_image in member variable, used by drawItem()
|
||||||
|
@ -255,8 +255,8 @@ void Hud::drawItems(const v2s32& pos, s32 inv_size, s32 inv_offset, InventoryLis
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the total width, height and pos to draw a HUD inventory
|
// Returns the total width, height and pos to draw a HUD inventory
|
||||||
void Hud::getInventoryDimensions(v2s32 screen_pos, const v2s32& screen_offset, s32 inv_length,
|
void Hud::getInventoryDimensions(v2s32 screen_pos, v2s32 screen_offset, s32 inv_length,
|
||||||
v2f alignment, u16 direction, v2s32& pos, s32& width, s32& height)
|
v2f alignment, u16 direction, v2s32 &pos, s32 &width, s32 &height) const
|
||||||
{
|
{
|
||||||
height = m_hotbar_imagesize + m_padding * 2;
|
height = m_hotbar_imagesize + m_padding * 2;
|
||||||
width = inv_length * (m_hotbar_imagesize + m_padding * 2);
|
width = inv_length * (m_hotbar_imagesize + m_padding * 2);
|
||||||
|
@ -276,7 +276,7 @@ void Hud::getInventoryDimensions(v2s32 screen_pos, const v2s32& screen_offset, s
|
||||||
|
|
||||||
// Returns an inventory position offset depending on the direction
|
// Returns an inventory position offset depending on the direction
|
||||||
// arguments are the number of items before and the remaining number of items
|
// arguments are the number of items before and the remaining number of items
|
||||||
v2s32 Hud::getInventoryPosOffset(u16 direction, s32 before, s32 remainder)
|
v2s32 Hud::getInventoryPosOffset(u16 direction, s32 before, s32 remainder) const
|
||||||
{
|
{
|
||||||
s32 fullimglen = m_hotbar_imagesize + m_padding * 2;
|
s32 fullimglen = m_hotbar_imagesize + m_padding * 2;
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ v2s32 Hud::getInventoryPosOffset(u16 direction, s32 before, s32 remainder)
|
||||||
return steppos;
|
return steppos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hud::drawInventoryBackground(const v2s32& pos, s32 width, s32 height)
|
void Hud::drawInventoryBackground(v2s32 pos, s32 width, s32 height)
|
||||||
{
|
{
|
||||||
// Store hotbar_image in member variable
|
// Store hotbar_image in member variable
|
||||||
if (hotbar_image != player->hotbar_image) {
|
if (hotbar_image != player->hotbar_image) {
|
||||||
|
@ -322,7 +322,7 @@ void Hud::drawInventoryBackground(const v2s32& pos, s32 width, s32 height)
|
||||||
|
|
||||||
// NOTE: selectitem = 0 -> no selected; selectitem is 1-based
|
// NOTE: selectitem = 0 -> no selected; selectitem is 1-based
|
||||||
// mainlist can be NULL, but draw the frame anyway.
|
// mainlist can be NULL, but draw the frame anyway.
|
||||||
void Hud::drawInventory(const v2s32& screen_pos, const v2f& offset, s32 itemcount, v2f alignment,
|
void Hud::drawInventory(v2s32 screen_pos, v2f offset, s32 itemcount, v2f alignment,
|
||||||
InventoryList *mainlist, u16 selectitem, u16 direction)
|
InventoryList *mainlist, u16 selectitem, u16 direction)
|
||||||
{
|
{
|
||||||
v2s32 screen_offset(offset.X, offset.Y);
|
v2s32 screen_offset(offset.X, offset.Y);
|
||||||
|
@ -336,13 +336,10 @@ void Hud::drawInventory(const v2s32& screen_pos, const v2f& offset, s32 itemcoun
|
||||||
}
|
}
|
||||||
|
|
||||||
// If max_inv_length == 0 do not clamp size
|
// If max_inv_length == 0 do not clamp size
|
||||||
void Hud::drawHotbar(const v2s32 &screen_pos, const v2f &offset, u16 direction,
|
void Hud::drawHotbar(v2s32 screen_pos, v2f offset, u16 direction,
|
||||||
const v2f &alignment, s32 max_inv_length, s32 inv_offset)
|
const v2f &alignment, s32 max_inv_length, s32 inv_offset)
|
||||||
{
|
{
|
||||||
if (g_touchcontrols)
|
auto &sources = player->hotbar_source.getSources();
|
||||||
g_touchcontrols->resetHotbarRects();
|
|
||||||
|
|
||||||
auto& sources = player->hotbar_source.getSources();
|
|
||||||
u16 wield_index = player->getWieldIndex() + 1;
|
u16 wield_index = player->getWieldIndex() + 1;
|
||||||
v2s32 screen_offset(offset.X, offset.Y);
|
v2s32 screen_offset(offset.X, offset.Y);
|
||||||
|
|
||||||
|
@ -364,7 +361,7 @@ void Hud::drawHotbar(const v2s32 &screen_pos, const v2f &offset, u16 direction,
|
||||||
for (s32 i_offset = inv_offset; source_index < sources.size(); source_index++) {
|
for (s32 i_offset = inv_offset; source_index < sources.size(); source_index++) {
|
||||||
const HotbarSource::Source& source = sources[source_index];
|
const HotbarSource::Source& source = sources[source_index];
|
||||||
if (i_offset < source.length) {
|
if (i_offset < source.length) {
|
||||||
s32 inv_length = MYMIN(source.length - i_offset, max_inv_length);
|
s32 inv_length = std::min<s32>(source.length - i_offset, max_inv_length);
|
||||||
|
|
||||||
drawItems(pos + getInventoryPosOffset(direction, 0, max_inv_length - inv_length),
|
drawItems(pos + getInventoryPosOffset(direction, 0, max_inv_length - inv_length),
|
||||||
inv_length + source.offset + i_offset,
|
inv_length + source.offset + i_offset,
|
||||||
|
@ -381,7 +378,7 @@ void Hud::drawHotbar(const v2s32 &screen_pos, const v2f &offset, u16 direction,
|
||||||
|
|
||||||
for (; source_index < sources.size(); source_index++) {
|
for (; source_index < sources.size(); source_index++) {
|
||||||
const HotbarSource::Source &source = sources[source_index];
|
const HotbarSource::Source &source = sources[source_index];
|
||||||
s32 inv_length = MYMIN(source.length, max_inv_length - length_before);
|
s32 inv_length = std::min<s32>(source.length, max_inv_length - length_before);
|
||||||
if(inv_length <= 0)
|
if(inv_length <= 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -394,6 +391,25 @@ void Hud::drawHotbar(const v2s32 &screen_pos, const v2f &offset, u16 direction,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hud::drawHotbarElement(v2s32 pos, HudElement *e)
|
||||||
|
{
|
||||||
|
if (g_touchcontrols) // FIXME probably breaks if more then one hotbar element exists
|
||||||
|
g_touchcontrols->resetHotbarRects();
|
||||||
|
|
||||||
|
// Handle splitting caused by hud_hotbar_max_width
|
||||||
|
u16 hotbar_itemcount = player->hotbar_source.getMaxLength();
|
||||||
|
float width = hotbar_itemcount * (m_hotbar_imagesize + m_padding * 2);
|
||||||
|
const v2u32 &window_size = RenderingEngine::getWindowSize();
|
||||||
|
if (width / window_size.X > g_settings->getFloat("hud_hotbar_max_width")) {
|
||||||
|
v2s32 upper_pos = pos - v2s32(0, m_hotbar_imagesize + m_padding);
|
||||||
|
u16 upper_itemcount = hotbar_itemcount / 2;
|
||||||
|
drawHotbar(upper_pos, e->offset, e->dir, e->align, upper_itemcount, 0);
|
||||||
|
drawHotbar(pos, e->offset, e->dir, e->align, 0, upper_itemcount);
|
||||||
|
} else {
|
||||||
|
drawHotbar(pos, e->offset, e->dir, e->align);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Hud::hasElementOfType(HudElementType type)
|
bool Hud::hasElementOfType(HudElementType type)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i != player->maxHudId(); i++) {
|
for (size_t i = 0; i != player->maxHudId(); i++) {
|
||||||
|
@ -654,23 +670,9 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
|
||||||
e->offset.Y * m_scale_factor);
|
e->offset.Y * m_scale_factor);
|
||||||
client->getMinimap()->drawMinimap(rect);
|
client->getMinimap()->drawMinimap(rect);
|
||||||
break; }
|
break; }
|
||||||
case HUD_ELEM_HOTBAR: {
|
case HUD_ELEM_HOTBAR:
|
||||||
// Handle splitting caused by hud_hotbar_max_width
|
drawHotbarElement(pos, e);
|
||||||
u16 hotbar_itemcount = player->hotbar_source.getMaxLength();
|
break;
|
||||||
s32 width = hotbar_itemcount * (m_hotbar_imagesize + m_padding * 2);
|
|
||||||
const v2u32 &window_size = RenderingEngine::getWindowSize();
|
|
||||||
if ((float) width / (float) window_size.X >
|
|
||||||
g_settings->getFloat("hud_hotbar_max_width")) {
|
|
||||||
v2s32 upper_pos = pos - v2s32(0, m_hotbar_imagesize + m_padding);
|
|
||||||
u16 upper_itemcount = hotbar_itemcount/2;
|
|
||||||
drawHotbar(upper_pos, e->offset, e->dir, e->align, upper_itemcount, 0);
|
|
||||||
drawHotbar(pos, e->offset, e->dir, e->align,
|
|
||||||
hotbar_itemcount - upper_itemcount, upper_itemcount);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
drawHotbar(pos, e->offset, e->dir, e->align);
|
|
||||||
}
|
|
||||||
break; }
|
|
||||||
default:
|
default:
|
||||||
infostream << "Hud::drawLuaElements: ignoring drawform " << e->type
|
infostream << "Hud::drawLuaElements: ignoring drawform " << e->type
|
||||||
<< " due to unrecognized type" << std::endl;
|
<< " due to unrecognized type" << std::endl;
|
||||||
|
|
|
@ -104,19 +104,20 @@ private:
|
||||||
s32 count, s32 maxcount, v2s32 offset, v2s32 size = v2s32());
|
s32 count, s32 maxcount, v2s32 offset, v2s32 size = v2s32());
|
||||||
|
|
||||||
void drawItem(const ItemStack &item, const core::rect<s32> &rect, bool selected);
|
void drawItem(const ItemStack &item, const core::rect<s32> &rect, bool selected);
|
||||||
void drawItems(const v2s32& pos, s32 inv_size, s32 inv_offset, InventoryList *mainlist,
|
void drawItems(v2s32 pos, s32 inv_size, s32 inv_offset, InventoryList *mainlist,
|
||||||
u16 selectitem, u16 direction, bool is_hotbar = false,
|
u16 selectitem, u16 direction, bool is_hotbar = false,
|
||||||
u16 hotbar_touchcontrol_offset = 0);
|
u16 hotbar_touchcontrol_offset = 0);
|
||||||
|
|
||||||
v2s32 getInventoryPosOffset(u16 direction, s32 before, s32 remainder);
|
v2s32 getInventoryPosOffset(u16 direction, s32 before, s32 remainder) const;
|
||||||
void getInventoryDimensions(v2s32 screen_pos, const v2s32& screen_offset, s32 inv_length,
|
void getInventoryDimensions(v2s32 screen_pos, v2s32 screen_offset, s32 inv_length,
|
||||||
v2f alignment, u16 direction, v2s32& pos, s32& width, s32& height);
|
v2f alignment, u16 direction, v2s32 &pos, s32 &width, s32 &height) const;
|
||||||
void drawInventoryBackground(const v2s32& pos, s32 width, s32 height);
|
void drawInventoryBackground(v2s32 pos, s32 width, s32 height);
|
||||||
void drawInventory(const v2s32& screen_pos, const v2f& offset, s32 itemcount,
|
void drawInventory(v2s32 screen_pos, v2f offset, s32 itemcount,
|
||||||
v2f alignment, InventoryList *mainlist, u16 selectitem, u16 direction);
|
v2f alignment, InventoryList *mainlist, u16 selectitem, u16 direction);
|
||||||
|
|
||||||
void drawHotbar(const v2s32 &pos, const v2f &offset, u16 direction, const v2f &alignment,
|
void drawHotbar(v2s32 pos, v2f offset, u16 direction, const v2f &alignment,
|
||||||
s32 max_inv_length = 0, s32 inv_offset = 0);
|
s32 max_inv_length = 0, s32 inv_offset = 0);
|
||||||
|
void drawHotbarElement(v2s32 pos, HudElement *e);
|
||||||
|
|
||||||
void drawCompassTranslate(HudElement *e, video::ITexture *texture,
|
void drawCompassTranslate(HudElement *e, video::ITexture *texture,
|
||||||
const core::rect<s32> &rect, int way);
|
const core::rect<s32> &rect, int way);
|
||||||
|
|
|
@ -82,12 +82,12 @@ Player::~Player()
|
||||||
|
|
||||||
void Player::setWieldIndex(u16 index)
|
void Player::setWieldIndex(u16 index)
|
||||||
{
|
{
|
||||||
m_wield_index = MYMIN(index, hotbar_source.getMaxLength() - 1);
|
m_wield_index = std::min<u16>(index, hotbar_source.getMaxLength() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 Player::getWieldIndex()
|
u16 Player::getWieldIndex()
|
||||||
{
|
{
|
||||||
return MYMIN(m_wield_index, hotbar_source.getMaxLength() - 1);
|
return std::min<u16>(m_wield_index, hotbar_source.getMaxLength() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack &Player::getWieldedItem(ItemStack *selected, ItemStack *hand) const
|
ItemStack &Player::getWieldedItem(ItemStack *selected, ItemStack *hand) const
|
||||||
|
|
|
@ -3461,7 +3461,7 @@ bool Server::hudSetHotbarItemcountLegacy(RemotePlayer *player, s32 hotbar_itemco
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
InventoryList *mainlist = player->inventory.getList("main");
|
InventoryList *mainlist = player->inventory.getList("main");
|
||||||
hotbar_itemcount = mainlist ? MYMIN(mainlist->getSize(), (u32) hotbar_itemcount) : 0;
|
hotbar_itemcount = mainlist ? std::min<u32>(mainlist->getSize(), hotbar_itemcount) : 0;
|
||||||
|
|
||||||
player->hotbar_source.setHotbarItemcountLegacy(hotbar_itemcount);
|
player->hotbar_source.setHotbarItemcountLegacy(hotbar_itemcount);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include "util/thread.h"
|
#include "util/thread.h"
|
||||||
#include "util/basic_macros.h"
|
#include "util/basic_macros.h"
|
||||||
#include "util/metricsbackend.h"
|
#include "util/metricsbackend.h"
|
||||||
#include "util/hotbar_source.h"
|
|
||||||
#include "serverenvironment.h"
|
#include "serverenvironment.h"
|
||||||
#include "server/clientiface.h"
|
#include "server/clientiface.h"
|
||||||
#include "threading/ordered_mutex.h"
|
#include "threading/ordered_mutex.h"
|
||||||
|
@ -67,6 +66,7 @@ class ServerInventoryManager;
|
||||||
struct PackedValue;
|
struct PackedValue;
|
||||||
struct ParticleParameters;
|
struct ParticleParameters;
|
||||||
struct ParticleSpawnerParameters;
|
struct ParticleSpawnerParameters;
|
||||||
|
struct HotbarSource;
|
||||||
|
|
||||||
// Anticheat flags
|
// Anticheat flags
|
||||||
enum {
|
enum {
|
||||||
|
|
|
@ -5,10 +5,13 @@ set(util_SRCS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/colorize.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/colorize.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/directiontables.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/directiontables.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/enriched_string.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/enriched_string.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/enum_string.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/hashing.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/hashing.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/hotbar_source.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/ieee_float.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/ieee_float.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/metricsbackend.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/metricsbackend.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/numeric.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/numeric.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/png.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/pointedthing.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/pointedthing.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/pointabilities.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/pointabilities.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/quicktune.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/quicktune.cpp
|
||||||
|
@ -17,7 +20,4 @@ set(util_SRCS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/string.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/string.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/srp.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/srp.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/timetaker.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/timetaker.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/png.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/enum_string.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/hotbar_source.cpp
|
|
||||||
PARENT_SCOPE)
|
PARENT_SCOPE)
|
||||||
|
|
|
@ -3,21 +3,18 @@
|
||||||
// Copyright (C) 2025 cx384
|
// Copyright (C) 2025 cx384
|
||||||
|
|
||||||
#include "hotbar_source.h"
|
#include "hotbar_source.h"
|
||||||
#include "serialize.h"
|
|
||||||
|
|
||||||
void HotbarSource::setHotbarItemcountLegacy(s32 count)
|
#include "serialize.h"
|
||||||
|
#include "numeric.h"
|
||||||
|
|
||||||
|
void HotbarSource::setHotbarItemcountLegacy(u16 count)
|
||||||
{
|
{
|
||||||
sources.clear();
|
sources.clear();
|
||||||
sources.push_back({HOTBAR_INVENTORY_LIST_DEFAULT, (u16) count, 0});
|
sources.push_back({
|
||||||
}
|
HOTBAR_INVENTORY_LIST_DEFAULT,
|
||||||
|
rangelim(count, 0, HOTBAR_ITEMCOUNT_MAX),
|
||||||
u16 HotbarSource::getMaxLength() const
|
0
|
||||||
{
|
});
|
||||||
u16 length = 0;
|
|
||||||
for (auto& source : sources) {
|
|
||||||
length += source.length;
|
|
||||||
}
|
|
||||||
return length ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HotbarSource::getInventoryFromWieldIndex(u16 wield_index, std::string &list, u16 &index) const
|
bool HotbarSource::getInventoryFromWieldIndex(u16 wield_index, std::string &list, u16 &index) const
|
||||||
|
@ -33,18 +30,17 @@ bool HotbarSource::getInventoryFromWieldIndex(u16 wield_index, std::string &list
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 HotbarSource::getLengthBefore(std::size_t index) const {
|
u16 HotbarSource::getLengthBefore(std::size_t index) const
|
||||||
u16 length_before = 0;
|
{
|
||||||
for (std::size_t i = 0; i < index && i < sources.size(); i++) {
|
index = std::min(index, sources.size());
|
||||||
length_before += sources[i].length;
|
u16 length = 0;
|
||||||
}
|
while (index-- > 0)
|
||||||
return length_before;
|
length += sources[index].length;
|
||||||
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HotbarSource::serialize(std::ostream &os) const
|
void HotbarSource::serialize(std::ostream &os) const
|
||||||
{
|
{
|
||||||
writeU8(os, 0); // version
|
|
||||||
|
|
||||||
writeU16(os, sources.size());
|
writeU16(os, sources.size());
|
||||||
for (const auto &source : sources) {
|
for (const auto &source : sources) {
|
||||||
os << serializeString16(source.list);
|
os << serializeString16(source.list);
|
||||||
|
@ -55,10 +51,6 @@ void HotbarSource::serialize(std::ostream &os) const
|
||||||
|
|
||||||
void HotbarSource::deSerialize(std::istream &is)
|
void HotbarSource::deSerialize(std::istream &is)
|
||||||
{
|
{
|
||||||
int version = readU8(is);
|
|
||||||
if (version != 0)
|
|
||||||
throw SerializationError("unsupported HotbarSource version");
|
|
||||||
|
|
||||||
sources.clear();
|
sources.clear();
|
||||||
u16 size = readU16(is);
|
u16 size = readU16(is);
|
||||||
for (u16 i = 0; i < size; i++) {
|
for (u16 i = 0; i < size; i++) {
|
||||||
|
@ -66,6 +58,6 @@ void HotbarSource::deSerialize(std::istream &is)
|
||||||
source.list = deSerializeString16(is);
|
source.list = deSerializeString16(is);
|
||||||
source.length = readU16(is);
|
source.length = readU16(is);
|
||||||
source.offset = readU16(is);
|
source.offset = readU16(is);
|
||||||
sources.push_back(source);
|
sources.push_back(std::move(source));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,12 @@ struct HotbarSource {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Old functionality which could only use the "main" list
|
// Old functionality which could only use the "main" list
|
||||||
void setHotbarItemcountLegacy(s32 count);
|
void setHotbarItemcountLegacy(u16 count);
|
||||||
|
|
||||||
// Returns the total length of all sources
|
// Returns the total length of all sources
|
||||||
u16 getMaxLength() const;
|
u16 getMaxLength() const {
|
||||||
|
return getLengthBefore(sources.size());
|
||||||
|
}
|
||||||
|
|
||||||
// Returns list and index of the inventory if it exists
|
// Returns list and index of the inventory if it exists
|
||||||
bool getInventoryFromWieldIndex(u16 wield_index, std::string &list, u16 &index) const;
|
bool getInventoryFromWieldIndex(u16 wield_index, std::string &list, u16 &index) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue