merge hedgeroid
authorXeli
Fri, 24 Jun 2011 09:54:39 +0200
branchhedgeroid
changeset 5341 479b4108789a
parent 5339 bc8560452143 (current diff)
parent 5296 0bb518ad2da8 (diff)
child 5344 893e49c53c41
merge
hedgewars/uStore.pas
hedgewars/uWorld.pas
share/hedgewars/Data/Themes/Art/Clouds.png
share/hedgewars/Data/Themes/Art/Flake.png
share/hedgewars/Data/Themes/Blox/Flake.png
share/hedgewars/Data/Themes/Blox/Sky.png
share/hedgewars/Data/Themes/Blox/plant1.png
share/hedgewars/Data/Themes/Blox/plant2.png
share/hedgewars/Data/Themes/Blox/plant3.png
share/hedgewars/Data/Themes/Blox/plant4.png
share/hedgewars/Data/Themes/Cake/Clouds.png
share/hedgewars/Data/Themes/Cake/plant4.png
share/hedgewars/Data/Themes/Cheese/Flake.png
share/hedgewars/Data/Themes/CrazyMission/Flake.png
share/hedgewars/Data/Themes/CrazyMission/horizont.png
share/hedgewars/Data/Themes/Deepspace/Clouds.png
share/hedgewars/Data/Themes/Deepspace/horizont.png
share/hedgewars/Data/Themes/EarthRise/Clouds.png
share/hedgewars/Data/Themes/EarthRise/horizontL.png
share/hedgewars/Data/Themes/Planes/Flake.png
--- a/QTfrontend/CMakeLists.txt	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/CMakeLists.txt	Fri Jun 24 09:54:39 2011 +0200
@@ -114,6 +114,7 @@
     qaspectratiolayout.cpp
     drawmapwidget.cpp
     drawmapscene.cpp
+    themesmodel.cpp
     )
 
 #xfire integration
@@ -195,6 +196,7 @@
     qaspectratiolayout.h
     drawmapwidget.h
     drawmapscene.h
+    themesmodel.h
     )
 
 set(hwfr_hdrs
--- a/QTfrontend/game.cpp	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/game.cpp	Fri Jun 24 09:54:39 2011 +0200
@@ -20,6 +20,7 @@
 #include <QByteArray>
 #include <QUuid>
 #include <QColor>
+#include <QStringListModel>
 
 #include "game.h"
 #include "hwconsts.h"
@@ -110,7 +111,7 @@
 
     HWProto::addStringToBuffer(teamscfg, "TL");
     HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
-            .arg((Themes->size() > 0) ? Themes->at(rand() % Themes->size()) : "steel"));
+            .arg((themesModel->rowCount() > 0) ? themesModel->index(rand() % themesModel->rowCount()).data().toString() : "steel"));
     HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
 
     HWNamegen namegen;
--- a/QTfrontend/hwconsts.cpp.in	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/hwconsts.cpp.in	Fri Jun 24 09:54:39 2011 +0200
@@ -27,7 +27,7 @@
 QDir * cfgdir = new QDir();
 QDir * datadir = new QDir();
 
-QStringList * Themes;
+ThemesModel * themesModel;
 QStringList * mapList;
 QStringList * scriptList;
 
--- a/QTfrontend/hwconsts.h	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/hwconsts.h	Fri Jun 24 09:54:39 2011 +0200
@@ -22,6 +22,8 @@
 #include <QStringList>
 #include <QPair>
 
+#include "themesmodel.h"
+
 extern QString * cProtoVer;
 extern QString * cVersionString;
 extern QString * cDataDir;
@@ -37,7 +39,9 @@
 extern int cMaxTeams;
 extern int cMinServerVersion;
 
-extern QStringList * Themes;
+class QStringListModel;
+
+extern ThemesModel * themesModel;
 extern QStringList * mapList;
 extern QStringList * scriptList;
 
--- a/QTfrontend/main.cpp	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/main.cpp	Fri Jun 24 09:54:39 2011 +0200
@@ -25,6 +25,7 @@
 #include <QRegExp>
 #include <QMap>
 #include <QSettings>
+#include <QStringListModel>
 
 #include "hwform.h"
 #include "hwconsts.h"
