shawn42/gamebox

View on GitHub
lib/gamebox/gamebox_application.rb

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env ruby
$: << "#{File.dirname(__FILE__)}/../config"

begin
  # optional file
  require "environment"
rescue LoadError => err
end

class GameboxApp
  attr_reader :context, :game

  def self.run(argv,env)
    GameboxApp.new.start argv, env
  end

  def initialize
    @context = Conject.default_object_context
  end

  def start(argv,env)
    setup(argv,env)
    main_loop
    shutdown
  end

  def setup(argv,env)
    @game = @context[:game]
    @game.configure
    self.class.post_setup_handlers.each { |handler| handler.setup(argv, env, @context[:config_manager]) }
  end

  def main_loop
    @input_manager = @context[:input_manager]
    @input_manager.register @game
    @input_manager.show
  end

  def shutdown ; end

  def self.register_post_setup_handler(handler)
    post_setup_handlers.push handler
  end

  def self.post_setup_handlers
    @post_setup_handlers ||= [ ]
  end

end

GameboxApp.register_post_setup_handler PostSetupHandlers::FileWatcher
GameboxApp.register_post_setup_handler PostSetupHandlers::GameboxAppAddDebugHelpers
GameboxApp.register_post_setup_handler PostSetupHandlers::PryRemoteServer

if $0 == __FILE__
  GameboxApp.run ARGV, ENV
end