#pragma once #include #include #include #include class Chunk; class Block; class Entity; class Dimension; class ChatMessage; class ChatObserver; class ChunkMap; class NetworkMessage : public virtual Framework::ReferenceCounter { private: char* address; char addressLength; bool broadcast; char* message; int msgLength; bool useBackground; std::function onAfterSend; public: NetworkMessage(); virtual ~NetworkMessage(); void setOnAfterSend(std::function onAfterSend); void addressChunck(const Chunk* zChunk); void addressEntity(const Entity* zEntity); void addressBlock(const Block* zBlock); void addressDimension(const Dimension* zDim); void openDialog(Framework::Text dialogName, Framework::Text uiml); void updateDialog(Framework::Text dialogName, Framework::Text uiml); void addressUIElement(Framework::Text elementId); void setMessage(char* msg, int length); void sendChatMessage(ChatMessage* zMsg); void sendChatOptions(ChatObserver* zOptions); void sendMap(ChunkMap* zMap); void sendPlayerPositions(char* msg, int length); void setUseBackground(); void sendToAll(); void animateBlockBone(int dimensionId, Framework::Punkt chunkCenter, int index, int boneId, double time, Framework::Vec3 pos, Framework::Vec3 rotation); void syncTime(double time, double nightLength, double transitionLength, double dayLength); void addEntityMessage(const Entity* zEntity); void removeEntityMessage(const Entity* zEntity); void writeTo(Framework::StreamWriter* zWriter) const; bool isBroadcast() const; bool isEmpty() const; bool isUseBackground() const; NetworkMessage* clone() const; };