Move server load crumbs code out of Houdini class

Make use of the new `handlers.boot` event handler to load the server crumbs in from each respective handler module.
This commit is contained in:
Ben 2020-02-14 21:39:26 +00:00
parent 9a4acade3f
commit de4946771c
11 changed files with 94 additions and 74 deletions

View File

@ -1,10 +1,11 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers.play.navigation import handle_join_room, handle_join_server
from houdini.handlers import XMLPacket, XTPacket
from houdini.handlers.play.navigation import handle_join_room
from houdini.handlers import Priority
from houdini.data.penguin import Penguin
from houdini.data.buddy import BuddyList, BuddyRequest, BuddyListCollection, \
BuddyRequestCollection, CharacterBuddyCollection
BuddyRequestCollection, CharacterBuddyCollection, CharacterCollection
from houdini.constants import ClientType
@ -26,8 +27,13 @@ async def update_player_presence(p):
await penguin.send_xt('caon', p.character, p.server.config.id, p.room.id)
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.boot
async def characters_load(server):
server.characters = await CharacterCollection.get_collection()
server.logger.info(f'Loaded {len(server.characters)} characters')
@handlers.handler(XMLPacket('login'), priority=Priority.Low)
@handlers.allow_once
async def load_buddy_inventory(p):
p.buddies = await BuddyListCollection.get_collection(p.id)

View File

@ -4,7 +4,7 @@ import time
from datetime import datetime, timedelta
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.converters import SeparatorConverter
from houdini.constants import ClientType, StatusField
from houdini.handlers.play.navigation import handle_join_server
@ -13,6 +13,8 @@ from houdini.data import db
from houdini.data.penguin import Penguin
from houdini.data.room import PenguinIglooRoom
from houdini.data.igloo import IglooFurniture, IglooLike, Igloo, Furniture, Flooring, Location, \
IglooCollection, FurnitureCollection, \
FlooringCollection, LocationCollection,\
PenguinIglooCollection, PenguinFurnitureCollection, \
PenguinFlooringCollection, PenguinLocationCollection
from houdini.data.room import PenguinIglooRoomCollection
@ -141,8 +143,18 @@ async def save_igloo_furniture(p, furniture_list=None):
await IglooFurniture.insert().values(furniture).gino.status()
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.boot
async def igloos_load(server):
server.igloos = await IglooCollection.get_collection()
server.furniture = await FurnitureCollection.get_collection()
server.locations = await LocationCollection.get_collection()
server.flooring = await FlooringCollection.get_collection()
server.logger.info(f'Loaded {len(server.igloos)} igloos')
server.logger.info(f'Loaded {len(server.furniture)} furniture items')
server.logger.info(f'Loaded {len(server.locations)} igloo locations')
server.logger.info(f'Loaded {len(server.flooring)} igloo flooring')
@handlers.allow_once
async def load_igloo_inventory(p):
p.igloos = await PenguinIglooCollection.get_collection(p.id)

View File

@ -1,13 +1,11 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers.play.navigation import handle_join_server
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.data.penguin import Penguin
from houdini.data.buddy import IgnoreList, IgnoreListCollection
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.handler(XMLPacket('login'), priority=Priority.Low)
@handlers.allow_once
async def load_ignore_inventory(p):
p.ignore = await IgnoreListCollection.get_collection(p.id)

View File

@ -1,7 +1,6 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers.play.navigation import handle_join_server
from houdini.data.item import Item, PenguinItemCollection
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.data.item import Item, ItemCollection, PenguinItemCollection
from houdini.data.permission import PenguinPermissionCollection
import time
@ -45,8 +44,11 @@ async def get_awards_string(p, player_id):
return '%'.join(awards)
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.boot
async def items_load(server):
server.items = await ItemCollection.get_collection()
server.logger.info(f'Loaded {len(server.items)} clothing items')
@handlers.allow_once
async def load_inventory(p):
p.inventory = await PenguinItemCollection.get_collection(p.id)

View File

@ -4,11 +4,17 @@ from houdini.handlers import XTPacket
from houdini.data import db
from houdini.data.penguin import Penguin
from houdini.data.buddy import IgnoreList
from houdini.data.mail import PenguinPostcard
from houdini.data.mail import PenguinPostcard, PostcardCollection
import time
@handlers.boot
async def postcards_load(server):
server.postcards = await PostcardCollection.get_collection()
server.logger.info(f'Loaded {len(server.postcards)} postcards')
@handlers.handler(XTPacket('l', 'mst'))
@handlers.allow_once
async def handle_start_mail_engine(p):

View File

@ -2,6 +2,14 @@ from houdini import handlers
from houdini.handlers import XTPacket
from houdini.commands import invoke_command_string, has_command_prefix
from houdini.data.moderator import ChatFilterRuleCollection
@handlers.boot
async def filter_load(server):
server.chat_filter_words = await ChatFilterRuleCollection.get_collection()
server.logger.info(f'Loaded {len(server.chat_filter_words)} filter words')
@handlers.handler(XTPacket('m', 'sm'))
@handlers.cooldown(.5)

View File

@ -2,14 +2,20 @@ from houdini import handlers
from houdini.handlers import XTPacket
from houdini.data.room import Room
from houdini.data.penguin import Login
from houdini.data.penguin import Penguin
from houdini.data.room import PenguinIglooRoom, PenguinBackyardRoom
from houdini.data.room import PenguinIglooRoom, PenguinBackyardRoom, RoomCollection
from houdini.constants import ClientType, StatusField
import random
import time
from datetime import datetime
@handlers.boot
async def rooms_load(server):
server.rooms = await RoomCollection.get_collection()
await server.rooms.setup_tables()
await server.rooms.setup_waddles()
server.logger.info(f'Loaded {len(server.rooms)} rooms ({len(server.rooms.spawn_rooms)} spawn)')
@handlers.handler(XTPacket('j', 'js'), pre_login=True)
@handlers.allow_once

