#include "ChatMessage.h" #ifndef _WINDOWS # include #endif ChatMessage::ChatMessage(Framework::Text message, Framework::Text channel, Framework::Text targetPlayerName) : ReferenceCounter(), message(message), channel(channel), targetPlayerName(targetPlayerName) { #ifdef _WINDOWS struct tm timeinfo; std::time(&time); gmtime_s(&timeinfo ,& time); /* Convert to UTC */ time = mktime(&timeinfo); /* Store as unix timestamp */ #else timeval tv; gettimeofday(&tv, 0); time = tv.tv_sec; #endif } ChatMessage::ChatMessage(Framework::StreamReader* zReader) : ReferenceCounter() { zReader->lese((char*)&time, 8); short len; zReader->lese((char*)&len, 2); char* buffer = new char[len + 1]; zReader->lese(buffer, len); buffer[len] = 0; message = buffer; delete[] buffer; char channelLen; zReader->lese(&channelLen, 1); buffer = new char[channelLen + 1]; zReader->lese(buffer, channelLen); buffer[(int)channelLen] = 0; channel = buffer; delete[] buffer; zReader->lese(&channelLen, 1); buffer = new char[channelLen + 1]; zReader->lese(buffer, channelLen); buffer[(int)channelLen] = 0; targetPlayerName = buffer; delete[] buffer; } Framework::Text ChatMessage::getChannel() const { return channel; } Framework::Text ChatMessage::getTargetPlayerName() const { return targetPlayerName; } void ChatMessage::writeTo(Framework::StreamWriter* zWriter) const { zWriter->schreibe((char*)&time, 8); short mLen = (short)message.getLength(); zWriter->schreibe((char*)&mLen, 2); zWriter->schreibe(message.getText(), mLen); char len = (char)channel.getLength(); zWriter->schreibe(&len, 1); zWriter->schreibe(channel.getText(), len); len = (char)targetPlayerName.getLength(); zWriter->schreibe(&len, 1); zWriter->schreibe(targetPlayerName.getText(), len); }