[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/granatier/src
From: Mathias Kraus <k.hias () gmx ! de>
Date: 2009-09-27 21:51:56
Message-ID: 1254088316.174681.10076.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1028685 by mkraus:
clanbomber maps can now be imported, yay
M +85 -0 arenaselector.cpp
M +1 -0 arenaselector.h
M +7 -0 arenaselector.ui
--- trunk/playground/games/granatier/src/arenaselector.cpp #1028684:1028685
@@ -25,6 +25,9 @@
#include <KConfigSkeleton>
#include <knewstuff2/engine.h>
#include <KComponentData>
+#include <KFile>
+#include <KSaveFile>
+#include <QDebug>
#include "ui_arenaselector.h"
#include "arenasettings.h"
@@ -49,6 +52,7 @@
void _k_updatePreview();
void _k_updateArenaList(const QString& strArena);
void _k_openKNewStuffDialog();
+ void _k_importArenasDialog();
};
ArenaSelector::ArenaSelector(QWidget* parent, KConfigSkeleton * aconfig, \
ArenaSelector::NewStuffState knsflags, const QString &groupName, const QString \
&directory) @@ -88,6 +92,7 @@
findArenas(lastUsedArena);
connect(ui.getNewButton, SIGNAL(clicked()), q, SLOT(_k_openKNewStuffDialog()));
+ connect(ui.importArenas, SIGNAL(clicked()), q, SLOT(_k_importArenasDialog()));
}
void ArenaSelector::ArenaSelectorPrivate::findArenas(const QString \
&initialSelection) @@ -204,4 +209,84 @@
qDeleteAll(entries);
}
+void ArenaSelector::ArenaSelectorPrivate::_k_importArenasDialog()
+{
+ qWarning() << "Import...";
+
+ //find the clanbomber files
+ QStringList listClanbomberPaths;
+ listClanbomberPaths.append("/usr/share/games/clanbomber/maps/");
+ listClanbomberPaths.append(QDir::homePath() + "/.clanbomber/maps/");
+ for(int ii = 0; ii < listClanbomberPaths.count(); ii++)
+ {
+ QString strDirectoryPath = listClanbomberPaths[ii];
+ QStringList listMaps;
+ QDir clanbomberDir(strDirectoryPath);
+ if(!clanbomberDir.exists())
+ {
+ continue;
+ }
+
+ listMaps = clanbomberDir.entryList(QStringList("*.map"));
+ for(int j = 0; j < listMaps.count(); j++)
+ {
+ QFile mapFile(strDirectoryPath + listMaps[j]);
+ mapFile.open(QIODevice::ReadOnly | QIODevice::Text);
+ QTextStream readStream(&mapFile);
+
+ QString strAuthor = readStream.readLine();
+ int nNumberOfPlayers = readStream.readLine().toInt();
+
+ KSaveFile desktopFile;
+ QString strName = listMaps[j].left(listMaps[j].count()-4);
+ desktopFile.setFileName(QString("%1clanbomber_%2.desktop").arg(KStandardDirs::locateLocal("appdata", \
"arenas/")).arg(strName)); + desktopFile.open();
+ QTextStream streamDesktopFile(&desktopFile);
+
+ streamDesktopFile << "[Arena]\n";
+ streamDesktopFile << "Name=" << strName << "\n";
+ streamDesktopFile << "Description=Clanbomber Import\n";
+ streamDesktopFile << "Type=XML\n";
+ streamDesktopFile << "FileName=clanbomber_" << strName << ".xml\n";
+ streamDesktopFile << "Author=" << strAuthor << "\n";
+ streamDesktopFile << "AuthorEmail=-\n";
+
+ streamDesktopFile.flush();
+ desktopFile.finalize();
+ desktopFile.close();
+
+ QStringList arena;
+ do
+ {
+ arena.append(readStream.readLine());
+ }
+ while(!readStream.atEnd());
+ arena.replaceInStrings("*", "=");
+ arena.replaceInStrings("-", "_");
+ arena.replaceInStrings("S", "-");
+ arena.replaceInStrings("^", "u");
+ arena.replaceInStrings(">", "r");
+ arena.replaceInStrings("v", "d");
+ arena.replaceInStrings("<", "l");
+
+ KSaveFile arenaFile;
+ arenaFile.setFileName(QString("%1clanbomber_%2.xml").arg(KStandardDirs::locateLocal("appdata", \
"arenas/")).arg(strName)); + arenaFile.open();
+
+ QTextStream streamArenaFile(&arenaFile);
+
+ streamArenaFile << "<?xml version=\"1.0\"?>\n";
+ streamArenaFile << "<Arena rowCount=\"" << arena.count() << "\" \
colCount=\"" << arena[0].count() << "\">\n"; + for(int j = 0; j < \
arena.count(); j++) + {
+ streamArenaFile << " <Row>" << arena[j] << "</Row>\n";
+ }
+ streamArenaFile << "</Arena>\n";
+ }
+ }
+
+ ArenaSettings* selArena = arenaMap.value(ui.arenaList->currentItem()->text());
+ findArenas(selArena->fileName());
+}
+
#include "arenaselector.moc"
--- trunk/playground/games/granatier/src/arenaselector.h #1028684:1028685
@@ -70,6 +70,7 @@
Q_PRIVATE_SLOT(d, void _k_updatePreview())
Q_PRIVATE_SLOT(d, void _k_updateArenaList(const QString&))
Q_PRIVATE_SLOT(d, void _k_openKNewStuffDialog())
+ Q_PRIVATE_SLOT(d, void _k_importArenasDialog())
};
#endif
--- trunk/playground/games/granatier/src/arenaselector.ui #1028684:1028685
@@ -22,6 +22,13 @@
<widget class="KListWidget" name="arenaList"/>
</item>
<item>
+ <widget class="QPushButton" name="importArenas">
+ <property name="text">
+ <string>Import Clanbomber Arenas</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="getNewButton">
<property name="text">
<string>&Get New Arenas...</string>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic