diff options
Diffstat (limited to 'app/systems/ui')
| -rw-r--r-- | app/systems/ui/button.rb | 26 | ||||
| -rw-r--r-- | app/systems/ui/return_to_menu.rb | 13 |
2 files changed, 39 insertions, 0 deletions
diff --git a/app/systems/ui/button.rb b/app/systems/ui/button.rb new file mode 100644 index 0000000..5ec855b --- /dev/null +++ b/app/systems/ui/button.rb @@ -0,0 +1,26 @@ +FF::Scn::UI.add( + FF::Sys.new('ButtonHandler', priority: 50) do + FF::Cmp::Button.each do |button| + sprite = button.entities[0].components[FF::Cmp::Sprite][0] + hitbox = button.entities[0].components[FF::Cmp::Hitbox][0] + mouse = $gtk.args.inputs.mouse + + if button.clicked + sprite.props[:path] = button.pressed_sprite_path + else + sprite.props[:path] = button.unpressed_sprite_path + end + + if mouse.x > hitbox.x and mouse.x < hitbox.x + hitbox.w and mouse.y > hitbox.y and mouse.y < hitbox.y + hitbox.h + if mouse.down + button.clicked = true + elsif mouse.up and button.clicked + button.clicked = false + button.action.call + end + else + button.clicked = false + end + end + end +) diff --git a/app/systems/ui/return_to_menu.rb b/app/systems/ui/return_to_menu.rb new file mode 100644 index 0000000..8b6f0c0 --- /dev/null +++ b/app/systems/ui/return_to_menu.rb @@ -0,0 +1,13 @@ +FF::Sys.new('ReturnToMenu', priority: 200) do + FF::Ent.each do |entity| + entity.components.each do |manager, manager_array| + manager_array.reverse_each do |component| + next if component.respond_to?(:singleton) + component.delete + end + end + entity.delete + end + FF::Scn::BoidRules.add(FF::Sys::Follow, FF::Sys::RandomizeAI) + FF::Sys::InitTitleScreen.call +end |
