QTfrontend/ui/model/ammoSchemeModel.cpp
changeset 6061 15b4b485a1c5
parent 6060 fdfc01419815
child 6062 2827ded8a5ef
equal deleted inserted replaced
6060:fdfc01419815 6061:15b4b485a1c5
     1 /*
       
     2  * Hedgewars, a free turn based strategy game
       
     3  * Copyright (c) 2005-2011 Andrey Korotaev <unC0Rr@gmail.com>
       
     4  *
       
     5  * This program is free software; you can redistribute it and/or modify
       
     6  * it under the terms of the GNU General Public License as published by
       
     7  * the Free Software Foundation; version 2 of the License
       
     8  *
       
     9  * This program is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12  * GNU General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU General Public License
       
    15  * along with this program; if not, write to the Free Software
       
    16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
       
    17  */
       
    18 
       
    19 #include <QDebug>
       
    20 #include <QModelIndex>
       
    21 
       
    22 #include "ammoSchemeModel.h"
       
    23 #include "hwconsts.h"
       
    24 
       
    25 QList<QVariant> defaultScheme = QList<QVariant>()
       
    26         << QVariant("Default")     // name           0
       
    27         << QVariant(false)         // fortsmode      1
       
    28         << QVariant(false)         // team divide    2
       
    29         << QVariant(false)         // solid land     3
       
    30         << QVariant(false)         // border         4
       
    31         << QVariant(false)         // low gravity    5
       
    32         << QVariant(false)         // laser sight    6
       
    33         << QVariant(false)         // invulnerable   7
       
    34         << QVariant(false)         // reset health   8
       
    35         << QVariant(false)         // vampiric       9
       
    36         << QVariant(false)         // karma          10
       
    37         << QVariant(false)         // artillery      11
       
    38         << QVariant(true)          // random order   12
       
    39         << QVariant(false)         // king           13
       
    40         << QVariant(false)         // place hog      14
       
    41         << QVariant(false)         // shared ammo    15
       
    42         << QVariant(false)         // disable girders 16
       
    43         << QVariant(false)         // disable land objects 17
       
    44         << QVariant(false)         // AI survival    18
       
    45         << QVariant(false)         // inf. attack    19
       
    46         << QVariant(false)         // reset weps     20
       
    47         << QVariant(false)         // per hog ammo   21
       
    48         << QVariant(false)         // no wind        22
       
    49         << QVariant(false)         // more wind      23
       
    50         << QVariant(false)         // tag team       24
       
    51         << QVariant(false)         // bottom border  25
       
    52         << QVariant(100)           // damage modfier 26
       
    53         << QVariant(45)            // turn time      27
       
    54         << QVariant(100)           // init health    28
       
    55         << QVariant(15)            // sudden death   29
       
    56         << QVariant(5)             // case prob      30
       
    57         << QVariant(3)             // mines time     31
       
    58         << QVariant(4)             // mines number   32
       
    59         << QVariant(0)             // mine dud pct   33
       
    60         << QVariant(2)             // explosives     34
       
    61         << QVariant(35)            // health case pct 35
       
    62         << QVariant(25)            // health case amt 36
       
    63         << QVariant(47)            // water rise amt 37
       
    64         << QVariant(5)             // health dec amt 38
       
    65         << QVariant(100)           // rope modfier   39
       
    66         << QVariant(100)           // get away time  40
       
    67         ;
       
    68 
       
    69 AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) :
       
    70     QAbstractTableModel(parent),
       
    71     fileConfig(fileName, QSettings::IniFormat)
       
    72 {
       
    73     predefSchemesNames = QStringList()
       
    74         << "Default"
       
    75         << "Pro Mode"
       
    76         << "Shoppa"
       
    77         << "Clean Slate"
       
    78         << "Minefield"
       
    79         << "Barrel Mayhem"
       
    80         << "Tunnel Hogs"
       
    81         << "Fort Mode"
       
    82         << "Timeless"
       
    83         << "Thinking with Portals"
       
    84         << "King Mode"
       
    85         ;
       
    86 
       
    87     numberOfDefaultSchemes = predefSchemesNames.size();
       
    88 
       
    89     spNames = QStringList()
       
    90         << "name"                //  0
       
    91         << "fortsmode"           //  1
       
    92         << "divteams"            //  2
       
    93         << "solidland"           //  3
       
    94         << "border"              //  4
       
    95         << "lowgrav"             //  5
       
    96         << "laser"               //  6
       
    97         << "invulnerability"     //  7
       
    98         << "resethealth"         //  8
       
    99         << "vampiric"            //  9
       
   100         << "karma"               // 10
       
   101         << "artillery"           // 11
       
   102         << "randomorder"         // 12
       
   103         << "king"                // 13
       
   104         << "placehog"            // 14
       
   105         << "sharedammo"          // 15
       
   106         << "disablegirders"      // 16
       
   107         << "disablelandobjects"  // 17
       
   108         << "aisurvival"          // 18
       
   109         << "infattack"           // 19
       
   110         << "resetweps"           // 20
       
   111         << "perhogammo"          // 21
       
   112         << "disablewind"         // 22
       
   113         << "morewind"            // 23
       
   114         << "tagteam"             // 24
       
   115         << "bottomborder"        // 25
       
   116         << "damagefactor"        // 26
       
   117         << "turntime"            // 27
       
   118         << "health"              // 28
       
   119         << "suddendeath"         // 29
       
   120         << "caseprobability"     // 30
       
   121         << "minestime"           // 31
       
   122         << "minesnum"            // 32
       
   123         << "minedudpct"          // 33
       
   124         << "explosives"          // 34
       
   125         << "healthprobability"   // 35
       
   126         << "healthcaseamount"    // 36
       
   127         << "waterrise"           // 37
       
   128         << "healthdecrease"      // 38
       
   129         << "ropepct"             // 39
       
   130         << "getawaytime"         // 40
       
   131         ;
       
   132 
       
   133     QList<QVariant> proMode;
       
   134     proMode
       
   135         << predefSchemesNames[1]   // name           0
       
   136         << QVariant(false)         // fortsmode      1
       
   137         << QVariant(false)         // team divide    2
       
   138         << QVariant(false)         // solid land     3
       
   139         << QVariant(false)         // border         4
       
   140         << QVariant(false)         // low gravity    5
       
   141         << QVariant(false)         // laser sight    6
       
   142         << QVariant(false)         // invulnerable   7
       
   143         << QVariant(false)         // reset health   8
       
   144         << QVariant(false)         // vampiric       9
       
   145         << QVariant(false)         // karma          10
       
   146         << QVariant(false)         // artillery      11
       
   147         << QVariant(true)          // random order   12
       
   148         << QVariant(false)         // king           13
       
   149         << QVariant(false)         // place hog      14
       
   150         << QVariant(true)          // shared ammo    15
       
   151         << QVariant(false)         // disable girders 16
       
   152         << QVariant(false)         // disable land objects 17
       
   153         << QVariant(false)         // AI survival    18
       
   154         << QVariant(false)         // inf. attack    19
       
   155         << QVariant(false)         // reset weps     20
       
   156         << QVariant(false)         // per hog ammo   21
       
   157         << QVariant(false)         // no wind        22
       
   158         << QVariant(false)         // more wind      23
       
   159         << QVariant(false)         // tag team       24
       
   160         << QVariant(false)         // bottom border  25
       
   161         << QVariant(100)           // damage modfier 26
       
   162         << QVariant(15)            // turn time      27
       
   163         << QVariant(100)           // init health    28
       
   164         << QVariant(15)            // sudden death   29
       
   165         << QVariant(0)             // case prob      30
       
   166         << QVariant(3)             // mines time     31
       
   167         << QVariant(0)             // mines number   32
       
   168         << QVariant(0)             // mine dud pct   33
       
   169         << QVariant(2)             // explosives     34
       
   170         << QVariant(35)            // health case pct 35
       
   171         << QVariant(25)            // health case amt 36
       
   172         << QVariant(47)            // water rise amt 37
       
   173         << QVariant(5)             // health dec amt 38
       
   174         << QVariant(100)           // rope modfier   39
       
   175         << QVariant(100)           // get away time  40
       
   176         ;
       
   177 
       
   178     QList<QVariant> shoppa;
       
   179     shoppa
       
   180         << predefSchemesNames[2]   // name           0
       
   181         << QVariant(false)         // fortsmode      1
       
   182         << QVariant(false)         // team divide    2
       
   183         << QVariant(true)          // solid land     3
       
   184         << QVariant(true)          // border         4
       
   185         << QVariant(false)         // low gravity    5
       
   186         << QVariant(false)         // laser sight    6
       
   187         << QVariant(false)         // invulnerable   7
       
   188         << QVariant(false)         // reset health   8
       
   189         << QVariant(false)         // vampiric       9
       
   190         << QVariant(false)         // karma          10
       
   191         << QVariant(false)         // artillery      11
       
   192         << QVariant(true)          // random order   12
       
   193         << QVariant(false)         // king           13
       
   194         << QVariant(false)         // place hog      14
       
   195         << QVariant(true)          // shared ammo    15
       
   196         << QVariant(true)          // disable girders 16
       
   197         << QVariant(false)         // disable land objects 17
       
   198         << QVariant(false)         // AI survival    18
       
   199         << QVariant(false)         // inf. attack    19
       
   200         << QVariant(true)          // reset weps     20
       
   201         << QVariant(false)         // per hog ammo   21
       
   202         << QVariant(false)         // no wind        22
       
   203         << QVariant(false)         // more wind      23
       
   204         << QVariant(false)         // tag team       24
       
   205         << QVariant(false)         // bottom border  25
       
   206         << QVariant(100)           // damage modfier 26
       
   207         << QVariant(30)            // turn time      27
       
   208         << QVariant(100)           // init health    28
       
   209         << QVariant(50)            // sudden death   29
       
   210         << QVariant(1)             // case prob      30
       
   211         << QVariant(3)             // mines time     31
       
   212         << QVariant(0)             // mines number   32
       
   213         << QVariant(0)             // mine dud pct   33
       
   214         << QVariant(0)             // explosives     34
       
   215         << QVariant(0)             // health case pct 35
       
   216         << QVariant(25)            // health case amt 36
       
   217         << QVariant(47)            // water rise amt 37
       
   218         << QVariant(5)             // health dec amt 38
       
   219         << QVariant(100)           // rope modfier   39
       
   220         << QVariant(100)           // get away time  40
       
   221         ;
       
   222 
       
   223     QList<QVariant> cleanslate;
       
   224     cleanslate
       
   225         << predefSchemesNames[3]   // name           0
       
   226         << QVariant(false)         // fortsmode      1
       
   227         << QVariant(false)         // team divide    2
       
   228         << QVariant(false)         // solid land     3
       
   229         << QVariant(false)         // border         4
       
   230         << QVariant(false)         // low gravity    5
       
   231         << QVariant(false)         // laser sight    6
       
   232         << QVariant(false)         // invulnerable   7
       
   233         << QVariant(true)          // reset health   8
       
   234         << QVariant(false)         // vampiric       9
       
   235         << QVariant(false)         // karma          10
       
   236         << QVariant(false)         // artillery      11
       
   237         << QVariant(true)          // random order   12
       
   238         << QVariant(false)         // king           13
       
   239         << QVariant(false)         // place hog      14
       
   240         << QVariant(false)         // shared ammo    15
       
   241         << QVariant(false)         // disable girders 16
       
   242         << QVariant(false)         // disable land objects 17
       
   243         << QVariant(false)         // AI survival    18
       
   244         << QVariant(true)          // inf. attack    19
       
   245         << QVariant(true)          // reset weps     20
       
   246         << QVariant(false)         // per hog ammo   21
       
   247         << QVariant(false)         // no wind        22
       
   248         << QVariant(false)         // more wind      23
       
   249         << QVariant(false)         // tag team       24
       
   250         << QVariant(false)         // bottom border  25
       
   251         << QVariant(100)           // damage modfier 26
       
   252         << QVariant(45)            // turn time      27
       
   253         << QVariant(100)           // init health    28
       
   254         << QVariant(15)            // sudden death   29
       
   255         << QVariant(5)             // case prob      30
       
   256         << QVariant(3)             // mines time     31
       
   257         << QVariant(4)             // mines number   32
       
   258         << QVariant(0)             // mine dud pct   33
       
   259         << QVariant(2)             // explosives     34
       
   260         << QVariant(35)            // health case pct 35
       
   261         << QVariant(25)            // health case amt 36
       
   262         << QVariant(47)            // water rise amt 37
       
   263         << QVariant(5)             // health dec amt 38
       
   264         << QVariant(100)           // rope modfier   39
       
   265         << QVariant(100)           // get away time  40
       
   266         ;
       
   267 
       
   268     QList<QVariant> minefield;
       
   269     minefield
       
   270         << predefSchemesNames[4]   // name           0
       
   271         << QVariant(false)         // fortsmode      1
       
   272         << QVariant(false)         // team divide    2
       
   273         << QVariant(false)         // solid land     3
       
   274         << QVariant(false)         // border         4
       
   275         << QVariant(false)         // low gravity    5
       
   276         << QVariant(false)         // laser sight    6
       
   277         << QVariant(false)         // invulnerable   7
       
   278         << QVariant(false)         // reset health   8
       
   279         << QVariant(false)         // vampiric       9
       
   280         << QVariant(false)         // karma          10
       
   281         << QVariant(false)         // artillery      11
       
   282         << QVariant(true)          // random order   12
       
   283         << QVariant(false)         // king           13
       
   284         << QVariant(false)         // place hog      14
       
   285         << QVariant(true)          // shared ammo    15
       
   286         << QVariant(true)          // disable girders 16
       
   287         << QVariant(false)         // disable land objects 17
       
   288         << QVariant(false)         // AI survival    18
       
   289         << QVariant(false)         // inf. attack    19
       
   290         << QVariant(false)         // reset weps     20
       
   291         << QVariant(false)         // per hog ammo   21
       
   292         << QVariant(false)         // no wind        22
       
   293         << QVariant(false)         // more wind      23
       
   294         << QVariant(false)         // tag team       24
       
   295         << QVariant(false)         // bottom border  25
       
   296         << QVariant(100)           // damage modfier 26
       
   297         << QVariant(30)            // turn time      27
       
   298         << QVariant(50)            // init health    28
       
   299         << QVariant(15)            // sudden death   29
       
   300         << QVariant(0)             // case prob      30
       
   301         << QVariant(0)             // mines time     31
       
   302         << QVariant(80)            // mines number   32
       
   303         << QVariant(0)             // mine dud pct   33
       
   304         << QVariant(0)             // explosives     34
       
   305         << QVariant(35)            // health case pct 35
       
   306         << QVariant(25)            // health case amt 36
       
   307         << QVariant(47)            // water rise amt 37
       
   308         << QVariant(5)             // health dec amt 38
       
   309         << QVariant(100)           // rope modfier   39
       
   310         << QVariant(100)           // get away time  40
       
   311         ;
       
   312 
       
   313     QList<QVariant> barrelmayhem;
       
   314     barrelmayhem
       
   315         << predefSchemesNames[5]   // name           0
       
   316         << QVariant(false)         // fortsmode      1
       
   317         << QVariant(false)         // team divide    2
       
   318         << QVariant(false)         // solid land     3
       
   319         << QVariant(false)         // border         4
       
   320         << QVariant(false)         // low gravity    5
       
   321         << QVariant(false)         // laser sight    6
       
   322         << QVariant(false)         // invulnerable   7
       
   323         << QVariant(false)         // reset health   8
       
   324         << QVariant(false)         // vampiric       9
       
   325         << QVariant(false)         // karma          10
       
   326         << QVariant(false)         // artillery      11
       
   327         << QVariant(true)          // random order   12
       
   328         << QVariant(false)         // king           13
       
   329         << QVariant(false)         // place hog      14
       
   330         << QVariant(true)          // shared ammo    15
       
   331         << QVariant(false)         // disable girders 16
       
   332         << QVariant(false)         // disable land objects 17
       
   333         << QVariant(false)         // AI survival    18
       
   334         << QVariant(false)         // inf. attack    19
       
   335         << QVariant(false)         // reset weps     20
       
   336         << QVariant(false)         // per hog ammo   21
       
   337         << QVariant(false)         // no wind        22
       
   338         << QVariant(false)         // more wind      23
       
   339         << QVariant(false)         // tag team       24
       
   340         << QVariant(false)         // bottom border  25
       
   341         << QVariant(100)           // damage modfier 26
       
   342         << QVariant(30)            // turn time      27
       
   343         << QVariant(100)           // init health    28
       
   344         << QVariant(15)            // sudden death   29
       
   345         << QVariant(0)             // case prob      30
       
   346         << QVariant(0)             // mines time     31
       
   347         << QVariant(0)             // mines number   32
       
   348         << QVariant(0)             // mine dud pct   33
       
   349         << QVariant(80)            // explosives     34
       
   350         << QVariant(35)            // health case pct 35
       
   351         << QVariant(25)            // health case amt 36
       
   352         << QVariant(47)            // water rise amt 37
       
   353         << QVariant(5)             // health dec amt 38
       
   354         << QVariant(100)           // rope modfier   39
       
   355         << QVariant(100)           // get away time  40
       
   356         ;
       
   357 
       
   358     QList<QVariant> tunnelhogs;
       
   359     tunnelhogs
       
   360         << predefSchemesNames[6]   // name           0
       
   361         << QVariant(false)         // fortsmode      1
       
   362         << QVariant(false)         // team divide    2
       
   363         << QVariant(false)         // solid land     3
       
   364         << QVariant(true)          // border         4
       
   365         << QVariant(false)         // low gravity    5
       
   366         << QVariant(false)         // laser sight    6
       
   367         << QVariant(false)         // invulnerable   7
       
   368         << QVariant(false)         // reset health   8
       
   369         << QVariant(false)         // vampiric       9
       
   370         << QVariant(false)         // karma          10
       
   371         << QVariant(false)         // artillery      11
       
   372         << QVariant(true)          // random order   12
       
   373         << QVariant(false)         // king           13
       
   374         << QVariant(false)         // place hog      14
       
   375         << QVariant(true)          // shared ammo    15
       
   376         << QVariant(true)          // disable girders 16
       
   377         << QVariant(true)          // disable land objects 17
       
   378         << QVariant(false)         // AI survival    18
       
   379         << QVariant(false)         // inf. attack    19
       
   380         << QVariant(false)         // reset weps     20
       
   381         << QVariant(false)         // per hog ammo   21
       
   382         << QVariant(false)         // no wind        22
       
   383         << QVariant(false)         // more wind      23
       
   384         << QVariant(false)         // tag team       24
       
   385         << QVariant(false)         // bottom border  25
       
   386         << QVariant(100)           // damage modfier 26
       
   387         << QVariant(30)            // turn time      27
       
   388         << QVariant(100)           // init health    28
       
   389         << QVariant(15)            // sudden death   29
       
   390         << QVariant(5)             // case prob      30
       
   391         << QVariant(3)             // mines time     31
       
   392         << QVariant(10)            // mines number   32
       
   393         << QVariant(10)            // mine dud pct   33
       
   394         << QVariant(10)            // explosives     34
       
   395         << QVariant(35)            // health case pct 35
       
   396         << QVariant(25)            // health case amt 36
       
   397         << QVariant(47)            // water rise amt 37
       
   398         << QVariant(5)             // health dec amt 38
       
   399         << QVariant(100)           // rope modfier   39
       
   400         << QVariant(100)           // get away time  40
       
   401         ;
       
   402 
       
   403     QList<QVariant> forts;
       
   404     forts
       
   405         << predefSchemesNames[7]   // name           0
       
   406         << QVariant(true)          // fortsmode      1
       
   407         << QVariant(true)          // team divide    2
       
   408         << QVariant(false)         // solid land     3
       
   409         << QVariant(false)         // border         4
       
   410         << QVariant(true)          // low gravity    5
       
   411         << QVariant(false)         // laser sight    6
       
   412         << QVariant(false)         // invulnerable   7
       
   413         << QVariant(false)         // reset health   8
       
   414         << QVariant(false)         // vampiric       9
       
   415         << QVariant(false)         // karma          10
       
   416         << QVariant(false)         // artillery      11
       
   417         << QVariant(true)          // random order   12
       
   418         << QVariant(false)         // king           13
       
   419         << QVariant(false)         // place hog      14
       
   420         << QVariant(false)         // shared ammo    15
       
   421         << QVariant(false)         // disable girders 16
       
   422         << QVariant(false)         // disable land objects 17
       
   423         << QVariant(false)         // AI survival    18
       
   424         << QVariant(false)         // inf. attack    19
       
   425         << QVariant(false)         // reset weps     20
       
   426         << QVariant(false)         // per hog ammo   21
       
   427         << QVariant(false)         // no wind        22
       
   428         << QVariant(false)         // more wind      23
       
   429         << QVariant(false)         // tag team       24
       
   430         << QVariant(false)         // bottom border  25
       
   431         << QVariant(100)           // damage modfier 26
       
   432         << QVariant(45)            // turn time      27
       
   433         << QVariant(100)           // init health    28
       
   434         << QVariant(15)            // sudden death   29
       
   435         << QVariant(5)             // case prob      30
       
   436         << QVariant(3)             // mines time     31
       
   437         << QVariant(0)             // mines number   32
       
   438         << QVariant(0)             // mine dud pct   33
       
   439         << QVariant(0)             // explosives     34
       
   440         << QVariant(35)            // health case pct 35
       
   441         << QVariant(25)            // health case amt 36
       
   442         << QVariant(47)            // water rise amt 37
       
   443         << QVariant(5)             // health dec amt 38
       
   444         << QVariant(100)           // rope modfier   39
       
   445         << QVariant(100)           // get away time  40
       
   446         ;
       
   447 
       
   448     QList<QVariant> timeless;
       
   449     timeless
       
   450         << predefSchemesNames[8]   // name           0
       
   451         << QVariant(false)         // fortsmode      1
       
   452         << QVariant(false)         // team divide    2
       
   453         << QVariant(false)         // solid land     3
       
   454         << QVariant(false)         // border         4
       
   455         << QVariant(false)         // low gravity    5
       
   456         << QVariant(false)         // laser sight    6
       
   457         << QVariant(false)         // invulnerable   7
       
   458         << QVariant(false)         // reset health   8
       
   459         << QVariant(false)         // vampiric       9
       
   460         << QVariant(false)         // karma          10
       
   461         << QVariant(false)         // artillery      11
       
   462         << QVariant(true)          // random order   12
       
   463         << QVariant(false)         // king           13
       
   464         << QVariant(false)         // place hog      14
       
   465         << QVariant(false)         // shared ammo    15
       
   466         << QVariant(false)         // disable girders 16
       
   467         << QVariant(false)         // disable land objects 17
       
   468         << QVariant(false)         // AI survival    18
       
   469         << QVariant(false)         // inf. attack    19
       
   470         << QVariant(false)         // reset weps     20
       
   471         << QVariant(true)          // per hog ammo   21
       
   472         << QVariant(false)         // no wind        22
       
   473         << QVariant(false)         // more wind      23
       
   474         << QVariant(false)         // tag team       24
       
   475         << QVariant(false)         // bottom border  25
       
   476         << QVariant(100)           // damage modfier 26
       
   477         << QVariant(9999)          // turn time      27
       
   478         << QVariant(100)           // init health    28
       
   479         << QVariant(15)            // sudden death   29
       
   480         << QVariant(5)             // case prob      30
       
   481         << QVariant(3)             // mines time     31
       
   482         << QVariant(5)             // mines number   32
       
   483         << QVariant(10)            // mine dud pct   33
       
   484         << QVariant(2)             // explosives     34
       
   485         << QVariant(35)            // health case pct 35
       
   486         << QVariant(30)            // health case amt 36
       
   487         << QVariant(0)             // water rise amt 37
       
   488         << QVariant(0)             // health dec amt 38
       
   489         << QVariant(100)           // rope modfier   39
       
   490         << QVariant(100)           // get away time  40
       
   491         ;
       
   492 
       
   493     QList<QVariant> thinkingportals;
       
   494     thinkingportals
       
   495         << predefSchemesNames[9]   // name           0
       
   496         << QVariant(false)         // fortsmode      1
       
   497         << QVariant(false)         // team divide    2
       
   498         << QVariant(false)         // solid land     3
       
   499         << QVariant(false)         // border         4
       
   500         << QVariant(false)         // low gravity    5
       
   501         << QVariant(false)         // laser sight    6
       
   502         << QVariant(false)         // invulnerable   7
       
   503         << QVariant(false)         // reset health   8
       
   504         << QVariant(false)         // vampiric       9
       
   505         << QVariant(false)         // karma          10
       
   506         << QVariant(true)          // artillery      11
       
   507         << QVariant(true)          // random order   12
       
   508         << QVariant(false)         // king           13
       
   509         << QVariant(false)         // place hog      14
       
   510         << QVariant(false)         // shared ammo    15
       
   511         << QVariant(false)         // disable girders 16
       
   512         << QVariant(false)         // disable land objects 17
       
   513         << QVariant(false)         // AI survival    18
       
   514         << QVariant(false)         // inf. attack    19
       
   515         << QVariant(false)         // reset weps     20
       
   516         << QVariant(false)         // per hog ammo   21
       
   517         << QVariant(false)         // no wind        22
       
   518         << QVariant(false)         // more wind      23
       
   519         << QVariant(false)         // tag team       24
       
   520         << QVariant(false)         // bottom border  25
       
   521         << QVariant(100)           // damage modfier 26
       
   522         << QVariant(45)            // turn time      27
       
   523         << QVariant(100)           // init health    28
       
   524         << QVariant(15)            // sudden death   29
       
   525         << QVariant(2)             // case prob      30
       
   526         << QVariant(3)             // mines time     31
       
   527         << QVariant(5)             // mines number   32
       
   528         << QVariant(0)             // mine dud pct   33
       
   529         << QVariant(5)             // explosives     34
       
   530         << QVariant(25)            // health case pct 35
       
   531         << QVariant(25)            // health case amt 36
       
   532         << QVariant(47)            // water rise amt 37
       
   533         << QVariant(5)             // health dec amt 38
       
   534         << QVariant(100)           // rope modfier   39
       
   535         << QVariant(100)           // get away time  40
       
   536         ;
       
   537 
       
   538     QList<QVariant> kingmode;
       
   539     kingmode
       
   540         << predefSchemesNames[10]  // name           0
       
   541         << QVariant(false)         // fortsmode      1
       
   542         << QVariant(false)         // team divide    2
       
   543         << QVariant(false)         // solid land     3
       
   544         << QVariant(false)         // border         4
       
   545         << QVariant(false)         // low gravity    5
       
   546         << QVariant(false)         // laser sight    6
       
   547         << QVariant(false)         // invulnerable   7
       
   548         << QVariant(false)         // reset health   8
       
   549         << QVariant(false)         // vampiric       9
       
   550         << QVariant(false)         // karma          10
       
   551         << QVariant(false)         // artillery      11
       
   552         << QVariant(true)          // random order   12
       
   553         << QVariant(true)          // king           13
       
   554         << QVariant(false)         // place hog      14
       
   555         << QVariant(false)         // shared ammo    15
       
   556         << QVariant(false)         // disable girders 16
       
   557         << QVariant(false)         // disable land objects 17
       
   558         << QVariant(false)         // AI survival    18
       
   559         << QVariant(false)         // inf. attack    19
       
   560         << QVariant(false)         // reset weps     20
       
   561         << QVariant(false)         // per hog ammo   21
       
   562         << QVariant(false)         // no wind        22
       
   563         << QVariant(false)         // more wind      23
       
   564         << QVariant(false)         // tag team       24
       
   565         << QVariant(false)         // bottom border  25
       
   566         << QVariant(100)           // damage modfier 26
       
   567         << QVariant(45)            // turn time      27
       
   568         << QVariant(100)           // init health    28
       
   569         << QVariant(15)            // sudden death   29
       
   570         << QVariant(5)             // case prob      30
       
   571         << QVariant(3)             // mines time     31
       
   572         << QVariant(4)             // mines number   32
       
   573         << QVariant(0)             // mine dud pct   33
       
   574         << QVariant(2)             // explosives     34
       
   575         << QVariant(35)            // health case pct 35
       
   576         << QVariant(25)            // health case amt 36
       
   577         << QVariant(47)            // water rise amt 37
       
   578         << QVariant(5)             // health dec amt 38
       
   579         << QVariant(100)           // rope modfier   39
       
   580         << QVariant(100)           // get away time  40
       
   581         ;
       
   582 
       
   583 
       
   584     schemes.append(defaultScheme);
       
   585     schemes.append(proMode);
       
   586     schemes.append(shoppa);
       
   587     schemes.append(cleanslate);
       
   588     schemes.append(minefield);
       
   589     schemes.append(barrelmayhem);
       
   590     schemes.append(tunnelhogs);
       
   591     schemes.append(forts);
       
   592     schemes.append(timeless);
       
   593     schemes.append(thinkingportals);
       
   594     schemes.append(kingmode);
       
   595 
       
   596 
       
   597     int size = fileConfig.beginReadArray("schemes");
       
   598     for (int i = 0; i < size; ++i) {
       
   599         fileConfig.setArrayIndex(i);
       
   600 
       
   601         if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString()))
       
   602         {
       
   603             QList<QVariant> scheme;
       
   604 
       
   605             for (int k = 0; k < spNames.size(); ++k)
       
   606                 scheme << fileConfig.value(spNames[k], defaultScheme[k]);
       
   607 
       
   608             schemes.append(scheme);
       
   609         }
       
   610     }
       
   611     fileConfig.endArray();
       
   612 }
       
   613 
       
   614 QVariant AmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
       
   615 {
       
   616     Q_UNUSED(section);
       
   617     Q_UNUSED(orientation);
       
   618     Q_UNUSED(role);
       
   619 
       
   620     return QVariant();
       
   621 }
       
   622 
       
   623 int AmmoSchemeModel::rowCount(const QModelIndex &parent) const
       
   624 {
       
   625     if (parent.isValid())
       
   626         return 0;
       
   627     else
       
   628         return schemes.size();
       
   629 }
       
   630 
       
   631 int AmmoSchemeModel::columnCount(const QModelIndex & parent) const
       
   632 {
       
   633     if (parent.isValid())
       
   634         return 0;
       
   635     else
       
   636         return defaultScheme.size();
       
   637 }
       
   638 
       
   639 Qt::ItemFlags AmmoSchemeModel::flags(const QModelIndex & index) const
       
   640 {
       
   641     Q_UNUSED(index);
       
   642 
       
   643     return
       
   644         Qt::ItemIsEnabled
       
   645         | Qt::ItemIsSelectable
       
   646         | Qt::ItemIsEditable;
       
   647 }
       
   648 
       
   649 bool AmmoSchemeModel::setData(const QModelIndex & index, const QVariant & value, int role)
       
   650 {
       
   651     if (!index.isValid() || index.row() < numberOfDefaultSchemes
       
   652         || index.row() >= schemes.size()
       
   653         || index.column() >= defaultScheme.size()
       
   654         || role != Qt::EditRole)
       
   655         return false;
       
   656 
       
   657     schemes[index.row()][index.column()] = value;
       
   658 
       
   659     emit dataChanged(index, index);
       
   660     return true;
       
   661 }
       
   662 
       
   663 bool AmmoSchemeModel::insertRows(int row, int count, const QModelIndex & parent)
       
   664 {
       
   665     Q_UNUSED(count);
       
   666 
       
   667     beginInsertRows(parent, schemes.size(), schemes.size());
       
   668 
       
   669     if (row == -1)
       
   670     {
       
   671         QList<QVariant> newScheme = defaultScheme;
       
   672         newScheme[0] = QVariant(tr("new"));
       
   673         schemes.insert(schemes.size(), newScheme);
       
   674     }
       
   675     else
       
   676     {
       
   677         QList<QVariant> newScheme = schemes[row];
       
   678         newScheme[0] = QVariant(tr("copy of") + " " + newScheme[0].toString());
       
   679         schemes.insert(schemes.size(), newScheme);
       
   680     }
       
   681 
       
   682     endInsertRows();
       
   683 
       
   684     return true;
       
   685 }
       
   686 
       
   687 bool AmmoSchemeModel::removeRows(int row, int count, const QModelIndex & parent)
       
   688 {
       
   689     if(count != 1
       
   690         || row < numberOfDefaultSchemes
       
   691         || row >= schemes.size())
       
   692         return false;
       
   693 
       
   694     beginRemoveRows(parent, row, row);
       
   695 
       
   696     schemes.removeAt(row);
       
   697 
       
   698     endRemoveRows();
       
   699 
       
   700     return true;
       
   701 }
       
   702 
       
   703 QVariant AmmoSchemeModel::data(const QModelIndex &index, int role) const
       
   704 {
       
   705     if (!index.isValid() || index.row() < 0
       
   706         || index.row() >= schemes.size()
       
   707         || index.column() >= defaultScheme.size()
       
   708         || (role != Qt::EditRole && role != Qt::DisplayRole)
       
   709         )
       
   710         return QVariant();
       
   711 
       
   712     return schemes[index.row()][index.column()];
       
   713 }
       
   714 
       
   715 void AmmoSchemeModel::Save()
       
   716 {
       
   717     fileConfig.beginWriteArray("schemes", schemes.size() - numberOfDefaultSchemes);
       
   718 
       
   719     for (int i = 0; i < schemes.size() - numberOfDefaultSchemes; ++i) {
       
   720         fileConfig.setArrayIndex(i);
       
   721 
       
   722         QList<QVariant> scheme = schemes[i + numberOfDefaultSchemes];
       
   723 
       
   724         for (int k = 0; k < scheme.size(); ++k)
       
   725             fileConfig.setValue(spNames[k], scheme[k]);
       
   726     }
       
   727     fileConfig.endArray();
       
   728 }
       
   729 
       
   730 
       
   731 NetAmmoSchemeModel::NetAmmoSchemeModel(QObject * parent) :
       
   732     QAbstractTableModel(parent)
       
   733 {
       
   734     netScheme = defaultScheme;
       
   735 }
       
   736 
       
   737 QVariant NetAmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
       
   738 {
       
   739     Q_UNUSED(section);
       
   740     Q_UNUSED(orientation);
       
   741     Q_UNUSED(role);
       
   742 
       
   743     return QVariant();
       
   744 }
       
   745 
       
   746 int NetAmmoSchemeModel::rowCount(const QModelIndex & parent) const
       
   747 {
       
   748     if (parent.isValid())
       
   749         return 0;
       
   750     else
       
   751         return 1;
       
   752 }
       
   753 
       
   754 int NetAmmoSchemeModel::columnCount(const QModelIndex & parent) const
       
   755 {
       
   756     if (parent.isValid())
       
   757         return 0;
       
   758     else
       
   759         return defaultScheme.size();
       
   760 }
       
   761 
       
   762 QVariant NetAmmoSchemeModel::data(const QModelIndex &index, int role) const
       
   763 {
       
   764     if (!index.isValid() || index.row() < 0
       
   765         || index.row() > 1
       
   766         || index.column() >= defaultScheme.size()
       
   767         || (role != Qt::EditRole && role != Qt::DisplayRole)
       
   768         )
       
   769         return QVariant();
       
   770 
       
   771     return netScheme[index.column()];
       
   772 }
       
   773 
       
   774 void NetAmmoSchemeModel::setNetSchemeConfig(QStringList & cfg)
       
   775 {
       
   776     if(cfg.size() != netScheme.size())
       
   777     {
       
   778         qWarning("Incorrect scheme cfg size");
       
   779         return;
       
   780     }
       
   781 
       
   782     for(int i = 0; i < cfg.size(); ++i)
       
   783         netScheme[i] = QVariant(cfg[i]);
       
   784 
       
   785     reset();
       
   786 }