async def handle_get_buddies_legacy(p): buddies_query = BuddyList.load(parent=Penguin.on(Penguin.id == BuddyList.buddy_id)).where( BuddyList.penguin_id == p.data.id) buddies = [] async with p.server.db.transaction(): buddy_list = buddies_query.gino.iterate() async for buddy in buddy_list: buddy_presence = int(buddy.buddy_id in p.server.penguins_by_id) buddies.append(f'{buddy.buddy_id}|{buddy.parent.nickname}|{buddy_presence}') await p.send_xt('gb', *buddies) await update_player_presence(p)
async def handle_get_mail(p): mail_query = PenguinPostcard.load(parent=Penguin.on( Penguin.id == PenguinPostcard.sender_id)).where( PenguinPostcard.penguin_id == p.data.id).order_by( PenguinPostcard.send_date.desc()) postcards = [] async with p.server.db.transaction(): async for postcard in mail_query.gino.iterate(): sender_name, sender_id = ('sys', 0) if postcard.sender_id is None else ( postcard.parent.nickname, postcard.sender_id) sent_timestamp = int(time.mktime(postcard.send_date.timetuple())) postcards.append( f'{sender_name}|{sender_id}|{postcard.postcard_id}|' f'{postcard.details}|{sent_timestamp}|{postcard.id}|{int(postcard.has_read)}' ) await p.send_xt('mg', *postcards)
async def get_igloo(penguin_id): return await PenguinIglooRoom.load(parent=Penguin.on(Penguin.igloo == PenguinIglooRoom.id))\ .where(PenguinIglooRoom.penguin_id == penguin_id).gino.first()
async def get_legacy_igloo_string(p, penguin_id): igloo = await PenguinIglooRoom.load(parent=Penguin.on(Penguin.igloo == PenguinIglooRoom.id))\ .where(PenguinIglooRoom.penguin_id == penguin_id).gino.first() furniture_string = await get_layout_furniture(p, igloo.id) return f'{igloo.type}%{igloo.music}%{igloo.flooring}%{furniture_string}'