View File

@ -1,11 +1,15 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers.play.navigation import handle_join_server
from houdini.data.ninja import PenguinCardCollection
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.data.ninja import PenguinCardCollection, CardCollection
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.boot
async def cards_load(server):
server.cards = await CardCollection.get_collection()
server.logger.info(f'Loaded {len(server.cards)} ninja cards')
@handlers.handler(XMLPacket('login'), priority=Priority.Low)
@handlers.allow_once
async def load_ninja_inventory(p):
p.cards = await PenguinCardCollection.get_collection(p.id)

View File

@ -1,9 +1,11 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers.play.navigation import handle_join_server
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.constants import ClientType, StatusField
from houdini.data.pet import PenguinPuffleCollection, PenguinPuffleItemCollection, PenguinPuffle
from houdini.data.pet import PenguinPuffleCollection, PenguinPuffleItemCollection, PenguinPuffle, \
PuffleCollection, PuffleItemCollection, \
PuffleTreasureFurniture, PuffleTreasureItem, \
PuffleTreasurePuffleItem
from houdini.data.room import PenguinBackyardRoom, PenguinIglooRoom
from houdini.data.mail import PenguinPostcard
@ -223,7 +225,19 @@ def check_name(p, puffle_name):
return characters_ok and length_ok and clean
@handlers.handler(XTPacket('j', 'js'), before=handle_join_server, pre_login=True)
@handlers.boot
async def puffles_load(server):
server.puffles = await PuffleCollection.get_collection()
server.puffle_items = await PuffleItemCollection.get_collection()
server.logger.info(f'Loaded {len(server.puffle_items)} puffle care items')
server.logger.info(f'Loaded {len(server.puffles)} puffles')
server.puffle_food_treasure = await PuffleTreasurePuffleItem.query.gino.all()
server.puffle_furniture_treasure = await PuffleTreasureFurniture.query.gino.all()
server.puffle_clothing_treasure = await PuffleTreasureItem.query.gino.all()
@handlers.handler(XMLPacket('login'), priority=Priority.Low)
@handlers.allow_once
async def load_pet_inventory(p):
p.puffles = await PenguinPuffleCollection.get_collection(p.id)

View File

@ -1,7 +1,7 @@
from houdini import handlers
from houdini.handlers import XTPacket
from houdini.handlers import XMLPacket, XTPacket, Priority
from houdini.handlers.play.navigation import handle_join_server, handle_join_room
from houdini.data.stamp import Stamp, CoverStamp, CoverItem, PenguinStampCollection
from houdini.data.stamp import Stamp, CoverStamp, CoverItem, PenguinStampCollection, StampCollection
from houdini.data.penguin import Penguin
from aiocache import cached
@ -47,8 +47,13 @@ async def get_player_stamps_string(p, player_id):
return '|'.join(map(str, stamp_inventory.keys()))
@handlers.handler(XTPacket('j', 'js'), after=handle_join_server)
@handlers.player_attribute(joined_world=True)
@handlers.boot
async def stamps_load(server):
server.stamps = await StampCollection.get_collection()
server.logger.info(f'Loaded {len(server.stamps)} stamps')
@handlers.handler(XMLPacket('login'), priority=Priority.Low)
@handlers.allow_once
async def load_stamp_inventory(p):
p.stamps = await PenguinStampCollection.get_collection(p.id)

View File

@ -181,48 +181,7 @@ class Houdini:
await self.dummy_event_listeners.setup(houdini.handlers)
await self.dummy_event_listeners.fire('boot', self)
self.igloos = await IglooCollection.get_collection()
self.logger.info(f'Loaded {len(self.igloos)} igloos')
self.furniture = await FurnitureCollection.get_collection()
self.logger.info(f'Loaded {len(self.furniture)} furniture items')
self.locations = await LocationCollection.get_collection()
self.logger.info(f'Loaded {len(self.locations)} igloo locations')
self.flooring = await FlooringCollection.get_collection()
self.logger.info(f'Loaded {len(self.flooring)} igloo flooring')
self.rooms = await RoomCollection.get_collection()
self.spawn_rooms = self.rooms.spawn_rooms
await self.rooms.setup_tables()
await self.rooms.setup_waddles()
self.logger.info(f'Loaded {len(self.rooms)} rooms ({len(self.spawn_rooms)} spawn)')
self.postcards = await PostcardCollection.get_collection()
self.logger.info(f'Loaded {len(self.postcards)} postcards')
self.stamps = await StampCollection.get_collection()
self.logger.info(f'Loaded {len(self.stamps)} stamps')
self.cards = await CardCollection.get_collection()
self.logger.info(f'Loaded {len(self.cards)} ninja cards')
self.puffles = await PuffleCollection.get_collection()
self.logger.info(f'Loaded {len(self.puffles)} puffles')
self.puffle_items = await PuffleItemCollection.get_collection()
self.logger.info(f'Loaded {len(self.puffle_items)} puffle care items')
self.puffle_food_treasure = await PuffleTreasurePuffleItem.query.gino.all()
self.puffle_furniture_treasure = await PuffleTreasureFurniture.query.gino.all()
self.puffle_clothing_treasure = await PuffleTreasureItem.query.gino.all()
self.characters = await CharacterCollection.get_collection()
self.logger.info(f'Loaded {len(self.characters)} characters')
self.permissions = await PermissionCollection.get_collection()
self.chat_filter_words = await ChatFilterRuleCollection.get_collection()
self.logger.info(f'Multi-client support is '
f'{"enabled" if not self.config.single_client_mode else "disabled"}')