载入中...
搜索中...
未找到
CardContainers.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
14#include "card/CardTypes.h"
15#include "common/Container.h"
16
17#include <string>
18#include <vector>
19
20namespace eve::card {
21
23enum class CardContainerKind : std::uint8_t { Deck, Hand, Discard };
24
35
51public:
63 Hand* hand = nullptr, std::vector<CardData*>* discard = nullptr,
65 std::vector<std::string> acceptedKinds = {});
66
68 [[nodiscard]] const eve::container::ContainerDescriptor& descriptor() const noexcept override {
69 return descriptor_;
70 }
72 [[nodiscard]] eve::Result<eve::container::ContainerSnapshot> snapshot() const override;
74 [[nodiscard]] eve::Result<void> validateInsert(
75 const eve::container::ContainerObject& object, std::optional<eve::container::SlotIndex> destination,
76 std::optional<eve::container::MembershipId> ignoredObject = std::nullopt) const override;
80 const eve::container::ContainerSnapshot& expected, const eve::container::ContainerSnapshot& candidate) override;
81
83 [[nodiscard]] eve::Revision revision() const noexcept { return revision_; }
84
85private:
86 class PreparedState;
87
98 [[nodiscard]] std::vector<CardData*>* cards() noexcept;
100 [[nodiscard]] const std::vector<CardData*>* cards() const noexcept;
101 [[nodiscard]] static eve::container::MembershipId objectId(const CardData& card);
102 [[nodiscard]] static eve::container::ContainerObject describe(CardData* card);
103 void updateState(CardData* card) const noexcept;
104
105 eve::container::ContainerDescriptor descriptor_;
106 CardContainerKind kind_;
107 Deck* deck_ = nullptr;
108 Hand* hand_ = nullptr;
109 std::vector<CardData*>* discard_ = nullptr;
110 eve::Revision revision_ = eve::Revision(0);
111};
112
113} // namespace eve::card
Low-level container membership, zone and atomic transfer contracts.
#define EVENGINE_API_WORLD
Definition Export.h:109
std::uint32_t capacity
TokenKind kind
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Exposes one card collection through the generic atomic transfer API.
const eve::container::ContainerDescriptor & descriptor() const noexcept override
Descriptor.
eve::Revision revision() const noexcept
Return the current adapter revision for optimistic requests.
单张卡牌:ECS 实体,数据拆成 Identity / Stats / Visual / Layout / State。
Definition CardTypes.h:94
牌库(栈顶在末尾)。
Definition CardTypes.h:188
手牌:扇形布局 + 悬浮 + 拖拽 + 落区判定 + 渲染。
Definition CardTypes.h:273
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
CardContainerKind
CardContainerKind public API.
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
Generation-qualified reference to one CardData object.
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