From 512d8a5c0f7f936ecaf1a14669a325c72684c14f Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Fri, 17 Apr 2026 18:46:27 -0500 Subject: [PATCH] Added initial dialog support --- lib/cyberarm_engine.rb | 1 + lib/cyberarm_engine/ui/dialog.rb | 24 ++++++++++++++++++++++++ lib/cyberarm_engine/ui/dsl.rb | 4 ++++ 3 files changed, 29 insertions(+) create mode 100644 lib/cyberarm_engine/ui/dialog.rb diff --git a/lib/cyberarm_engine.rb b/lib/cyberarm_engine.rb index 179e12a..4a94d96 100644 --- a/lib/cyberarm_engine.rb +++ b/lib/cyberarm_engine.rb @@ -67,6 +67,7 @@ require_relative "cyberarm_engine/ui/elements/menu_item" require_relative "cyberarm_engine/game_state" require_relative "cyberarm_engine/ui/gui_state" +require_relative "cyberarm_engine/ui/dialog" require_relative "cyberarm_engine/ui/page" require_relative "cyberarm_engine/builtin/intro_state" diff --git a/lib/cyberarm_engine/ui/dialog.rb b/lib/cyberarm_engine/ui/dialog.rb new file mode 100644 index 0000000..594117b --- /dev/null +++ b/lib/cyberarm_engine/ui/dialog.rb @@ -0,0 +1,24 @@ +module CyberarmEngine + class Dialog < CyberarmEngine::GuiState + def draw + previous_state&.draw + + Gosu.flush + + super + end + + def update + super + + return unless window.current_state == self + + window.states.reverse.each do |state| + # Don't update ourselves, forever + next if state == self && state.is_a?(CyberarmEngine::GuiState) + + state.update + end + end + end +end diff --git a/lib/cyberarm_engine/ui/dsl.rb b/lib/cyberarm_engine/ui/dsl.rb index bc3b129..4733c17 100644 --- a/lib/cyberarm_engine/ui/dsl.rb +++ b/lib/cyberarm_engine/ui/dsl.rb @@ -120,6 +120,10 @@ module CyberarmEngine element_parent.root.gui_state.current_page end + def dialog(klass, options = {}) + element_parent.root.gui_state.window.push_state(klass, options) + end + def background(color = Gosu::Color::NONE) element_parent.style.background = color end