QTfrontend/namegen.cpp
author koda
Thu, 24 Mar 2011 17:28:36 +0100
changeset 5046 fc6639d56799
parent 4976 088d40d8aba2
child 5114 a05081bc2769
permissions -rw-r--r--
this brings compatibility up with SDL HEAD (5504), but maybe breaks compatibility with sdl 1.2 so please test! still has problems with keyboard input and rendered ttf textures
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     1
/*
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     3
 * Copyright (c) 2009 Martin Minarik <ttsmj@pokec.sk>
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 3344
diff changeset
     4
 * Copyright (c) 2009-2011 Andrey Korotaev <unC0Rr@gmail.com>
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     5
 *
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
     9
 *
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    13
 * GNU General Public License for more details.
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    14
 *
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    18
 */
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    19
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    20
#include <QFile>
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    21
#include <QTextStream>
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    22
#include <QApplication>
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    23
#include <QStringList>
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    24
#include <QLineEdit>
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    25
#include "namegen.h"
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    26
#include "hwform.h"
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    27
#include "hwconsts.h"
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    28
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    29
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    30
HWNamegen::HWNamegen() :
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    31
    TypesAvliable(false)
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    32
{
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    33
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    34
    TypesLoad();
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    35
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    36
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    37
HWNamegen::~HWNamegen()
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    38
{
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    39
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    40
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    41
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    42
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    43
void HWNamegen::TeamRandomName(HWTeam*& team, const int &i)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    44
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    45
    RandomNameByHat(team,i);
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    46
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    47
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    48
void HWNamegen::TeamRandomNames(HWTeam*& team, const bool changeteamname)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    49
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    50
    if ((TypesHatnames.size() > 0) && TypesAvliable){
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    51
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    52
        int kind = (rand()%(TypesHatnames.size()));
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    53
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    54
        if (changeteamname){
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    55
            if (TypesTeamnames[kind].size() > 0){
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    56
                team->TeamName = TypesTeamnames[kind][rand()%(TypesTeamnames[kind].size())];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    57
            }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    58
            team->Grave = "Simple"; // Todo: make it semi-random
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    59
            team->Fort = "Island"; // Todo: make it semi-random
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    60
            team->Voicepack = "Default";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    61
        }
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    62
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    63
        for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    64
        {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    65
            if ((TypesHatnames[kind].size()) > 0){
3344
b18a166e6ca4 Frontend:
smxx
parents: 2948
diff changeset
    66
                team->Hedgehogs[i].Hat = TypesHatnames[kind][rand()%(TypesHatnames[kind].size())];
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    67
            }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    68
            RandomNameByHat(team,i);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    69
        }
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    70
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    71
    }
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    72
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    73
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    74
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    75
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    76
void HWNamegen::RandomNameByHat(HWTeam*& team, const int &i)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    77
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    78
    QStringList Dictionaries;
3344
b18a166e6ca4 Frontend:
smxx
parents: 2948
diff changeset
    79
    HatCfgLoad(team->Hedgehogs[i].Hat,Dictionaries);
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    80
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    81
    QStringList Dictionary;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2192
diff changeset
    82
    DictLoad(Dictionaries[rand()%(Dictionaries.size())],Dictionary);
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    83
3344
b18a166e6ca4 Frontend:
smxx
parents: 2948
diff changeset
    84
    team->Hedgehogs[i].Name = Dictionary[rand()%(Dictionary.size())];
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    85
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    86
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    87
void HWNamegen::DictLoad(const QString filename, QStringList &list)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    88
{
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    89
     list.clear();
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    90
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    91
     QFile file(QString("%1/Names/%2.txt").arg(datadir->absolutePath()).arg(filename));
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    92
     if (file.open(QIODevice::ReadOnly | QIODevice::Text))
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    93
     {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    94
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    95
         QTextStream in(&file);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    96
         while (!in.atEnd()) {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    97
             QString line = in.readLine();
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    98
             if(line != QString(""))
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
    99
                 {list.append(line);}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   100
         }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   101
     }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   102
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   103
     if (list.size()==0)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   104
         list.append(filename);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   105
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   106
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   107
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   108
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   109
void HWNamegen::HatCfgLoad(const QString hatname, QStringList &list)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   110
{
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   111
     list.clear();
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   112
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   113
     QFile file(QString("%1/Names/%2.cfg").arg(datadir->absolutePath()).arg(hatname));
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   114
     if (file.open(QIODevice::ReadOnly | QIODevice::Text))
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   115
     {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   116
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   117
         QTextStream in(&file);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   118
         while (!in.atEnd()) {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   119
             QString line = in.readLine();
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   120
             if(line != QString(""))
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   121
                 {list.append(line);}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   122
         }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   123
     }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   124
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   125
     if (list.size()==0)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   126
         list.append(QString("generic"));
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   127
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   128
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   129
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   130
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   131
void HWNamegen::TypesLoad()
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   132
{
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   133
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   134
     QFile file(QString("%1/Names/types.ini").arg(datadir->absolutePath()));
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   135
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   136
         {TypesAvliable = FALSE; return;}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   137
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   138
     int counter = 0; //counter starts with 0 (teamnames mode)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   139
     TypesTeamnames.append(QStringList());
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   140
     TypesHatnames.append(QStringList());
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   141
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   142
     QTextStream in(&file);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   143
     while (!in.atEnd()) {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   144
         QString line = in.readLine();
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   145
         if (line == QString("#####")){
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   146
             counter++; //toggle mode (teamnames || hats)
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   147
             if ((counter%2) == 0){
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   148
                 TypesTeamnames.append(QStringList());
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   149
                 TypesHatnames.append(QStringList());
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   150
             }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   151
         } else if ((line == QString("*****")) || (line == QString("*END*"))){
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   152
             TypesAvliable = TRUE; return; // bye bye
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   153
         } else {
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   154
             if ((counter%2) == 0){ // even => teamnames mode
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   155
                 TypesTeamnames[(counter/2)].append(line);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   156
             } else { // odd => hats mode
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   157
                 TypesHatnames[((counter-1)/2)].append(line);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   158
             }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   159
         }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   160
//         Types.append(line);
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   161
     }
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   162
         TypesAvliable = TRUE;
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   163
     return;
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   164
}
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   165
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents:
diff changeset
   166