|
@@ -77,6 +77,42 @@ void Block::onDestroy()
|
|
|
|
|
|
void Block::onDialogClosed(Text dialogId) {}
|
|
|
|
|
|
+void Block::broadcastModelInfoChange()
|
|
|
+{
|
|
|
+ NetworkMessage* message = new NetworkMessage();
|
|
|
+ sendModelInfo(message);
|
|
|
+ broadcastMessage(message);
|
|
|
+}
|
|
|
+
|
|
|
+void Block::broadcastMessage(NetworkMessage* message)
|
|
|
+{
|
|
|
+ if (message->isEmpty())
|
|
|
+ {
|
|
|
+ message->release();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Dimension* dim = Game::INSTANCE->zDimension(getDimensionId());
|
|
|
+ if (dim)
|
|
|
+ {
|
|
|
+ Chunk* zChunk
|
|
|
+ = dim->zChunk(Game::getChunkCenter(getPos().x, getPos().y));
|
|
|
+ if (zChunk)
|
|
|
+ {
|
|
|
+ zChunk->notifyObservers(message);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ message->release();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ message->release();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void Block::tick(TickQueue* zQueue)
|
|
|
{
|
|
|
if (wasTicked) return;
|
|
@@ -323,15 +359,24 @@ Block* Block::zNeighbor(Direction dir) const
|
|
|
|
|
|
void Block::updateModel(ModelInfo info) const
|
|
|
{
|
|
|
- NetworkMessage* changeMsg = new NetworkMessage();
|
|
|
- changeMsg->addressBlock(this);
|
|
|
- InMemoryBuffer buffer;
|
|
|
- info.writeTo(&buffer);
|
|
|
- char* msg = new char[(int)buffer.getSize() + 1];
|
|
|
- msg[0] = 1; // hmodel change
|
|
|
- buffer.lese(msg + 1, (int)buffer.getSize());
|
|
|
- changeMsg->setMessage(msg, (int)buffer.getSize() + 1);
|
|
|
- Game::INSTANCE->broadcastMessage(changeMsg);
|
|
|
+ Dimension* dim = Game::INSTANCE->zDimension(getDimensionId());
|
|
|
+ if (dim)
|
|
|
+ {
|
|
|
+ Chunk* zChunk
|
|
|
+ = dim->zChunk(Game::getChunkCenter(getPos().x, getPos().y));
|
|
|
+ if (zChunk)
|
|
|
+ {
|
|
|
+ NetworkMessage* changeMsg = new NetworkMessage();
|
|
|
+ changeMsg->addressBlock(this);
|
|
|
+ InMemoryBuffer buffer;
|
|
|
+ info.writeTo(&buffer);
|
|
|
+ char* msg = new char[(int)buffer.getSize() + 1];
|
|
|
+ msg[0] = 1; // hmodel change
|
|
|
+ buffer.lese(msg + 1, (int)buffer.getSize());
|
|
|
+ changeMsg->setMessage(msg, (int)buffer.getSize() + 1);
|
|
|
+ zChunk->notifyObservers(changeMsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int Block::getMapColor() const
|