module Smalruby3::SpriteMethod::Motion

Motion category methods

Public Instance Methods

direction=(degrees) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 35
def direction=(degrees)
  @direction = calc_direction(degrees)

  sync_direction
end
go_to(destination) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 21
def go_to(destination)
  if destination == "_random_"
    new_x = rand(SmalrubyToDXRuby::SCREEN_LEFT..SmalrubyToDXRuby::SCREEN_RIGHT)
    new_y = rand(SmalrubyToDXRuby::SCREEN_BOTTOM..SmalrubyToDXRuby::SCREEN_TOP)
    new_pos = [new_x, new_y]
  elsif destination == "_mouse_"
    new_pos = calc_mouse_position
  elsif destination.is_a?(Array)
    new_pos = destination
  end
  self.position = new_pos
  direction
end
move(steps) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 7
def move(steps)
  self.position = [x + @vector[:x] * steps, y + @vector[:y] * steps]
  position
end
point_towards(towards) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 41
def point_towards(towards)
  tx = sprite(towards).x
  ty = sprite(towards).y
  dx = tx - x
  dy = ty - y
  rad = Math.atan2(dx, dy)
  self.direction = rad * 180.0 / Math::PI
end
position=(val) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 62
def position=(val)
  @x = calc_x(val[0])
  @y = calc_y(val[1])

  sync_position
end
turn_left(degrees) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 17
def turn_left(degrees)
  turn_right(-degrees)
end
turn_right(degrees) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 12
def turn_right(degrees)
  self.direction += degrees
  direction
end
x=(val) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 50
def x=(val)
  @x = calc_x(val)

  sync_position
end
y=(val) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 56
def y=(val)
  @y = calc_y(val)

  sync_position
end

Private Instance Methods

calc_direction(degrees) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 91
def calc_direction(degrees)
  d = degrees % 360
  if d > 180
    d -= 360
  end
  d
end
calc_mouse_position() click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 99
def calc_mouse_position
  dx_mouse_x = Input.mousePosX
  dx_mouse_y = Input.mousePosY
  dx_ruby_to_smalruby = DXRubyToSmalruby.new
  dx_ruby_to_smalruby.position(dx_mouse_x, dx_mouse_y)
end
calc_x(val) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 71
def calc_x(val)
  if val < SmalrubyToDXRuby::SCREEN_LEFT
    SmalrubyToDXRuby::SCREEN_LEFT
  elsif val > SmalrubyToDXRuby::SCREEN_RIGHT
    SmalrubyToDXRuby::SCREEN_RIGHT
  else
    val
  end
end
calc_y(val) click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 81
def calc_y(val)
  if val < SmalrubyToDXRuby::SCREEN_BOTTOM
    SmalrubyToDXRuby::SCREEN_BOTTOM
  elsif val > SmalrubyToDXRuby::SCREEN_TOP
    SmalrubyToDXRuby::SCREEN_TOP
  else
    val
  end
end