载入中...
搜索中...
未找到
ContainerAdapters.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include "common/Time.h"
6
13#include "common/Container.h"
14
15namespace eve::building {
16
21
37public:
49
51 [[nodiscard]] const eve::container::ContainerDescriptor& descriptor() const noexcept override {
52 return descriptor_;
53 }
55 [[nodiscard]] eve::Result<eve::container::ContainerSnapshot> snapshot() const override;
57 [[nodiscard]] eve::Result<void> validateInsert(
58 const eve::container::ContainerObject& object, std::optional<eve::container::SlotIndex> destination,
59 std::optional<eve::container::MembershipId> ignoredObject = std::nullopt) const override;
63 const eve::container::ContainerSnapshot& expected, const eve::container::ContainerSnapshot& candidate) override;
64
66 [[nodiscard]] eve::Revision revision() const noexcept;
67
77 [[nodiscard]] eve::Result<eve::container::MembershipId> enter(
78 std::string memberId, std::string type = "building.garrison.member", std::vector<std::string> tags = {},
80
91
92private:
93 class PreparedState;
94
104 [[nodiscard]] const PlacedBuilding* building() const noexcept;
106 [[nodiscard]] PlacedBuilding* building() noexcept;
107 [[nodiscard]] std::uint64_t nextEventSerial() noexcept;
108 [[nodiscard]] static eve::container::ContainerObject describe(const GarrisonMember& member);
109
110 eve::container::ContainerDescriptor descriptor_;
111 PlacementWorld* world_ = nullptr;
112 int instanceId_ = 0;
113 std::uint64_t eventSerial_ = 0;
114};
115
116} // namespace eve::building
Low-level container membership, zone and atomic transfer contracts.
#define EVENGINE_API_WORLD
Definition Export.h:109
std::uint32_t capacity
World3D * world
std::uint64_t revision
SimulationTick tick
Common time values and an injectable deterministic simulation clock.
float(ui::Theme::* member)[4]
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Transactional adapter over one placed building's authoritative garrison.
const eve::container::ContainerDescriptor & descriptor() const noexcept override
Descriptor.
格子型建筑放置世界(脚本可直接操作)。
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
Extensible filter result used by container and zone acceptance rules.
Definition Container.h:139
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
static constexpr StrongUint64 zero() noexcept
Returns the zero value for this strong type.
建筑放置模块入口:定义 / 放置世界 / 鬼影 / 变更事件的脚本绑定点。 设计文档:docs/dev/建筑放置系统设计.md
Definition Building.cpp:7
std::function< void(const game_event::GameEvent &)> GameEventSink
Callback receiving a canonical game_event envelope.
Definition Container.h:245
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
Owning payload carrying a garrison member's domain facts.
One persistent member of a placed building's logical garrison.
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