mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-15 07:32:35 +00:00
108 lines
2.5 KiB
Ruby
108 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class IMICFPS
|
|
class Window < CyberarmEngine::Window
|
|
attr_accessor :needs_cursor
|
|
attr_reader :renderer, :scene, :config, :director, :console, :delta_time
|
|
|
|
def setup
|
|
I18n.load_path << Dir["#{GAME_ROOT_PATH}/locales/*.yml"]
|
|
I18n.default_locale = :en
|
|
language = Gosu.language.split("_").first.to_sym
|
|
I18n.locale = language if I18n.available_locales.include?(language)
|
|
|
|
@needs_cursor = false
|
|
@cursor = Gosu::Image.new("#{IMICFPS::GAME_ROOT_PATH}/static/cursors/pointer.png")
|
|
@number_of_vertices = 0
|
|
|
|
self.caption = "#{IMICFPS::NAME} v#{IMICFPS::VERSION} (#{IMICFPS::RELEASE_NAME})"
|
|
|
|
@director = Networking::Director.new
|
|
|
|
@config = CyberarmEngine::ConfigFile.new(file: "#{IMICFPS::GAME_ROOT_PATH}/data/config.json")
|
|
@show_console = false
|
|
@console = Console.new
|
|
CyberarmEngine::Console::Command.setup
|
|
@console.stdin("=== #{IMICFPS::NAME} v#{IMICFPS::VERSION} (#{IMICFPS::RELEASE_NAME}) ===\n\n")
|
|
SettingsMenu.set_defaults
|
|
|
|
@renderer = Renderer.new
|
|
@scene = TurnTableScene.new
|
|
@overlay = Overlay.new
|
|
|
|
@canvas_size = Vector.new(width, height)
|
|
|
|
at_exit do
|
|
@config.save!
|
|
end
|
|
|
|
push_state(CyberarmEngine::IntroState, forward: Boot)
|
|
end
|
|
|
|
def input_hijack=(hijacker)
|
|
@input_hijacker = hijacker
|
|
|
|
InputMapper.reset_keys
|
|
end
|
|
|
|
def needs_cursor?
|
|
false
|
|
end
|
|
|
|
def draw
|
|
super
|
|
|
|
@console.draw if @show_console
|
|
@overlay.draw
|
|
draw_cursor if needs_cursor
|
|
|
|
_canvas_size = Vector.new(width, height)
|
|
if @canvas_size != _canvas_size
|
|
@renderer = Renderer.new # @renderer.canvas_size_changed
|
|
@canvas_size = _canvas_size
|
|
end
|
|
end
|
|
|
|
def draw_cursor
|
|
@cursor.draw(mouse_x, mouse_y, Float::INFINITY)
|
|
end
|
|
|
|
def update
|
|
super
|
|
|
|
@console.update if @show_console
|
|
@overlay.update
|
|
SoundManager.update
|
|
end
|
|
|
|
def close
|
|
push_state(Close)
|
|
end
|
|
|
|
def button_down(id)
|
|
if @show_console
|
|
@console.button_down(id)
|
|
elsif @input_hijacker
|
|
@input_hijacker.button_down(id)
|
|
else
|
|
super
|
|
end
|
|
|
|
if id == Gosu::KbBacktick
|
|
@show_console ? @console.blur : @console.focus && InputMapper.reset_keys
|
|
@show_console = !@show_console
|
|
end
|
|
end
|
|
|
|
def button_up(id)
|
|
if @show_console
|
|
@console.button_up(id)
|
|
elsif @input_hijacker
|
|
@input_hijacker.button_up(id)
|
|
else
|
|
super
|
|
end
|
|
end
|
|
end
|
|
end
|