「BCDice/内部処理/BCDiceクラス」の版間の差分
ナビゲーションに移動
検索に移動
Ochaochaocha3 (トーク | 投稿記録) (目次を追加する) |
Ochaochaocha3 (トーク | 投稿記録) |
||
38行目: | 38行目: | ||
return message | return message | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == setMessage == | ||
+ | |||
+ | https://github.com/torgtaitai/BCDice/blob/86b8dd03ae00f8ea6a8787f9f514a5d83b2e3d41/src/bcdiceCore.rb#L146-L163 | ||
+ | |||
+ | ダイスボットに実行させるメッセージを設定する。 | ||
+ | |||
+ | # メッセージのパターンに合わせて指定されたメッセージを加工する。 | ||
+ | #* `Open Dice!` や `Open Plot!`、`Set` 系は指定されたメッセージそのまま。 | ||
+ | #* それ以外の場合、空白の前まで。 | ||
+ | # 括弧内前処理を行う。「[[#parren_killer]]」を参照。結果を `@messageOriginal` に記録する。 | ||
+ | # 括弧内前処理の結果に対して、アルファベットを大文字にする。これを次に実行させるメッセージとして `@message` に記録する。 | ||
+ | |||
+ | <syntaxhighlight lang="ruby"> | ||
+ | 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 | end | ||
</syntaxhighlight> | </syntaxhighlight> |
2019年6月29日 (土) 01:21時点における版
BCDiceの司令塔といえるクラス。ゲームの指定、ダイスロールなどの主要な操作は、このクラスを介して行う。
- v2.02.80.01:https://github.com/torgtaitai/BCDice/blob/86b8dd03ae00f8ea6a8787f9f514a5d83b2e3d41/src/bcdiceCore.rb
setGameByTitle
- カード機能を初期化する。
- 指定されたゲーム名のダイスボットを設定する。
- 設定後の処理を行う(
diceBot.postSet
)。
- 設定後の処理を行う(
- ゲームを設定したことを示すメッセージを返す。
# 指定したタイトルのゲームを設定する
# @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
ダイスボットに実行させるメッセージを設定する。
- メッセージのパターンに合わせて指定されたメッセージを加工する。
- `Open Dice!` や `Open Plot!`、`Set` 系は指定されたメッセージそのまま。
- それ以外の場合、空白の前まで。
- 括弧内前処理を行う。「#parren_killer」を参照。結果を `@messageOriginal` に記録する。
- 括弧内前処理の結果に対して、アルファベットを大文字にする。これを次に実行させるメッセージとして `@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