async def create(request: web.Request): user: User = await check_authorized(request) data = await request.json() roomname = data["name"] logo = data["logo"] if not roomname: return web.HTTPBadRequest() else: if Room.get_or_none(name=roomname, creator=user): return web.HTTPConflict() with db.atomic(): default_options = LocationOptions.create() room = Room.create( name=roomname, creator=user, default_options=default_options, ) if logo >= 0: room.logo_id = logo loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()
async def create(request): allow_new_sessions = config.getboolean("Access control", "allow_new_sessions") if not allow_new_sessions: return web.HTTPConflict( reason="This feature is disabled by administrator") user = await check_authorized(request) data = await request.json() roomname = data["name"] if not roomname: return web.HTTPBadRequest() else: with db.atomic(): default_options = LocationOptions.create() room = Room.create(name=roomname, creator=user, default_options=default_options) loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()
async def set_location_options(sid: str, data: LocationOptionsData): pr: PlayerRoom = game_state.get(sid) if pr.role != Role.DM: logger.warning(f"{pr.player.name} attempted to set a room option") return if data.get("location", None) is None: options = pr.room.default_options else: loc = Location.get_by_id(data["location"]) if loc.options is None: loc.options = LocationOptions.create( unit_size=None, unit_size_unit=None, grid_type=None, use_grid=None, full_fow=None, fow_opacity=None, fow_los=None, vision_mode=None, vision_min_range=None, vision_max_range=None, ) loc.save() options = loc.options update_model_from_dict(options, data["options"]) options.save() if data.get("location", None) is None: for sid in game_state.get_sids(skip_sid=sid, room=pr.room): await sio.emit("Location.Options.Set", data, room=sid, namespace=GAME_NS) else: await sio.emit( "Location.Options.Set", data, room=pr.active_location.get_path(), skip_sid=sid, namespace=GAME_NS, )
async def create(request): user = await check_authorized(request) data = await request.json() roomname = data["name"] if not roomname: return web.HTTPBadRequest() else: with db.atomic(): default_options = LocationOptions.create() room = Room.create(name=roomname, creator=user, default_options=default_options) loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()
async def set_location_options(sid: int, data: Dict[str, Any]): pr: PlayerRoom = game_state.get(sid) if pr.role != Role.DM: logger.warning(f"{pr.player.name} attempted to set a room option") return if data.get("location", None) is None: options = pr.room.default_options else: loc = Location[data["location"]] if loc.options is None: loc.options = LocationOptions.create( unit_size=None, unit_size_unit=None, use_grid=None, full_fow=None, fow_opacity=None, fow_los=None, vision_mode=None, grid_size=None, vision_min_range=None, vision_max_range=None, ) options = loc.options update_model_from_dict(options, data["options"]) options.save() await sio.emit( "Location.Options.Set", data, room=pr.active_location.get_path(), skip_sid=sid, namespace="/planarally", )