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)