QTfrontend/gamecfgwidget.cpp
changeset 4494 9585435e20f7
parent 4489 c4ca9ced258b
child 4511 df827e70ae63
--- a/QTfrontend/gamecfgwidget.cpp	Wed Dec 08 22:35:29 2010 +0100
+++ b/QTfrontend/gamecfgwidget.cpp	Thu Dec 09 11:59:07 2010 +0300
@@ -30,6 +30,7 @@
 #include "igbox.h"
 #include "hwconsts.h"
 #include "ammoSchemeModel.h"
+#include "proto.h"
 
 GameCFGWidget::GameCFGWidget(QWidget* parent, bool externalControl) :
   QGroupBox(parent), mainLayout(this)
@@ -170,33 +171,33 @@
     return schemeData(26).toInt();
 }
 
-QStringList GameCFGWidget::getFullConfig() const
+QByteArray GameCFGWidget::getFullConfig() const
 {
-    QStringList sl;
+    QList<QByteArray> bcfg;
     int mapgen = pMapContainer->get_mapgen();
-    
-    sl.append("eseed " + pMapContainer->getCurrentSeed());
-    sl.append(QString("e$gmflags %1").arg(getGameFlags()));
-    sl.append(QString("e$damagepct %1").arg(schemeData(24).toInt()));
-    sl.append(QString("e$turntime %1").arg(schemeData(25).toInt() * 1000));
-    sl.append(QString("e$sd_turns %1").arg(schemeData(27).toInt()));
-    sl.append(QString("e$casefreq %1").arg(schemeData(28).toInt()));
-    sl.append(QString("e$minestime %1").arg(schemeData(29).toInt() * 1000));
-    sl.append(QString("e$minesnum %1").arg(schemeData(30).toInt()));
-    sl.append(QString("e$minedudpct %1").arg(schemeData(31).toInt()));
-    sl.append(QString("e$explosives %1").arg(schemeData(32).toInt()));
-    sl.append(QString("e$healthprob %1").arg(schemeData(33).toInt()));
-    sl.append(QString("e$hcaseamount %1").arg(schemeData(34).toInt()));
-    sl.append(QString("e$waterrise %1").arg(schemeData(35).toInt()));
-    sl.append(QString("e$healthdec %1").arg(schemeData(36).toInt()));
-    sl.append(QString("e$ropepct %1").arg(schemeData(37).toInt()));
-    sl.append(QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()));
-    sl.append(QString("e$mapgen %1").arg(mapgen));
+
+    bcfg << QString("eseed " + pMapContainer->getCurrentSeed()).toUtf8();
+    bcfg << QString("e$gmflags %1").arg(getGameFlags()).toUtf8();
+    bcfg << QString("e$damagepct %1").arg(schemeData(24).toInt()).toUtf8();
+    bcfg << QString("e$turntime %1").arg(schemeData(25).toInt() * 1000).toUtf8();
+    bcfg << QString("e$sd_turns %1").arg(schemeData(27).toInt()).toUtf8();
+    bcfg << QString("e$casefreq %1").arg(schemeData(28).toInt()).toUtf8();
+    bcfg << QString("e$minestime %1").arg(schemeData(29).toInt() * 1000).toUtf8();
+    bcfg << QString("e$minesnum %1").arg(schemeData(30).toInt()).toUtf8();
+    bcfg << QString("e$minedudpct %1").arg(schemeData(31).toInt()).toUtf8();
+    bcfg << QString("e$explosives %1").arg(schemeData(32).toInt()).toUtf8();
+    bcfg << QString("e$healthprob %1").arg(schemeData(33).toInt()).toUtf8();
+    bcfg << QString("e$hcaseamount %1").arg(schemeData(34).toInt()).toUtf8();
+    bcfg << QString("e$waterrise %1").arg(schemeData(35).toInt()).toUtf8();
+    bcfg << QString("e$healthdec %1").arg(schemeData(36).toInt()).toUtf8();
+    bcfg << QString("e$ropepct %1").arg(schemeData(37).toInt()).toUtf8();
+    bcfg << QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()).toUtf8();
+    bcfg << QString("e$mapgen %1").arg(mapgen).toUtf8();
 
     switch (mapgen)
     {
         case MAPGEN_MAZE:
-            sl.append(QString("e$maze_size %1").arg(pMapContainer->get_maze_size()));
+            bcfg << QString("e$maze_size %1").arg(pMapContainer->get_maze_size()).toUtf8();
 
         case MAPGEN_DRAWN:
         {
@@ -204,9 +205,10 @@
             while(data.size() > 0)
             {
                 QByteArray tmp = data;
-                tmp.truncate(230);
-                sl << QString("edraw %1").arg(QString(tmp));
-                data.remove(0, 230);
+                tmp.truncate(200);
+                tmp.prepend("edraw ");
+                bcfg << tmp;
+                data.remove(0, 200);
             }
         }
         default: ;
@@ -215,13 +217,18 @@
     QString currentMap = pMapContainer->getCurrentMap();
     if (currentMap.size() > 0)
     {
-        sl.append("emap " + currentMap);
+        bcfg << QString("emap " + currentMap).toUtf8();
         if(pMapContainer->getCurrentIsMission())
-            sl.append(QString("escript Maps/%1/map.lua")
-                .arg(currentMap));
+            bcfg << QString("escript Maps/%1/map.lua").arg(currentMap).toUtf8();
     }
-    sl.append("etheme " + pMapContainer->getCurrentTheme());
-    return sl;
+    bcfg << QString("etheme " + pMapContainer->getCurrentTheme()).toUtf8();
+
+    QByteArray result;
+
+    foreach(QByteArray ba, bcfg)
+        HWProto::addByteArrayToBuffer(result, ba);
+
+    return result;
 }
 
 void GameCFGWidget::setNetAmmo(const QString& name, const QString& ammo)