@@ -387,23 +388,49 @@
     {
         QDir dir;
         dir.setPath(cfgdir->absolutePath() + "/Data/Themes");
-        Themes = new QStringList();
-        Themes->append(dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot));
+
+        QStringList themes;
+        themes.append(dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot));
 
         dir.setPath(datadir->absolutePath() + "/Themes");
-        Themes->append(dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot));
-qDebug() << *Themes;
-        for(int i = Themes->size() - 1; i >= 0; --i)
+        themes.append(dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot));
+
+        QList<QPair<QIcon, QIcon> > icons;
+
+        for(int i = themes.size() - 1; i >= 0; --i)
         {
             QFile tmpfile;
-            tmpfile.setFileName(QString("%1/Data/Themes/%2/icon.png").arg(cfgdir->absolutePath()).arg(Themes->at(i)));
+            tmpfile.setFileName(QString("%1/Data/Themes/%2/icon.png").arg(cfgdir->absolutePath()).arg(themes.at(i)));
             if (!tmpfile.exists())
             {
-                tmpfile.setFileName(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(Themes->at(i)));
-                if(!tmpfile.exists())
-                    Themes->removeAt(i);
+                tmpfile.setFileName(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(themes.at(i)));
+                if(tmpfile.exists())
+                { // load icon
+                    QPair<QIcon, QIcon> ic;
+                    ic.first = QIcon(QFileInfo(tmpfile).absoluteFilePath());
+
+                    QFile previewIconFile;
+                    previewIconFile.setFileName(QString("%1/Data/Themes/%2/icon@2x.png").arg(cfgdir->absolutePath()).arg(themes.at(i)));
+                    if (previewIconFile.exists()) ic.second = QIcon(QFileInfo(previewIconFile).absoluteFilePath());
+                    else ic.second = QIcon(QString("%1/Themes/%2/icon@2x.png").arg(datadir->absolutePath()).arg(themes.at(i)));
+
+                    icons.prepend(ic);
+                }
+                else
+                {
+                    themes.removeAt(i);
+                }
             }
         }
+
+        themesModel = new ThemesModel(themes);
+        for(int i = 0; i < icons.size(); ++i)
+        {
+            themesModel->setData(themesModel->index(i), icons[i].first, Qt::DecorationRole);
+            themesModel->setData(themesModel->index(i), icons[i].second, Qt::UserRole);
+
+            qDebug() << "icon test" << themesModel->index(i).data(Qt::UserRole).toString();
+        }
     }
 
     QDir tmpdir;
@@ -434,8 +461,8 @@
     QTranslator Translator;
     {
         QSettings settings(cfgdir->absolutePath() + "/hedgewars.ini", QSettings::IniFormat);
-        QString cc = settings.value("misc/locale", "").toString();
-        if(!cc.compare(""))
+        QString cc = settings.value("misc/locale", QString()).toString();
+        if(cc.isEmpty())
             cc = QLocale::system().name();
         QFile tmpfile;
         tmpfile.setFileName(cfgdir->absolutePath() + "Data/Locale/hedgewars_" + cc);
--- a/QTfrontend/mapContainer.cpp	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/mapContainer.cpp	Fri Jun 24 09:54:39 2011 +0200
@@ -25,11 +25,12 @@
 #include <QColor>
 #include <QTextStream>
 #include <QLabel>
-#include <QListWidget>
+#include <QListView>
 #include <QVBoxLayout>
 #include <QIcon>
 #include <QLineEdit>
 #include <QMessageBox>
+#include <QStringListModel>
 
 #include "hwconsts.h"
 #include "mapContainer.h"
@@ -200,24 +201,18 @@
     QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes);
     gbTLayout->setContentsMargins(0, 0, 0 ,0);
     gbTLayout->setSpacing(0);
