feat(place): final end time + destruction wave

This commit is contained in:
2026-10-25 12:55:24 +01:00
parent 1844b973e9
commit 73b279d7fe
14 changed files with 372 additions and 39 deletions
+10 -3
View File
@@ -13,6 +13,10 @@ from .models import PALETTE, PLACE_COOLDOWN_SECONDS, PixelPlacement, PlaceSettin
from .wire import encode, to_epoch_ms
def _epoch_ms_or_none(dt):
return None if dt is None else to_epoch_ms(dt)
class PlaceConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.event_path = self.scope["url_route"]["kwargs"]["event_path"]
@@ -45,7 +49,7 @@ class PlaceConsumer(AsyncWebsocketConsumer):
await self.send(text_data=encode("r", "a"))
return
if not place_settings.placement_enabled:
if place_settings.placement_ended:
await self.send(text_data=encode("r", "d"))
return
@@ -146,7 +150,7 @@ class PlaceConsumer(AsyncWebsocketConsumer):
next_placement_at,
place_settings.width,
place_settings.height,
int(place_settings.placement_enabled),
_epoch_ms_or_none(place_settings.placement_ends_at),
)
@database_sync_to_async
@@ -162,6 +166,9 @@ class PlaceConsumer(AsyncWebsocketConsumer):
"e",
event["width"],
event["height"],
int(event["placement_enabled"]),
event["ends_at"],
)
)
async def wipe(self, event):
await self.send(text_data=encode("w"))