Skip to content

Commit

Permalink
・[add] 川崎/船橋/盛岡レース場を追加
Browse files Browse the repository at this point in the history
・[add] SkillLibrary.jsonにスキル追加
・[add] UmaMusumeLibraryMainStory.json にグランドライブのイベントを追加
・[add] ConvertUmaMusumeLibrary.py - 大成功 / 成功 (/ 失敗) のみの選択肢をイベントリストから削除する処理を追加
・[update]UmaMusumeLibrary.json更新 2022-11-14
  • Loading branch information
amate committed Nov 14, 2022
1 parent 4ba3e4f commit e5f1e4b
Show file tree
Hide file tree
Showing 17 changed files with 43,457 additions and 24,690 deletions.
2 changes: 1 addition & 1 deletion UmaCruise/AboutDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class PreviewWindow;
#define DEBUG_STRING
#endif

constexpr LPCWSTR kAppVersion = L"v1.19" DEBUG_STRING;
constexpr LPCWSTR kAppVersion = L"v1.20" DEBUG_STRING;

class CAboutDlg : public CDialogImpl<CAboutDlg>, DarkModeUI<CAboutDlg>
{
Expand Down
2 changes: 1 addition & 1 deletion UmaCruise/RaceDateLibrary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ bool RaceDateLibrary::LoadRaceDataLibrary()
};
auto funcLocationFlagFromText = [](const std::string& text) -> Race::Location {
LPCSTR locationNames[Race::Location::kMaxLocationCount] = {
u8"札幌", u8"函館", u8"福島", u8"新潟", u8"東京", u8"中山", u8"中京", u8"京都", u8"阪神", u8"小倉", u8"大井"
u8"札幌", u8"函館", u8"福島", u8"新潟", u8"東京", u8"中山", u8"中京", u8"京都", u8"阪神", u8"小倉", u8"大井", u8"川崎", u8"船橋", u8"盛岡"
};
for (int i = 0; i < Race::Location::kMaxLocationCount; ++i) {
LPCSTR location = locationNames[i];
Expand Down
6 changes: 5 additions & 1 deletion UmaCruise/RaceDateLibrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,11 @@ class RaceDateLibrary
kHanshin = 1 << 20,
kOgura = 1 << 21,
kOoi = 1 << 22,
kMaxLocationCount = 11,
kKawasaki = 1 << 23,
kFunabasi = 1 << 24,
kMorioka = 1 << 25,

kMaxLocationCount = 14,
};
Location locationFlag;
std::vector<std::wstring> date; // 開催日
Expand Down
4 changes: 2 additions & 2 deletions UmaCruise/RaceListWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ LRESULT RaceListWindow::OnInitDialog(UINT, WPARAM, LPARAM, BOOL&)
m_raceListView.InsertColumn(nItem, &lvc);
};
funcAddColumn(L"開催日", 0, 120);
funcAddColumn(L"レース名", 1, 144);
funcAddColumn(L"レース名", 1, 250/*144*/);
funcAddColumn(L"距離", 2, 110);
funcAddColumn(L"コース", 3, 43);
funcAddColumn(L"方向", 4, 38);
Expand Down Expand Up @@ -518,7 +518,7 @@ void RaceListWindow::OnRaceFilterChanged(UINT uNotifyCode, int nID, CWindow wndC
m_grass = m_dart = checked;
} else if (IDC_CHECK_RIGHT <= nID && nID <= IDC_CHECK_LINE) {
m_right = m_left = m_line = checked;
} else if (IDC_CHECK_LOCATION_SAPPORO <= nID && nID <= IDC_CHECK_LOCATION_OOI) {
} else if (IDC_CHECK_LOCATION_SAPPORO <= nID && nID <= IDC_CHECK_LOCATION_MORIOKA) {
for (bool& location : m_raceLocation) {
location = checked;
}
Expand Down
2 changes: 1 addition & 1 deletion UmaCruise/RaceListWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class RaceListWindow :

// Race List
COMMAND_ID_HANDLER_EX(IDC_CHECK_SHOWRACE_AFTERCURRENTDATE, OnShowRaceAfterCurrentDate)
COMMAND_RANGE_HANDLER_EX(IDC_CHECK_G1, IDC_CHECK_LOCATION_OOI, OnRaceFilterChanged)
COMMAND_RANGE_HANDLER_EX(IDC_CHECK_G1, IDC_CHECK_LOCATION_MORIOKA, OnRaceFilterChanged)

CHAIN_MSG_MAP(CCustomDraw<RaceListWindow>)
CHAIN_MSG_MAP(DarkModeUI<RaceListWindow>)
Expand Down
13 changes: 8 additions & 5 deletions UmaCruise/UmaCruise.rc
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,15 @@ BEGIN
LTEXT "����{�I�ɉE�ɍs���قlj�ʎ�荞�݂̕��S���Ⴍ�A\n�����ɃX�N���[���L���v�`���[�ł��܂����A\n��ʎ�荞�݂ɖ�肪�����GDI��I�����Ă�������",IDC_STATIC,16,193,161,27
END

IDD_RACELIST DIALOGEX 0, 0, 331, 224
IDD_RACELIST DIALOGEX 0, 0, 413, 224
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
CAPTION "���[�X�ꗗ"
FONT 9, "Segoe UI", 0, 0, 0x0
BEGIN
LTEXT "���݂̓��t�F",IDC_STATIC,14,14,45,8
EDITTEXT IDC_EDIT_NOWDATE,61,13,84,12,ES_AUTOHSCROLL
CONTROL "",IDC_LIST_RACE,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,107,305,106
GROUPBOX "���߂̊J�Ã��[�X�ꗗ",IDC_STATIC_RACELIST_GROUP,6,1,318,217
CONTROL "",IDC_LIST_RACE,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,107,384,106
GROUPBOX "���߂̊J�Ã��[�X�ꗗ",IDC_STATIC_RACELIST_GROUP,7,2,399,217
CONTROL "G1",IDC_CHECK_G1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,40,18,10
CONTROL "G2",IDC_CHECK_G2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,42,40,18,10
CONTROL "G3",IDC_CHECK_G3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,66,40,18,10
Expand All @@ -142,7 +142,7 @@ BEGIN
CONTROL "�����",IDC_CHECK_LEFT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,139,39,30,12
CONTROL "����",IDC_CHECK_LINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,175,39,24,12
GROUPBOX "����",IDC_STATIC,98,31,106,23
GROUPBOX "���[�X��",IDC_STATIC,13,80,306,23
GROUPBOX "���[�X��",IDC_STATIC,13,80,385,23
CONTROL "�D�y",IDC_CHECK_LOCATION_SAPPORO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,89,24,12
CONTROL "����",IDC_CHECK_LOCATION_HAKODATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,46,89,24,12
CONTROL "����",IDC_CHECK_LOCATION_HUKUSIMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,74,89,24,12
Expand All @@ -159,6 +159,9 @@ BEGIN
EDITTEXT IDC_EDIT_EXPECT_URA,231,51,90,29,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
EDITTEXT IDC_EDIT_REMAININGTURN,231,35,90,12,ES_AUTOHSCROLL
COMBOBOX IDC_COMBO_SCENARIO_RACE,276,13,46,43,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "���",IDC_CHECK_LOCATION_KAWASAKI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,318,89,24,12
CONTROL "�D��",IDC_CHECK_LOCATION_FUNABASI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,344,89,24,12
CONTROL "����",IDC_CHECK_LOCATION_MORIOKA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,371,89,24,12
END


Expand Down Expand Up @@ -206,7 +209,7 @@ BEGIN
IDD_RACELIST, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 324
RIGHTMARGIN, 406
TOPMARGIN, 7
BOTTOMMARGIN, 217
END
Expand Down
3 changes: 3 additions & 0 deletions UmaCruise/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@
#define IDC_CHECK_LOCATION_HANSHIN 1638
#define IDC_CHECK_LOCATION_OGURA 1639
#define IDC_CHECK_LOCATION_OOI 1640
#define IDC_CHECK_LOCATION_KAWASAKI 1641
#define IDC_CHECK_LOCATION_FUNABASI 1642
#define IDC_CHECK_LOCATION_MORIOKA 1643

// Next default values for new objects
//
Expand Down
127 changes: 127 additions & 0 deletions UmaLibrary/ConvertUmaMusumeLibrary.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ def main(orgFolder):
# 効果の正規化
NormalizeEffect()

# 大成功 / 成功 (/ 失敗) のみの選択肢をイベントリストから削除する
NomarizeEventSuperSuccessSuccessFailed()
if debugErrorStop and errorCount > 0:
assert False

# イベント名(成功), イベント名(失敗) を正規化
NomarizeEventSuccessFailed()
if debugErrorStop and errorCount > 0:
Expand Down Expand Up @@ -485,6 +490,128 @@ def NormalizeEffect():
return True


# 大成功 / 成功 (/ 失敗) のみの選択肢をイベントリストから削除する
def NomarizeEventSuperSuccessSuccessFailed():
print(f'NomarizeEventSuperSuccessSuccessFailed')
global errorCount
global successCount

rx1 = re.compile(r'(.*?)(\(|(|【)?大成功(\)|)|】)?')
rx2 = re.compile(r'(.*?)(\(|(|【)?成功(\)|)|】)?')
rx3 = re.compile(r'(.*?)(\(|(|【)?失敗(\)|)|】)?')

replaceCount = 0
for charaOrSupport, propDict in jsonOrigin.items():
for prop, charaList in propDict.items():
for orgCharaName, eventList in charaList.items():
for event in eventList["Event"]:
newEvent = None
for eventName, eventOptionList in event.items():
#print(f'{eventName}')

# 選択肢が、大成功 / 成功 (/ 失敗) かどうか調べる
assert(len(eventOptionList) >= 2)
op1 = eventOptionList[0]["Option"]
ef1 = eventOptionList[0]["Effect"]
ret1 = rx1.match(op1) # 選択肢1 に"大成功"が入ってるか
if ret1 != None:
op2 = eventOptionList[1]["Option"]
ef2 = eventOptionList[1]["Effect"]
ret2 = rx2.match(op2)
if ret2 != None: # 選択肢2 に"成功"が入ってるか
# 選択肢が同一か調べる
sub1 = ret1.group(1)
sub2 = ret2.group(1)
if sub1 == sub2:
if len(eventOptionList) == 2:
# 大成功 / 成功 のみなので、イベントをリストから削除
event.pop(eventName)
print(f"(大成功/成功)を削除: [{eventName}]")
replaceCount += 1
break

# (失敗) がある場合は、そちらも調べる
if len(eventOptionList) == 3:
op3 = eventOptionList[2]["Option"]
ef3 = eventOptionList[2]["Effect"]
ret3 = rx3.match(op3)
if ret3 != None:
sub3 = ret3.group(1)
if sub2 == sub3:
# 大成功 / 成功 / 失敗 のみなので、イベントをリストから削除
event.pop(eventName)
print(f"(大成功/成功/失敗)を削除: [{eventName}]")
replaceCount += 1
break


newEventOptionList = []
optionSkip = False
replaced = False
for i in range(len(eventOptionList)):
if optionSkip:
optionSkip = False
continue

newEventOptionList.append(eventOptionList[i])

op1 = eventOptionList[i]["Option"]
ef1 = eventOptionList[i]["Effect"]
ret1 = rx1.match(op1) # 選択肢に"大成功"が入ってるか見る
if ret1 == None:
continue

if i + 1 == len(eventOptionList):
print("(成功)が見つかりません")
errorCount += 1
break

op2 = eventOptionList[i + 1]["Option"]
ef2 = eventOptionList[i + 1]["Effect"]
ret2 = rx2.match(op2)
if ret2 == None:
# 単に選択肢に"大成功"が入ってるだけのパターン
break

sub1 = ret1.group(1)
sub2 = ret2.group(1)
if sub1 != sub2:
print(f"選択肢が一致しません: {eventName}")
errorCount += 1
break

optionSkip = True
effectText = f"[大成功]==========\n{ef1}\n[成功]==========\n{ef2}"
newEventOptionList.pop(-1)
newEventOptionList.append({
"Option": sub1,
"Effect": effectText
})
replaced = True

if replaced:
newEvent = {eventName: newEventOptionList}


if newEvent != None:
event.pop(eventName)
event.update(newEvent)

print(f"(大成功/成功)を置換: [{eventName}]")
replaceCount += 1

# 空要素を削除する
eventList["Event"] = [a for a in eventList["Event"] if a != {}]

if replaceCount > 0:
successCount += replaceCount
return True

print("選択肢(成功),選択肢(失敗)が見つかりませんでした")
errorCount += 1
return False


def NomarizeEventSuccessFailed():
print(f'NomarizeEventSuccessFailed')
global errorCount
Expand Down
Loading

0 comments on commit e5f1e4b

Please sign in to comment.