class GameWindow

The Gosu::Window is always the “environment” of our game It also provides the pulse of our game

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method
# File lib/game_2d/game_window.rb, line 15
def initialize(opts = {})
  super(SCREEN_WIDTH, SCREEN_HEIGHT, false, 16)

  @background_image = Gosu::Image.new(self, media("Space.png"), true)
  @animation = Hash.new do |h, k|
    h[k] = Gosu::Image::load_tiles(
      self, k, CELL_WIDTH_IN_PIXELS, CELL_WIDTH_IN_PIXELS, false)
  end

  @cursor_anim = @animation[media("crosshair.gif")]

  @beep = Gosu::Sample.new(self, media("Beep.wav")) # not used yet

  @font = Gosu::Font.new(self, Gosu::default_font_name, 20)

  initialize_from_hash(opts)
end

Public Instance Methods

draw() click to toggle source
# File lib/game_2d/game_window.rb, line 33
def draw
  @background_image.draw(0, 0, ZOrder::Background)
  @dialog.draw if @dialog
  @message.draw if @message
  @menu.draw if @menu

  cursor_img = @cursor_anim[Gosu::milliseconds / 50 % @cursor_anim.size]
  cursor_img.draw(
    mouse_x - cursor_img.width / 2.0,
    mouse_y - cursor_img.height / 2.0,
    ZOrder::Cursor,
    1, 1, Gosu::Color::WHITE, :add)

  return unless p = player

  @camera_x, @camera_y = space.good_camera_position_for(p, SCREEN_WIDTH, SCREEN_HEIGHT)
  translate(-@camera_x, -@camera_y) do
    (space.players + space.npcs).each {|entity| entity.draw(self) }
  end

  space.entities_at_point(*mouse_coords).each_with_index do |entity, line|
    @font.draw(entity.to_s, 10, 10 * (line * 2 + 1), ZOrder::Text, 1.0, 1.0, Gosu::Color::YELLOW)
  end
end
draw_box_at(x1, y1, x2, y2, c) click to toggle source
# File lib/game_2d/game_window.rb, line 58
def draw_box_at(x1, y1, x2, y2, c)
  draw_quad(x1, y1, c, x2, y1, c, x2, y2, c, x1, y2, c, ZOrder::Highlight)
end