载入中...
搜索中...
未找到
AttributeResourceAccount.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
11
12#include <cstdint>
13
14namespace eve::attributes {
15
17enum class AttributeResourceKind : unsigned char {
18 Mana,
19 Stamina,
20};
21
33public:
36
43
45 [[nodiscard]] AttributeResourceKind kind() const noexcept { return kind_; }
46
53 [[nodiscard]] static eve::Result<eve::resource::CostSpec> makeCost(AttributeResourceKind kind, std::int64_t amount);
54
57 [[nodiscard]] eve::Result<eve::resource::Affordability> canAfford(
58 const eve::resource::CostSpec& cost) const override;
61 [[nodiscard]] eve::Result<eve::resource::Reservation> reserve(const eve::resource::CostSpec& cost) override;
64 [[nodiscard]] eve::Result<eve::resource::Receipt> debit(const eve::resource::CostSpec& cost) override;
67 [[nodiscard]] eve::Result<eve::resource::Receipt> credit(const eve::resource::CostSpec& cost) override;
70 [[nodiscard]] eve::Result<eve::resource::Receipt> commit(const eve::resource::Reservation& reservation) override;
73 [[nodiscard]] eve::Result<void> rollback(const eve::resource::Reservation& reservation) override;
74
75private:
84 [[nodiscard]] static const char* resourceName(AttributeResourceKind kind) noexcept;
86 [[nodiscard]] eve::Result<void> validateCost(const eve::resource::CostSpec& cost) const;
87
90};
91
96
97} // namespace eve::attributes
Resource-account adapter backed by AttributeSet base values.
eve::resource::CostSpec cost
eve::resource::IResourceAccount * account
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
TokenKind kind
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Restricts one AttributeSetResourceAccount to Mana or Stamina.
AttributeResourceKind kind() const noexcept
Return the resource exposed by this view.
AttributeResourceAccountAdapter(AttributeResourceAccountAdapter &&)=delete
AttributeResourceAccountAdapter(const AttributeResourceAccountAdapter &)=delete
AttributeResourceAccountAdapter & operator=(AttributeResourceAccountAdapter &&)=delete
AttributeResourceAccountAdapter & operator=(const AttributeResourceAccountAdapter &)=delete
~AttributeResourceAccountAdapter() override=default
Attribute resource account adapter.
Adapts integral AttributeSet base values to IResourceAccount.
Immutable canonical multi-resource cost.
Provider-neutral resource account contract.
AttributeResourceKind
Attribute-backed resource names used by common gameplay adapters.
Reservation credential returned by a successful reserve operation.