Create belts with mouse
This commit is contained in:
parent
11f220d8ea
commit
e812ea3e3a
1 changed files with 31 additions and 32 deletions
|
|
@ -674,10 +674,23 @@ namespace gmtk
|
|||
{
|
||||
if (event.down && event.button == app::mouse_button::left)
|
||||
{
|
||||
if (selected_ && !view_transition_)
|
||||
{
|
||||
bool transitioned = false;
|
||||
bool destroyed_item = false;
|
||||
bool transitioned = false;
|
||||
|
||||
if (selected_item_)
|
||||
{
|
||||
auto const & i = map_.world.get(*selected_item_).get<item const>();
|
||||
if (i.target)
|
||||
map_.world.detach<occupied>(i.target);
|
||||
else
|
||||
map_.world.detach<occupied>(map_.world.index<path_index>().get(i.start));
|
||||
map_.world.destroy(*selected_item_);
|
||||
selected_item_ = std::nullopt;
|
||||
destroyed_item = true;
|
||||
}
|
||||
|
||||
if (!destroyed_item && selected_ && !view_transition_)
|
||||
{
|
||||
if (auto entity = map_.world.index<index>().find(*selected_))
|
||||
if (map_.world.get(*entity).contains<zoomer>())
|
||||
{
|
||||
|
|
@ -696,40 +709,13 @@ namespace gmtk
|
|||
}
|
||||
}
|
||||
|
||||
if (selected_item_)
|
||||
{
|
||||
auto const & i = map_.world.get(*selected_item_).get<item const>();
|
||||
if (i.target)
|
||||
map_.world.detach<occupied>(i.target);
|
||||
else
|
||||
map_.world.detach<occupied>(map_.world.index<path_index>().get(i.start));
|
||||
map_.world.destroy(*selected_item_);
|
||||
selected_item_ = std::nullopt;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.down && event.button == app::mouse_button::right)
|
||||
{
|
||||
if (!view_transition_ && view_stack_.size() > 1)
|
||||
{
|
||||
view_transition_ = {view_stack_.back()};
|
||||
view_stack_.pop_back();
|
||||
selected_ = std::nullopt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void on_event(app::key_event const & event) override
|
||||
{
|
||||
if (event.down && event.key == app::keycode::B)
|
||||
{
|
||||
if (selected_ && !belt_start_)
|
||||
if (!destroyed_item && !transitioned && selected_ && !belt_start_)
|
||||
{
|
||||
belt_start_ = *selected_;
|
||||
}
|
||||
}
|
||||
|
||||
if (!event.down && event.key == app::keycode::B)
|
||||
if (!event.down && event.button == app::mouse_button::left)
|
||||
{
|
||||
if (selected_ && belt_start_ && selected_->level == belt_start_->level)
|
||||
{
|
||||
|
|
@ -768,6 +754,19 @@ namespace gmtk
|
|||
belt_start_ = std::nullopt;
|
||||
}
|
||||
|
||||
if (event.down && event.button == app::mouse_button::right)
|
||||
{
|
||||
if (!view_transition_ && view_stack_.size() > 1)
|
||||
{
|
||||
view_transition_ = {view_stack_.back()};
|
||||
view_stack_.pop_back();
|
||||
selected_ = std::nullopt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void on_event(app::key_event const & event) override
|
||||
{
|
||||
if (event.down && event.key == app::keycode::F)
|
||||
{
|
||||
if (selected_ && !map_.world.index<index>().find(*selected_))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue