Added every and after timers to DSL

This commit is contained in:
2026-03-20 20:28:44 -05:00
parent 3102bbe4c3
commit 250e51ef0c
4 changed files with 25 additions and 1 deletions

View File

@@ -3,11 +3,12 @@ module CyberarmEngine
include Common
attr_accessor :options, :global_pause
attr_reader :game_objects
attr_reader :game_objects, :timers
def initialize(options = {})
@options = options
@game_objects = []
@timers = []
@global_pause = false
window.text_input = nil unless options[:preserve_text_input]
@@ -28,6 +29,8 @@ module CyberarmEngine
def update
@game_objects.each(&:update)
@timers.each(&:update)
@timers.delete_if(&:dead?)
end
def needs_redraw?
@@ -120,5 +123,9 @@ module CyberarmEngine
def add_game_object(object)
@game_objects << object
end
def add_timer(timer)
@timers << timer
end
end
end

View File

@@ -19,5 +19,9 @@ module CyberarmEngine
@block.call if @block
end
end
def dead?
@triggered && !@looping
end
end
end

View File

@@ -1,5 +1,17 @@
module CyberarmEngine
module DSL
def every(milliseconds, &block)
element_parent.gui_state.add_timer(
CyberarmEngine::Timer.new(milliseconds, true, &block)
)
end
def after(milliseconds, &block)
element_parent.gui_state.add_timer(
CyberarmEngine::Timer.new(milliseconds, false, &block)
)
end
def flow(options = {}, &block)
container(CyberarmEngine::Element::Flow, options, &block)
end

View File

@@ -6,6 +6,7 @@ module CyberarmEngine
def initialize(options = {})
@options = options
@game_objects = []
@timers = []
@global_pause = false
@down_keys = {}