载入中...
搜索中...
未找到
EconomyControl.h
浏览该文件的文档.
1#pragma once
2
5
6#include <cstdint>
7#include <string>
8#include <string_view>
9#include <vector>
10
11namespace eve::economy {
12
38public:
42 ~EconomyControl() override;
43
46
54 [[nodiscard]] Result<void> publish(SubjectRef instance, SubjectRef owner, int player);
56 [[nodiscard]] Result<void> unpublish(SubjectRef instance);
58 void clear();
60 [[nodiscard]] int count() const;
62 [[nodiscard]] std::vector<SubjectRef> instances() const;
63
66 [[nodiscard]] std::string_view gameplayDomain() const noexcept override;
69 [[nodiscard]] std::vector<SubjectRef> gameplayInstances() const override;
73 SubjectRef instance) const override;
77 const GameplaySession& session, SubjectRef instance, SubjectRef subject) const override;
81 const GameplayCommand& command) override;
85 const SimulationStep& step) override;
88 [[nodiscard]] Result<std::vector<GameplayEvent>> gameplayEvents(const GameplaySession& session, SubjectRef instance,
89 std::uint64_t afterSequence) const override;
90
91private:
93 struct Entry {
94 SubjectRef instance;
95 SubjectRef owner;
96 int player = 0;
98 std::uint64_t revision = 0;
99 std::uint64_t nextEventSequence = 1;
100 std::vector<GameplayEvent> events;
101 };
102
110 [[nodiscard]] Entry* find(SubjectRef instance);
112 [[nodiscard]] const Entry* find(SubjectRef instance) const;
114 [[nodiscard]] bool controls(const GameplaySession& session, const Entry& entry) const;
116 [[nodiscard]] Value ledgerState(const Entry& entry) const;
117
118 std::vector<Entry> entries_;
119};
120
121} // namespace eve::economy
int subject
Definition AnimSmr.cpp:163
Host-neutral player-equivalent command and observation protocol.
Optional companion surface for gameplay providers that can enumerate instances.
std::uint64_t revision
Battle::Events events
SimulationTick tick
std::optional< InteractionSession > session
Definition Tactics.cpp:39
float step
Definition TreeMesh.cpp:314
Multi-provider gameplay boundary consumed by input, scripts and automation.
Optional read-only discovery surface implemented beside a gameplay provider.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Strong, domain-neutral reference to a runtime subject.
Definition SubjectRef.h:26
The canonical owning dynamic value used by data-facing protocols.
Definition Value.h:31
static constexpr StrongUint64 zero() noexcept
Returns the zero value for this strong type.
Exposes published player resource ledgers through the shared gameplay protocol.
EconomyControl()
Create an unpublished adapter and register it as the economy domain.
Result< GameplayCommandReceipt > submitGameplay(const GameplaySession &session, SubjectRef instance, const GameplayCommand &command) override
Validate authority and atomically submit one domain command.
Result< GameplayObservation > observeGameplay(const GameplaySession &session, SubjectRef instance) const override
Observe one provider-owned gameplay instance without mutation.
Result< void > unpublish(SubjectRef instance)
Drop one publication; NotFound when that instance is not published.
std::vector< SubjectRef > gameplayInstances() const override
Instances currently served, in publication order.
~EconomyControl() override
Unpublish every instance.
Result< void > publish(SubjectRef instance, SubjectRef owner, int player)
Publish one player ledger under a stable instance identity.
EconomyControl(const EconomyControl &)=delete
EconomyControl & operator=(const EconomyControl &)=delete
int count() const
Number of published instances.
void clear()
Drop every publication.
Result< std::vector< GameplayActionDescriptor > > availableGameplayActions(const GameplaySession &session, SubjectRef instance, SubjectRef subject) const override
Discover currently legal player-semantic actions for one subject.
std::string_view gameplayDomain() const noexcept override
Stable provider domain used for discovery and routing.
std::vector< SubjectRef > instances() const
Published instance identities, in publication order.
Result< GameplayObservation > advanceGameplay(const GameplaySession &session, SubjectRef instance, const SimulationStep &step) override
Advance one provider-owned instance using injected deterministic time.
Result< std::vector< GameplayEvent > > gameplayEvents(const GameplaySession &session, SubjectRef instance, std::uint64_t afterSequence) const override
Return events strictly newer than an instance-local sequence cursor.
One discoverable domain action and its owning schema projection.
Owning evidence that a gameplay authority accepted one command.
One player-semantic command submitted to a domain authority.
Owning event projection safe across frames and process boundaries.
Immutable owning observation of one authoritative gameplay instance.
Owning authorization context shared by player, script and automation adapters.
One deterministic fixed-step emitted by SimulationClock.
Definition Time.h:158