载入中...
搜索中...
未找到
TileLayerTargetModule.cpp
浏览该文件的文档.
2
5
6#include <simplesquirrel/simplesquirrel.hpp>
7
8#include <cstdint>
9#include <functional>
10#include <utility>
11
13
15
16std::unique_ptr<map_editing::TileLayerTarget> TileLayerTargetModule::newTarget(std::string id,
17 map::TileLayer* layer) const {
18 return map_editing::createTileLayerTarget(std::move(id), layer);
19}
20
24
25void TileLayerTargetModule::expose(ssq::Table& table) {
26 auto target = table.addClass<map_editing::TileLayerTarget>(
27 "TileLayerTarget",
28 std::function<map_editing::TileLayerTarget*()>([]() -> map_editing::TileLayerTarget* { return nullptr; }),
29 true);
30 target.addFunc("getTargetId",
31 [](map_editing::TileLayerTarget* self) { return self ? self->targetId().value() : std::string{}; });
32 target.addFunc("getRevision", [](map_editing::TileLayerTarget* self) {
33 return self ? static_cast<int64_t>(self->revision()) : int64_t{0};
34 });
35 target.addFunc("getWidth", &map_editing::TileLayerTarget::width);
36 target.addFunc("getHeight", &map_editing::TileLayerTarget::height);
39 target.addFunc("clearDirtyRegion", &map_editing::TileLayerTarget::clearDirtyRegion);
40
41 auto module = table.addClass(name, TileLayerTargetModule::create, false);
42 expose(module);
43}
44
45void TileLayerTargetModule::expose(ssq::Class& cls) {
46 cls.addFunc("create", [](TileLayerTargetModule* self, const std::string& id, map::TileLayer* layer) {
47 return self->newTarget(id, layer).release();
48 });
49 cls.addFunc("bind", &TileLayerTargetModule::bind);
50}
51
52} // namespace eve::tilelayer_target
LogicalId target
double value
HSQOBJECT cls
Definition ECS.cpp:21
#define Module_IMPL(ModuleName, newExpr)
Definition Module.h:26
TileLayer * layer
std::function< eve::Result< void >()> release
Definition Procgen.cpp:86
std::string string
std::optional< InteractionSession > session
Definition Tactics.cpp:39
Hosts interchangeable editor tools and routes their lifecycle/input.
ECS tile layer entity. Script mutates tile GIDs / tileset / draw; TileRenderSystem batch-draws atlas ...
Definition TileLayer.h:32
Non-owning editable adapter for a live map tile layer.
editing::TargetId targetId() const override
Target id.
int width() const override
Width.
int readInt(int x, int y) const override
Reads int.
int height() const override
Height.
void clearDirtyRegion() override
Clears dirty region.
editing::FieldWriteStatus writeInt(int x, int y, int value) override
Writes int.
Script-facing composition module for live tile-layer editing targets.
std::unique_ptr< map_editing::TileLayerTarget > newTarget(std::string id, map::TileLayer *layer) const
Create an adapter over a borrowed live tile layer.
void bind(editor::EditorSession *session, map_editing::TileLayerTarget *target) const
Bind a target to an editor session.
std::unique_ptr< TileLayerTarget > createTileLayerTarget(std::string id, map::TileLayer *layer)
Create a map-layer adapter.