module BCDice::GameSystem::SRS::ClassMethods

成功判定のエイリアスコマンド定義用のクラスメソッドを提供するモジュール

Attributes

aliases_re_for_srs_roll_with_target_value[R]

目標値あり成功判定のエイリアスコマンドの正規表現を返す @return [Regexp, nil]

aliases_re_for_srs_roll_without_target_value[R]

目標値なし成功判定のエイリアスコマンドの正規表現を返す @return [Regexp, nil]

help_message[R]

ダイスボットの説明文を返す @return [String]

Public Instance Methods

clear_aliases_for_srs_roll() click to toggle source

成功判定のエイリアスコマンドを未設定にする @return [self]

# File lib/bcdice/game_system/SRS.rb, line 97
def clear_aliases_for_srs_roll
  @aliases_re_for_srs_roll_with_target_value = nil
  @aliases_re_for_srs_roll_without_target_value = nil
  @help_message = SRS::DEFAULT_HELP_MESSAGE

  return self
end
set_aliases_for_srs_roll(*aliases) click to toggle source

成功判定のエイリアスコマンドを設定する @param [String] aliases エイリアスコマンド(可変長引数) @return [self]

エイリアスコマンドとして指定した文字列がコマンドの先頭にあれば、 実行時にそれが2D6に置換されるようになる。

# File lib/bcdice/game_system/SRS.rb, line 71
def set_aliases_for_srs_roll(*aliases)
  aliases_upcase = aliases.map(&:upcase)
  aliases_part = aliases_upcase
                 .map { |a| Regexp.escape(a) }
                 .join('|')

  @aliases_re_for_srs_roll_with_target_value = Regexp.new(
    '\A' \
    "(?:#{aliases_part})" \
    '((?:[-+][-+\d]+)?>=\d+(?:\[\d*(?:,\d+)?\])?)\z'
  )

  @aliases_re_for_srs_roll_without_target_value = Regexp.new(
    '\A' \
    "(?:#{aliases_part})" \
    '([-+][-+\d]+)?(\[\d*(?:,\d+)?\])?\z'
  )

  prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase)
  @help_message = concatenate_help_messages

  return self
end

Private Instance Methods

concatenate_help_messages() click to toggle source

ダイスボットの説明文を結合する @return [String] 結合された説明文

# File lib/bcdice/game_system/SRS.rb, line 132
def concatenate_help_messages
  "#{SRS::HELP_MESSAGE_1}" \
    "#{@help_msg_for_aliases_for_srs_roll_with_target_value}\n" \
    "#{SRS::HELP_MESSAGE_2}" \
    "#{@help_msg_for_aliases_for_srs_roll_without_target_value}\n" \
    "#{SRS::HELP_MESSAGE_3}"
end
prepare_help_msg_for_aliases_for_srs_roll(aliases) click to toggle source

成功判定のエイリアスコマンドの説明文を用意する @param [Array<String>] aliases エイリアスコマンドの配列 @return [self] @todo 現在は2文字のエイリアスコマンドに幅を合わせてある。

エイリアスコマンドの文字数が変わる場合があれば、位置を調整するコードが
必要。
# File lib/bcdice/game_system/SRS.rb, line 113
def prepare_help_msg_for_aliases_for_srs_roll(aliases)
  @help_msg_for_aliases_for_srs_roll_with_target_value =
    aliases
    .map { |a| "  例) #{a}+2>=10     2d6+2>=10と同じ(#{a}が2D6のショートカットコマンド)\n" }
    .join()

  @help_msg_for_aliases_for_srs_roll_without_target_value =
    aliases
    .map do |a|
      "  例) #{a}      2d6[]と同じ(#{a}が2D6のショートカットコマンド)\n" \
      "  例) #{a}+2[12,4]  2d6+2[12,4]と同じ(#{a}が2D6のショートカットコマンド)\n"
    end
    .join()

  return self
end