std::list<ClientEntry> Client Manager x 299.0 y 214.0 299.0 214.0 Network x 299.0 y 115.0 299.0 115.0 Game Info Account Info Player Info Map Info Database x 857.0 y 36.0 857.0 36.0 Terminal x 181.0 y 210.0 181.0 210.0 Just an idea for controlling the server directly x 44.0 y 204.0 44.0 204.0 std::list<AccountEntry> Account Manager x 769.0 y 178.0 769.0 178.0 std::list<PlayerEntry> Player Manager x 974.0 y 177.0 974.0 177.0 Chat Server x 451.0 y 208.0 451.0 208.0 std::list<RoomHandle> OpenRoom() CloseRoom() Room Manager x 598.0 y 53.0 598.0 53.0 index statistics equipment inventory Player Entry x 983.0 y 272.0 983.0 272.0 index mail box Init() = pure virtual Loop() = pure virtual Quit() = pure virtual Base Room x 606.0 y 292.0 606.0 292.0 collision map etc. maps player list combat portals World Room x 549.0 y 447.0 549.0 447.0 parent room index combatants monsters Combat Room x 678.0 y 448.0 678.0 448.0 lua state Init() Loop() Quit() Server Application x 437.0 y 297.0 437.0 297.0 thread* BaseRoom* Room Handle x 624.0 y 168.0 624.0 168.0 255 239 213 255 Combat rooms should be closed when they're empty. Send the "close" message to the parent world room and the Room Manager. x 817.0 y 452.0 817.0 452.0 Also used for /commands x 462.0 y 147.0 462.0 147.0 Attention: Anything with "Manager" in their name is a singleton. Anything with "Entry" in their name is a data class. x 47.0 y 422.0 47.0 422.0 Undecided, possibly SQLite3 x 982.0 y 47.0 982.0 47.0 index account index Client Entry x 297.0 y 300.0 297.0 300.0 index client index username player indices Account Entry x 782.0 y 267.0 782.0 267.0 Direct connections x 40.0 y 38.0 40.0 38.0 Client x 177.0 y 115.0 177.0 115.0 Client x 181.0 y 27.0 181.0 27.0 Client x 301.0 y 25.0 301.0 25.0 Client x 416.0 y 28.0 416.0 28.0