QTfrontend/team.cpp
author nemo
Sun, 20 Jun 2010 22:35:10 -0400
changeset 3526 a1d2180fef42
parent 3381 f8800c44b3de
child 3697 d5b30d6373fc
permissions -rw-r--r--
Replace SHA1 with adler32. For simple purposes of checking to see if players are playing the same map, this should be quite adequate and runs 15 times faster.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 607
diff changeset
     2
 * Hedgewars, a free turn based strategy game
3236
4ab3917d7d44 Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents: 3159
diff changeset
     3
 * Copyright (c) 2005-2010 Andrey Korotaev <unC0Rr@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     4
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
#include <QFile>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#include <QTextStream>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
#include <QApplication>
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 468
diff changeset
    22
#include <QStringList>
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 468
diff changeset
    23
#include <QLineEdit>
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
    24
#include <QCryptographicHash>
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
    25
#include <QSettings>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    26
#include "team.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    27
#include "hwform.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
#include "pages.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
#include "hwconsts.h"
1240
16b85f292030 Store selected hats in team config
unc0rr
parents: 1066
diff changeset
    30
#include "hats.h"
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    31
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    32
HWTeam::HWTeam(const QString & teamname) :
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    33
    difficulty(0),
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    34
    numHedgehogs(4),
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    35
    m_isNetTeam(false)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    36
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    37
    TeamName = teamname;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    38
    OldTeamName = TeamName;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    39
    for (int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    40
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    41
        Hedgehogs[i].Name.sprintf("hedgehog %d", i);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    42
        Hedgehogs[i].Hat = "NoHat";
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    43
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    44
    Grave = "Statue";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    45
    Fort = "Plane";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    46
    Voicepack = "Default";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    47
    Flag = "hedgewars";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    48
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    49
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    50
        binds[i].action = cbinds[i].action;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    51
        binds[i].strbind = cbinds[i].strbind;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    52
    }
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    53
    Rounds = 0;
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    54
    Wins = 0;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    55
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
353
5ec611d702a0 initial hedgehogs num fixed
displacer
parents: 352
diff changeset
    57
HWTeam::HWTeam(const QStringList& strLst) :
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    58
  numHedgehogs(4),
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    59
  m_isNetTeam(true)
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    60
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    61
    // net teams are configured from QStringList
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    62
    if(strLst.size() != 23) throw HWTeamConstructException();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    63
    TeamName = strLst[0];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    64
    Grave = strLst[1];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    65
    Fort = strLst[2];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    66
    Voicepack = strLst[3];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    67
    Flag = strLst[4];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    68
    Owner = strLst[5];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    69
    difficulty = strLst[6].toUInt();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    70
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    71
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    72
        Hedgehogs[i].Name=strLst[i * 2 + 7];
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    73
        Hedgehogs[i].Hat=strLst[i * 2 + 8];
2833
9c2accd92cc7 Check for empty hat, somehow claymore managed this, this should be a workaround pending figuring out how he did it.
nemo
parents: 2747
diff changeset
    74
// Somehow claymore managed an empty hat.  Until we figure out how, this should avoid a repeat
9c2accd92cc7 Check for empty hat, somehow claymore managed this, this should be a workaround pending figuring out how he did it.
nemo
parents: 2747
diff changeset
    75
// Checking net teams is probably pointless, but can't hurt.
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    76
        if (Hedgehogs[i].Hat.length() == 0) Hedgehogs[i].Hat = "NoHat"; 
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    77
    }
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    78
    Rounds = 0;
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    79
    Wins = 0;
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    80
}
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    81
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1840
diff changeset
    82
HWTeam::HWTeam() :
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 336
diff changeset
    83
  difficulty(0),
