123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #include "TeamsEditor.h"
- #include <Datei.h>
- #include <DateiSystem.h>
- #include <Bild.h>
- // Inhalt der TeamsEditor Klasse aus TeamsEditor.h
- // Konstruktor
- TeamsEditor::TeamsEditor(int id, const char* pf, EdSDatenbank* db)
- : ReferenceCounter()
- {
- pfad = pf;
- pfad += "/live/map";
- fehler = "";
- this->id = id;
- this->db = db;
- }
- // Destruktor
- TeamsEditor::~TeamsEditor()
- {
- db->release();
- }
- // nicht constant
- bool TeamsEditor::prozessMessage(SKlient* zKlient)
- {
- char message = 0;
- zKlient->getNachrichtEncrypted(&message, 1);
- switch (message)
- {
- case 0x1: // Team Struktur laden
- {
- Text p = pfad.getText();
- p += "/server/sts.ltgd";
- Datei d;
- d.setDatei(p);
- if (!d.open(Datei::Style::lesen))
- {
- fehler = "Es ist ein Fehler beim laden der Einstellungen aufgetreten.";
- return 0;
- }
- zKlient->sendeEncrypted("\1", 1);
- char* buffer = new char[2048];
- int gr = (int)d.getSize();
- while (gr > 0)
- {
- int l = gr > 2048 ? 2048 : gr;
- d.lese(buffer, l);
- zKlient->sendeEncrypted(buffer, l);
- gr -= l;
- }
- delete[] buffer;
- d.close();
- return 1;
- }
- case 0x2: // Team Struktur speichern
- {
- Text p = pfad.getText();
- p += "/server/sts.ltgd";
- Datei d1;
- d1.setDatei(p);
- if (!d1.existiert())
- d1.erstellen();
- p = pfad.getText();
- p += "/client/map/data/data.sts";
- Datei d2;
- d2.setDatei(p);
- if (!d2.existiert())
- d2.erstellen();
- if (d1.open(Datei::Style::schreiben) && d2.open(Datei::Style::schreiben))
- zKlient->sendeEncrypted("\1", 1);
- else
- {
- d1.close();
- d2.close();
- fehler = "Es ist ein Fehler beim speichern der Einstellungen aufgetreten.";
- return 0;
- }
- int sAnz = 0;
- zKlient->getNachrichtEncrypted((char*)&sAnz, 4);
- d1.schreibe((char*)&sAnz, 4);
- d2.schreibe((char*)&sAnz, 4);
- db->setMaxSpieler(id, sAnz);
- int tAnz = 0;
- zKlient->getNachrichtEncrypted((char*)&tAnz, 4);
- d1.schreibe((char*)&tAnz, 4);
- d2.schreibe((char*)&tAnz, 4);
- for (int i = 0; i < sAnz; i++)
- { // Spielerfarbe
- int f = 0;
- zKlient->getNachrichtEncrypted((char*)&f, 4);
- d1.schreibe((char*)&f, 4);
- d2.schreibe((char*)&f, 4);
- }
- for (int i = 0; i < tAnz; i++)
- { // Teamfarbe
- int f = 0;
- zKlient->getNachrichtEncrypted((char*)&f, 4);
- d1.schreibe((char*)&f, 4);
- d2.schreibe((char*)&f, 4);
- }
- for (int i = 0; i < tAnz; i++)
- { // Teamname
- unsigned char l = 0;
- zKlient->getNachrichtEncrypted((char*)&l, 1);
- char* txt = new char[l + 1];
- txt[(int)l] = 0;
- zKlient->getNachrichtEncrypted(txt, l);
- d1.schreibe((char*)&l, 1);
- d2.schreibe((char*)&l, 1);
- d1.schreibe(txt, l);
- d2.schreibe(txt, l);
- delete[] txt;
- }
- for (int i = 0; i < tAnz; i++)
- { // Teamgröße
- int g = 0;
- zKlient->getNachrichtEncrypted((char*)&g, 4);
- d1.schreibe((char*)&g, 4);
- d2.schreibe((char*)&g, 4);
- }
- d1.close();
- d2.close();
- return 1;
- }
- default:
- fehler = "Unbekannte Nachricht. Eventuell ist der Client nicht auf dem neusten Stand.";
- }
- return 0;
- }
- // constant
- const char* TeamsEditor::getLetzterFehler() const
- {
- return fehler;
- }
|