class AuthorEngine::TouchButton
Attributes
height[R]
width[R]
x[RW]
y[RW]
Public Class Methods
new(label:, color:, x: 0, y: 0, width:, height:, for_key: nil, &block)
click to toggle source
# File lib/author_engine/game/opal/touch_button.rb, line 5 def initialize(label:, color:, x: 0, y: 0, width:, height:, for_key: nil, &block) @label, @color, @x, @y, @width, @height = label, color, x, y, width, height @for_key = for_key @block = block @buttons = AuthorEngine::Part::OpalInput::BUTTONS @key_states = AuthorEngine::Part::OpalInput::KEY_STATES @game = AuthorEngine::GameRunner.instance.game @game_width = 128 * @game.authorengine_scale @game_x = `window.innerWidth/2 - #{@game_width/2}` end
Public Instance Methods
active()
click to toggle source
# File lib/author_engine/game/opal/touch_button.rb, line 49 def active @key_states[@buttons[@for_key]] = true end
draw()
click to toggle source
# File lib/author_engine/game/opal/touch_button.rb, line 18 def draw `#{@game.authorengine_canvas_context}.fillStyle = #{@color}` `#{@game.authorengine_canvas_context}.fillRect(#{@x}, #{@y}, #{@width}, #{@height})` font = "#{@height}px Connection, Consolas" `#{@game.authorengine_canvas_context}.font = #{font}` `#{@game.authorengine_canvas_context}.fillStyle = "white"` `#{@game.authorengine_canvas_context}.textBaseline = "top"` `#{@game.authorengine_canvas_context}.fillText(#{@label}, #{@x}, #{@y}, #{@width})` end
inactive()
click to toggle source
# File lib/author_engine/game/opal/touch_button.rb, line 53 def inactive @key_states[@buttons[@for_key]] = false end
trigger?(touches)
click to toggle source
# File lib/author_engine/game/opal/touch_button.rb, line 29 def trigger?(touches) triggered = false touches.detect do |id, touch| if touch.x.between?(@x, @x+@width) && touch.y.between?(@y, @y+@height) triggered = true end end if @for_key active if triggered inactive unless triggered else @block.call if @block && triggered end return triggered end