wacca: add helpers for gacha, event and friend info, fix settings not being applied correctly
This commit is contained in:
parent
68b0894e47
commit
4d6afd757f
@ -825,7 +825,7 @@ class WaccaBase:
|
|||||||
resp.songDetail.grades = SongDetailGradeCountsV2(counts=grades)
|
resp.songDetail.grades = SongDetailGradeCountsV2(counts=grades)
|
||||||
else:
|
else:
|
||||||
resp.songDetail.grades = SongDetailGradeCountsV1(counts=grades)
|
resp.songDetail.grades = SongDetailGradeCountsV1(counts=grades)
|
||||||
resp.songDetail.lock_state = 1
|
resp.songDetail.lockState = 1
|
||||||
return resp.make()
|
return resp.make()
|
||||||
|
|
||||||
# TODO: Coop and vs data
|
# TODO: Coop and vs data
|
||||||
@ -971,7 +971,7 @@ class WaccaBase:
|
|||||||
user_id = self.data.profile.profile_to_aime_user(req.profileId)
|
user_id = self.data.profile.profile_to_aime_user(req.profileId)
|
||||||
|
|
||||||
for opt in req.optsUpdated:
|
for opt in req.optsUpdated:
|
||||||
self.data.profile.update_option(user_id, opt.opt_id, opt.opt_val)
|
self.data.profile.update_option(user_id, opt.optId, opt.optVal)
|
||||||
|
|
||||||
for update in req.datesUpdated:
|
for update in req.datesUpdated:
|
||||||
pass
|
pass
|
||||||
|
@ -158,11 +158,11 @@ class Notice:
|
|||||||
|
|
||||||
class UserOption:
|
class UserOption:
|
||||||
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
||||||
self.opt_id = opt_id
|
self.optId = opt_id
|
||||||
self.opt_val = opt_val
|
self.optVal = opt_val
|
||||||
|
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.opt_id, self.opt_val]
|
return [self.optId, self.optVal]
|
||||||
|
|
||||||
|
|
||||||
class UserStatusV1:
|
class UserStatusV1:
|
||||||
@ -348,13 +348,35 @@ class NavigatorItem(IconItem):
|
|||||||
|
|
||||||
|
|
||||||
class SkillItem:
|
class SkillItem:
|
||||||
skill_type: int
|
skillType: int
|
||||||
level: int
|
level: int
|
||||||
flag: int
|
flag: int
|
||||||
badge: int
|
badge: int
|
||||||
|
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [self.skill_type, self.level, self.flag, self.badge]
|
return [self.skillType, self.level, self.flag, self.badge]
|
||||||
|
|
||||||
|
|
||||||
|
class UserEventInfo:
|
||||||
|
def __init__(self) -> None:
|
||||||
|
self.eventId = 0
|
||||||
|
self.conditionInfo: List[UserEventConditionInfo] = []
|
||||||
|
|
||||||
|
def make(self) -> List:
|
||||||
|
conditions = []
|
||||||
|
for x in self.conditionInfo:
|
||||||
|
conditions.append(x.make())
|
||||||
|
|
||||||
|
return [self.eventId, conditions]
|
||||||
|
|
||||||
|
|
||||||
|
class UserEventConditionInfo:
|
||||||
|
def __init__(self) -> None:
|
||||||
|
self.achievementCondition = 0
|
||||||
|
self.progress = 0
|
||||||
|
|
||||||
|
def make(self) -> List:
|
||||||
|
return [self.achievementCondition, self.progress]
|
||||||
|
|
||||||
|
|
||||||
class UserItemInfoV1:
|
class UserItemInfoV1:
|
||||||
@ -447,19 +469,19 @@ class UserItemInfoV3(UserItemInfoV2):
|
|||||||
class SongDetailClearCounts:
|
class SongDetailClearCounts:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
play_ct: int = 0,
|
playCt: int = 0,
|
||||||
clear_ct: int = 0,
|
clearCt: int = 0,
|
||||||
ml_ct: int = 0,
|
mlCt: int = 0,
|
||||||
fc_ct: int = 0,
|
fcCt: int = 0,
|
||||||
am_ct: int = 0,
|
amCt: int = 0,
|
||||||
counts: Optional[List[int]] = None,
|
counts: Optional[List[int]] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
if counts is None:
|
if counts is None:
|
||||||
self.playCt = play_ct
|
self.playCt = playCt
|
||||||
self.clearCt = clear_ct
|
self.clearCt = clearCt
|
||||||
self.misslessCt = ml_ct
|
self.misslessCt = mlCt
|
||||||
self.fullComboCt = fc_ct
|
self.fullComboCt = fcCt
|
||||||
self.allMarvelousCt = am_ct
|
self.allMarvelousCt = amCt
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.playCt = counts[0]
|
self.playCt = counts[0]
|
||||||
@ -773,8 +795,12 @@ class GateDetailV2(GateDetailV1):
|
|||||||
|
|
||||||
|
|
||||||
class GachaInfo:
|
class GachaInfo:
|
||||||
|
def __init__(self, gacha_id: int = 0, gacha_roll_ct: int = 0) -> None:
|
||||||
|
self.gachaId = gacha_id
|
||||||
|
self.rollCt = gacha_roll_ct
|
||||||
|
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return []
|
return [self.gachaId, self.rollCt]
|
||||||
|
|
||||||
|
|
||||||
class LastSongDetail:
|
class LastSongDetail:
|
||||||
@ -808,9 +834,30 @@ class LastSongDetail:
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class FriendDetail:
|
class FriendScoreDetail:
|
||||||
|
def __init__(self, song_id: int = 0, difficulty: int = 1, best_score: int = 0) -> None:
|
||||||
|
self.songId = song_id
|
||||||
|
self.difficulty = difficulty
|
||||||
|
self.bestScore = best_score
|
||||||
|
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return []
|
return [self.songId, self.difficulty, self.bestScore]
|
||||||
|
|
||||||
|
|
||||||
|
class FriendDetail:
|
||||||
|
def __init__(self, user_id: int = 0, username: str = "") -> None:
|
||||||
|
self.friendId = user_id
|
||||||
|
self.friendUsername = username
|
||||||
|
self.friendUserType = 1
|
||||||
|
self.friendScoreDetail: List[FriendScoreDetail] = []
|
||||||
|
|
||||||
|
def make(self) -> List:
|
||||||
|
scores = []
|
||||||
|
|
||||||
|
for x in self.friendScoreDetail:
|
||||||
|
scores.append(x.make())
|
||||||
|
|
||||||
|
return [self.friendId, self.friendUsername, self.friendUserType, scores]
|
||||||
|
|
||||||
|
|
||||||
class LoginBonusInfo:
|
class LoginBonusInfo:
|
||||||
@ -942,7 +989,7 @@ class MusicUpdateDetailV1:
|
|||||||
self.score = 0
|
self.score = 0
|
||||||
self.lowestMissCount = 0
|
self.lowestMissCount = 0
|
||||||
self.maxSkillPts = 0
|
self.maxSkillPts = 0
|
||||||
self.lock_state = 0
|
self.lockState = 0
|
||||||
|
|
||||||
def make(self) -> List:
|
def make(self) -> List:
|
||||||
return [
|
return [
|
||||||
@ -954,7 +1001,7 @@ class MusicUpdateDetailV1:
|
|||||||
self.score,
|
self.score,
|
||||||
self.lowestMissCount,
|
self.lowestMissCount,
|
||||||
self.maxSkillPts,
|
self.maxSkillPts,
|
||||||
self.lock_state,
|
self.lockState,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,10 +10,10 @@ class HousingGetResponse(BaseResponse):
|
|||||||
def __init__(self, housingId: int) -> None:
|
def __init__(self, housingId: int) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.housingId: int = housingId
|
self.housingId: int = housingId
|
||||||
self.regionId: int = 0
|
self.isNewCab: bool = False
|
||||||
|
|
||||||
def make(self) -> Dict:
|
def make(self) -> Dict:
|
||||||
self.params = [self.housingId, self.regionId]
|
self.params = [self.housingId, int(self.isNewCab)]
|
||||||
return super().make()
|
return super().make()
|
||||||
|
|
||||||
|
|
||||||
@ -32,8 +32,6 @@ class HousingStartRequestV1(BaseRequest):
|
|||||||
class HousingStartRequestV2(HousingStartRequestV1):
|
class HousingStartRequestV2(HousingStartRequestV1):
|
||||||
def __init__(self, data: Dict) -> None:
|
def __init__(self, data: Dict) -> None:
|
||||||
super(HousingStartRequestV1, self).__init__(data)
|
super(HousingStartRequestV1, self).__init__(data)
|
||||||
self.unknown0: str = self.params[0]
|
|
||||||
self.errorLog: str = self.params[1]
|
|
||||||
self.creditLog: str = self.params[2]
|
self.creditLog: str = self.params[2]
|
||||||
self.info: List[HousingInfo] = []
|
self.info: List[HousingInfo] = []
|
||||||
|
|
||||||
|
@ -39,12 +39,16 @@ class UserStatusGetV2Response(UserStatusGetV1Response):
|
|||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.userStatus: UserStatusV2 = UserStatusV2()
|
self.userStatus: UserStatusV2 = UserStatusV2()
|
||||||
self.unknownArr: List = []
|
self.options: List[UserOption] = []
|
||||||
|
|
||||||
def make(self) -> Dict:
|
def make(self) -> Dict:
|
||||||
super().make()
|
super().make()
|
||||||
|
opts = []
|
||||||
|
|
||||||
self.params.append(self.unknownArr)
|
for x in self.options:
|
||||||
|
opts.append(x.make())
|
||||||
|
|
||||||
|
self.params.append(opts)
|
||||||
|
|
||||||
return super(UserStatusGetV1Response, self).make()
|
return super(UserStatusGetV1Response, self).make()
|
||||||
|
|
||||||
@ -137,7 +141,7 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
|||||||
self.userItems: UserItemInfoV2 = UserItemInfoV2()
|
self.userItems: UserItemInfoV2 = UserItemInfoV2()
|
||||||
self.favorites: List[int] = []
|
self.favorites: List[int] = []
|
||||||
self.stoppedSongIds: List[int] = []
|
self.stoppedSongIds: List[int] = []
|
||||||
self.eventInfo: List[int] = []
|
self.eventInfo: List[UserEventInfo] = []
|
||||||
self.gateInfo: List[GateDetailV1] = []
|
self.gateInfo: List[GateDetailV1] = []
|
||||||
self.lastSongInfo: LastSongDetail = LastSongDetail()
|
self.lastSongInfo: LastSongDetail = LastSongDetail()
|
||||||
self.gateTutorialFlags: List[GateTutorialFlag] = []
|
self.gateTutorialFlags: List[GateTutorialFlag] = []
|
||||||
@ -149,6 +153,8 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
|||||||
gates = []
|
gates = []
|
||||||
friends = []
|
friends = []
|
||||||
tut_flg = []
|
tut_flg = []
|
||||||
|
evts = []
|
||||||
|
gacha = []
|
||||||
|
|
||||||
for x in self.gateInfo:
|
for x in self.gateInfo:
|
||||||
gates.append(x.make())
|
gates.append(x.make())
|
||||||
@ -163,13 +169,19 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
|||||||
flag_id = len(tut_flg) + 1
|
flag_id = len(tut_flg) + 1
|
||||||
tut_flg.append([flag_id, 0])
|
tut_flg.append([flag_id, 0])
|
||||||
|
|
||||||
|
for x in self.eventInfo:
|
||||||
|
evts.append(x.make())
|
||||||
|
|
||||||
|
for x in self.gatchaInfo:
|
||||||
|
gacha.append(x.make())
|
||||||
|
|
||||||
self.params.append(self.favorites)
|
self.params.append(self.favorites)
|
||||||
self.params.append(self.stoppedSongIds)
|
self.params.append(self.stoppedSongIds)
|
||||||
self.params.append(self.eventInfo)
|
self.params.append(evts)
|
||||||
self.params.append(gates)
|
self.params.append(gates)
|
||||||
self.params.append(self.lastSongInfo.make())
|
self.params.append(self.lastSongInfo.make())
|
||||||
self.params.append(tut_flg)
|
self.params.append(tut_flg)
|
||||||
self.params.append(self.gatchaInfo)
|
self.params.append(gacha)
|
||||||
self.params.append(friends)
|
self.params.append(friends)
|
||||||
|
|
||||||
return super(UserStatusGetDetailResponseV1, self).make()
|
return super(UserStatusGetDetailResponseV1, self).make()
|
||||||
|
@ -74,6 +74,8 @@ class WaccaLily(WaccaS):
|
|||||||
resp.profileStatus = ProfileStatus.ProfileRegister
|
resp.profileStatus = ProfileStatus.ProfileRegister
|
||||||
return resp.make()
|
return resp.make()
|
||||||
|
|
||||||
|
opts = self.data.profile.get_options(req.aimeId)
|
||||||
|
|
||||||
self.logger.info(f"User preview for {req.aimeId} from {req.chipId}")
|
self.logger.info(f"User preview for {req.aimeId} from {req.chipId}")
|
||||||
if profile["last_game_ver"] is None:
|
if profile["last_game_ver"] is None:
|
||||||
resp.lastGameVersion = ShortVersion(str(req.appVersion))
|
resp.lastGameVersion = ShortVersion(str(req.appVersion))
|
||||||
@ -138,6 +140,9 @@ class WaccaLily(WaccaS):
|
|||||||
if self.game_config.mods.infinite_wp:
|
if self.game_config.mods.infinite_wp:
|
||||||
resp.userStatus.wp = 999999
|
resp.userStatus.wp = 999999
|
||||||
|
|
||||||
|
for opt in opts:
|
||||||
|
resp.options.append(UserOption(opt["opt_id"], opt["value"]))
|
||||||
|
|
||||||
return resp.make()
|
return resp.make()
|
||||||
|
|
||||||
def handle_user_status_login_request(self, data: Dict) -> Dict:
|
def handle_user_status_login_request(self, data: Dict) -> Dict:
|
||||||
|
Loading…
Reference in New Issue
Block a user