Class: WhiteGold
Defined Under Namespace
Classes: Job
Constant Summary
Constants included
from Tgui
Tgui::UIntRect, Tgui::Vector2f, Tgui::Vector2u, Tgui::WIDGETS_COLLECTION
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#[](method_name) ⇒ Object
-
#fps=(fps) ⇒ Object
-
#go(next_page_id) ⇒ Object
-
#init(init_page = :main_page, fps: nil, theme: nil) ⇒ Object
-
#job(delay: nil, repeat: false, &b) ⇒ Object
-
#load_page(page_id) ⇒ Object
-
#method_missing(name, *a, **na, &b) ⇒ Object
-
#page ⇒ Object
-
#respond_to?(name) ⇒ Boolean
-
#run(init_page = :main_page, fps: nil, theme: nil, init: true) ⇒ Object
-
#timer(delay_ = nil, delay: nil, repeat: false, &b) ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *a, **na, &b) ⇒ Object
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/white_gold/master.rb', line 158
def method_missing name, *a, **na, &b
if @current_page.respond_to? name
@current_page.send(name, *a, **na, &b)
elsif @gui.respond_to? name
@gui.send(name, *a, **na, &b)
elsif @window.respond_to? name
@window.send(name, *a, **na, &b)
else
no_method_error = "method missing in Page/Gui/Window"
raise no_method_error
end
end
|
Instance Attribute Details
Returns the value of attribute gui.
86
87
88
|
# File 'lib/white_gold/master.rb', line 86
def gui
@gui
end
|
#next_page_id ⇒ Object
Returns the value of attribute next_page_id.
85
86
87
|
# File 'lib/white_gold/master.rb', line 85
def next_page_id
@next_page_id
end
|
Instance Method Details
#[](method_name) ⇒ Object
12
13
14
|
# File 'lib/white_gold/master.rb', line 12
def [](method_name)
method(method_name)
end
|
#fps=(fps) ⇒ Object
16
17
18
|
# File 'lib/white_gold/master.rb', line 16
def fps=(fps)
@frame_delay = 1.0 / fps
end
|
#go(next_page_id) ⇒ Object
92
93
94
|
# File 'lib/white_gold/master.rb', line 92
def go next_page_id
@next_page_id = next_page_id
end
|
#init(init_page = :main_page, fps: nil, theme: nil) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/white_gold/master.rb', line 20
def init init_page = :main_page, fps: nil, theme: nil
@window = Window.new
@gui = Gui.new window
@preserved_pages = {}
Theme.default = theme if theme
self.fps = fps if fps
@frame_delay = 0.015 if !@frame_delay
@jobs = []
@next_page_id = init_page
load_page init_page
end
|
#job(delay: nil, repeat: false, &b) ⇒ Object
143
144
145
146
147
|
# File 'lib/white_gold/master.rb', line 143
def job delay: nil, repeat: false, &b
job = Job.new delay:, repeat:, &b
@jobs << job
job
end
|
88
89
90
|
# File 'lib/white_gold/master.rb', line 88
def page
@current_page
end
|
#respond_to?(name) ⇒ Boolean
154
155
156
|
# File 'lib/white_gold/master.rb', line 154
def respond_to? name
super || @current_page.respond_to?(name)
end
|
#run(init_page = :main_page, fps: nil, theme: nil, init: true) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/white_gold/master.rb', line 32
def run init_page = :main_page, fps: nil, theme: nil, init: true
self.init init_page, fps: fps, theme: theme if init
next_frame_time = Time.now
while @gui.self_active?
@gui.self_poll_events
now = Time.now
if @current_page_id != @next_page_id
if @current_page_id
page = @preserved_pages[@current_page_id]
@gui.self_remove page
page.disconnect
@preserved_pages.delete(@current_page_id)
end
load_page @next_page_id
end
@jobs.filter!(&:audit)
sleep next_frame_time - now if next_frame_time > now
@gui.self_draw
next_frame_time += @frame_delay
end
end
|
#timer(delay_ = nil, delay: nil, repeat: false, &b) ⇒ Object
149
150
151
152
|
# File 'lib/white_gold/master.rb', line 149
def timer delay_ = nil, delay: nil, repeat: false, &b
job delay: delay || delay_, repeat: do
end.on_done &b
end
|