lib/fantasy/global.rb in fantasy-0.1.5.1 vs lib/fantasy/global.rb in fantasy-0.1.7
- old
+ new
@@ -13,11 +13,11 @@
attr_accessor :background
attr_accessor :game
attr_reader :frame_time # delta_time
- attr_reader :pixel_font
+ attr_reader :pixel_fonts
attr_reader :references
attr_reader :camera
attr_reader :game_state
def initialize
@@ -28,17 +28,25 @@
@backgrounds = []
@tile_maps = []
@clocks = []
@last_frame_at = Time.now
@debug = false
- @pixel_font = Gosu::Font.new(20, { name: "#{__dir__}/../../fonts/VT323-Regular.ttf" } )
+
+ @pixel_fonts = {}
+ @pixel_fonts["small"] = Gosu::Font.new(20, { name: "#{__dir__}/../../fonts/VT323-Regular.ttf" } )
+ @pixel_fonts["medium"] = Gosu::Font.new(40, { name: "#{__dir__}/../../fonts/VT323-Regular.ttf" } )
+ @pixel_fonts["big"] = Gosu::Font.new(60, { name: "#{__dir__}/../../fonts/VT323-Regular.ttf" } )
+ @pixel_fonts["huge"] = Gosu::Font.new(100, { name: "#{__dir__}/../../fonts/VT323-Regular.ttf" } )
+
@d_key_pressed = false
@references = OpenStruct.new
@camera = Camera.new(position: Coordinates.zero)
@game_state = Global.presentation_proc.nil? ? "game" : "presentation"
@scene_started_at = Time.now
+ @background = Color.new(r: 0, g: 0, b: 0)
+
if @presentation_proc.nil?
on_presentation { Global.default_on_presentation }
end
if @game_proc.nil?
@@ -106,10 +114,14 @@
@actors.clear
@hud_texts.clear
@hud_images.clear
@backgrounds.clear
@tile_maps.clear
- @clocks.reject(&:persistent?).each(&:stop)
+
+ @clocks.reject(&:persistent?).each do |clock|
+ clock.stop unless clock.thread == Thread.current # no stop current Thread
+ end
+
@background = Color.new(r: 0, g: 0, b: 0)
end
def mouse_position
Coordinates.new(Global.game.mouse_x, Global.game.mouse_y)