Skip to content

Commit e20cb6c

Browse files
authored
Merge pull request #43 from poslogithub/dev
ドラフトピック、シールド開封の実況を追加
2 parents ce6cf52 + 1a2e87a commit e20cb6c

11 files changed

Lines changed: 348 additions & 45 deletions

File tree

MayhemFamiliar/CardData.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Text.RegularExpressions;
33
using System.Globalization;
44
using System;
5+
using System.Collections.Generic;
56

67
namespace MayhemFamiliar
78
{
@@ -74,6 +75,26 @@ public string GetCardNameByLocId(int locId)
7475
return loc;
7576
}
7677

78+
public int GetRarityByGrpId(int grpId)
79+
{
80+
string tableName = $"Cards";
81+
string rarityColumnName = "Rarity";
82+
string sql = $"SELECT {rarityColumnName} FROM {tableName} WHERE GrpId = {grpId}";
83+
int rarity = -1;
84+
using (var cmd = new SQLiteCommand(sql, _connection))
85+
{
86+
using (var reader = cmd.ExecuteReader())
87+
{
88+
if (reader.Read())
89+
{
90+
rarity = (int)reader[rarityColumnName];
91+
}
92+
}
93+
}
94+
95+
return rarity;
96+
}
97+
7798
private static string RemoveBrackets(string text)
7899
{
79100
if (string.IsNullOrEmpty(text))

MayhemFamiliar/Config.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ public class Speaker
8080
{ PlayerWho.Opponent, "" },
8181
};
8282
public string SeikaSay2Exe = "SeikaSay2.exe";
83+
public bool SpeakDraftPick { get; set; } = true;
84+
public bool SpeakSealedOpen { get; set; } = true;
8385
}
8486
public Speaker SpeakerSettings { get; set; } = new Speaker();
8587
}

MayhemFamiliar/DialogueGenerator.cs

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,21 @@ private void ProcessEvent(string eventString)
7272
switch (verb)
7373
{
7474
case GameStage.Start:
75+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
7576
dialogue = "対戦よろしくお願いします。";
7677
break;
7778
case GreMessageType.MulliganReq:
79+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
7880
dialogue = "マリガンチェック。";
7981
break;
8082
case GameStage.GameOver:
83+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
8184
dialogue = "対戦ありがとうございました。";
8285
break;
86+
case TurnInfo.PhaseCombat:
87+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
88+
dialogue = "コンバット。";
89+
break;
8390
}
8491
if (!string.IsNullOrEmpty(dialogue))
8592
{
@@ -95,7 +102,12 @@ private void ProcessEvent(string eventString)
95102
}
96103
switch (verb)
97104
{
105+
case DraftKey.Pick:
106+
if (!Program._config.SpeakerSettings.SpeakDraftPick) return;
107+
dialogue = $"{string.Join(" ", tokens.Skip(2))}をピック。";
108+
break;
98109
case AnnotationType.NewTurnStarted:
110+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
99111
int turnNumber;
100112
try
101113
{
@@ -126,6 +138,7 @@ private void ProcessEvent(string eventString)
126138
}
127139
break;
128140
case AnnotationType.TokenCreated:
141+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
129142
string tokenName = RemoveObjectiveDelimiters(tokens[2]);
130143
switch (subject)
131144
{
@@ -149,15 +162,64 @@ private void ProcessEvent(string eventString)
149162
return;
150163
}
151164

152-
// トークン数 = 4(ライフ増減)
165+
// トークン数 = 4
153166
if (tokens.Length < 4)
154167
{
155168
Logger.Instance.Log($"{this.GetType().Name}: {verb} イベントのトークン数が4未満: {eventString}", LogLevel.Error);
156169
return;
157170
}
158171
switch (verb)
159172
{
160-
case AnnotationType.ModifiedLife:
173+
case DraftKey.Pack:
174+
if (!Program._config.SpeakerSettings.SpeakDraftPick) return;
175+
int packNum = int.Parse(tokens[2]);
176+
int pickNum = int.Parse(tokens[3]);
177+
if (packNum < 1 || pickNum < 1)
178+
{
179+
Logger.Instance.Log($"{this.GetType().Name}: パック番号またはピック番号が不正: {eventString}", LogLevel.Error);
180+
return;
181+
}
182+
if (pickNum == 1)
183+
{
184+
dialogue = $"{packNum}パック目。";
185+
}
186+
else
187+
{
188+
dialogue = $"{packNum}{pickNum}。";
189+
}
190+
break;
191+
case DraftKey.DraftRarity:
192+
if (!Program._config.SpeakerSettings.SpeakDraftPick) return;
193+
int draftRarityNum = int.Parse(tokens[2]);
194+
switch (draftRarityNum)
195+
{
196+
case 5: // 神話レア
197+
dialogue = $"神話レアは、{string.Join(" ", tokens.Skip(3))}。";
198+
break;
199+
case 4: // レア
200+
dialogue = $"レアは、{string.Join(" ", tokens.Skip(3))}。";
201+
break;
202+
default:
203+
return;
204+
}
205+
break;
206+
case SealedKey.SealedRarity:
207+
if (!Program._config.SpeakerSettings.SpeakSealedOpen) return;
208+
int sealedRarityNum = int.Parse(tokens[2]);
209+
switch (sealedRarityNum)
210+
{
211+
case 5: // 神話レア
212+
dialogue = $"神話レアは、{string.Join(" ", tokens.Skip(3))}。";
213+
break;
214+
case 4: // レア
215+
dialogue = $"レアは、{string.Join(" ", tokens.Skip(3))}。";
216+
break;
217+
default:
218+
return;
219+
}
220+
break;
221+
case AnnotationType.ModifiedLife: // ライフ増減
222+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
161223
int lifeDiff, lifeTotal;
162224
try
163225
{
@@ -224,6 +286,7 @@ private void ProcessEvent(string eventString)
224286
Logger.Instance.Log($"{this.GetType().Name}: {verb} イベントのトークン数が5未満: {eventString}", LogLevel.Error);
225287
return;
226288
}
289+
if (Program._config.SpeakerSettings.SpeakModes[subject] == Config.Speaker.SpeakModeOff) return;
227290
string objectName = RemoveObjectiveDelimiters(tokens[2]);
228291
int zoneSrcId, zoneDestId;
229292
try

0 commit comments

Comments
 (0)