mirror of
https://gitea.tendokyu.moe/Hay1tsme/artemis.git
synced 2026-02-13 19:27:27 +08:00
let black do it's magic
This commit is contained in:
@@ -6,4 +6,4 @@ from titles.wacca.handlers.user_misc import *
|
||||
from titles.wacca.handlers.user_music import *
|
||||
from titles.wacca.handlers.user_status import *
|
||||
from titles.wacca.handlers.user_trial import *
|
||||
from titles.wacca.handlers.user_vip import *
|
||||
from titles.wacca.handlers.user_vip import *
|
||||
|
||||
@@ -3,6 +3,7 @@ from typing import List, Dict
|
||||
from titles.wacca.handlers.base import BaseResponse, BaseRequest
|
||||
from titles.wacca.handlers.helpers import Notice
|
||||
|
||||
|
||||
# ---advertise/GetNews---
|
||||
class GetNewsResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
@@ -19,27 +20,29 @@ class GetNewsResponseV1(BaseResponse):
|
||||
|
||||
for notice in self.notices:
|
||||
note.append(notice.make())
|
||||
|
||||
self.params = [
|
||||
note,
|
||||
self.copywrightListings,
|
||||
self.stoppedSongs,
|
||||
self.stoppedJackets,
|
||||
self.stoppedMovies,
|
||||
self.stoppedIcons
|
||||
|
||||
self.params = [
|
||||
note,
|
||||
self.copywrightListings,
|
||||
self.stoppedSongs,
|
||||
self.stoppedJackets,
|
||||
self.stoppedMovies,
|
||||
self.stoppedIcons,
|
||||
]
|
||||
|
||||
return super().make()
|
||||
|
||||
class GetNewsResponseV2(GetNewsResponseV1):
|
||||
|
||||
class GetNewsResponseV2(GetNewsResponseV1):
|
||||
stoppedProducts: list[int] = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.stoppedProducts)
|
||||
|
||||
|
||||
return super(GetNewsResponseV1, self).make()
|
||||
|
||||
|
||||
class GetNewsResponseV3(GetNewsResponseV2):
|
||||
stoppedNavs: list[int] = []
|
||||
stoppedNavVoices: list[int] = []
|
||||
@@ -48,18 +51,20 @@ class GetNewsResponseV3(GetNewsResponseV2):
|
||||
super().make()
|
||||
self.params.append(self.stoppedNavs)
|
||||
self.params.append(self.stoppedNavVoices)
|
||||
|
||||
|
||||
return super(GetNewsResponseV1, self).make()
|
||||
|
||||
|
||||
# ---advertise/GetRanking---
|
||||
class AdvertiseGetRankingRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.resourceVer: int = self.params[0]
|
||||
|
||||
|
||||
class AdvertiseGetRankingResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
|
||||
|
||||
def make(self) -> Dict:
|
||||
return super().make()
|
||||
return super().make()
|
||||
|
||||
@@ -2,7 +2,8 @@ from typing import Dict, List
|
||||
from titles.wacca.handlers.helpers import Version
|
||||
from datetime import datetime
|
||||
|
||||
class BaseRequest():
|
||||
|
||||
class BaseRequest:
|
||||
def __init__(self, data: Dict) -> None:
|
||||
self.requestNo: int = data["requestNo"]
|
||||
self.appVersion: Version = Version(data["appVersion"])
|
||||
@@ -10,7 +11,8 @@ class BaseRequest():
|
||||
self.chipId: str = data["chipId"]
|
||||
self.params: List = data["params"]
|
||||
|
||||
class BaseResponse():
|
||||
|
||||
class BaseResponse:
|
||||
def __init__(self) -> None:
|
||||
self.status: int = 0
|
||||
self.message: str = ""
|
||||
@@ -28,5 +30,5 @@ class BaseResponse():
|
||||
"maintNoticeTime": self.maintNoticeTime,
|
||||
"maintNotPlayableTime": self.maintNotPlayableTime,
|
||||
"maintStartTime": self.maintStartTime,
|
||||
"params": self.params
|
||||
"params": self.params,
|
||||
}
|
||||
|
||||
@@ -3,28 +3,33 @@ from enum import Enum
|
||||
|
||||
from titles.wacca.const import WaccaConstants
|
||||
|
||||
|
||||
class ShortVersion:
|
||||
def __init__(self, version: str = "", major = 1, minor = 0, patch = 0) -> None:
|
||||
def __init__(self, version: str = "", major=1, minor=0, patch=0) -> None:
|
||||
split = version.split(".")
|
||||
if len(split) >= 3:
|
||||
self.major = int(split[0])
|
||||
self.minor = int(split[1])
|
||||
self.patch = int(split[2])
|
||||
|
||||
else:
|
||||
|
||||
else:
|
||||
self.major = major
|
||||
self.minor = minor
|
||||
self.patch = patch
|
||||
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.major}.{self.minor}.{self.patch}"
|
||||
|
||||
|
||||
def __int__(self) -> int:
|
||||
return (self.major * 10000) + (self.minor * 100) + self.patch
|
||||
|
||||
|
||||
def __eq__(self, other: "ShortVersion"):
|
||||
return self.major == other.major and self.minor == other.minor and self.patch == other.patch
|
||||
|
||||
return (
|
||||
self.major == other.major
|
||||
and self.minor == other.minor
|
||||
and self.patch == other.patch
|
||||
)
|
||||
|
||||
def __gt__(self, other: "ShortVersion"):
|
||||
if self.major > other.major:
|
||||
return True
|
||||
@@ -34,9 +39,9 @@ class ShortVersion:
|
||||
elif self.minor == other.minor:
|
||||
if self.patch > other.patch:
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def __ge__(self, other: "ShortVersion"):
|
||||
if self.major > other.major:
|
||||
return True
|
||||
@@ -46,9 +51,9 @@ class ShortVersion:
|
||||
elif self.minor == other.minor:
|
||||
if self.patch > other.patch or self.patch == other.patch:
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def __lt__(self, other: "ShortVersion"):
|
||||
if self.major < other.major:
|
||||
return True
|
||||
@@ -58,9 +63,9 @@ class ShortVersion:
|
||||
elif self.minor == other.minor:
|
||||
if self.patch < other.patch:
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def __le__(self, other: "ShortVersion"):
|
||||
if self.major < other.major:
|
||||
return True
|
||||
@@ -70,39 +75,45 @@ class ShortVersion:
|
||||
elif self.minor == other.minor:
|
||||
if self.patch < other.patch or self.patch == other.patch:
|
||||
return True
|
||||
|
||||
|
||||
return False
|
||||
|
||||
|
||||
class Version(ShortVersion):
|
||||
def __init__(self, version = "", major = 1, minor = 0, patch = 0, country = "JPN", build = 0, role = "C") -> None:
|
||||
def __init__(
|
||||
self, version="", major=1, minor=0, patch=0, country="JPN", build=0, role="C"
|
||||
) -> None:
|
||||
super().__init__(version, major, minor, patch)
|
||||
split = version.split(".")
|
||||
if len(split) >= 6:
|
||||
self.country: str = split[3]
|
||||
self.country: str = split[3]
|
||||
self.build = int(split[4])
|
||||
self.role: str = split[5]
|
||||
|
||||
|
||||
else:
|
||||
self.country = country
|
||||
self.build = build
|
||||
self.role = role
|
||||
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.major}.{self.minor}.{self.patch}.{self.country}.{self.role}.{self.build}"
|
||||
|
||||
|
||||
class HousingInfo:
|
||||
"""
|
||||
1 is lan install role, 2 is country
|
||||
"""
|
||||
|
||||
id: int = 0
|
||||
val: str = ""
|
||||
|
||||
def __init__(self, id: int = 0, val: str = "") -> None:
|
||||
self.id = id
|
||||
self.val = val
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [ self.id, self.val ]
|
||||
return [self.id, self.val]
|
||||
|
||||
|
||||
class Notice:
|
||||
name: str = ""
|
||||
@@ -116,25 +127,44 @@ class Notice:
|
||||
endTime: int = 0
|
||||
voiceline: int = 0
|
||||
|
||||
def __init__(self, name: str = "", title: str = "", message: str = "", start: int = 0, end: int = 0) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
name: str = "",
|
||||
title: str = "",
|
||||
message: str = "",
|
||||
start: int = 0,
|
||||
end: int = 0,
|
||||
) -> None:
|
||||
self.name = name
|
||||
self.title = title
|
||||
self.message = message
|
||||
self.startTime = start
|
||||
self.endTime = end
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [ self.name, self.title, self.message, self.unknown3, self.unknown4, int(self.showTitleScreen),
|
||||
int(self.showWelcomeScreen), self.startTime, self.endTime, self.voiceline]
|
||||
return [
|
||||
self.name,
|
||||
self.title,
|
||||
self.message,
|
||||
self.unknown3,
|
||||
self.unknown4,
|
||||
int(self.showTitleScreen),
|
||||
int(self.showWelcomeScreen),
|
||||
self.startTime,
|
||||
self.endTime,
|
||||
self.voiceline,
|
||||
]
|
||||
|
||||
|
||||
class UserOption:
|
||||
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
||||
self.opt_id = opt_id
|
||||
self.opt_val = opt_val
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.opt_id, self.opt_val]
|
||||
|
||||
|
||||
class UserStatusV1:
|
||||
def __init__(self) -> None:
|
||||
self.userId: int = 0
|
||||
@@ -160,19 +190,20 @@ class UserStatusV1:
|
||||
self.useCount,
|
||||
]
|
||||
|
||||
|
||||
class UserStatusV2(UserStatusV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
super().__init__()
|
||||
self.loginDays: int = 0
|
||||
self.loginConsecutive: int = 0
|
||||
self.loginConsecutiveDays: int = 0
|
||||
self.loginsToday: int = 0
|
||||
self.rating: int = 0
|
||||
self.rating: int = 0
|
||||
self.vipExpireTime: int = 0
|
||||
|
||||
def make(self) -> List:
|
||||
ret = super().make()
|
||||
|
||||
|
||||
ret.append(self.loginDays)
|
||||
ret.append(self.loginConsecutive)
|
||||
ret.append(self.loginConsecutiveDays)
|
||||
@@ -182,17 +213,20 @@ class UserStatusV2(UserStatusV1):
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
class ProfileStatus(Enum):
|
||||
ProfileGood = 0
|
||||
ProfileRegister = 1
|
||||
ProfileInUse = 2
|
||||
ProfileWrongRegion = 3
|
||||
|
||||
|
||||
class PlayVersionStatus(Enum):
|
||||
VersionGood = 0
|
||||
VersionTooNew = 1
|
||||
VersionUpgrade = 2
|
||||
|
||||
|
||||
class PlayModeCounts:
|
||||
seasonId: int = 0
|
||||
modeId: int = 0
|
||||
@@ -202,13 +236,10 @@ class PlayModeCounts:
|
||||
self.seasonId = seasonId
|
||||
self.modeId = modeId
|
||||
self.playNum = playNum
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.seasonId,
|
||||
self.modeId,
|
||||
self.playNum
|
||||
]
|
||||
return [self.seasonId, self.modeId, self.playNum]
|
||||
|
||||
|
||||
class SongUnlock:
|
||||
songId: int = 0
|
||||
@@ -216,76 +247,72 @@ class SongUnlock:
|
||||
whenAppeared: int = 0
|
||||
whenUnlocked: int = 0
|
||||
|
||||
def __init__(self, song_id: int = 0, difficulty: int = 1, whenAppered: int = 0, whenUnlocked: int = 0) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
song_id: int = 0,
|
||||
difficulty: int = 1,
|
||||
whenAppered: int = 0,
|
||||
whenUnlocked: int = 0,
|
||||
) -> None:
|
||||
self.songId = song_id
|
||||
self.difficulty = difficulty
|
||||
self.whenAppeared = whenAppered
|
||||
self.whenUnlocked = whenUnlocked
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.songId,
|
||||
self.difficulty,
|
||||
self.whenAppeared,
|
||||
self.whenUnlocked
|
||||
]
|
||||
return [self.songId, self.difficulty, self.whenAppeared, self.whenUnlocked]
|
||||
|
||||
|
||||
class GenericItemRecv:
|
||||
def __init__(self, item_type: int = 1, item_id: int = 1, quantity: int = 1) -> None:
|
||||
self.itemId = item_id
|
||||
self.itemType = item_type
|
||||
self.quantity = quantity
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [ self.itemType, self.itemId, self.quantity ]
|
||||
return [self.itemType, self.itemId, self.quantity]
|
||||
|
||||
|
||||
class GenericItemSend:
|
||||
def __init__(self, itemId: int, itemType: int, whenAcquired: int) -> None:
|
||||
self.itemId = itemId
|
||||
self.itemType = itemType
|
||||
self.whenAcquired = whenAcquired
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.itemId,
|
||||
self.itemType,
|
||||
self.whenAcquired
|
||||
]
|
||||
return [self.itemId, self.itemType, self.whenAcquired]
|
||||
|
||||
|
||||
class IconItem(GenericItemSend):
|
||||
uses: int = 0
|
||||
|
||||
def __init__(self, itemId: int, itemType: int, uses: int, whenAcquired: int) -> None:
|
||||
def __init__(
|
||||
self, itemId: int, itemType: int, uses: int, whenAcquired: int
|
||||
) -> None:
|
||||
super().__init__(itemId, itemType, whenAcquired)
|
||||
self.uses = uses
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.itemId,
|
||||
self.itemType,
|
||||
self.uses,
|
||||
self.whenAcquired
|
||||
]
|
||||
return [self.itemId, self.itemType, self.uses, self.whenAcquired]
|
||||
|
||||
|
||||
class TrophyItem:
|
||||
trophyId: int = 0
|
||||
trophyId: int = 0
|
||||
season: int = 1
|
||||
progress: int = 0
|
||||
badgeType: int = 0
|
||||
|
||||
def __init__(self, trophyId: int, season: int, progress: int, badgeType: int) -> None:
|
||||
def __init__(
|
||||
self, trophyId: int, season: int, progress: int, badgeType: int
|
||||
) -> None:
|
||||
self.trophyId = trophyId
|
||||
self.season = season
|
||||
self.season = season
|
||||
self.progress = progress
|
||||
self.badgeType = badgeType
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.trophyId,
|
||||
self.season,
|
||||
self.progress,
|
||||
self.badgeType
|
||||
]
|
||||
return [self.trophyId, self.season, self.progress, self.badgeType]
|
||||
|
||||
|
||||
class TicketItem:
|
||||
userTicketId: int = 0
|
||||
@@ -296,18 +323,17 @@ class TicketItem:
|
||||
self.userTicketId = userTicketId
|
||||
self.ticketId = ticketId
|
||||
self.whenExpires = whenExpires
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.userTicketId,
|
||||
self.ticketId,
|
||||
self.whenExpires
|
||||
]
|
||||
return [self.userTicketId, self.ticketId, self.whenExpires]
|
||||
|
||||
|
||||
class NavigatorItem(IconItem):
|
||||
usesToday: int = 0
|
||||
|
||||
def __init__(self, itemId: int, itemType: int, whenAcquired: int, uses: int, usesToday: int) -> None:
|
||||
def __init__(
|
||||
self, itemId: int, itemType: int, whenAcquired: int, uses: int, usesToday: int
|
||||
) -> None:
|
||||
super().__init__(itemId, itemType, uses, whenAcquired)
|
||||
self.usesToday = usesToday
|
||||
|
||||
@@ -317,9 +343,10 @@ class NavigatorItem(IconItem):
|
||||
self.itemType,
|
||||
self.whenAcquired,
|
||||
self.uses,
|
||||
self.usesToday
|
||||
self.usesToday,
|
||||
]
|
||||
|
||||
|
||||
class SkillItem:
|
||||
skill_type: int
|
||||
level: int
|
||||
@@ -327,12 +354,8 @@ class SkillItem:
|
||||
badge: int
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.skill_type,
|
||||
self.level,
|
||||
self.flag,
|
||||
self.badge
|
||||
]
|
||||
return [self.skill_type, self.level, self.flag, self.badge]
|
||||
|
||||
|
||||
class UserItemInfoV1:
|
||||
def __init__(self) -> None:
|
||||
@@ -383,6 +406,7 @@ class UserItemInfoV1:
|
||||
sounds,
|
||||
]
|
||||
|
||||
|
||||
class UserItemInfoV2(UserItemInfoV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -391,18 +415,19 @@ class UserItemInfoV2(UserItemInfoV1):
|
||||
|
||||
def make(self) -> List:
|
||||
ret = super().make()
|
||||
plates = []
|
||||
plates = []
|
||||
navs = []
|
||||
|
||||
|
||||
for x in self.navigators:
|
||||
navs.append(x.make())
|
||||
for x in self.plates:
|
||||
plates.append(x.make())
|
||||
|
||||
|
||||
ret.append(navs)
|
||||
ret.append(plates)
|
||||
return ret
|
||||
|
||||
|
||||
class UserItemInfoV3(UserItemInfoV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -414,29 +439,44 @@ class UserItemInfoV3(UserItemInfoV2):
|
||||
|
||||
for x in self.touchEffect:
|
||||
effect.append(x.make())
|
||||
|
||||
|
||||
ret.append(effect)
|
||||
return ret
|
||||
|
||||
class SongDetailClearCounts:
|
||||
def __init__(self, play_ct: int = 0, clear_ct: int = 0, ml_ct: int = 0, fc_ct: int = 0,
|
||||
am_ct: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
|
||||
class SongDetailClearCounts:
|
||||
def __init__(
|
||||
self,
|
||||
play_ct: int = 0,
|
||||
clear_ct: int = 0,
|
||||
ml_ct: int = 0,
|
||||
fc_ct: int = 0,
|
||||
am_ct: int = 0,
|
||||
counts: Optional[List[int]] = None,
|
||||
) -> None:
|
||||
if counts is None:
|
||||
self.playCt = play_ct
|
||||
self.clearCt = clear_ct
|
||||
self.misslessCt = ml_ct
|
||||
self.fullComboCt = fc_ct
|
||||
self.allMarvelousCt = am_ct
|
||||
|
||||
|
||||
else:
|
||||
self.playCt = counts[0]
|
||||
self.clearCt = counts[1]
|
||||
self.misslessCt = counts[2]
|
||||
self.fullComboCt = counts[3]
|
||||
self.allMarvelousCt = counts[4]
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.playCt, self.clearCt, self.misslessCt, self.fullComboCt, self.allMarvelousCt]
|
||||
return [
|
||||
self.playCt,
|
||||
self.clearCt,
|
||||
self.misslessCt,
|
||||
self.fullComboCt,
|
||||
self.allMarvelousCt,
|
||||
]
|
||||
|
||||
|
||||
class SongDetailGradeCountsV1:
|
||||
dCt: int
|
||||
@@ -450,8 +490,20 @@ class SongDetailGradeCountsV1:
|
||||
sssCt: int
|
||||
masterCt: int
|
||||
|
||||
def __init__(self, d: int = 0, c: int = 0, b: int = 0, a: int = 0, aa: int = 0, aaa: int = 0, s: int = 0,
|
||||
ss: int = 0, sss: int = 0, master: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
d: int = 0,
|
||||
c: int = 0,
|
||||
b: int = 0,
|
||||
a: int = 0,
|
||||
aa: int = 0,
|
||||
aaa: int = 0,
|
||||
s: int = 0,
|
||||
ss: int = 0,
|
||||
sss: int = 0,
|
||||
master: int = 0,
|
||||
counts: Optional[List[int]] = None,
|
||||
) -> None:
|
||||
if counts is None:
|
||||
self.dCt = d
|
||||
self.cCt = c
|
||||
@@ -463,7 +515,7 @@ class SongDetailGradeCountsV1:
|
||||
self.ssCt = ss
|
||||
self.sssCt = sss
|
||||
self.masterCt = master
|
||||
|
||||
|
||||
else:
|
||||
self.dCt = counts[0]
|
||||
self.cCt = counts[1]
|
||||
@@ -474,24 +526,51 @@ class SongDetailGradeCountsV1:
|
||||
self.sCt = counts[6]
|
||||
self.ssCt = counts[7]
|
||||
self.sssCt = counts[8]
|
||||
self.masterCt =counts[9]
|
||||
self.masterCt = counts[9]
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.dCt, self.cCt, self.bCt, self.aCt, self.aaCt, self.aaaCt, self.sCt, self.ssCt, self.sssCt, self.masterCt]
|
||||
return [
|
||||
self.dCt,
|
||||
self.cCt,
|
||||
self.bCt,
|
||||
self.aCt,
|
||||
self.aaCt,
|
||||
self.aaaCt,
|
||||
self.sCt,
|
||||
self.ssCt,
|
||||
self.sssCt,
|
||||
self.masterCt,
|
||||
]
|
||||
|
||||
|
||||
class SongDetailGradeCountsV2(SongDetailGradeCountsV1):
|
||||
spCt: int
|
||||
sspCt: int
|
||||
ssspCt: int
|
||||
|
||||
def __init__(self, d: int = 0, c: int = 0, b: int = 0, a: int = 0, aa: int = 0, aaa: int = 0, s: int = 0,
|
||||
ss: int = 0, sss: int = 0, master: int = 0, sp: int = 0, ssp: int = 0, sssp: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
d: int = 0,
|
||||
c: int = 0,
|
||||
b: int = 0,
|
||||
a: int = 0,
|
||||
aa: int = 0,
|
||||
aaa: int = 0,
|
||||
s: int = 0,
|
||||
ss: int = 0,
|
||||
sss: int = 0,
|
||||
master: int = 0,
|
||||
sp: int = 0,
|
||||
ssp: int = 0,
|
||||
sssp: int = 0,
|
||||
counts: Optional[List[int]] = None,
|
||||
) -> None:
|
||||
super().__init__(d, c, b, a, aa, aaa, s, ss, sss, master, counts)
|
||||
if counts is None:
|
||||
self.spCt = sp
|
||||
self.sspCt = ssp
|
||||
self.ssspCt = sssp
|
||||
|
||||
|
||||
else:
|
||||
self.spCt = counts[10]
|
||||
self.sspCt = counts[11]
|
||||
@@ -500,6 +579,7 @@ class SongDetailGradeCountsV2(SongDetailGradeCountsV1):
|
||||
def make(self) -> List:
|
||||
return super().make() + [self.spCt, self.sspCt, self.ssspCt]
|
||||
|
||||
|
||||
class BestScoreDetailV1:
|
||||
songId: int = 0
|
||||
difficulty: int = 1
|
||||
@@ -527,49 +607,59 @@ class BestScoreDetailV1:
|
||||
self.bestCombo,
|
||||
self.lowestMissCtMaybe,
|
||||
self.isUnlock,
|
||||
self.rating
|
||||
self.rating,
|
||||
]
|
||||
|
||||
|
||||
class BestScoreDetailV2(BestScoreDetailV1):
|
||||
gradeCounts: SongDetailGradeCountsV2 = SongDetailGradeCountsV2()
|
||||
|
||||
|
||||
class SongUpdateJudgementCounts:
|
||||
marvCt: int
|
||||
greatCt: int
|
||||
goodCt: int
|
||||
missCt: int
|
||||
|
||||
def __init__(self, marvs: int = 0, greats: int = 0, goods: int = 0, misses: int = 0) -> None:
|
||||
def __init__(
|
||||
self, marvs: int = 0, greats: int = 0, goods: int = 0, misses: int = 0
|
||||
) -> None:
|
||||
self.marvCt = marvs
|
||||
self.greatCt = greats
|
||||
self.goodCt = goods
|
||||
self.missCt = misses
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.marvCt, self.greatCt, self.goodCt, self.missCt]
|
||||
|
||||
|
||||
class SongUpdateDetailV1:
|
||||
def __init__(self, data: List) -> None:
|
||||
def __init__(self, data: List) -> None:
|
||||
if data is not None:
|
||||
self.songId = data[0]
|
||||
self.difficulty = data[1]
|
||||
self.level = data[2]
|
||||
self.score = data[3]
|
||||
|
||||
self.judgements = SongUpdateJudgementCounts(data[4][0], data[4][1], data[4][2], data[4][3])
|
||||
|
||||
self.judgements = SongUpdateJudgementCounts(
|
||||
data[4][0], data[4][1], data[4][2], data[4][3]
|
||||
)
|
||||
self.maxCombo = data[5]
|
||||
self.grade = WaccaConstants.GRADES(data[6]) # .value to get number, .name to get letter
|
||||
self.grade = WaccaConstants.GRADES(
|
||||
data[6]
|
||||
) # .value to get number, .name to get letter
|
||||
|
||||
self.flagCleared = False if data[7] == 0 else True
|
||||
self.flagMissless = False if data[8] == 0 else True
|
||||
self.flagFullcombo = False if data[9] == 0 else True
|
||||
self.flagAllMarvelous = False if data[10] == 0 else True
|
||||
self.flagGiveUp = False if data[11] == 0 else True
|
||||
self.skillPt = data[12]
|
||||
self.skillPt = data[12]
|
||||
self.fastCt = 0
|
||||
self.slowCt = 0
|
||||
self.flagNewRecord = False
|
||||
|
||||
|
||||
class SongUpdateDetailV2(SongUpdateDetailV1):
|
||||
def __init__(self, data: List) -> None:
|
||||
super().__init__(data)
|
||||
@@ -578,6 +668,7 @@ class SongUpdateDetailV2(SongUpdateDetailV1):
|
||||
self.slowCt = data[14]
|
||||
self.flagNewRecord = False if data[15] == 0 else True
|
||||
|
||||
|
||||
class SeasonalInfoV1:
|
||||
def __init__(self) -> None:
|
||||
self.level: int = 0
|
||||
@@ -586,7 +677,7 @@ class SeasonalInfoV1:
|
||||
self.cumulativeScore: int = 0
|
||||
self.titlesObtained: int = 0
|
||||
self.iconsObtained: int = 0
|
||||
self.skillPts: int = 0
|
||||
self.skillPts: int = 0
|
||||
self.noteColorsObtained: int = 0
|
||||
self.noteSoundsObtained: int = 0
|
||||
|
||||
@@ -600,9 +691,10 @@ class SeasonalInfoV1:
|
||||
self.iconsObtained,
|
||||
self.skillPts,
|
||||
self.noteColorsObtained,
|
||||
self.noteSoundsObtained
|
||||
self.noteSoundsObtained,
|
||||
]
|
||||
|
||||
|
||||
class SeasonalInfoV2(SeasonalInfoV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -612,6 +704,7 @@ class SeasonalInfoV2(SeasonalInfoV1):
|
||||
def make(self) -> List:
|
||||
return super().make() + [self.platesObtained, self.cumulativeGatePts]
|
||||
|
||||
|
||||
class BingoPageStatus:
|
||||
id = 0
|
||||
location = 1
|
||||
@@ -625,23 +718,30 @@ class BingoPageStatus:
|
||||
def make(self) -> List:
|
||||
return [self.id, self.location, self.progress]
|
||||
|
||||
|
||||
class BingoDetail:
|
||||
def __init__(self, pageNumber: int) -> None:
|
||||
self.pageNumber = pageNumber
|
||||
self.pageStatus: List[BingoPageStatus] = []
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
status = []
|
||||
for x in self.pageStatus:
|
||||
status.append(x.make())
|
||||
|
||||
return [
|
||||
self.pageNumber,
|
||||
status
|
||||
]
|
||||
return [self.pageNumber, status]
|
||||
|
||||
|
||||
class GateDetailV1:
|
||||
def __init__(self, gate_id: int = 1, page: int = 1, progress: int = 0, loops: int = 0, last_used: int = 0, mission_flg = 0) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
gate_id: int = 1,
|
||||
page: int = 1,
|
||||
progress: int = 0,
|
||||
loops: int = 0,
|
||||
last_used: int = 0,
|
||||
mission_flg=0,
|
||||
) -> None:
|
||||
self.id = gate_id
|
||||
self.page = page
|
||||
self.progress = progress
|
||||
@@ -652,14 +752,17 @@ class GateDetailV1:
|
||||
def make(self) -> List:
|
||||
return [self.id, 1, self.page, self.progress, self.loops, self.lastUsed]
|
||||
|
||||
|
||||
class GateDetailV2(GateDetailV1):
|
||||
def make(self) -> List:
|
||||
return super().make() + [self.missionFlg]
|
||||
|
||||
|
||||
class GachaInfo:
|
||||
def make(self) -> List:
|
||||
return []
|
||||
|
||||
|
||||
class LastSongDetail:
|
||||
lastSongId = 90
|
||||
lastSongDiff = 1
|
||||
@@ -667,8 +770,14 @@ class LastSongDetail:
|
||||
lastFolderId = 1
|
||||
lastSongOrd = 1
|
||||
|
||||
def __init__(self, last_song: int = 90, last_diff: int = 1, last_folder_ord: int = 1,
|
||||
last_folder_id: int = 1, last_song_ord: int = 1) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
last_song: int = 90,
|
||||
last_diff: int = 1,
|
||||
last_folder_ord: int = 1,
|
||||
last_folder_id: int = 1,
|
||||
last_song_ord: int = 1,
|
||||
) -> None:
|
||||
self.lastSongId = last_song
|
||||
self.lastSongDiff = last_diff
|
||||
self.lastFolderOrd = last_folder_ord
|
||||
@@ -676,13 +785,20 @@ class LastSongDetail:
|
||||
self.lastSongOrd = last_song_ord
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.lastSongId, self.lastSongDiff, self.lastFolderOrd, self.lastFolderId,
|
||||
self.lastSongOrd]
|
||||
return [
|
||||
self.lastSongId,
|
||||
self.lastSongDiff,
|
||||
self.lastFolderOrd,
|
||||
self.lastFolderId,
|
||||
self.lastSongOrd,
|
||||
]
|
||||
|
||||
|
||||
class FriendDetail:
|
||||
def make(self) -> List:
|
||||
return []
|
||||
|
||||
|
||||
class LoginBonusInfo:
|
||||
def __init__(self) -> None:
|
||||
self.tickets: List[TicketItem] = []
|
||||
@@ -695,27 +811,38 @@ class LoginBonusInfo:
|
||||
|
||||
for ticket in self.tickets:
|
||||
tks.append(ticket.make())
|
||||
|
||||
|
||||
for item in self.items:
|
||||
itms.append(item.make())
|
||||
|
||||
return [ tks, itms, self.message ]
|
||||
|
||||
return [tks, itms, self.message]
|
||||
|
||||
|
||||
class VipLoginBonus:
|
||||
id = 1
|
||||
unknown = 0
|
||||
item: GenericItemRecv
|
||||
|
||||
def __init__(self, id: int = 1, unk: int = 0, item_type: int = 1, item_id: int = 1, item_qt: int = 1) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
id: int = 1,
|
||||
unk: int = 0,
|
||||
item_type: int = 1,
|
||||
item_id: int = 1,
|
||||
item_qt: int = 1,
|
||||
) -> None:
|
||||
self.id = id
|
||||
self.unknown = unk
|
||||
self.item = GenericItemRecv(item_type, item_id, item_qt)
|
||||
|
||||
def make(self) -> List:
|
||||
return [ self.id, self.unknown, self.item.make() ]
|
||||
return [self.id, self.unknown, self.item.make()]
|
||||
|
||||
|
||||
class VipInfo:
|
||||
def __init__(self, year: int = 2019, month: int = 1, day: int = 1, num_item: int = 1) -> None:
|
||||
def __init__(
|
||||
self, year: int = 2019, month: int = 1, day: int = 1, num_item: int = 1
|
||||
) -> None:
|
||||
self.pageYear = year
|
||||
self.pageMonth = month
|
||||
self.pageDay = day
|
||||
@@ -729,22 +856,32 @@ class VipInfo:
|
||||
|
||||
for present in self.presentInfo:
|
||||
pres.append(present.make())
|
||||
|
||||
|
||||
for b in self.vipLoginBonus:
|
||||
vipBonus.append(b.make())
|
||||
|
||||
return [ self.pageYear, self.pageMonth, self.pageDay, self.numItem, pres, vipBonus ]
|
||||
return [
|
||||
self.pageYear,
|
||||
self.pageMonth,
|
||||
self.pageDay,
|
||||
self.numItem,
|
||||
pres,
|
||||
vipBonus,
|
||||
]
|
||||
|
||||
|
||||
class PurchaseType(Enum):
|
||||
PurchaseTypeCredit = 1
|
||||
PurchaseTypeWP = 2
|
||||
|
||||
|
||||
class PlayType(Enum):
|
||||
PlayTypeSingle = 1
|
||||
PlayTypeVs = 2
|
||||
PlayTypeCoop = 3
|
||||
PlayTypeStageup = 4
|
||||
|
||||
|
||||
class StageInfo:
|
||||
danId: int = 0
|
||||
danLevel: int = 0
|
||||
@@ -770,15 +907,17 @@ class StageInfo:
|
||||
self.song2BestScore,
|
||||
self.song3BestScore,
|
||||
],
|
||||
self.unk5
|
||||
self.unk5,
|
||||
]
|
||||
|
||||
|
||||
class StageupClearType(Enum):
|
||||
FAIL = 0
|
||||
CLEAR_BLUE = 1
|
||||
CLEAR_SILVER = 2
|
||||
CLEAR_GOLD = 3
|
||||
|
||||
|
||||
class MusicUpdateDetailV1:
|
||||
def __init__(self) -> None:
|
||||
self.songId = 0
|
||||
@@ -790,7 +929,7 @@ class MusicUpdateDetailV1:
|
||||
self.lowestMissCount = 0
|
||||
self.maxSkillPts = 0
|
||||
self.locked = 0
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.songId,
|
||||
@@ -804,25 +943,30 @@ class MusicUpdateDetailV1:
|
||||
self.locked,
|
||||
]
|
||||
|
||||
|
||||
class MusicUpdateDetailV2(MusicUpdateDetailV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.rating = 0
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return super().make() + [self.rating]
|
||||
|
||||
|
||||
class MusicUpdateDetailV3(MusicUpdateDetailV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.grades = SongDetailGradeCountsV2()
|
||||
|
||||
|
||||
class SongRatingUpdate:
|
||||
def __init__(self, song_id: int = 0, difficulty: int = 1, new_rating: int = 0) -> None:
|
||||
def __init__(
|
||||
self, song_id: int = 0, difficulty: int = 1, new_rating: int = 0
|
||||
) -> None:
|
||||
self.songId = song_id
|
||||
self.difficulty = difficulty
|
||||
self.rating = new_rating
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.songId,
|
||||
@@ -830,21 +974,20 @@ class SongRatingUpdate:
|
||||
self.rating,
|
||||
]
|
||||
|
||||
|
||||
class GateTutorialFlag:
|
||||
def __init__(self, tutorial_id: int = 1, flg_watched: bool = False) -> None:
|
||||
self.tutorialId = tutorial_id
|
||||
self.flagWatched = flg_watched
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
self.tutorialId,
|
||||
int(self.flagWatched)
|
||||
]
|
||||
return [self.tutorialId, int(self.flagWatched)]
|
||||
|
||||
|
||||
class DateUpdate:
|
||||
def __init__(self, date_id: int = 0, timestamp: int = 0) -> None:
|
||||
self.id = date_id
|
||||
self.timestamp = timestamp
|
||||
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.id, self.timestamp]
|
||||
|
||||
@@ -4,6 +4,7 @@ from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import HousingInfo
|
||||
from titles.wacca.const import WaccaConstants
|
||||
|
||||
|
||||
# ---housing/get----
|
||||
class HousingGetResponse(BaseResponse):
|
||||
def __init__(self, housingId: int) -> None:
|
||||
@@ -15,6 +16,7 @@ class HousingGetResponse(BaseResponse):
|
||||
self.params = [self.housingId, self.regionId]
|
||||
return super().make()
|
||||
|
||||
|
||||
# ---housing/start----
|
||||
class HousingStartRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -26,6 +28,7 @@ class HousingStartRequestV1(BaseRequest):
|
||||
for info in self.params[2]:
|
||||
self.info.append(HousingInfo(info[0], info[1]))
|
||||
|
||||
|
||||
class HousingStartRequestV2(HousingStartRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super(HousingStartRequestV1, self).__init__(data)
|
||||
@@ -37,20 +40,84 @@ class HousingStartRequestV2(HousingStartRequestV1):
|
||||
for info in self.params[3]:
|
||||
self.info.append(HousingInfo(info[0], info[1]))
|
||||
|
||||
|
||||
class HousingStartResponseV1(BaseResponse):
|
||||
def __init__(self, regionId: WaccaConstants.Region = WaccaConstants.Region.HOKKAIDO, songList: List[int] = []) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
regionId: WaccaConstants.Region = WaccaConstants.Region.HOKKAIDO,
|
||||
songList: List[int] = [],
|
||||
) -> None:
|
||||
super().__init__()
|
||||
self.regionId = regionId
|
||||
self.songList = songList # Recomended songs
|
||||
self.songList = songList # Recomended songs
|
||||
|
||||
if not self.songList:
|
||||
self.songList = [
|
||||
1269,1007,1270,1002,1020,1003,1008,1211,1018,1092,1056,32,
|
||||
1260,1230,1258,1251,2212,1264,1125,1037,2001,1272,1126,1119,
|
||||
1104,1070,1047,1044,1027,1004,1001,24,2068,2062,2021,1275,
|
||||
1249,1207,1203,1107,1021,1009,9,4,3,23,22,2014,13,1276,1247,
|
||||
1240,1237,1128,1114,1110,1109,1102,1045,1043,1036,1035,1030,
|
||||
1023,1015
|
||||
self.songList = [
|
||||
1269,
|
||||
1007,
|
||||
1270,
|
||||
1002,
|
||||
1020,
|
||||
1003,
|
||||
1008,
|
||||
1211,
|
||||
1018,
|
||||
1092,
|
||||
1056,
|
||||
32,
|
||||
1260,
|
||||
1230,
|
||||
1258,
|
||||
1251,
|
||||
2212,
|
||||
1264,
|
||||
1125,
|
||||
1037,
|
||||
2001,
|
||||
1272,
|
||||
1126,
|
||||
1119,
|
||||
1104,
|
||||
1070,
|
||||
1047,
|
||||
1044,
|
||||
1027,
|
||||
1004,
|
||||
1001,
|
||||
24,
|
||||
2068,
|
||||
2062,
|
||||
2021,
|
||||
1275,
|
||||
1249,
|
||||
1207,
|
||||
1203,
|
||||
1107,
|
||||
1021,
|
||||
1009,
|
||||
9,
|
||||
4,
|
||||
3,
|
||||
23,
|
||||
22,
|
||||
2014,
|
||||
13,
|
||||
1276,
|
||||
1247,
|
||||
1240,
|
||||
1237,
|
||||
1128,
|
||||
1114,
|
||||
1110,
|
||||
1109,
|
||||
1102,
|
||||
1045,
|
||||
1043,
|
||||
1036,
|
||||
1035,
|
||||
1030,
|
||||
1023,
|
||||
1015,
|
||||
]
|
||||
|
||||
def make(self) -> Dict:
|
||||
|
||||
@@ -3,6 +3,7 @@ from typing import List, Dict
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import UserOption, DateUpdate
|
||||
|
||||
|
||||
# ---user/info/update---
|
||||
class UserInfoUpdateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -16,17 +17,20 @@ class UserInfoUpdateRequest(BaseRequest):
|
||||
|
||||
for x in self.params[1]:
|
||||
self.optsUpdated.append(UserOption(x[0], x[1]))
|
||||
|
||||
|
||||
for x in self.params[3]:
|
||||
self.datesUpdated.append(DateUpdate(x[0], x[1]))
|
||||
|
||||
|
||||
# ---user/info/getMyroom--- TODO: Understand this better
|
||||
class UserInfogetMyroomRequest(BaseRequest):
|
||||
game_id = 0
|
||||
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.game_id = int(self.params[0])
|
||||
|
||||
|
||||
class UserInfogetMyroomResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -49,6 +53,7 @@ class UserInfogetMyroomResponseV1(BaseResponse):
|
||||
|
||||
return super().make()
|
||||
|
||||
|
||||
class UserInfogetMyroomResponseV2(UserInfogetMyroomResponseV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -58,13 +63,16 @@ class UserInfogetMyroomResponseV2(UserInfogetMyroomResponseV1):
|
||||
self.params += [0, 0, 0]
|
||||
return super(UserInfogetMyroomResponseV1, self).make()
|
||||
|
||||
|
||||
# ---user/info/getRanking---
|
||||
class UserInfogetRankingRequest(BaseRequest):
|
||||
game_id = 0
|
||||
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.game_id = int(self.params[0])
|
||||
|
||||
|
||||
|
||||
class UserInfogetRankingResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -85,4 +93,4 @@ class UserInfogetRankingResponse(BaseResponse):
|
||||
self.wacca_points_ranking,
|
||||
]
|
||||
|
||||
return super().make()
|
||||
return super().make()
|
||||
|
||||
@@ -5,6 +5,7 @@ from titles.wacca.handlers.helpers import PurchaseType, GenericItemRecv
|
||||
from titles.wacca.handlers.helpers import TicketItem, SongRatingUpdate, BingoDetail
|
||||
from titles.wacca.handlers.helpers import BingoPageStatus, GateTutorialFlag
|
||||
|
||||
|
||||
# ---user/goods/purchase---
|
||||
class UserGoodsPurchaseRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -14,14 +15,17 @@ class UserGoodsPurchaseRequest(BaseRequest):
|
||||
self.purchaseCount = int(self.params[2])
|
||||
self.purchaseType = PurchaseType(self.params[3])
|
||||
self.cost = int(self.params[4])
|
||||
self.itemObtained: GenericItemRecv = GenericItemRecv(self.params[5][0], self.params[5][1], self.params[5][2])
|
||||
self.itemObtained: GenericItemRecv = GenericItemRecv(
|
||||
self.params[5][0], self.params[5][1], self.params[5][2]
|
||||
)
|
||||
|
||||
|
||||
class UserGoodsPurchaseResponse(BaseResponse):
|
||||
def __init__(self, wp: int = 0, tickets: List = []) -> None:
|
||||
super().__init__()
|
||||
self.currentWp = wp
|
||||
self.tickets: List[TicketItem] = []
|
||||
|
||||
|
||||
for ticket in tickets:
|
||||
self.tickets.append(TicketItem(ticket[0], ticket[1], ticket[2]))
|
||||
|
||||
@@ -34,6 +38,7 @@ class UserGoodsPurchaseResponse(BaseResponse):
|
||||
|
||||
return super().make()
|
||||
|
||||
|
||||
# ---user/sugaroku/update---
|
||||
class UserSugarokuUpdateRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -44,17 +49,19 @@ class UserSugarokuUpdateRequestV1(BaseRequest):
|
||||
self.progress = int(self.params[3])
|
||||
self.loops = int(self.params[4])
|
||||
self.boostsUsed = self.params[5]
|
||||
self.totalPts = int(self.params[7])
|
||||
self.totalPts = int(self.params[7])
|
||||
self.itemsObtainted: List[GenericItemRecv] = []
|
||||
|
||||
for item in self.params[6]:
|
||||
self.itemsObtainted.append(GenericItemRecv(item[0], item[1], item[2]))
|
||||
|
||||
|
||||
class UserSugarokuUpdateRequestV2(UserSugarokuUpdateRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.mission_flag = int(self.params[8])
|
||||
|
||||
|
||||
# ---user/rating/update---
|
||||
class UserRatingUpdateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -66,8 +73,9 @@ class UserRatingUpdateRequest(BaseRequest):
|
||||
for x in self.params[2]:
|
||||
self.songs.append(SongRatingUpdate(x[0], x[1], x[2]))
|
||||
|
||||
|
||||
# ---user/mission/update---
|
||||
class UserMissionUpdateRequest(BaseRequest):
|
||||
class UserMissionUpdateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.profileId = self.params[0]
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
from typing import List, Dict
|
||||
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import GenericItemRecv, SongUpdateDetailV2, TicketItem
|
||||
from titles.wacca.handlers.helpers import (
|
||||
GenericItemRecv,
|
||||
SongUpdateDetailV2,
|
||||
TicketItem,
|
||||
)
|
||||
from titles.wacca.handlers.helpers import MusicUpdateDetailV2, MusicUpdateDetailV3
|
||||
from titles.wacca.handlers.helpers import SeasonalInfoV2, SeasonalInfoV1, SongUpdateDetailV1
|
||||
from titles.wacca.handlers.helpers import (
|
||||
SeasonalInfoV2,
|
||||
SeasonalInfoV1,
|
||||
SongUpdateDetailV1,
|
||||
)
|
||||
from titles.wacca.handlers.helpers import MusicUpdateDetailV1
|
||||
|
||||
|
||||
# ---user/music/update---
|
||||
class UserMusicUpdateRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -18,82 +27,86 @@ class UserMusicUpdateRequestV1(BaseRequest):
|
||||
for itm in data["params"][3]:
|
||||
self.itemsObtained.append(GenericItemRecv(itm[0], itm[1], itm[2]))
|
||||
|
||||
|
||||
class UserMusicUpdateRequestV2(UserMusicUpdateRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.songDetail = SongUpdateDetailV2(self.params[2])
|
||||
|
||||
|
||||
class UserMusicUpdateResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.songDetail = MusicUpdateDetailV1()
|
||||
self.seasonInfo = SeasonalInfoV1()
|
||||
self.rankingInfo: List[List[int]] = []
|
||||
|
||||
|
||||
def make(self) -> Dict:
|
||||
self.params = [
|
||||
self.songDetail.make(),
|
||||
[self.songDetail.songId, self.songDetail.clearCounts.playCt],
|
||||
self.seasonInfo.make(),
|
||||
self.rankingInfo
|
||||
self.rankingInfo,
|
||||
]
|
||||
|
||||
return super().make()
|
||||
|
||||
|
||||
class UserMusicUpdateResponseV2(UserMusicUpdateResponseV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.songDetail = MusicUpdateDetailV2()
|
||||
self.seasonInfo = SeasonalInfoV2()
|
||||
|
||||
|
||||
class UserMusicUpdateResponseV3(UserMusicUpdateResponseV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.songDetail = MusicUpdateDetailV3()
|
||||
|
||||
|
||||
# ---user/music/updateCoop---
|
||||
class UserMusicUpdateCoopRequest(UserMusicUpdateRequestV2):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.coopData = self.params[4]
|
||||
|
||||
|
||||
# ---user/music/updateVs---
|
||||
class UserMusicUpdateVsRequest(UserMusicUpdateRequestV2):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.vsData = self.params[4]
|
||||
|
||||
|
||||
# ---user/music/unlock---
|
||||
class UserMusicUnlockRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.profileId = self.params[0]
|
||||
self.songId = self.params[1]
|
||||
self.difficulty = self.params[2]
|
||||
self.difficulty = self.params[2]
|
||||
self.itemsUsed: List[GenericItemRecv] = []
|
||||
|
||||
for itm in self.params[3]:
|
||||
self.itemsUsed.append(GenericItemRecv(itm[0], itm[1], itm[2]))
|
||||
|
||||
|
||||
class UserMusicUnlockResponse(BaseResponse):
|
||||
def __init__(self, current_wp: int = 0, tickets_remaining: List = []) -> None:
|
||||
super().__init__()
|
||||
self.wp = current_wp
|
||||
self.wp = current_wp
|
||||
self.tickets: List[TicketItem] = []
|
||||
|
||||
for ticket in tickets_remaining:
|
||||
self.tickets.append(TicketItem(ticket[0], ticket[1], ticket[2]))
|
||||
|
||||
def make(self)-> Dict:
|
||||
|
||||
def make(self) -> Dict:
|
||||
tickets = []
|
||||
|
||||
for ticket in self.tickets:
|
||||
tickets.append(ticket.make())
|
||||
|
||||
self.params = [
|
||||
self.wp,
|
||||
tickets
|
||||
]
|
||||
self.params = [self.wp, tickets]
|
||||
|
||||
return super().make()
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ from typing import List, Dict, Optional
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import *
|
||||
|
||||
|
||||
# ---user/status/get----
|
||||
class UserStatusGetRequest(BaseRequest):
|
||||
aimeId: int = 0
|
||||
@@ -11,6 +12,7 @@ class UserStatusGetRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.aimeId = int(data["params"][0])
|
||||
|
||||
|
||||
class UserStatusGetV1Response(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -27,14 +29,12 @@ class UserStatusGetV1Response(BaseResponse):
|
||||
self.setTitleId,
|
||||
self.setIconId,
|
||||
self.profileStatus.value,
|
||||
[
|
||||
self.versionStatus.value,
|
||||
str(self.lastGameVersion)
|
||||
]
|
||||
[self.versionStatus.value, str(self.lastGameVersion)],
|
||||
]
|
||||
|
||||
|
||||
return super().make()
|
||||
|
||||
|
||||
class UserStatusGetV2Response(UserStatusGetV1Response):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -48,6 +48,7 @@ class UserStatusGetV2Response(UserStatusGetV1Response):
|
||||
|
||||
return super(UserStatusGetV1Response, self).make()
|
||||
|
||||
|
||||
# ---user/status/getDetail----
|
||||
class UserStatusGetDetailRequest(BaseRequest):
|
||||
userId: int = 0
|
||||
@@ -56,6 +57,7 @@ class UserStatusGetDetailRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.userId = data["params"][0]
|
||||
|
||||
|
||||
class UserStatusGetDetailResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -64,22 +66,32 @@ class UserStatusGetDetailResponseV1(BaseResponse):
|
||||
self.seasonalPlayModeCounts: List[PlayModeCounts] = []
|
||||
self.userItems: UserItemInfoV1 = UserItemInfoV1()
|
||||
self.scores: List[BestScoreDetailV1] = []
|
||||
self.songPlayStatus: List[int] = [0,0]
|
||||
self.songPlayStatus: List[int] = [0, 0]
|
||||
self.seasonInfo: SeasonalInfoV1 = SeasonalInfoV1()
|
||||
self.playAreaList: List = [ [0],[0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0],[0,0,0,0],[0,0,0,0,0,0,0],[0] ]
|
||||
self.playAreaList: List = [
|
||||
[0],
|
||||
[0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0, 0],
|
||||
[0],
|
||||
]
|
||||
self.songUpdateTime: int = 0
|
||||
|
||||
def make(self)-> Dict:
|
||||
def make(self) -> Dict:
|
||||
opts = []
|
||||
play_modes = []
|
||||
scores = []
|
||||
|
||||
for x in self.seasonalPlayModeCounts:
|
||||
play_modes.append(x.make())
|
||||
|
||||
|
||||
for x in self.scores:
|
||||
scores.append(x.make())
|
||||
|
||||
|
||||
for x in self.options:
|
||||
opts.append(x.make())
|
||||
|
||||
@@ -92,21 +104,31 @@ class UserStatusGetDetailResponseV1(BaseResponse):
|
||||
self.songPlayStatus,
|
||||
self.seasonInfo.make(),
|
||||
self.playAreaList,
|
||||
self.songUpdateTime
|
||||
self.songUpdateTime,
|
||||
]
|
||||
|
||||
return super().make()
|
||||
|
||||
def find_score_idx(self, song_id: int, difficulty: int = 1, start_idx: int = 0, stop_idx: Optional[int] = None) -> Optional[int]:
|
||||
|
||||
def find_score_idx(
|
||||
self,
|
||||
song_id: int,
|
||||
difficulty: int = 1,
|
||||
start_idx: int = 0,
|
||||
stop_idx: Optional[int] = None,
|
||||
) -> Optional[int]:
|
||||
if stop_idx is None or stop_idx > len(self.scores):
|
||||
stop_idx = len(self.scores)
|
||||
|
||||
for x in range(start_idx, stop_idx):
|
||||
if self.scores[x].songId == song_id and self.scores[x].difficulty == difficulty:
|
||||
if (
|
||||
self.scores[x].songId == song_id
|
||||
and self.scores[x].difficulty == difficulty
|
||||
):
|
||||
return x
|
||||
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -122,7 +144,7 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
||||
self.gatchaInfo: List[GachaInfo] = []
|
||||
self.friendList: List[FriendDetail] = []
|
||||
|
||||
def make(self)-> Dict:
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
gates = []
|
||||
friends = []
|
||||
@@ -130,13 +152,13 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
||||
|
||||
for x in self.gateInfo:
|
||||
gates.append(x.make())
|
||||
|
||||
|
||||
for x in self.friendList:
|
||||
friends.append(x.make())
|
||||
|
||||
|
||||
for x in self.gateTutorialFlags:
|
||||
tut_flg.append(x.make())
|
||||
|
||||
|
||||
while len(tut_flg) < 5:
|
||||
flag_id = len(tut_flg) + 1
|
||||
tut_flg.append([flag_id, 0])
|
||||
@@ -152,11 +174,13 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
||||
|
||||
return super(UserStatusGetDetailResponseV1, self).make()
|
||||
|
||||
|
||||
class UserStatusGetDetailResponseV3(UserStatusGetDetailResponseV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.gateInfo: List[GateDetailV2] = []
|
||||
|
||||
|
||||
class UserStatusGetDetailResponseV4(UserStatusGetDetailResponseV3):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -164,12 +188,13 @@ class UserStatusGetDetailResponseV4(UserStatusGetDetailResponseV3):
|
||||
self.bingoStatus: BingoDetail = BingoDetail(0)
|
||||
self.scores: List[BestScoreDetailV2] = []
|
||||
|
||||
def make(self)-> Dict:
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.bingoStatus.make())
|
||||
|
||||
return super(UserStatusGetDetailResponseV1, self).make()
|
||||
|
||||
|
||||
# ---user/status/login----
|
||||
class UserStatusLoginRequest(BaseRequest):
|
||||
userId: int = 0
|
||||
@@ -178,16 +203,19 @@ class UserStatusLoginRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.userId = data["params"][0]
|
||||
|
||||
|
||||
class UserStatusLoginResponseV1(BaseResponse):
|
||||
def __init__(self, is_first_login_daily: bool = False, last_login_date: int = 0) -> None:
|
||||
def __init__(
|
||||
self, is_first_login_daily: bool = False, last_login_date: int = 0
|
||||
) -> None:
|
||||
super().__init__()
|
||||
self.dailyBonus: List[LoginBonusInfo] = []
|
||||
self.consecBonus: List[LoginBonusInfo] = []
|
||||
self.otherBonus: List[LoginBonusInfo] = []
|
||||
self.otherBonus: List[LoginBonusInfo] = []
|
||||
self.firstLoginDaily = is_first_login_daily
|
||||
self.lastLoginDate = last_login_date
|
||||
|
||||
def make(self)-> Dict:
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
daily = []
|
||||
consec = []
|
||||
@@ -202,32 +230,39 @@ class UserStatusLoginResponseV1(BaseResponse):
|
||||
for bonus in self.otherBonus:
|
||||
other.append(bonus.make())
|
||||
|
||||
self.params = [ daily, consec, other, int(self.firstLoginDaily)]
|
||||
self.params = [daily, consec, other, int(self.firstLoginDaily)]
|
||||
return super().make()
|
||||
|
||||
|
||||
class UserStatusLoginResponseV2(UserStatusLoginResponseV1):
|
||||
def __init__(self, is_first_login_daily: bool = False, last_login_date: int = 0) -> None:
|
||||
def __init__(
|
||||
self, is_first_login_daily: bool = False, last_login_date: int = 0
|
||||
) -> None:
|
||||
super().__init__(is_first_login_daily)
|
||||
self.lastLoginDate = last_login_date
|
||||
|
||||
self.vipInfo = VipInfo()
|
||||
|
||||
def make(self)-> Dict:
|
||||
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.vipInfo.make())
|
||||
self.params.append(self.lastLoginDate)
|
||||
return super(UserStatusLoginResponseV1, self).make()
|
||||
|
||||
|
||||
class UserStatusLoginResponseV3(UserStatusLoginResponseV2):
|
||||
def __init__(self, is_first_login_daily: bool = False, last_login_date: int = 0) -> None:
|
||||
def __init__(
|
||||
self, is_first_login_daily: bool = False, last_login_date: int = 0
|
||||
) -> None:
|
||||
super().__init__(is_first_login_daily, last_login_date)
|
||||
self.unk: List = []
|
||||
|
||||
def make(self)-> Dict:
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.unk)
|
||||
return super(UserStatusLoginResponseV1, self).make()
|
||||
|
||||
|
||||
# ---user/status/create---
|
||||
class UserStatusCreateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -235,26 +270,27 @@ class UserStatusCreateRequest(BaseRequest):
|
||||
self.aimeId = data["params"][0]
|
||||
self.username = data["params"][1]
|
||||
|
||||
|
||||
class UserStatusCreateResponseV1(BaseResponse):
|
||||
def __init__(self, userId: int, username: str) -> None:
|
||||
super().__init__()
|
||||
self.userStatus = UserStatusV1()
|
||||
self.userStatus.userId = userId
|
||||
self.userStatus.username = username
|
||||
|
||||
def make(self)-> Dict:
|
||||
self.params = [
|
||||
self.userStatus.make()
|
||||
]
|
||||
|
||||
def make(self) -> Dict:
|
||||
self.params = [self.userStatus.make()]
|
||||
return super().make()
|
||||
|
||||
|
||||
class UserStatusCreateResponseV2(UserStatusCreateResponseV1):
|
||||
def __init__(self, userId: int, username: str) -> None:
|
||||
super().__init__(userId, username)
|
||||
self.userStatus: UserStatusV2 = UserStatusV2()
|
||||
self.userStatus: UserStatusV2 = UserStatusV2()
|
||||
self.userStatus.userId = userId
|
||||
self.userStatus.username = username
|
||||
|
||||
|
||||
# ---user/status/logout---
|
||||
class UserStatusLogoutRequest(BaseRequest):
|
||||
userId: int
|
||||
@@ -263,6 +299,7 @@ class UserStatusLogoutRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.userId = data["params"][0]
|
||||
|
||||
|
||||
# ---user/status/update---
|
||||
class UserStatusUpdateRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -274,11 +311,17 @@ class UserStatusUpdateRequestV1(BaseRequest):
|
||||
for itm in data["params"][2]:
|
||||
self.itemsRecieved.append(GenericItemRecv(itm[0], itm[1], itm[2]))
|
||||
|
||||
|
||||
class UserStatusUpdateRequestV2(UserStatusUpdateRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.isContinue = bool(data["params"][3])
|
||||
self.isFirstPlayFree = bool(data["params"][4])
|
||||
self.itemsUsed = data["params"][5]
|
||||
self.lastSongInfo = LastSongDetail(data["params"][6][0], data["params"][6][1],
|
||||
data["params"][6][2], data["params"][6][3], data["params"][6][4])
|
||||
self.lastSongInfo = LastSongDetail(
|
||||
data["params"][6][0],
|
||||
data["params"][6][1],
|
||||
data["params"][6][2],
|
||||
data["params"][6][3],
|
||||
data["params"][6][4],
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ from typing import Dict, List
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import StageInfo, StageupClearType, GenericItemRecv
|
||||
|
||||
|
||||
# --user/trial/get--
|
||||
class UserTrialGetRequest(BaseRequest):
|
||||
profileId: int = 0
|
||||
@@ -10,20 +11,22 @@ class UserTrialGetRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.profileId = self.params[0]
|
||||
|
||||
|
||||
class UserTrialGetResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
|
||||
|
||||
self.stageList: List[StageInfo] = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
dans = []
|
||||
for x in self.stageList:
|
||||
dans.append(x.make())
|
||||
|
||||
|
||||
self.params = [dans]
|
||||
return super().make()
|
||||
|
||||
|
||||
# --user/trial/update--
|
||||
class UserTrialUpdateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -43,9 +46,10 @@ class UserTrialUpdateRequest(BaseRequest):
|
||||
if len(self.params) == 8:
|
||||
self.unk7 = self.params[7]
|
||||
|
||||
|
||||
class UserTrialUpdateResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
|
||||
|
||||
def make(self) -> Dict:
|
||||
return super().make()
|
||||
return super().make()
|
||||
|
||||
@@ -2,12 +2,14 @@ from typing import Dict, List
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import VipLoginBonus
|
||||
|
||||
|
||||
# --user/vip/get--
|
||||
class UserVipGetRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.profileId = self.params[0]
|
||||
|
||||
|
||||
class UserVipGetResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -15,22 +17,16 @@ class UserVipGetResponse(BaseResponse):
|
||||
self.unknown1: int = 1
|
||||
self.unknown2: int = 1
|
||||
self.presents: List[VipLoginBonus] = []
|
||||
|
||||
|
||||
def make(self) -> Dict:
|
||||
pres = []
|
||||
for x in self.presents:
|
||||
pres.append(x.make())
|
||||
|
||||
self.params = [
|
||||
self.vipDays,
|
||||
[
|
||||
self.unknown1,
|
||||
self.unknown2,
|
||||
pres
|
||||
]
|
||||
]
|
||||
self.params = [self.vipDays, [self.unknown1, self.unknown2, pres]]
|
||||
return super().make()
|
||||
|
||||
|
||||
# --user/vip/start--
|
||||
class UserVipStartRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
@@ -39,6 +35,7 @@ class UserVipStartRequest(BaseRequest):
|
||||
self.cost = self.params[1]
|
||||
self.days = self.params[2]
|
||||
|
||||
|
||||
class UserVipStartResponse(BaseResponse):
|
||||
def __init__(self, expires: int = 0) -> None:
|
||||
super().__init__()
|
||||
@@ -46,9 +43,6 @@ class UserVipStartResponse(BaseResponse):
|
||||
self.presents = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
self.params = [
|
||||
self.whenExpires,
|
||||
self.presents
|
||||
]
|
||||
self.params = [self.whenExpires, self.presents]
|
||||
|
||||
return super().make()
|
||||
return super().make()
|
||||
|
||||
Reference in New Issue
Block a user