-    lwThemes = new QListWidget(mapWidget);
-    lwThemes->setMinimumHeight(30);
-    lwThemes->setFixedWidth(140);
-    QFile tmpfile;
-    for (int i = 0; i < Themes->size(); ++i) {
-        QListWidgetItem * lwi = new QListWidgetItem();
-        lwi->setText(Themes->at(i));
-        tmpfile.setFileName(QString("%1/Data/Themes/%2/icon.png").arg(cfgdir->absolutePath()).arg(Themes->at(i)));
-        if (tmpfile.exists()) lwi->setIcon(QIcon(QFileInfo(tmpfile).absoluteFilePath()));
-        else lwi->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(Themes->at(i))));
-        //lwi->setTextAlignment(Qt::AlignHCenter);
-        lwThemes->addItem(lwi);
-    }
-    connect(lwThemes, SIGNAL(currentRowChanged(int)), this, SLOT(themeSelected(int)));
+    lvThemes = new QListView(mapWidget);
+    lvThemes->setMinimumHeight(30);
+    lvThemes->setFixedWidth(140);
+    lvThemes->setModel(themesModel);
+    lvThemes->setIconSize(QSize(16, 16));
+    lvThemes->setEditTriggers(QListView::NoEditTriggers);
+
+    connect(lvThemes->selectionModel(), SIGNAL(currentRowChanged( const QModelIndex &, const QModelIndex &)), this, SLOT(themeSelected( const QModelIndex &, const QModelIndex &)));
 
     // override default style to tighten up theme scroller
-    lwThemes->setStyleSheet(QString(
-        "QListWidget{"
+    lvThemes->setStyleSheet(QString(
+        "QListView{"
             "border: solid;"
             "border-width: 0px;"
             "border-radius: 0px;"
@@ -229,8 +224,8 @@
         )
     );
 
-    gbTLayout->addWidget(lwThemes);
-    lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum);
+    gbTLayout->addWidget(lvThemes);
+    lvThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum);
 
     mapLayout->setSizeConstraint(QLayout::SetFixedSize);
 
@@ -376,9 +371,9 @@
             );
 }
 
-void HWMapContainer::themeSelected(int currentRow)
+void HWMapContainer::themeSelected(const QModelIndex & current, const QModelIndex &)
 {
-    QString theme = Themes->at(currentRow);
+    QString theme = current.data().toString();
     QList<QVariant> mapInfo;
     mapInfo.push_back(QString("+rnd+"));
     mapInfo.push_back(theme);
@@ -389,10 +384,8 @@
     chooseMap->setItemData(1, mapInfo);
     mapInfo[0] = QString("+drawn+");
     chooseMap->setItemData(2, mapInfo);
-    QFile tmpfile;
-    tmpfile.setFileName(QString("%1/Data/Themes/%2/icon@2x.png").arg(cfgdir->absolutePath()).arg(theme));
-    if (tmpfile.exists()) gbThemes->setIcon(QIcon(QFileInfo(tmpfile).absoluteFilePath()));
-    else gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon@2x.png").arg(datadir->absolutePath()).arg(theme)));
+
+    gbThemes->setIcon(qVariantValue<QIcon>(current.data(Qt::UserRole)));
     emit themeChanged(theme);
 }
 
@@ -487,9 +480,10 @@
 
 void HWMapContainer::setTheme(const QString & theme)
 {
-    QList<QListWidgetItem *> items = lwThemes->findItems(theme, Qt::MatchExactly);
-    if(items.size())
-        lwThemes->setCurrentItem(items.at(0));
+    QModelIndexList mdl = themesModel->match(themesModel->index(0), Qt::DisplayRole, theme);
+
+    if(mdl.size())
+        lvThemes->setCurrentIndex(mdl.at(0));
 }
 
 void HWMapContainer::setRandomMap()
@@ -539,9 +533,9 @@
 
 void HWMapContainer::setRandomTheme()
 {
-    if(!Themes->size()) return;
-    quint32 themeNum = rand() % Themes->size();
-    lwThemes->setCurrentRow(themeNum);
+    if(!themesModel->rowCount()) return;
+    quint32 themeNum = rand() % themesModel->rowCount();
+    lvThemes->setCurrentIndex(themesModel->index(themeNum));
 }
 
 void HWMapContainer::intSetTemplateFilter(int filter)
--- a/QTfrontend/mapContainer.h	Fri Jun 24 09:36:59 2011 +0200
+++ b/QTfrontend/mapContainer.h	Fri Jun 24 09:54:39 2011 +0200
@@ -32,7 +32,7 @@
 
 class QPushButton;
 class IconedGroupBox;
