Move logic for handling mdata_ver into central place for Jubeat, fix saucer and fulfill over-sending rival data.
This commit is contained in:
parent
dca2194a57
commit
d162d57024
@ -159,23 +159,31 @@ class JubeatBase(CoreHandler, CardManagerHandler, PASELIHandler, Base):
|
||||
|
||||
return self.format_profile(userid, profile)
|
||||
|
||||
def get_scores_by_extid(self, extid: Optional[int]) -> Optional[Node]:
|
||||
def get_scores_by_extid(
|
||||
self, extid: Optional[int], partition: int, total_partitions: int
|
||||
) -> Optional[Node]:
|
||||
"""
|
||||
Given an ExtID, return a formatted score node. Similar rationale to
|
||||
get_profile_by_refid.
|
||||
get_profile_by_refid. Note that this takes into account the game's
|
||||
desire to partition scores into separate fetches to ensure that we
|
||||
don't make any one request too long. We handle the logic for that here.
|
||||
"""
|
||||
if extid is None:
|
||||
return None
|
||||
|
||||
userid = self.data.remote.user.from_extid(self.game, self.version, extid)
|
||||
profile = self.get_profile(userid)
|
||||
if profile is None:
|
||||
return None
|
||||
|
||||
if partition != 1:
|
||||
scores = []
|
||||
else:
|
||||
scores = self.data.remote.music.get_scores(
|
||||
self.game, self.music_version, userid
|
||||
)
|
||||
if scores is None:
|
||||
return None
|
||||
profile = self.get_profile(userid)
|
||||
if profile is None:
|
||||
return None
|
||||
return self.format_scores(userid, profile, scores)
|
||||
|
||||
def update_score(
|
||||
|
@ -1377,20 +1377,8 @@ class JubeatClan(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("mdata_list")
|
||||
player.add_child(playdata)
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
@ -2178,20 +2178,8 @@ class JubeatFesto(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("mdata_list")
|
||||
player.add_child(playdata)
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
@ -632,20 +632,8 @@ class JubeatProp(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("mdata_list")
|
||||
player.add_child(playdata)
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
@ -639,20 +639,8 @@ class JubeatQubell(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("mdata_list")
|
||||
player.add_child(playdata)
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
@ -185,21 +185,8 @@ class JubeatSaucer(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("playdata")
|
||||
player.add_child(playdata)
|
||||
playdata.set_attribute("count", "0")
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
@ -209,7 +196,8 @@ class JubeatSaucer(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("rival")
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
@ -320,21 +320,8 @@ class JubeatSaucerFulfill(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("jid")
|
||||
mdata_ver = player.child_value(
|
||||
"mdata_ver"
|
||||
) # Game requests mdata 3 times per profile for some reason
|
||||
if mdata_ver != 1:
|
||||
root = Node.void("gametop")
|
||||
datanode = Node.void("data")
|
||||
root.add_child(datanode)
|
||||
player = Node.void("player")
|
||||
datanode.add_child(player)
|
||||
player.add_child(Node.s32("jid", extid))
|
||||
playdata = Node.void("playdata")
|
||||
player.add_child(playdata)
|
||||
playdata.set_attribute("count", "0")
|
||||
return root
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
@ -344,7 +331,8 @@ class JubeatSaucerFulfill(
|
||||
data = request.child("data")
|
||||
player = data.child("player")
|
||||
extid = player.child_value("rival")
|
||||
root = self.get_scores_by_extid(extid)
|
||||
mdata_ver = player.child_value("mdata_ver")
|
||||
root = self.get_scores_by_extid(extid, mdata_ver, 3)
|
||||
if root is None:
|
||||
root = Node.void("gametop")
|
||||
root.set_attribute("status", str(Status.NO_PROFILE))
|
||||
|
Loading…
Reference in New Issue
Block a user