From c94d7184ebaf7e8540f717c70c1e03ae62e5a7bd Mon Sep 17 00:00:00 2001 From: peterbell10 Date: Tue, 24 Jul 2018 22:30:49 +0100 Subject: Broadcast refactor (#4264) * Move Broadcast functions from cChunkMap to cBroadcaster - Remove cBroadcastInterface in favour of cBroadcaster. - cChunk: Remove broadcast functions. * resurect broadcast interface * Absorb cBroadcaster into cWorld. Removes the need for forwarding the function calls. * Improve const-correctness * Use Int8 instead of char + Comment `ForClients` functions * Improve comments * Broadcaster: Rename ForClients functions --- src/OpaqueWorld.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/OpaqueWorld.h (limited to 'src/OpaqueWorld.h') diff --git a/src/OpaqueWorld.h b/src/OpaqueWorld.h new file mode 100644 index 000000000..d0d4e7fd0 --- /dev/null +++ b/src/OpaqueWorld.h @@ -0,0 +1,25 @@ + +#pragma once + +// fwd: +class cBroadcastInterface; +class cChunkInterface; +class cForEachChunkProvider; +class cWorld; +class cWorldInterface; + +/** Utilities to allow casting a cWorld to one of its interfaces without including World.h. */ +namespace World +{ + // Defined in World.cpp + cBroadcastInterface * GetBroadcastInterface(cWorld * a_World); + cForEachChunkProvider * GetFECProvider (cWorld * a_World); + cWorldInterface * GetWorldInterface (cWorld * a_World); + + inline cBroadcastInterface & GetBroadcastInterface(cWorld & a_World) { return *GetBroadcastInterface(&a_World); } + inline cForEachChunkProvider & GetFECProvider (cWorld & a_World) { return *GetFECProvider(&a_World); } + inline cWorldInterface & GetWorldInterface (cWorld & a_World) { return *GetWorldInterface(&a_World); } + + // cChunkInterface is more like a pimpl for cChunkMap than an interface so it needs to be returned by value + cChunkInterface GetChunkInterface(cWorld & a_World); +} -- cgit v1.2.3