-class QListWidget;
+class QListView;
 
 class MapFileErrorException
 {
@@ -89,7 +89,7 @@
   void setRandomMap();
   void setRandomStatic();
   void setRandomMission();
-  void themeSelected(int currentRow);
+  void themeSelected(const QModelIndex & current, const QModelIndex &);
   void addInfoToPreview(QPixmap image);
   void seedEdited();
 
@@ -101,7 +101,7 @@
   QPushButton* imageButt;
   QComboBox* chooseMap;
   IconedGroupBox* gbThemes;
-  QListWidget* lwThemes;
+  QListView* lvThemes;
   HWMap* pMap;
   QString m_seed;
   QPushButton* seedSet;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/themesmodel.cpp	Fri Jun 24 09:54:39 2011 +0200
@@ -0,0 +1,47 @@
+
+#include "themesmodel.h"
+
+ThemesModel::ThemesModel(QStringList themes, QObject *parent) :
+    QAbstractListModel(parent)
+{
+    m_data.reserve(themes.size());
+
+    foreach(QString theme, themes)
+    {
+        m_data.append(QHash<int, QVariant>());
+        m_data.last().insert(Qt::DisplayRole, theme);
+    }
+}
+
+int ThemesModel::rowCount(const QModelIndex &parent) const
+{
+    if(parent.isValid())
+        return 0;
+    else
+        return m_data.size();
+}
+
+QVariant ThemesModel::data(const QModelIndex &index, int role) const
+{
+    if(index.column() > 0 || index.row() >= m_data.size())
+        return QVariant();
+    else
+        return m_data.at(index.row()).value(role);
+}
+
+bool ThemesModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+    if(index.column() > 0 || index.row() >= m_data.size())
+        return false;
+    else
+    {
+        m_data[index.row()].insert(role, value);
+
+        return true;
+    }
+
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/themesmodel.h	Fri Jun 24 09:54:39 2011 +0200
@@ -0,0 +1,28 @@
+#ifndef THEMESMODEL_H
+#define THEMESMODEL_H
+
+#include <QAbstractListModel>
+#include <QStringList>
+#include <QHash>
+
+class ThemesModel : public QAbstractListModel
+{
+    Q_OBJECT
+public:
+    explicit ThemesModel(QStringList themes, QObject *parent = 0);
+
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    QVariant data(const QModelIndex &index, int role) const;
+    bool setData(const QModelIndex &index, const QVariant &value,
+                 int role = Qt::EditRole);
+
+signals:
+
+public slots:
+
+private:
+
+    QList<QHash<int, QVariant> > m_data;
+};
+
+#endif // THEMESMODEL_H
--- a/hedgewars/HHHandlers.inc	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/HHHandlers.inc	Fri Jun 24 09:54:39 2011 +0200
@@ -380,7 +380,7 @@
         else
             begin
             OnUsedAmmo(CurrentHedgehog^);
-            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and ((GameFlags and gfInfAttack) = 0) then
+            if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then
                 begin
                 if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft;
                 TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100;
--- a/hedgewars/uAIMisc.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uAIMisc.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -134,7 +134,7 @@
 Gear:= GearsList;
 while Gear <> nil do
     begin
-	if (filter = []) or (Gear^.Kind in filter) then
+    if (filter = []) or (Gear^.Kind in filter) then
       case Gear^.Kind of
           gtCase: AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 33, 25);
           gtFlame: if (Gear^.State and gsttmpFlag) <> 0 then
@@ -152,7 +152,7 @@
                           AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 60, -25)
                       else
                           if isAfterAttack and (ThinkingHH^.Hedgehog <> Gear^.Hedgehog) then
-                              if (MyClan = Gear^.Hedgehog^.Team^.Clan) then
+                              if (ClansCount > 2) or (MyClan = Gear^.Hedgehog^.Team^.Clan) then
                                   AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -3) // hedgehog-friend
                               else
                                   AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, 3)
--- a/hedgewars/uCollisions.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uCollisions.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -22,7 +22,7 @@
 interface
 uses uFloat, uTypes;
 
-const cMaxGearArrayInd = 255;
+const cMaxGearArrayInd = 1023;
 
 type PGearArray = ^TGearArray;
     TGearArray = record
--- a/hedgewars/uCommandHandlers.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uCommandHandlers.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -26,7 +26,7 @@
 procedure freeModule;
 
 implementation
