1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-11-12 20:55:27 +01:00

Break include chains and tidy (part 2)

This commit is contained in:
SmallJoker
2025-11-06 19:31:13 +01:00
committed by GitHub
parent 8593d38030
commit 98fb381910
60 changed files with 259 additions and 153 deletions

View File

@@ -4,7 +4,6 @@
#pragma once
#include "itemdef.h"
#include "irrlichttypes.h"
#include "itemstackmetadata.h"
#include <istream>
@@ -13,6 +12,8 @@
#include <vector>
#include <cassert>
struct ItemDefinition;
struct ItemImageDef;
struct ToolCapabilities;
struct ItemStack
@@ -73,10 +74,7 @@ struct ItemStack
}
// Maximum size of a stack
u16 getStackMax(const IItemDefManager *itemdef) const
{
return itemdef->get(name).stack_max;
}
u16 getStackMax(const IItemDefManager *itemdef) const;
// Number of items that can be added to this stack
u16 freeSpace(const IItemDefManager *itemdef) const
@@ -88,75 +86,24 @@ struct ItemStack
}
// Returns false if item is not known and cannot be used
bool isKnown(const IItemDefManager *itemdef) const
{
return itemdef->isKnown(name);
}
bool isKnown(const IItemDefManager *itemdef) const;
// Returns a pointer to the item definition struct,
// or a fallback one (name="unknown") if the item is unknown.
const ItemDefinition& getDefinition(
const IItemDefManager *itemdef) const
{
return itemdef->get(name);
}
const ItemDefinition &getDefinition(
const IItemDefManager *itemdef) const;
// Get tool digging properties, or those of the hand if not a tool
// If not hand assumes default hand ""
const ToolCapabilities& getToolCapabilities(
const IItemDefManager *itemdef, const ItemStack *hand = nullptr) const
{
// Check for override
auto &meta_item_cap = metadata.getToolCapabilitiesOverride();
if (meta_item_cap.has_value())
return meta_item_cap.value();
const ToolCapabilities *item_cap = itemdef->get(name).tool_capabilities;
if (item_cap)
return *item_cap;
// Fall back to the hand's tool capabilities
if (hand) {
auto &hand_meta_item_cap = hand->metadata.getToolCapabilitiesOverride();
if (hand_meta_item_cap.has_value())
return hand_meta_item_cap.value();
item_cap = itemdef->get(hand->name).tool_capabilities;
if (item_cap)
return *item_cap;
}
item_cap = itemdef->get("").tool_capabilities;
assert(item_cap);
return *item_cap;
}
const ToolCapabilities &getToolCapabilities(
const IItemDefManager *itemdef, const ItemStack *hand = nullptr) const;
const std::optional<WearBarParams> &getWearBarParams(
const IItemDefManager *itemdef) const
{
auto &meta_override = metadata.getWearBarParamOverride();
if (meta_override.has_value())
return meta_override;
return itemdef->get(name).wear_bar_params;
}
const IItemDefManager *itemdef) const;
// Wear out (only tools)
// Returns true if the item is (was) a tool
bool addWear(s32 amount, const IItemDefManager *itemdef)
{
if(getDefinition(itemdef).type == ITEM_TOOL)
{
if(amount > 65535 - wear)
clear();
else if(amount < -wear)
wear = 0;
else
wear += amount;
return true;
}
return false;
}
bool addWear(s32 amount, const IItemDefManager *itemdef);
// If possible, adds newitem to this item.
// If cannot be added at all, returns the item back.