lib/cyberarm_engine/window.rb in cyberarm_engine-0.14.0 vs lib/cyberarm_engine/window.rb in cyberarm_engine-0.15.0
- old
+ new
@@ -1,32 +1,34 @@
module CyberarmEngine
class Window < Gosu::Window
IMAGES = {}
- SAMPLES= {}
- SONGS = {}
+ SAMPLES = {}
+ SONGS = {}
attr_accessor :show_cursor
+ attr_writer :exit_on_opengl_error
attr_reader :last_frame_time
def self.now
Gosu.milliseconds
end
def self.dt
- $window.last_frame_time/1000.0
+ $window.last_frame_time / 1000.0
end
- def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0/60, resizable: false)
+ def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0 / 60, resizable: false, borderless: false)
@show_cursor = false
- super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable)
+ super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable, borderless: borderless)
$window = self
- @last_frame_time = Gosu.milliseconds-1
+ @last_frame_time = Gosu.milliseconds - 1
@current_frame_time = Gosu.milliseconds
self.caption = "CyberarmEngine #{CyberarmEngine::VERSION} #{Gosu.language}"
@states = []
+ @exit_on_opengl_error = false
setup if defined?(setup)
end
def draw
@@ -35,69 +37,76 @@
def update
Stats.clear
current_state.update if current_state
- @last_frame_time = Gosu.milliseconds-@current_frame_time
+ @last_frame_time = Gosu.milliseconds - @current_frame_time
@current_frame_time = Gosu.milliseconds
end
def needs_cursor?
@show_cursor
end
def dt
- @last_frame_time/1000.0
+ @last_frame_time / 1000.0
end
+ def aspect_ratio
+ width / height.to_f
+ end
+
+ def exit_on_opengl_error?
+ @exit_on_opengl_error
+ end
+
def button_down(id)
super
current_state.button_down(id) if current_state
end
def button_up(id)
super
current_state.button_up(id) if current_state
end
- def push_state(klass, options={})
- options = {setup: true}.merge(options)
+ def push_state(klass, options = {})
+ options = { setup: true }.merge(options)
if klass.instance_of?(klass.class) && defined?(klass.options)
@states << klass
klass.setup if options[:setup]
else
@states << klass.new(options) if child_of?(klass, GameState)
@states << klass.new if child_of?(klass, Element::Container)
- current_state.setup if current_state.class == klass && options[:setup]
+ current_state.setup if current_state.instance_of?(klass) && options[:setup]
end
end
private def child_of?(input, klass)
- input.ancestors.detect {|c| c == klass}
+ input.ancestors.detect { |c| c == klass }
end
def current_state
@states.last
end
def previous_state
- if @states.size > 1 && state = @states[@states.size-2]
- return state
- else
- return nil
+ if @states.size > 1 && state = @states[@states.size - 2]
+ state
end
end
def pop_state
@states.pop
end
# Sourced from https://gist.github.com/ippa/662583
- def draw_circle(cx,cy,r, z = 9999,color = Gosu::Color::GREEN, step = 10)
+ def draw_circle(cx, cy, r, z = 9999, color = Gosu::Color::GREEN, step = 10)
0.step(360, step) do |a1|
a2 = a1 + step
- draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r), cy + Gosu.offset_y(a2, r), color, z)
+ draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r),
+ cy + Gosu.offset_y(a2, r), color, z)
end
end
end
end