-uses uCommands, uTypes, uVariables, uIO, uDebug, uConsts, uScript, uUtils, SDLh, uRandom;
+uses uCommands, uTypes, uVariables, uIO, uDebug, uConsts, uScript, uUtils, SDLh, uRandom, uCaptions;
 
 procedure chGenCmd(var s: shortstring);
 begin
@@ -331,7 +331,7 @@
         FollowGear:= CurrentHedgehog^.Gear;
         if not CurrentTeam^.ExtDriven then SendIPC('A');
         Message:= Message or (gmAttack and InputMask);
-	ScriptCall('onAttack');
+        ScriptCall('onAttack');
         end
     end
 end;
@@ -411,7 +411,7 @@
     begin
         Message:= Message or (gmWeapon and InputMask);
         MsgParam:= byte(s[1]);
-	ScriptCall('onSetWeapon');
+    ScriptCall('onSetWeapon');
     end;
 end;
 
@@ -510,8 +510,18 @@
 begin
 s:= s; // avoid compiler hint
 if CheckNoTeamOrHH or isPaused then exit;
-bShowFinger:= true;
-FollowGear:= CurrentHedgehog^.Gear
+
+if FollowGear <> nil then
+    begin
+    AddCaption('Auto Camera Off', $CCCCCC, capgrpVolume);
+    autoCameraOn:= false
+    end
+    else begin
+    AddCaption('Auto Camera On', $CCCCCC, capgrpVolume);
+    bShowFinger:= true;
+    FollowGear:= CurrentHedgehog^.Gear;
+    autoCameraOn:= true
+    end
 end;
 
 procedure chPause(var s: shortstring);
--- a/hedgewars/uGears.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uGears.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -902,7 +902,7 @@
 else if ((GameFlags and gfInfAttack) <> 0) then
     begin
     if delay2 = 0 then
-        delay2:= cInactDelay * 4
+        delay2:= cInactDelay * 50
     else
         begin
         dec(delay2);
--- a/hedgewars/uStore.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uStore.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -283,10 +283,12 @@
         if (((cReducedQuality and (rqNoBackground or rqLowRes)) = 0) or   // why rqLowRes?
                 (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]))) and
            (((cReducedQuality and rqPlainSplash) = 0) or ((not (ii in [sprSplash, sprDroplet, sprSDSplash, sprSDDroplet])))) and
-           (((cReducedQuality and rqKillFlakes) = 0) or (Theme = 'Snow') or (Theme = 'Christmas') or ((not (ii in [sprFlake, sprSDFlake])))) then
+           (((cReducedQuality and rqKillFlakes) = 0) or (Theme = 'Snow') or (Theme = 'Christmas') or ((not (ii in [sprFlake, sprSDFlake])))) and
+           ((cCloudsNumber > 0) or (ii <> sprCloud)) and
+           ((vobCount > 0) or (ii <> sprFlake)) then
         begin
             if AltPath = ptNone then
-                if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR, sprChunk] then // FIXME: hack
+                if ii in [sprHorizont, sprHorizontL, sprHorizontR, sprSky, sprSkyL, sprSkyR, sprChunk] then // FIXME: hack
                     begin
                     tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent);
                     if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent)
--- a/hedgewars/uVariables.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uVariables.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -62,6 +62,7 @@
     isFirstFrame    : boolean;
 
     fastUntilLag    : boolean;
+    autoCameraOn    : boolean;
 
     GameState       : TGameState;
     GameType        : TGameType;
@@ -2355,10 +2356,11 @@
     fastUntilLag    := false;
     isFirstFrame    := true;
     isSEBackup      := true;
+    autoCameraOn    := true;
     cSeed           := '';
     cVolumeDelta    := 0;
     cHasFocus       := true;
-    cInactDelay     := 1250;
+    cInactDelay     := 100;
     ReadyTimeLeft   := 0;
     
     disableLandBack := false;
--- a/hedgewars/uWorld.pas	Fri Jun 24 09:36:59 2011 +0200
+++ b/hedgewars/uWorld.pas	Fri Jun 24 09:54:39 2011 +0200
@@ -1165,7 +1165,7 @@
 {$ENDIF}
 
 if (not PlacingHogs) and (FollowGear <> nil) and (not isCursorVisible) and (not fastUntilLag) then
