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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user