QTfrontend/model/ammoSchemeModel.cpp
changeset 6061 15b4b485a1c5
parent 6060 fdfc01419815
child 6616 f77bb02b669f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/model/ammoSchemeModel.cpp	Wed Sep 28 19:48:02 2011 +0200
@@ -0,0 +1,786 @@
+/*
+ * Hedgewars, a free turn based strategy game
+ * Copyright (c) 2005-2011 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include <QDebug>
+#include <QModelIndex>
+
+#include "ammoSchemeModel.h"
+#include "hwconsts.h"
+
+QList<QVariant> defaultScheme = QList<QVariant>()
+        << QVariant("Default")     // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(45)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(4)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(2)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) :
+    QAbstractTableModel(parent),
+    fileConfig(fileName, QSettings::IniFormat)
+{
+    predefSchemesNames = QStringList()
+        << "Default"
+        << "Pro Mode"
+        << "Shoppa"
+        << "Clean Slate"
+        << "Minefield"
+        << "Barrel Mayhem"
+        << "Tunnel Hogs"
+        << "Fort Mode"
+        << "Timeless"
+        << "Thinking with Portals"
+        << "King Mode"
+        ;
+
+    numberOfDefaultSchemes = predefSchemesNames.size();
+
+    spNames = QStringList()
+        << "name"                //  0
+        << "fortsmode"           //  1
+        << "divteams"            //  2
+        << "solidland"           //  3
+        << "border"              //  4
+        << "lowgrav"             //  5
+        << "laser"               //  6
+        << "invulnerability"     //  7
+        << "resethealth"         //  8
+        << "vampiric"            //  9
+        << "karma"               // 10
+        << "artillery"           // 11
+        << "randomorder"         // 12
+        << "king"                // 13
+        << "placehog"            // 14
+        << "sharedammo"          // 15
+        << "disablegirders"      // 16
+        << "disablelandobjects"  // 17
+        << "aisurvival"          // 18
+        << "infattack"           // 19
+        << "resetweps"           // 20
+        << "perhogammo"          // 21
+        << "disablewind"         // 22
+        << "morewind"            // 23
+        << "tagteam"             // 24
+        << "bottomborder"        // 25
+        << "damagefactor"        // 26
+        << "turntime"            // 27
+        << "health"              // 28
+        << "suddendeath"         // 29
+        << "caseprobability"     // 30
+        << "minestime"           // 31
+        << "minesnum"            // 32
+        << "minedudpct"          // 33
+        << "explosives"          // 34
+        << "healthprobability"   // 35
+        << "healthcaseamount"    // 36
+        << "waterrise"           // 37
+        << "healthdecrease"      // 38
+        << "ropepct"             // 39
+        << "getawaytime"         // 40
+        ;
+
+    QList<QVariant> proMode;
+    proMode
+        << predefSchemesNames[1]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(15)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(0)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(0)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(2)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> shoppa;
+    shoppa
+        << predefSchemesNames[2]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(true)          // solid land     3
+        << QVariant(true)          // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(true)          // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(30)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(50)            // sudden death   29
+        << QVariant(1)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(0)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(0)             // explosives     34
+        << QVariant(0)             // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> cleanslate;
+    cleanslate
+        << predefSchemesNames[3]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(true)          // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(true)          // inf. attack    19
+        << QVariant(true)          // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(45)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(4)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(2)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> minefield;
+    minefield
+        << predefSchemesNames[4]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(30)            // turn time      27
+        << QVariant(50)            // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(0)             // case prob      30
+        << QVariant(0)             // mines time     31
+        << QVariant(80)            // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(0)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> barrelmayhem;
+    barrelmayhem
+        << predefSchemesNames[5]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(30)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(0)             // case prob      30
+        << QVariant(0)             // mines time     31
+        << QVariant(0)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(80)            // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> tunnelhogs;
+    tunnelhogs
+        << predefSchemesNames[6]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(true)          // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          // disable girders 16
+        << QVariant(true)          // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(30)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(10)            // mines number   32
+        << QVariant(10)            // mine dud pct   33
+        << QVariant(10)            // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> forts;
+    forts
+        << predefSchemesNames[7]   // name           0
+        << QVariant(true)          // fortsmode      1
+        << QVariant(true)          // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(true)          // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(45)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(0)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(0)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> timeless;
+    timeless
+        << predefSchemesNames[8]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(true)          // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(9999)          // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(5)             // mines number   32
+        << QVariant(10)            // mine dud pct   33
+        << QVariant(2)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(30)            // health case amt 36
+        << QVariant(0)             // water rise amt 37
+        << QVariant(0)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> thinkingportals;
+    thinkingportals
+        << predefSchemesNames[9]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(true)          // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(45)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(2)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(5)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(5)             // explosives     34
+        << QVariant(25)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+    QList<QVariant> kingmode;
+    kingmode
+        << predefSchemesNames[10]  // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // reset health   8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(true)          // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         // disable girders 16
+        << QVariant(false)         // disable land objects 17
+        << QVariant(false)         // AI survival    18
+        << QVariant(false)         // inf. attack    19
+        << QVariant(false)         // reset weps     20
+        << QVariant(false)         // per hog ammo   21
+        << QVariant(false)         // no wind        22
+        << QVariant(false)         // more wind      23
+        << QVariant(false)         // tag team       24
+        << QVariant(false)         // bottom border  25
+        << QVariant(100)           // damage modfier 26
+        << QVariant(45)            // turn time      27
+        << QVariant(100)           // init health    28
+        << QVariant(15)            // sudden death   29
+        << QVariant(5)             // case prob      30
+        << QVariant(3)             // mines time     31
+        << QVariant(4)             // mines number   32
+        << QVariant(0)             // mine dud pct   33
+        << QVariant(2)             // explosives     34
+        << QVariant(35)            // health case pct 35
+        << QVariant(25)            // health case amt 36
+        << QVariant(47)            // water rise amt 37
+        << QVariant(5)             // health dec amt 38
+        << QVariant(100)           // rope modfier   39
+        << QVariant(100)           // get away time  40
+        ;
+
+
+    schemes.append(defaultScheme);
+    schemes.append(proMode);
+    schemes.append(shoppa);
+    schemes.append(cleanslate);
+    schemes.append(minefield);
+    schemes.append(barrelmayhem);
+    schemes.append(tunnelhogs);
+    schemes.append(forts);
+    schemes.append(timeless);
+    schemes.append(thinkingportals);
+    schemes.append(kingmode);
+
+
+    int size = fileConfig.beginReadArray("schemes");
+    for (int i = 0; i < size; ++i) {
+        fileConfig.setArrayIndex(i);
+
+        if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString()))
+        {
+            QList<QVariant> scheme;
+
+            for (int k = 0; k < spNames.size(); ++k)
+                scheme << fileConfig.value(spNames[k], defaultScheme[k]);
+
+            schemes.append(scheme);
+        }
+    }
+    fileConfig.endArray();
+}
+
+QVariant AmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+    Q_UNUSED(section);
+    Q_UNUSED(orientation);
+    Q_UNUSED(role);
+
+    return QVariant();
+}
+
+int AmmoSchemeModel::rowCount(const QModelIndex &parent) const
+{
+    if (parent.isValid())
+        return 0;
+    else
+        return schemes.size();
+}
+
+int AmmoSchemeModel::columnCount(const QModelIndex & parent) const
+{
+    if (parent.isValid())
+        return 0;
+    else
+        return defaultScheme.size();
+}
+
+Qt::ItemFlags AmmoSchemeModel::flags(const QModelIndex & index) const
+{
+    Q_UNUSED(index);
+
+    return
+        Qt::ItemIsEnabled
+        | Qt::ItemIsSelectable
+        | Qt::ItemIsEditable;
+}
+
+bool AmmoSchemeModel::setData(const QModelIndex & index, const QVariant & value, int role)
+{
+    if (!index.isValid() || index.row() < numberOfDefaultSchemes
+        || index.row() >= schemes.size()
+        || index.column() >= defaultScheme.size()
+        || role != Qt::EditRole)
+        return false;
+
+    schemes[index.row()][index.column()] = value;
+
+    emit dataChanged(index, index);
+    return true;
+}
+
+bool AmmoSchemeModel::insertRows(int row, int count, const QModelIndex & parent)
+{
+    Q_UNUSED(count);
+
+    beginInsertRows(parent, schemes.size(), schemes.size());
+
+    if (row == -1)
+    {
+        QList<QVariant> newScheme = defaultScheme;
+        newScheme[0] = QVariant(tr("new"));
+        schemes.insert(schemes.size(), newScheme);
+    }
+    else
+    {
+        QList<QVariant> newScheme = schemes[row];
+        newScheme[0] = QVariant(tr("copy of") + " " + newScheme[0].toString());
+        schemes.insert(schemes.size(), newScheme);
+    }
+
+    endInsertRows();
+
+    return true;
+}
+
+bool AmmoSchemeModel::removeRows(int row, int count, const QModelIndex & parent)
+{
+    if(count != 1
+        || row < numberOfDefaultSchemes
+        || row >= schemes.size())
+        return false;
+
+    beginRemoveRows(parent, row, row);
+
+    schemes.removeAt(row);
+
+    endRemoveRows();
+
+    return true;
+}
+
+QVariant AmmoSchemeModel::data(const QModelIndex &index, int role) const
+{
+    if (!index.isValid() || index.row() < 0
+        || index.row() >= schemes.size()
+        || index.column() >= defaultScheme.size()
+        || (role != Qt::EditRole && role != Qt::DisplayRole)
+        )
+        return QVariant();
+
+    return schemes[index.row()][index.column()];
+}
+
+void AmmoSchemeModel::Save()
+{
+    fileConfig.beginWriteArray("schemes", schemes.size() - numberOfDefaultSchemes);
+
+    for (int i = 0; i < schemes.size() - numberOfDefaultSchemes; ++i) {
+        fileConfig.setArrayIndex(i);
+
+        QList<QVariant> scheme = schemes[i + numberOfDefaultSchemes];
+
+        for (int k = 0; k < scheme.size(); ++k)
+            fileConfig.setValue(spNames[k], scheme[k]);
+    }
+    fileConfig.endArray();
+}
+
+
+NetAmmoSchemeModel::NetAmmoSchemeModel(QObject * parent) :
+    QAbstractTableModel(parent)
+{
+    netScheme = defaultScheme;
+}
+
+QVariant NetAmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+    Q_UNUSED(section);
+    Q_UNUSED(orientation);
+    Q_UNUSED(role);
+
+    return QVariant();
+}
+
+int NetAmmoSchemeModel::rowCount(const QModelIndex & parent) const
+{
+    if (parent.isValid())
+        return 0;
+    else
+        return 1;
+}
+
+int NetAmmoSchemeModel::columnCount(const QModelIndex & parent) const
+{
+    if (parent.isValid())
+        return 0;
+    else
+        return defaultScheme.size();
+}
+
+QVariant NetAmmoSchemeModel::data(const QModelIndex &index, int role) const
+{
+    if (!index.isValid() || index.row() < 0
+        || index.row() > 1
+        || index.column() >= defaultScheme.size()
+        || (role != Qt::EditRole && role != Qt::DisplayRole)
+        )
+        return QVariant();
+
+    return netScheme[index.column()];
+}
+
+void NetAmmoSchemeModel::setNetSchemeConfig(QStringList & cfg)
+{
+    if(cfg.size() != netScheme.size())
+    {
+        qWarning("Incorrect scheme cfg size");
+        return;
+    }
+
+    for(int i = 0; i < cfg.size(); ++i)
+        netScheme[i] = QVariant(cfg[i]);
+
+    reset();
+}