-    if abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y) > 4 then
+    if (not autoCameraOn) or (abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y) > 4) then
     begin
         FollowGear:= nil;
         prevPoint:= CursorPoint;
--- a/project_files/hedgewars.pro	Fri Jun 24 09:36:59 2011 +0200
+++ b/project_files/hedgewars.pro	Fri Jun 24 09:54:39 2011 +0200
@@ -59,7 +59,12 @@
     ../QTfrontend/pagedrawmap.h \
     ../QTfrontend/pageconnecting.h \
     ../QTfrontend/pagecampaign.h \
-    ../QTfrontend/pageadmin.h
+    ../QTfrontend/pageadmin.h \
+    ../QTfrontend/pageplayrecord.h \
+    ../QTfrontend/pagegamestats.h \
+    ../QTfrontend/HWApplication.h \
+    ../QTfrontend/AbstractPage.h \
+    ../QTfrontend/themesmodel.h
 
 SOURCES += ../QTfrontend/SDLs.cpp ../QTfrontend/SquareLabel.cpp \
 	../QTfrontend/about.cpp ../QTfrontend/ammoSchemeModel.cpp \
@@ -106,7 +111,11 @@
     ../QTfrontend/pagedrawmap.cpp \
     ../QTfrontend/pageconnecting.cpp \
     ../QTfrontend/pagecampaign.cpp \
-    ../QTfrontend/pageadmin.cpp
+    ../QTfrontend/pageadmin.cpp \
+    ../QTfrontend/pagegamestats.cpp \
+    ../QTfrontend/pageplayrecord.cpp \
+    ../QTfrontend/HWApplication.cpp \
+    ../QTfrontend/themesmodel.cpp
 
 win32 {
 	SOURCES += ../QTfrontend/xfire.cpp
Binary file share/hedgewars/Data/Themes/Art/Clouds.png has changed
Binary file share/hedgewars/Data/Themes/Art/Flake.png has changed
Binary file share/hedgewars/Data/Themes/Bamboo/SkyL.png has changed
Binary file share/hedgewars/Data/Themes/Bamboo/SkyR.png has changed
Binary file share/hedgewars/Data/Themes/Blox/Flake.png has changed
Binary file share/hedgewars/Data/Themes/Blox/Sky.png has changed
Binary file share/hedgewars/Data/Themes/Blox/plant1.png has changed
Binary file share/hedgewars/Data/Themes/Blox/plant2.png has changed
Binary file share/hedgewars/Data/Themes/Blox/plant3.png has changed
Binary file share/hedgewars/Data/Themes/Blox/plant4.png has changed
Binary file share/hedgewars/Data/Themes/Cake/Clouds.png has changed
Binary file share/hedgewars/Data/Themes/Cake/plant4.png has changed
--- a/share/hedgewars/Data/Themes/Cake/theme.cfg	Fri Jun 24 09:36:59 2011 +0200
+++ b/share/hedgewars/Data/Themes/Cake/theme.cfg	Fri Jun 24 09:54:39 2011 +0200
@@ -8,5 +8,4 @@
 object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
 object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110
 object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100
-object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150
 flakes = 20, 100, 0, 30, 250
Binary file share/hedgewars/Data/Themes/Cheese/Flake.png has changed
Binary file share/hedgewars/Data/Themes/CrazyMission/Flake.png has changed
Binary file share/hedgewars/Data/Themes/CrazyMission/horizont.png has changed
Binary file share/hedgewars/Data/Themes/Deepspace/Clouds.png has changed
Binary file share/hedgewars/Data/Themes/Deepspace/horizont.png has changed
Binary file share/hedgewars/Data/Themes/EarthRise/Clouds.png has changed
Binary file share/hedgewars/Data/Themes/EarthRise/horizontL.png has changed
Binary file share/hedgewars/Data/Themes/EarthRise/horizontR.png has changed
Binary file share/hedgewars/Data/Themes/Halloween/SkyL.png has changed
Binary file share/hedgewars/Data/Themes/Halloween/SkyR.png has changed
Binary file share/hedgewars/Data/Themes/Jungle/SkyL.png has changed
Binary file share/hedgewars/Data/Themes/Jungle/SkyR.png has changed
Binary file share/hedgewars/Data/Themes/Planes/Flake.png has changed