「BCDice/内部処理/BCDiceクラス」の版間の差分

提供: TRPGツール開発・運用Wiki
ナビゲーションに移動 検索に移動
52行目: 52行目:
 
#* <code>Open Dice!</code> や <code>Open Plot!</code>、<code>Set</code> 系は指定されたメッセージそのまま。
 
#* <code>Open Dice!</code> や <code>Open Plot!</code>、<code>Set</code> 系は指定されたメッセージそのまま。
 
#* それ以外の場合、空白の前まで。
 
#* それ以外の場合、空白の前まで。
# 括弧内前処理を行う。「[[#parren_killer]]」を参照。結果を `@messageOriginal` に記録する。
+
# 括弧内前処理を行う。「[[#parren_killer]]」を参照。結果を <code>@messageOriginal</code> に記録する。
# 括弧内前処理の結果に対して、アルファベットを大文字にする。これを次に実行させるメッセージとして `@message` に記録する。
+
# 括弧内前処理の結果に対して、アルファベットを大文字にする。これを次に実行させるメッセージとして <code>@message</code> に記録する。
  
 
<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">

2019年6月29日 (土) 01:25時点における版

BCDiceの司令塔といえるクラス。ゲームの指定、ダイスロールなどの主要な操作は、このクラスを介して行う。

setGameByTitle

https://github.com/torgtaitai/BCDice/blob/86b8dd03ae00f8ea6a8787f9f514a5d83b2e3d41/src/bcdiceCore.rb#L1778-L1801

指定されたゲーム名のダイスボットを使うように設定する。

  1. カード機能を初期化する。
  2. 指定されたゲーム名のダイスボットを設定する。
    1. 設定後の処理を行う(diceBot.postSet)。
  3. ゲームを設定したことを示すメッセージを返す。
# 指定したタイトルのゲームを設定する
# @param [String] gameTitle ゲームタイトル
# @return [String] ゲームを設定したことを示すメッセージ
def setGameByTitle(gameTitle)
  debug('setGameByTitle gameTitle', gameTitle)

  @cardTrader.initValues

  loader = DiceBotLoaderList.find(gameTitle)
  diceBot =
    if loader
      loader.loadDiceBot
    else
      DiceBotLoader.loadUnknownGame(gameTitle) || DiceBot.new
    end

  setDiceBot(diceBot)
  diceBot.postSet

  message = "Game設定を#{diceBot.gameName}に設定しました"
  debug( 'setGameByTitle message', message )

  return message
end

setMessage

https://github.com/torgtaitai/BCDice/blob/86b8dd03ae00f8ea6a8787f9f514a5d83b2e3d41/src/bcdiceCore.rb#L146-L163

ダイスボットに実行させるメッセージを設定する。

  1. メッセージのパターンに合わせて指定されたメッセージを加工する。
    • Open Dice!Open Plot!Set 系は指定されたメッセージそのまま。
    • それ以外の場合、空白の前まで。
  2. 括弧内前処理を行う。「#parren_killer」を参照。結果を @messageOriginal に記録する。
  3. 括弧内前処理の結果に対して、アルファベットを大文字にする。これを次に実行させるメッセージとして @message に記録する。
def setMessage(message)
  # 設定で変化し得るためopen系はここで正規表現を作る
  openPattern = /\A\s*(?:#{$OPEN_DICE}|#{$OPEN_PLOT})\s*\z/i

  messageToSet =
    case message
    when openPattern, SET_COMMAND_PATTERN
      message
    else
      # 空白が含まれる場合、最初の部分だけを取り出す
      message.split(/\s/, 2).first
    end
  debug("setMessage messageToSet", messageToSet)

  @messageOriginal = parren_killer(messageToSet)
  @message = @messageOriginal.upcase
  debug("@message", @message)
end