lib/core_ext/numeric.rb
class Numeric
#
# Set the tick interval which is used in conversion of seconds to
# ticks.
#
def self.tick_interval=(value)
@tick_interval = value.to_f
end
#
# @return the game tick interval. By default the tick interval is 16.66666
#
def self.tick_interval
@tick_interval.to_f == 0 ? 16.666666 : @tick_interval.to_f
end
#
# Provides the suffix 'second' which will translate seconds to
# game ticks. This is to allow for a number of seconds to be expressed
# in situations where game ticks are used (e.g. animations).
#
# @example Expressing an animation that takes place over 3 seconds (~180 ticks)
#
# class ExampleScene < Metro::Scene
# draws :title
#
# animate :title, to: { x: 320, y: 444 }, interval: 3.seconds
# end
#
def second
(self * 1000 / Numeric.tick_interval).floor
end
alias_method :seconds, :second
alias_method :secs, :second
alias_method :sec, :second
#
# Provides the suffix 'tick' which will simply express the number
# with a vanity suffix.
#
# @example Expressing an animation that takes place over 60 game ticks
#
# class ExampleScene < Metro::Scene
# draws :title
#
# animate :title, to: { x: 320, y: 444 }, interval: 60.ticks
# end
#
def tick
self
end
alias_method :ticks, :tick
def radians
self
end
def degrees
self
end
# Convert the specified numeric value in radians to degrees
def to_degrees
self * 180 / Math::PI
end
# Convert the specified numeric value in degrees to radians
def to_radians
self * Math::PI / 180
end
end