载入中...
搜索中...
未找到
ContainerAdapters.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10#include "common/Container.h"
11#include "inventory/Bag.h"
12#include "inventory/Equipment.h"
13
14namespace eve::inventory {
15
17enum class InventoryContainerKind : std::uint8_t { Bag, Equipment };
18
24
36public:
51
53 [[nodiscard]] const eve::container::ContainerDescriptor& descriptor() const noexcept override {
54 return descriptor_;
55 }
57 [[nodiscard]] eve::Result<eve::container::ContainerSnapshot> snapshot() const override;
59 [[nodiscard]] eve::Result<void> validateInsert(
60 const eve::container::ContainerObject& object, std::optional<eve::container::SlotIndex> destination,
61 std::optional<eve::container::MembershipId> ignoredObject = std::nullopt) const override;
65 const eve::container::ContainerSnapshot& expected, const eve::container::ContainerSnapshot& candidate) override;
66
68 [[nodiscard]] eve::Revision revision() const noexcept { return revision_; }
69
70private:
71 class PreparedState;
72
73 [[nodiscard]] static eve::container::MembershipId objectId(const ItemStack& stack);
74 [[nodiscard]] static eve::container::ContainerObject describe(const ItemStack& stack,
75 std::string equipmentSlot = {});
85 [[nodiscard]] const ItemStack* stackAt(eve::container::SlotIndex slot) const;
87 [[nodiscard]] ItemStack* stackAt(eve::container::SlotIndex slot);
88 [[nodiscard]] std::string slotName(eve::container::SlotIndex slot) const;
89 [[nodiscard]] eve::Result<void> validateObject(const InventoryContainerObject& object) const;
90
92 InventoryContainerKind kind_;
93 Bag* bag_ = nullptr;
94 EquipmentSet* equipment_ = nullptr;
95 eve::Revision revision_ = eve::Revision(0);
96};
97
98} // namespace eve::inventory
Low-level container membership, zone and atomic transfer contracts.
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::uint32_t capacity
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Non-negative capacity measured in membership slots.
Definition Container.h:92
static constexpr Capacity unlimited() noexcept
Construct an unbounded capacity.
Definition Container.h:97
Strong identity of one runtime or persistent container.
Definition Container.h:44
Borrowed container implementation owned by a domain adapter.
Definition Container.h:287
Strong identity of an object which can have one container membership.
Definition Container.h:68
Explicit slot number; it never implicitly converts to an integer.
Definition Container.h:117
格子型物品容器(脚本可直接操作)。
Definition Bag.h:21
EVENGINE_API_FOUNDATION public API.
Definition Equipment.h:19
Adapts one Bag or EquipmentSet without changing their legacy APIs.
eve::Revision revision() const noexcept
Return the adapter revision for optimistic transfer requests.
const eve::container::ContainerDescriptor & descriptor() const noexcept override
Descriptor.
运行时容器:固定格数的背包 / 箱子 / 商店栏等。 行为由 InventorySystem 提供;本类暴露便于脚本绑定的薄封装方法。
InventoryContainerKind
InventoryContainerKind public API.
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
Static metadata and acceptance policy of a container.
Definition Container.h:197
Opaque, owning payload supplied by a domain adapter during transfer.
Definition Container.h:162
Generic object facts used by filters and transfer diagnostics.
Definition Container.h:168
Lossless snapshot of one container at one revision.
Definition Container.h:190
Owning transfer payload for one inventory stack.
容器中的一格堆叠(空槽:itemId 为空或 quantity <= 0)。
Definition ItemTypes.h:34