|
@@ -13,9 +13,9 @@ ChatObserver::ChatObserver(int entityId)
|
|
|
+ entityId + ".observer");
|
|
|
if (config.existiert() && config.open(Datei::Style::lesen))
|
|
|
{
|
|
|
- int cCount;
|
|
|
- config.lese((char*)&cCount, sizeof(int));
|
|
|
- for (int i = 0; i < cCount; i++)
|
|
|
+ int count;
|
|
|
+ config.lese((char*)&count, sizeof(int));
|
|
|
+ for (int i = 0; i < count; i++)
|
|
|
{
|
|
|
char len;
|
|
|
config.lese(&len, 1);
|
|
@@ -24,7 +24,8 @@ ChatObserver::ChatObserver(int entityId)
|
|
|
buffer[(int)len] = 0;
|
|
|
channel.add(new Framework::Text(buffer));
|
|
|
}
|
|
|
- while (!config.istEnde())
|
|
|
+ config.lese((char*)&count, sizeof(int));
|
|
|
+ for (int i = 0; i < count; i++)
|
|
|
{
|
|
|
char len;
|
|
|
config.lese(&len, 1);
|
|
@@ -89,7 +90,7 @@ void ChatObserver::addIgnoredPlayer(Framework::Text playerName)
|
|
|
|
|
|
void ChatObserver::removeIgnoredPlayer(Framework::Text playerName)
|
|
|
{
|
|
|
- for (auto it = this->channel.begin(); it;)
|
|
|
+ for (auto it = this->ignoredPlayers.begin(); it;)
|
|
|
{
|
|
|
if (it->istGleich(playerName))
|
|
|
{
|
|
@@ -110,26 +111,34 @@ void ChatObserver::save() const
|
|
|
Framework::Datei config;
|
|
|
config.setDatei(Game::INSTANCE->getWorldDirectory() + "/chat/observer/"
|
|
|
+ entityId + ".observer");
|
|
|
+ config.erstellen();
|
|
|
if (config.open(Datei::Style::schreiben))
|
|
|
{
|
|
|
- int cCount = channel.getEintragAnzahl();
|
|
|
- config.schreibe((char*)&cCount, sizeof(int));
|
|
|
- for (Framework::Text* c : channel)
|
|
|
- {
|
|
|
- char len = (char)c->getLength();
|
|
|
- config.schreibe(&len, 1);
|
|
|
- config.schreibe(c->getText(), len);
|
|
|
- }
|
|
|
- for (Framework::Text* ignored : ignoredPlayers)
|
|
|
- {
|
|
|
- char len = (char)ignored->getLength();
|
|
|
- config.schreibe(&len, 1);
|
|
|
- config.schreibe(ignored->getText(), len);
|
|
|
- }
|
|
|
+ writeTo(&config);
|
|
|
config.close();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void ChatObserver::writeTo(Framework::StreamWriter* zWriter) const
|
|
|
+{
|
|
|
+ int count = channel.getEintragAnzahl();
|
|
|
+ zWriter->schreibe((char*)&count, sizeof(int));
|
|
|
+ for (Framework::Text* c : channel)
|
|
|
+ {
|
|
|
+ char len = (char)c->getLength();
|
|
|
+ zWriter->schreibe(&len, 1);
|
|
|
+ zWriter->schreibe(c->getText(), len);
|
|
|
+ }
|
|
|
+ count = ignoredPlayers.getEintragAnzahl();
|
|
|
+ zWriter->schreibe((char*)&count, sizeof(int));
|
|
|
+ for (Framework::Text* ignored : ignoredPlayers)
|
|
|
+ {
|
|
|
+ char len = (char)ignored->getLength();
|
|
|
+ zWriter->schreibe(&len, 1);
|
|
|
+ zWriter->schreibe(ignored->getText(), len);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
bool ChatObserver::isValid() const
|
|
|
{
|
|
|
return Game::INSTANCE->zEntity(entityId) != 0;
|