Sha256: 0bf1bfac1725dfe1b2c02e0d55e8517d5ccfa0fd357a6dd2192f3fb7700e23e0

Contents?: true

Size: 1.97 KB

Versions: 2

Compression:

Stored size: 1.97 KB

Contents

module CyberarmEngine
  class GameState
    include Common

    attr_accessor :options, :global_pause
    attr_reader :game_objects

    def initialize(options = {})
      @options = options
      @game_objects = []
      @global_pause = false
      $window.text_input = nil unless options[:preserve_text_input]

      @down_keys = {}
    end

    def setup
    end

    # Called immediately after setup returns.
    # GuiState uses this to set current_theme for ToolTip
    def post_setup
    end

    def draw
      @game_objects.each(&:draw)
    end

    def update
      @game_objects.each(&:update)
    end

    def draw_bounding_box(box)
      x = box.x
      y = box.y
      max_x = box.max_x
      max_y = box.max_y

      color = Gosu::Color.rgba(255, 127, 64, 240)

      # pipe = 4
      # Gosu.draw_rect(x-width, y-height, x+(width*2), y+(height*2), color, Float::INFINITY)
      # puts "BB render: #{x}:#{y} w:#{x.abs+width} h:#{y.abs+height}"
      # Gosu.draw_rect(x, y, x.abs+width, y.abs+height, color, Float::INFINITY)

      # TOP LEFT to BOTTOM LEFT
      $window.draw_line(
        x, y, color,
        x, max_y, color,
        Float::INFINITY
      )
      # BOTTOM LEFT to BOTTOM RIGHT
      $window.draw_line(
        x, max_y, color,
        max_x, max_y, color,
        Float::INFINITY
      )
      # BOTTOM RIGHT to TOP RIGHT
      $window.draw_line(
        max_x, max_y, color,
        max_x, y, color,
        Float::INFINITY
      )
      # TOP RIGHT to TOP LEFT
      $window.draw_line(
        max_x, y, color,
        x, y, color,
        Float::INFINITY
      )
    end

    def destroy
      @options.clear
      @game_objects.clear
    end

    def button_down(id)
      @down_keys[id] = true

      @game_objects.each do |o|
        o.button_down(id)
      end
    end

    def button_up(id)
      @down_keys.delete(id)

      @game_objects.each do |o|
        o.button_up(id)
      end
    end

    def add_game_object(object)
      @game_objects << object
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cyberarm_engine-0.19.0 lib/cyberarm_engine/game_state.rb
cyberarm_engine-0.18.0 lib/cyberarm_engine/game_state.rb