From b891af55df473bcc52aabe32b24c532d27d762fb Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 25 Aug 2013 15:10:01 +1000 Subject: [PATCH] Created a more detailed draft for the server --- images/server-uml-2.png | Bin 0 -> 36858 bytes misc/server-uml-2.class.violet | 942 +++++++++++++++++++++++++++++++++ 2 files changed, 942 insertions(+) create mode 100644 images/server-uml-2.png create mode 100644 misc/server-uml-2.class.violet diff --git a/images/server-uml-2.png b/images/server-uml-2.png new file mode 100644 index 0000000000000000000000000000000000000000..41f574ed6e829a549f59f65c374a08f472134260 GIT binary patch literal 36858 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 literal 0 HcmV?d00001 diff --git a/misc/server-uml-2.class.violet b/misc/server-uml-2.class.violet new file mode 100644 index 0000000..511ceed --- /dev/null +++ b/misc/server-uml-2.class.violet @@ -0,0 +1,942 @@ + + + + + + + + Client Manager + + + + + + x + + + 299.0 + + + + y + + + 214.0 + + + + 299.0 + 214.0 + + + + + + + + Internet + + + + + + x + + + 299.0 + + + + y + + + 115.0 + + + + 299.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 + + + + + + + + Game Info +Account Info +Player Info +Map Info + + + + Database + + + + + x + + + 857.0 + + + + y + + + 36.0 + + + + 857.0 + 36.0 + + + + + + + + Client + + + + + + x + + + 177.0 + + + + y + + + 115.0 + + + + 177.0 + 115.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 + + + + + + + + Account Manager + + + + + + x + + + 769.0 + + + + y + + + 178.0 + + + + 769.0 + 178.0 + + + + + + + + Player Manager + + + + + + x + + + 922.0 + + + + y + + + 177.0 + + + + 922.0 + 177.0 + + + + + + + + Chat Server + + + + + + x + + + 421.0 + + + + y + + + 205.0 + + + + 421.0 + 205.0 + + + + + + + + std::list<ThreadHandle> + + + + + OpenRoom(args) +CloseRoom(args) + + + + + Room Manager + + + + + + x + + + 598.0 + + + + y + + + 53.0 + + + + 598.0 + 53.0 + + + + + + + + index +inventory +equipment +statistics + + + + + Player + + + + + + x + + + 916.0 + + + + y + + + 265.0 + + + + 916.0 + 265.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 +combatants +monsters + + + + + + Combat Room + + + + + + x + + + 690.0 + + + + y + + + 448.0 + + + + 690.0 + 448.0 + + + + + + + + lua state + + + + + Init() +Loop() +Quit() + + + + + Server Application + + + + + + x + + + 407.0 + + + + y + + + 309.0 + + + + 407.0 + 309.0 + + + + + + + + Direct connections + + + + + + x + + + 40.0 + + + + y + + + 38.0 + + + + 40.0 + 38.0 + + + + + + + + thread +std::list<BaseRoom> + + + + + Thread Handle + + + + + + x + + + 595.0 + + + + y + + + 161.0 + + + + 595.0 + 161.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 + + + 431.0 + + + + y + + + 147.0 + + + + 431.0 + 147.0 + + + + + + + + Attention: +*Anything with "Manager" in their name is a singleton. + + + + + + + x + + + 63.0 + + + + y + + + 316.0 + + + + 63.0 + 316.0 + + + + + + + + Undecided, +possibly SQLite3 + + + + + + x + + + 982.0 + + + + y + + + 47.0 + + + + 982.0 + 47.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +