Files
2026-01-26 18:48:28 -05:00

87 lines
5.7 KiB
Python

from database import add_user_nostalgia, getNostalgiaMusicData, getNostalgiaProfilebyRefID, getNostalgiaProfilebyToken, nostalgia_update_musicList, nostalgia_update_playlog
from variables.strings.games.nostalgia import (
nostagiaProfile,
nostalgiaNewProfile,
nostalgiaMusicDB,
nostalgiaPlayData,
nostalgiaOK,
nostalgiaResults,
nostalgiaSongDataTemplate
)
from time import time
def nostalgiaRelay(module, method, data, playerToken):
refid = data.get("refid", {}).get("#text", {})
print(f"{module} {method}")
match module:
case "UAN_common":
match method:
case "get_music_info":
return nostalgiaMusicDB
case "UAN_player":
match method:
case "get_playdata": # TODO: get player data from database
profile = getNostalgiaProfilebyToken(playerToken) or getNostalgiaProfilebyRefID(refid)
if profile is None:
print("Profile does not exist.")
return nostalgiaNewProfile
return nostagiaProfile.format(name=profile.name,playCount=profile.playCount,todayPlayCount=profile.todayPlayCount,oldPlayCount=profile.oldPlayCount,oldTodayPlayCount=profile.oldTodayPlayCount,oldRecitalCount=profile.oldRecitalCount,flag0=profile.musicListFlg0,flag1=profile.musicListFlg1,flag2=profile.musicListFlg2,flag3=profile.musicListFlg3,permittedFlag0=profile.permittedlist0,permittedFlag1=profile.permittedlist1,permittedFlag2=profile.permittedlist2,permittedFlag3=profile.permittedlist3,musicIndex=profile.musicIndex,sheetType=profile.sheetType,musicGroup=profile.musicGroup,playTime=profile.playTime,bingoIndex=profile.bingoIndex,performType=profile.performType,filterFlag=profile.filterFlag).encode()
case "regist_playdata": # TODO: get player data from database
name = data["name"]["#text"]
profile = add_user_nostalgia(name, refid, playerToken)
return nostagiaProfile.format(name=profile.name,playCount=profile.playCount,todayPlayCount=profile.todayPlayCount,oldPlayCount=profile.oldPlayCount,oldTodayPlayCount=profile.oldTodayPlayCount,oldRecitalCount=profile.oldRecitalCount,flag0=profile.musicListFlg0,flag1=profile.musicListFlg1,flag2=profile.musicListFlg2,flag3=profile.musicListFlg3,permittedFlag0=profile.permittedlist0,permittedFlag1=profile.permittedlist1,permittedFlag2=profile.permittedlist2,permittedFlag3=profile.permittedlist3,musicIndex=profile.musicIndex,sheetType=profile.sheetType,musicGroup=profile.musicGroup,playTime=profile.playTime,bingoIndex=profile.bingoIndex,performType=profile.performType,filterFlag=profile.filterFlag).encode()
case "get_musicdata":
music = ""
newMusic = ""
playerData = getNostalgiaMusicData(playerToken)
for score in playerData:
music += nostalgiaSongDataTemplate.format(music_index=score.musicIndex,sheet_type=score.sheetType,score=score.score,playCount=score.playCount,clearFlag=score.clearFlag,multiCount=score.multiCount,handsMode=score.handsMode,grade=score.grade,recScore=score.recScore,recPlayCount=score.recPlayCount,recHands=score.recHands,recGrade=score.recGrade,clearCount=score.clearCount)
if newMusic == "":
newMusic = "<new_music_list />"
return nostalgiaPlayData.format(music=music,newMusic=newMusic).encode()
case "set_stage_result":
results = data["stageinfo"]["stage"]
musicIndex = results['@music_index']
sheetType = results['@sheet_type']
results = results["common"]
perform_type = results["perform_type"]["#text"] # 0 for Nomal, 1 for Recital Play
score = results["score"]["#text"]
playCount = results["play_count"]["#text"]
clearCount = results["clear_count"]["#text"]
clearFlag = results["clear_flag"]["#text"]
multiCount = results["multi_count"]["#text"]
handsMode = results["hands_mode"]["#text"]
grade = results["grade"]["#text"]
nostalgia_update_playlog(playerToken,refid,musicIndex,sheetType,score,clearFlag,multiCount,handsMode,grade,perform_type)
return nostalgiaOK
case "set_total_result":
musicFlags = data["music_list"]["flag"]
musicListFlg0 = None
musicListFlg1 = None
musicListFlg2 = None
musicListFlg3 = None
for flag in musicFlags:
match str(flag['@sheet_type']):
case "0":
print(flag["#text"])
musicListFlg0 = flag["#text"]
case "1":
print(flag["#text"])
musicListFlg1 = flag["#text"]
case "2":
print(flag["#text"])
musicListFlg2 = flag["#text"]
case "3":
print(flag["#text"])
musicListFlg3 = flag["#text"]
nostalgia_update_musicList(playerToken,refid,musicListFlg0,musicListFlg1,musicListFlg2,musicListFlg3)
return nostalgiaResults.format(flag0=str(musicListFlg0),flag1=str(musicListFlg1),flag2=str(musicListFlg2),flag3=str(musicListFlg3)).encode()
case _: # Backup Case
return b"NoMatches"