lib/gloo/objs/basic/integer.rb in gloo-3.3.0 vs lib/gloo/objs/basic/integer.rb in gloo-3.4.0
- old
+ new
@@ -8,10 +8,11 @@
module Objs
class Integer < Gloo::Core::Obj
KEYWORD = 'integer'.freeze
KEYWORD_SHORT = 'int'.freeze
+ DEFAULT_RANDOM_RANGE = 100
#
# The name of the object type.
#
def self.typename
@@ -44,11 +45,11 @@
#
# Get a list of message names that this object receives.
#
def self.messages
- return super + %w[inc dec]
+ return super + %w[inc dec randomize]
end
#
# Increment the integer
#
@@ -65,9 +66,30 @@
def msg_dec
i = value - 1
set_value i
@engine.heap.it.set_to i
return i
+ end
+
+ #
+ # Set the value to a random number.
+ # The range is 0 to DEFAULT_RANDOM_RANGE (not including the range).
+ # To model a 6-sided die,
+ # set range to 6 and add 1 to the result.
+ #
+ def msg_randomize
+ range = DEFAULT_RANDOM_RANGE
+
+ # Check for a range.
+ if @params&.token_count&.positive?
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
+ range = expr.evaluate
+ end
+
+ rand_value = rand( range )
+ set_value rand_value
+ @engine.heap.it.set_to rand_value
+ return rand_value
end
end
end
end