Fixed Faction population
This commit is contained in:
@@ -53,19 +53,23 @@ class ServerState:
|
||||
if member_id in coll:
|
||||
coll[member_id].group = group_key
|
||||
|
||||
def _remove_member_assignment_unlocked(self, member_id: int):
|
||||
"""Internal helper - assumes lock is already held"""
|
||||
for gk, buckets in self.groups.items():
|
||||
if member_id in buckets["friendly"]:
|
||||
buckets["friendly"].remove(member_id)
|
||||
if member_id in buckets["enemy"]:
|
||||
buckets["enemy"].remove(member_id)
|
||||
|
||||
# clear group attribute
|
||||
if member_id in self.friendly:
|
||||
self.friendly[member_id].group = None
|
||||
if member_id in self.enemy:
|
||||
self.enemy[member_id].group = None
|
||||
|
||||
async def remove_member_assignment(self, member_id: int):
|
||||
async with self.lock:
|
||||
for gk, buckets in self.groups.items():
|
||||
if member_id in buckets["friendly"]:
|
||||
buckets["friendly"].remove(member_id)
|
||||
if member_id in buckets["enemy"]:
|
||||
buckets["enemy"].remove(member_id)
|
||||
|
||||
# clear group attribute
|
||||
if member_id in self.friendly:
|
||||
self.friendly[member_id].group = None
|
||||
if member_id in self.enemy:
|
||||
self.enemy[member_id].group = None
|
||||
self._remove_member_assignment_unlocked(member_id)
|
||||
|
||||
async def clear_all_assignments(self):
|
||||
async with self.lock:
|
||||
@@ -113,7 +117,7 @@ class ServerState:
|
||||
coll = self.friendly if kind == "friendly" else self.enemy
|
||||
to_remove = [mid for mid in coll.keys() if mid not in set(received_ids)]
|
||||
for mid in to_remove:
|
||||
await self.remove_member_assignment(mid)
|
||||
self._remove_member_assignment_unlocked(mid)
|
||||
del coll[mid]
|
||||
|
||||
# Single global state
|
||||
|
||||
Reference in New Issue
Block a user