Class: BCDice::CommonCommand::AddDice::Node::DiceRoll

Inherits:
Object
  • Object
show all
Defined in:
lib/bcdice/common_command/add_dice/node.rb

Overview

ダイスロールのノード

Direct Known Subclasses

ImplicitSidesDiceRoll

Instance Method Summary collapse

Constructor Details

#initialize(times, sides) ⇒ DiceRoll

ノードを初期化する

Parameters:

  • times (Number)

    ダイスを振る回数のノード

  • sides (Number)

    ダイスの面数のノード



377
378
379
380
381
382
383
# File 'lib/bcdice/common_command/add_dice/node.rb', line 377

def initialize(times, sides)
  @times = times
  @sides = sides

  # ダイスを振った結果の出力
  @text = nil
end

Instance Method Details

#eval(game_system, randomizer) ⇒ Integer

ノードを評価する(ダイスを振る)

評価結果は出目の合計値になる。出目はランダマイザに記録される。

Parameters:

Returns:

  • (Integer)

    評価結果(出目の合計値)



392
393
394
395
396
397
398
399
400
401
402
# File 'lib/bcdice/common_command/add_dice/node.rb', line 392

def eval(game_system, randomizer)
  times = @times.eval(game_system, nil)
  sides = eval_sides(game_system)

  dice_list = randomizer.roll(times, sides)

  total = dice_list.sum()
  @text = "#{total}[#{dice_list.join(',')}]"

  return total
end

#expr(game_system) ⇒ String

文字列に変換する

Returns:

  • (String)


411
412
413
414
415
416
# File 'lib/bcdice/common_command/add_dice/node.rb', line 411

def expr(game_system)
  times = @times.eval(game_system, nil)
  sides = eval_sides(game_system)

  "#{times}D#{sides}"
end

#include_dice?Boolean

Returns:

  • (Boolean)


405
406
407
# File 'lib/bcdice/common_command/add_dice/node.rb', line 405

def include_dice?
  true
end

#outputString

メッセージへの出力を返す

Returns:

  • (String)


420
421
422
# File 'lib/bcdice/common_command/add_dice/node.rb', line 420

def output
  @text
end

#s_expString

ノードのS式を返す

Returns:

  • (String)


426
427
428
# File 'lib/bcdice/common_command/add_dice/node.rb', line 426

def s_exp
  "(DiceRoll #{@times.s_exp} #{@sides.s_exp})"
end