Sha256: 16b60067898d771b00be69eb20ad7808e54f270bf0bbc046307f9fb221721587

Contents?: true

Size: 1.76 KB

Versions: 80

Compression:

Stored size: 1.76 KB

Contents

require 'gosu/preview'

module Gosu
  module Zen
    
    @@window_args = [800, 600, {}]
    @@options = {}
    
    def window width, height, options = nil
      if $window.nil?
        @@window_args[0] = width
        @@window_args[1] = height
        @@window_args[2].merge! options if options
      else
        raise "window size can only be set before the window is created"
      end
    end
    
    def set what, value
      if $window.nil?
        @@options[what.to_sym] = value
      else
        $window.send "#{what}=", value
      end
    end
    
    def init &body
      ZenWindow.send :define_method, :init, &body
    end
    
    def button_down id = nil, &body
      m = id ? "button_down_#{id}" : :button_down_other
      ZenWindow.send :define_method, m, &body
    end
    
    def button_up id = nil, &body
      m = id ? "button_up_#{id}" : :button_up_other
      ZenWindow.send :define_method, m, &body
    end
    
    def update &body
      ZenWindow.send :define_method, :update, &body
    end
    
    def draw &body
      ZenWindow.send :define_method, :draw, &body
    end
    
    def run!
      window = ZenWindow.new *@@window_args
      @@options.each do |opt, value|
        window.send "#{opt}=", value
      end
      window.show
    end
    
    def Zen.included mod
      at_exit { run! unless $! }
    end
    
  end
  
  class ZenWindow < Window
    def initialize *args
      super
      init
    end
    
    def init
    end
    
    def button_down id
      m = :"button_down_#{id}"
      respond_to?(m) ? send(m) : button_down_other(id)
    end
    
    def button_up id
      m = :"button_up_#{id}"
      respond_to?(m) ? send(m) : button_up_other(id)
    end
    
    def button_down_other id
    end
    
    def button_up_other id
    end
    
  end
end

Version data entries

80 entries across 80 versions & 1 rubygems

Version Path
gosu-1.0.0.pre2 lib/gosu/zen.rb
gosu-1.0.0.pre1 lib/gosu/zen.rb
gosu-0.15.2 lib/gosu/zen.rb
gosu-0.15.1 lib/gosu/zen.rb
gosu-0.15.0 lib/gosu/zen.rb
gosu-0.14.6.pre1 lib/gosu/zen.rb
gosu-0.14.5 lib/gosu/zen.rb
gosu-0.14.4 lib/gosu/zen.rb
gosu-0.14.4.pre2 lib/gosu/zen.rb
gosu-0.14.3.pre1 lib/gosu/zen.rb
gosu-0.14.3 lib/gosu/zen.rb
gosu-0.14.0 lib/gosu/zen.rb
gosu-0.14.0.pre2 lib/gosu/zen.rb
gosu-0.13.3 lib/gosu/zen.rb
gosu-0.13.2 lib/gosu/zen.rb
gosu-0.13.1 lib/gosu/zen.rb
gosu-0.13.0 lib/gosu/zen.rb
gosu-0.12.1 lib/gosu/zen.rb
gosu-0.12.0 lib/gosu/zen.rb
gosu-0.11.4.pre3 lib/gosu/zen.rb