44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
#include "gui/guecstra.hpp"
|
|
#include "game/level.hpp"
|
|
#include <magic_enum/magic_enum.hpp>
|
|
#include "dbc.hpp"
|
|
|
|
namespace guecs {
|
|
|
|
Clickable make_action(guecs::Entity gui_id, game::Event event, const std::source_location location) {
|
|
return {[&, gui_id, event, location](guecs::Modifiers mods){
|
|
auto world = GameDB::current_world();
|
|
dbc::log($F("SENDING EVENT: {}: {}", magic_enum::enum_name(event), mods.to_string()), location);
|
|
world->send<game::Event>(event, gui_id, {});
|
|
}};
|
|
}
|
|
|
|
Clickable make_action(guecs::Entity gui_id, game::Event event, std::any data, const std::source_location location) {
|
|
return {[&, event, data, location](auto){
|
|
auto world = GameDB::current_world();
|
|
dbc::log($F("SENDING EVENT: {}", magic_enum::enum_name(event)), location);
|
|
world->send<game::Event>(event, gui_id, data);
|
|
}};
|
|
}
|
|
|
|
DinkyECS::Entity GrabSource::grab() {
|
|
fmt::println("> Grab entity {}", world_entity);
|
|
return world_entity;
|
|
}
|
|
|
|
void GrabSource::setSprite(guecs::UI& gui, guecs::Entity gui_id) {
|
|
if(auto sp = gui.get_if<guecs::Icon>(gui_id)) {
|
|
sprite = sp->sprite;
|
|
} else if(auto sp = gui.get_if<guecs::Sprite>(gui_id)) {
|
|
sprite = sp->sprite;
|
|
} else {
|
|
dbc::sentinel("GrabSource given sprite gui_id that doesn't exist");
|
|
}
|
|
}
|
|
|
|
void GrabSource::move(sf::Vector2f pos) {
|
|
if(sprite) {
|
|
sprite->setPosition(pos);
|
|
}
|
|
}
|
|
}
|