Give waddles a "temporary" option

Passing `temporary=true` into a waddle will cause it to destroy itself when all players have left
This commit is contained in:
Ben 2020-03-26 22:18:44 +00:00
parent 18d26a5f5a
commit 48dde7a0ee

View File

@ -268,13 +268,13 @@ class RoomWaddle(db.Model):
game = db.Column(db.String(20), nullable=False) game = db.Column(db.String(20), nullable=False)
GameClassMapping = { GameClassMapping = {
'sled': SledRacingLogic self.temporary = kwargs.pop('temporary', False)
} }
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.penguins = [] self.penguins = []
self.logic = None
self.room = None
super().__init__(*args, **kwargs)
async def add_penguin(self, p): async def add_penguin(self, p):
if not self.penguins: if not self.penguins:
@ -293,6 +293,9 @@ class RoomWaddle(db.Model):
await self.reset() await self.reset()
if self.temporary:
del p.server.rooms[self.room_id].waddles[self.id]
async def remove_penguin(self, p): async def remove_penguin(self, p):
seat_id = self.get_seat_id(p) seat_id = self.get_seat_id(p)
self.penguins[seat_id] = None self.penguins[seat_id] = None
@ -300,6 +303,9 @@ class RoomWaddle(db.Model):
p.waddle = None p.waddle = None
if self.temporary and self.penguins.count(None) == self.seats:
del p.server.rooms[self.room_id].waddles[self.id]
async def reset(self): async def reset(self):
for seat_id, penguin in enumerate(self.penguins): for seat_id, penguin in enumerate(self.penguins):
if penguin: if penguin: