Skip to content

Commit

Permalink
Trpg::Kancolle: 決定表振りコマンドの日本語版実装開始
Browse files Browse the repository at this point in the history
  • Loading branch information
koi-chan committed Aug 11, 2015
1 parent 06ff0ce commit 9f6b062
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 5 deletions.
13 changes: 12 additions & 1 deletion lib/rgrb/plugin/trpg/kancolle/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def initialize
@random = Random.new
@dice_roll_generator = DiceRoll::Generator.new
@table = {}
@table_ja = {}
@kanmusu = {}

@logger = Lumberjack::Logger.new(
Expand All @@ -33,8 +34,8 @@ def initialize
def configure(*)
super

load_tables("#{@data_path}/tables/*.yaml")
# load_kanmusu("#{@data_path}/kanmusu/*.yaml")
load_tables("#{@data_path}/tables/*.yaml")

self
end
Expand Down Expand Up @@ -63,9 +64,18 @@ def table_random(table)
# @param [String] table_name 表名
# @return [String]
def table_name_ja(table_name)
check_existence_of(table_name)
@table[table_name].name_ja
end

# 日本語の表名からアルファベットの表名を調べる
# @param [String] table_name 表名
# @return [String] 表が存在した時
# @return [nil] 表が存在しなかった時
def table_name_en(table_name)
@table_ja[table_name]
end

# 表から値を取得して返す
# @param [String] table_name 表名
# @param [Boolean] root 最初に参照する表の場合 true にする
Expand Down Expand Up @@ -134,6 +144,7 @@ def load_tables(glob_pattern)
yaml = File.read(path, encoding: 'UTF-8')
table = Table.parse_yaml(yaml)
@table[table.name] = table
@table_ja[table.name_ja] = table.name
rescue => e
@logger.error("データファイル #{path} の読み込みに失敗しました")
@logger.error(e)
Expand Down
43 changes: 39 additions & 4 deletions lib/rgrb/plugin/trpg/kancolle/irc_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ class IrcAdapter
match(/mr#{SPACES_RE}#{KANMUSU_RE}/io, method: :kanmusu_reaction)
match(/t#{SPACES_RE}#{TABLES_RE}/io, method: :table_random)

match(/娘/i, method: :kanmusu_ja, :prefix => "。艦")
match(/リアクション#{SPACES_RE}(.*)/io, method: :kanmusu_reaction_ja, :prefix => "。艦")
match(/表#{SPACES_RE}(.*)/io, method: :table_random_ja, :prefix => "。艦")

def initialize(*args)
super
prepare_generator
Expand Down Expand Up @@ -48,12 +52,12 @@ def kanmusu_reaction(m, kanmusu)
def table_random(m, tables_str)
tables_str.split(' ').each do |table|
begin
body = @generator.table_random(table)
name_ja = @generator.table_name_ja(table)
body = "<#{@generator.table_name_ja(table)}>" \
": #{@generator.table_random(table)}"
rescue TableNotFound => not_found_error
": #{table_not_found_message(not_found_error)}"
body = ": #{table_not_found_message(not_found_error)}"
end
message = "#{@header}[#{m.user.nick}]<#{name_ja}>: #{body}"
message = "#{@header}[#{m.user.nick}]#{body}"

m.target.send(message, true)
log_notice(m.target, message)
Expand All @@ -62,6 +66,37 @@ def table_random(m, tables_str)
end
end

def kanmusu_ja(m)
end

def kanmusu_reaction_ja(m, kanmusu)
end

# 日本語で決定表名を書かれたときその表を振る
# table_random の日本語コマンド用ラッパー
# @param [Cinch::Message] m メッセージ
# @param [String] tables_str_ja 決定表名のリスト
# @return [void]
def table_random_ja(m, tables_str_ja)
tables = []
tables_str_ja.split(SPACES_RE).each do |table|
tables << @generator.table_name_en(table.gsub(/表$/, ''))
end

tables_str = tables.join(' ')
return if tables_str == ''

table_random(m, tables_str)
end

# 表が見つからなかったときのメッセージを返す
# @param [TableNotFound] error エラー
# @return [String]
def table_not_found_message(error)
"「#{error.table}」なんて表は見つからないのですわっ。"
end
private :table_not_found_message

# NOTICE 送信をログに残す
# @param [Cinch::Target] target 対象
# @param [String] message メッセージ
Expand Down

0 comments on commit 9f6b062

Please sign in to comment.