2024-10-28 15:57:39 +01:00
|
|
|
// Luanti
|
|
|
|
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
// Copyright (C) 2017-8 rubenwardy <rw@rubenwardy.com>
|
2017-01-31 19:49:01 +00:00
|
|
|
|
2017-08-17 22:19:39 +02:00
|
|
|
#pragma once
|
2017-01-31 19:49:01 +00:00
|
|
|
|
|
|
|
#include "metadata.h"
|
2017-04-18 16:30:27 -07:00
|
|
|
#include "tool.h"
|
2017-01-31 19:49:01 +00:00
|
|
|
|
2024-02-02 12:21:00 -08:00
|
|
|
#include <optional>
|
|
|
|
|
2017-01-31 19:49:01 +00:00
|
|
|
class Inventory;
|
|
|
|
class IItemDefManager;
|
|
|
|
|
2022-09-26 17:03:43 -04:00
|
|
|
class ItemStackMetadata : public SimpleMetadata
|
2017-01-31 19:49:01 +00:00
|
|
|
{
|
|
|
|
public:
|
2024-12-31 01:26:08 +01:00
|
|
|
ItemStackMetadata()
|
2024-02-02 12:21:00 -08:00
|
|
|
{}
|
2017-04-18 16:30:27 -07:00
|
|
|
|
|
|
|
// Overrides
|
|
|
|
void clear() override;
|
2024-02-17 15:35:33 +01:00
|
|
|
bool setString(const std::string &name, std::string_view var) override;
|
2017-04-18 16:30:27 -07:00
|
|
|
|
2017-01-31 19:49:01 +00:00
|
|
|
void serialize(std::ostream &os) const;
|
|
|
|
void deSerialize(std::istream &is);
|
2017-04-18 16:30:27 -07:00
|
|
|
|
|
|
|
const ToolCapabilities &getToolCapabilities(
|
|
|
|
const ToolCapabilities &default_caps) const
|
|
|
|
{
|
2024-12-31 01:26:08 +01:00
|
|
|
return toolcaps_override.has_value() ? *toolcaps_override : default_caps;
|
2017-04-18 16:30:27 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void setToolCapabilities(const ToolCapabilities &caps);
|
|
|
|
void clearToolCapabilities();
|
|
|
|
|
2024-02-02 12:21:00 -08:00
|
|
|
const std::optional<WearBarParams> &getWearBarParamOverride() const
|
|
|
|
{
|
|
|
|
return wear_bar_override;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setWearBarParams(const WearBarParams ¶ms);
|
|
|
|
void clearWearBarParams();
|
|
|
|
|
2017-04-18 16:30:27 -07:00
|
|
|
private:
|
|
|
|
void updateToolCapabilities();
|
2024-02-02 12:21:00 -08:00
|
|
|
void updateWearBarParams();
|
2017-04-18 16:30:27 -07:00
|
|
|
|
2024-12-31 01:26:08 +01:00
|
|
|
std::optional<ToolCapabilities> toolcaps_override;
|
2024-02-02 12:21:00 -08:00
|
|
|
std::optional<WearBarParams> wear_bar_override;
|
2017-01-31 19:49:01 +00:00
|
|
|
};
|