载入中...
搜索中...
未找到
Decision.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include "common/Module.h"
6#include "common/Result.h"
8
9#include <map>
10#include <memory>
11#include <string>
12#include <vector>
13
14namespace eve::decision {
15
18
21
24public:
30 [[nodiscard]] eve::Result<void> set(const std::string& board, const std::string& key, const std::string& valueJson);
32 std::string get(const std::string& board, const std::string& key, const std::string& fallbackJson) const;
33
39 [[nodiscard]] eve::Result<void> addTransition(const std::string& machine, const std::string& from,
40 const std::string& trigger, const std::string& to);
45 [[nodiscard]] eve::Result<void> setState(const std::string& machine, const std::string& state);
52 [[nodiscard]] eve::Result<bool> trigger(const std::string& machine, const std::string& trigger);
54 std::string state(const std::string& machine) const;
55
57 static float utility(const std::string& considerationsCsv);
58
60 static std::string choose(const std::string& options);
61
66 [[nodiscard]] eve::Result<void> newGrid(const std::string& name, int width, int height, float cellSize,
67 float originX, float originY);
69 [[nodiscard]] eve::Result<void> setCell(const std::string& name, int x, int y, float value);
71 [[nodiscard]] eve::Result<void> addCell(const std::string& name, int x, int y, float delta);
73 float sample(const std::string& name, float worldX, float worldY, float fallback) const;
74
76 std::string snapshotJson() const;
77
83 [[nodiscard]] eve::Result<void> restoreJson(const std::string& json);
84
85private:
86 struct Grid {
87 int width = 0;
88 int height = 0;
89 float cellSize = 1;
90 float originX = 0;
91 float originY = 0;
92 std::vector<float> values;
93 };
94
95 std::map<std::string, std::map<std::string, std::string>> boards_;
96 std::map<std::string, std::string> states_;
97 std::map<std::string, std::map<std::pair<std::string, std::string>, std::string>> transitions_;
98 std::map<std::string, Grid> grids_;
99};
100
117
118} // namespace eve::decision
double value
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
std::string from
AuthorityStoreHandleRef reference
Definition Authority.cpp:24
std::map< std::string, Var > values
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::uint32_t key
HexCoordinates to
Cell the unit walks towards on this segment.
Definition HexUnits.cpp:64
std::uint32_t height
std::uint32_t width
std::string name
std::function< eve::Result< void >()> release
Definition Procgen.cpp:86
Move-only, checked operation results for the common layer.
const SquirrelValueOptions & options
Explicit Value/Owned/Borrowed semantics at the Squirrel boundary.
BoardState board
EVENGINE_API_FOUNDATION public API.
Definition Module.h:46
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Data-oriented blackboard, FSM, utility and influence-map workspace.
Definition Decision.h:23
Script factory for independent decision contexts.
Definition Decision.h:102
static bool isStale(DecisionContextHandleRef reference) noexcept
Reports whether a decision context reference is stale.
Definition Decision.cpp:449
static eve::script::Borrowed< DecisionContext > resolve(DecisionContextHandleRef reference) noexcept
Resolves a live context as a non-owning observation.
Definition Decision.cpp:435
static eve::Result< DecisionContextHandleRef > newContext()
Allocates a module-owned decision context and returns its handle.
Definition Decision.cpp:430
Non-owning C++ observation with no implicit lifetime extension.
Slot/generation registry whose objects are exclusively unique-owned.
Handle domain for module-owned decision contexts.
Definition Decision.h:17
Handle plus owner-lifetime epoch for a non-ECS registry object.