353
5ec611d702a0 initial hedgehogs num fixed
displacer
parents: 352
diff changeset
    84
  numHedgehogs(4),
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    85
  m_isNetTeam(false)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    86
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    87
    TeamName = QString("Team");
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    88
    for (int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    89
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    90
        Hedgehogs[i].Name.sprintf("hedgehog %d", i);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    91
        Hedgehogs[i].Hat = "NoHat";
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    92
    }
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
    93
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    94
    Grave = QString("Simple"); // default
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    95
    Fort = QString("Island"); // default
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    96
    Voicepack = "Default";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    97
    Flag = "hedgewars";
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1840
diff changeset
    98
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    99
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   100
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   101
        binds[i].action = cbinds[i].action;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   102
        binds[i].strbind = cbinds[i].strbind;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   103
    }
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   104
    Rounds = 0;
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   105
    Wins = 0;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   106
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   107
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   108
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   109
bool HWTeam::LoadFromFile()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   110
{
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   111
    QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".ini", QSettings::IniFormat, 0);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   112
    teamfile.setIniCodec("UTF-8");
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   113
    TeamName = teamfile.value("Team/Name", TeamName).toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   114
    Grave = teamfile.value("Team/Grave", "Statue").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   115
    Fort = teamfile.value("Team/Fort", "Plane").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   116
    Voicepack = teamfile.value("Team/Voicepack", "Default").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   117
    Flag = teamfile.value("Team/Flag", "hedgewars").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   118
    difficulty = teamfile.value("Team/Difficulty", 0).toInt();
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   119
    Rounds = teamfile.value("Team/Rounds", 0).toInt();
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   120
    Wins = teamfile.value("Team/Wins", 0).toInt();
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   121
    for(int i = 0; i < 8; i++)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   122
    {
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   123
        QString hh = QString("Hedgehog%1/").arg(i);
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   124
        Hedgehogs[i].Name = teamfile.value(hh + "Name", QString("hedgehog %1").arg(i)).toString();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   125
        Hedgehogs[i].Hat = teamfile.value(hh + "Hat", "NoHat").toString();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   126
        Hedgehogs[i].Rounds = teamfile.value(hh + "Rounds", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   127
        Hedgehogs[i].Kills = teamfile.value(hh + "Kills", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   128
        Hedgehogs[i].Deaths = teamfile.value(hh + "Deaths", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   129
        Hedgehogs[i].Suicides = teamfile.value(hh + "Suicides", 0).toInt();
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   130
    }
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   131
    for(int i = 0; i < BINDS_NUMBER; i++)
3359
d17b9f6adae5 Engine:
smxx
parents: 3344
diff changeset
   132
        binds[i].strbind = teamfile.value(QString("Binds/%1").arg(binds[i].action), cbinds[i].strbind).toString();
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   133
    for(int i = 0; i < MAX_ACHIEVEMENTS; i++)
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   134
        if(achievements[i][0][0])
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   135
            AchievementProgress[i] = teamfile.value(QString("Achievements/%1").arg(achievements[i][0]), 0).toUInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   136
        else
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   137
            break;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   138
    return true;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   139
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   140
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   141
bool HWTeam::FileExists()
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   142
{
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   143
    QFile f(cfgdir->absolutePath() + "/Teams/" + TeamName + ".ini");
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   144
    return f.exists();
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   145
}
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   146
3159
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   147
bool HWTeam::DeleteFile()
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   148
{
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   149
    if(m_isNetTeam)
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   150
        return false;
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   151
    QFile cfgfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".ini");
3159
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   152
    cfgfile.remove();
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   153
    return true;
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   154
}
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   155
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   156
bool HWTeam::SaveToFile()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   157
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   158
    if (OldTeamName != TeamName)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   159
    {
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   160
        QFile cfgfile(cfgdir->absolutePath() + "/Teams/" + OldTeamName + ".ini");
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   161
        cfgfile.remove();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   162
        OldTeamName = TeamName;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   163
    }
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   164
    QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".ini", QSettings::IniFormat, 0);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   165
    teamfile.setIniCodec("UTF-8");
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   166
    teamfile.setValue("Team/Name", TeamName);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   167
    teamfile.setValue("Team/Grave", Grave);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   168
    teamfile.setValue("Team/Fort", Fort);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   169
    teamfile.setValue("Team/Voicepack", Voicepack);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   170
    teamfile.setValue("Team/Flag", Flag);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   171
    teamfile.setValue("Team/Difficulty", difficulty);
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   172
    teamfile.setValue("Team/Rounds", Rounds);
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   173
    teamfile.setValue("Team/Wins", Wins);
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   174
    for(int i = 0; i < 8; i++)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   175
    {
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   176
        QString hh = QString("Hedgehog%1/").arg(i);
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   177
        teamfile.setValue(hh + "Name", Hedgehogs[i].Name);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   178
        teamfile.setValue(hh + "Hat", Hedgehogs[i].Hat);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   179
        teamfile.setValue(hh + "Rounds", Hedgehogs[i].Rounds);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   180
        teamfile.setValue(hh + "Kills", Hedgehogs[i].Kills);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   181
        teamfile.setValue(hh + "Deaths", Hedgehogs[i].Deaths);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   182
        teamfile.setValue(hh + "Suicides", Hedgehogs[i].Suicides);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   183
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   184
    for(int i = 0; i < BINDS_NUMBER; i++)
3359
d17b9f6adae5 Engine:
smxx
parents: 3344
diff changeset
   185
        teamfile.setValue(QString("Binds/%1").arg(binds[i].action), binds[i].strbind);
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   186
    for(int i = 0; i < MAX_ACHIEVEMENTS; i++)
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   187
        if(achievements[i][0][0])
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   188
            teamfile.setValue(QString("Achievements/%1").arg(achievements[i][0]), AchievementProgress[i]);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   189
        else
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   190
            break;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   191
    return true;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   192
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   193
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   194
void HWTeam::SetToPage(HWForm * hwform)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   195
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   196
    hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   197
    hwform->ui.pageEditTeam->CBTeamLvl->setCurrentIndex(difficulty);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   198
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   199
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   200
         hwform->ui.pageEditTeam->HHNameEdit[i]->setText(Hedgehogs[i].Name);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   201
         if (Hedgehogs[i].Hat.startsWith("Reserved"))
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   202
            hwform->ui.pageEditTeam->HHHats[i]->setCurrentIndex(hwform->ui.pageEditTeam->HHHats[i]->findData("Reserved "+Hedgehogs[i].Hat.remove(0,40), Qt::DisplayRole));
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   203
         else
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   204
            hwform->ui.pageEditTeam->HHHats[i]->setCurrentIndex(hwform->ui.pageEditTeam->HHHats[i]->findData(Hedgehogs[i].Hat, Qt::DisplayRole));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   205
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   206
    hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   207
    hwform->ui.pageEditTeam->CBFlag->setCurrentIndex(hwform->ui.pageEditTeam->CBFlag->findText(Flag));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   208
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   209
    hwform->ui.pageEditTeam->CBFort->setCurrentIndex(hwform->ui.pageEditTeam->CBFort->findText(Fort));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   210
    hwform->ui.pageEditTeam->CBVoicepack->setCurrentIndex(hwform->ui.pageEditTeam->CBVoicepack->findText(Voicepack));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   211
    //hwform->ui.pageEditTeam->CBFort_activated(Fort);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   212
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   213
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   214
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   215
        hwform->ui.pageEditTeam->CBBind[i]->setCurrentIndex(hwform->ui.pageEditTeam->CBBind[i]->findData(binds[i].strbind));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   216
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   217
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   218
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   219
void HWTeam::GetFromPage(HWForm * hwform)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   220
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   221
    TeamName  = hwform->ui.pageEditTeam->TeamNameEdit->text();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   222
    difficulty = hwform->ui.pageEditTeam->CBTeamLvl->currentIndex();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   223
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   224
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   225
        Hedgehogs[i].Name = hwform->ui.pageEditTeam->HHNameEdit[i]->text();
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   226
        if (hwform->ui.pageEditTeam->HHHats[i]->currentText().startsWith("Reserved"))
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   227
            Hedgehogs[i].Hat = "Reserved"+playerHash+hwform->ui.pageEditTeam->HHHats[i]->currentText().remove(0,9);
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   228
        else
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   229
            Hedgehogs[i].Hat = hwform->ui.pageEditTeam->HHHats[i]->currentText();
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   230
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   231
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   232
    Grave = hwform->ui.pageEditTeam->CBGrave->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   233
    Fort = hwform->ui.pageEditTeam->CBFort->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   234
    Voicepack = hwform->ui.pageEditTeam->CBVoicepack->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   235
    Flag = hwform->ui.pageEditTeam->CBFlag->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   236
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   237
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   238
        binds[i].strbind = hwform->ui.pageEditTeam->CBBind[i]->itemData(hwform->ui.pageEditTeam->CBBind[i]->currentIndex()).toString();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   239
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   240
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   241
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
   242
QStringList HWTeam::TeamGameConfig(quint32 InitHealth) const
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   243
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   244
    QStringList sl;
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   245
    if (m_isNetTeam)
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   246
    {
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   247
        sl.push_back(QString("eaddteam %3 %1 %2").arg(teamColor.rgb() & 0xffffff).arg(TeamName).arg(QString(QCryptographicHash::hash(Owner.toLatin1(), QCryptographicHash::Md5).toHex())));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   248
        sl.push_back("erdriven");
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   249
    }
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2833
diff changeset
   250
    else sl.push_back(QString("eaddteam %3 %1 %2").arg(teamColor.rgb() & 0xffffff).arg(TeamName).arg(playerHash));
606
9d800fdfd3bd Add ammostores in frontend, should help further ammostores implemetation
unc0rr
parents: 605
diff changeset
   251
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   252
    sl.push_back(QString("egrave " + Grave));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   253
    sl.push_back(QString("efort " + Fort));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   254
    sl.push_back(QString("evoicepack " + Voicepack));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   255
    sl.push_back(QString("eflag " + Flag));
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
   256
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   257
    if (!m_isNetTeam)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   258
        for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   259
            if(!binds[i].strbind.isEmpty())
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   260
                sl.push_back(QString("ebind " + binds[i].strbind + " " + binds[i].action));
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
   261
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   262
    for (int t = 0; t < numHedgehogs; t++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   263
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   264
      sl.push_back(QString("eaddhh %1 %2 %3")
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   265
               .arg(QString::number(difficulty),
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   266
                QString::number(InitHealth),
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   267
                Hedgehogs[t].Name));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   268
      sl.push_back(QString("ehat %1")
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   269
               .arg(Hedgehogs[t].Hat));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   270
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   271
    return sl;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   272
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   273
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   274
bool HWTeam::isNetTeam() const
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   275
{
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   276
  return m_isNetTeam;
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   277
}
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   278
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   279
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   280
bool HWTeam::operator==(const HWTeam& t1) const {
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   281
  return TeamName==t1.TeamName;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   282
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   283
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   284
bool HWTeam::operator<(const HWTeam& t1) const {
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   285
  return TeamName<t1.TeamName; // if names are equal - test if it is net team
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   286
}
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
   287
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
   288