QTfrontend/team.cpp
author Xeli
Fri, 16 Sep 2011 20:39:14 +0200
branchhedgeroid
changeset 5938 c186c454779d
parent 5907 64ccc6be0ec5
child 6015 daffc14a518a
permissions -rw-r--r--
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
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
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 3844
diff changeset
     3
 * Copyright (c) 2005-2011 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>
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 468
diff changeset
    21
#include <QStringList>
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 468
diff changeset
    22
#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
    23
#include <QCryptographicHash>
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
    24
#include <QSettings>
5252
ded882439548 file association for mac!
koda
parents: 5204
diff changeset
    25
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"
5204
e1a5f4d5d86a split pages.h into several header files
koda
parents: 4976
diff changeset
    28
#include "pageeditteam.h"
184
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
    {
5907
64ccc6be0ec5 team edit: restore default hedgehog name if name is empty- since empty names are not supported and will lead to errors; also lupdate
sheepluva
parents: 5252
diff changeset
    41
        Hedgehogs[i].Name = (QLineEdit::tr("hedgehog %1").arg(i+1));
3344
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;
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
    55
    CampaignProgress = 0;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    57
353
5ec611d702a0 initial hedgehogs num fixed
displacer
parents: 352
diff changeset
    58
HWTeam::HWTeam(const QStringList& strLst) :
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    59
  numHedgehogs(4),
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    60
  m_isNetTeam(true)
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    61
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    62
    // net teams are configured from QStringList
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    63
    if(strLst.size() != 23) throw HWTeamConstructException();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    64
    TeamName = strLst[0];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    65
    Grave = strLst[1];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    66
    Fort = strLst[2];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    67
    Voicepack = strLst[3];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    68
    Flag = strLst[4];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    69
    Owner = strLst[5];
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    70
    difficulty = strLst[6].toUInt();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    71
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    72
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    73
        Hedgehogs[i].Name=strLst[i * 2 + 7];
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    74
        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
    75
// 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
    76
// Checking net teams is probably pointless, but can't hurt.
3844
697c855bd48d Probably fix missing hats.
nemo
parents: 3812
diff changeset
    77
        if (Hedgehogs[i].Hat.isEmpty()) Hedgehogs[i].Hat = "NoHat";
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    78
    }
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    79
    Rounds = 0;
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
    80
    Wins = 0;
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
    81
    CampaignProgress = 0;
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    82
}
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    83
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1840
diff changeset
    84
HWTeam::HWTeam() :
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 336
diff changeset
    85
  difficulty(0),
353
5ec611d702a0 initial hedgehogs num fixed
displacer
parents: 352
diff changeset
    86
  numHedgehogs(4),
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
    87
  m_isNetTeam(false)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    88
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    89
    TeamName = QString("Team");
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    90
    for (int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    91
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    92
        Hedgehogs[i].Name.sprintf("hedgehog %d", i);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
    93
        Hedgehogs[i].Hat = "NoHat";
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    94
    }
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
    95
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    96
    Grave = QString("Simple"); // default
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    97
    Fort = QString("Island"); // default
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    98
    Voicepack = "Default";
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
    99
    Flag = "hedgewars";
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1840
diff changeset
   100
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   101
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   102
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   103
        binds[i].action = cbinds[i].action;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   104
        binds[i].strbind = cbinds[i].strbind;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   105
    }
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   106
    Rounds = 0;
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   107
    Wins = 0;
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   108
    CampaignProgress = 0;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   109
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   110
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   111
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   112
bool HWTeam::LoadFromFile()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   113
{
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   114
    QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".hwt", QSettings::IniFormat, 0);
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   115
    teamfile.setIniCodec("UTF-8");
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   116
    TeamName = teamfile.value("Team/Name", TeamName).toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   117
    Grave = teamfile.value("Team/Grave", "Statue").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   118
    Fort = teamfile.value("Team/Fort", "Plane").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   119
    Voicepack = teamfile.value("Team/Voicepack", "Default").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   120
    Flag = teamfile.value("Team/Flag", "hedgewars").toString();
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   121
    difficulty = teamfile.value("Team/Difficulty", 0).toInt();
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   122
    Rounds = teamfile.value("Team/Rounds", 0).toInt();
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   123
    Wins = teamfile.value("Team/Wins", 0).toInt();
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   124
    CampaignProgress = teamfile.value("Team/CampaignProgress", 0).toInt();
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   125
    for(int i = 0; i < 8; i++)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   126
    {
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   127
        QString hh = QString("Hedgehog%1/").arg(i);
5907
64ccc6be0ec5 team edit: restore default hedgehog name if name is empty- since empty names are not supported and will lead to errors; also lupdate
sheepluva
parents: 5252
diff changeset
   128
        Hedgehogs[i].Name = teamfile.value(hh + "Name", QString("hedgehog %1").arg(i+1)).toString();
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   129
        Hedgehogs[i].Hat = teamfile.value(hh + "Hat", "NoHat").toString();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   130
        Hedgehogs[i].Rounds = teamfile.value(hh + "Rounds", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   131
        Hedgehogs[i].Kills = teamfile.value(hh + "Kills", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   132
        Hedgehogs[i].Deaths = teamfile.value(hh + "Deaths", 0).toInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   133
        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
   134
    }
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   135
    for(int i = 0; i < BINDS_NUMBER; i++)
3359
d17b9f6adae5 Engine:
smxx
parents: 3344
diff changeset
   136
        binds[i].strbind = teamfile.value(QString("Binds/%1").arg(binds[i].action), cbinds[i].strbind).toString();
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   137
    for(int i = 0; i < MAX_ACHIEVEMENTS; i++)
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   138
        if(achievements[i][0][0])
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   139
            AchievementProgress[i] = teamfile.value(QString("Achievements/%1").arg(achievements[i][0]), 0).toUInt();
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   140
        else
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   141
            break;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   142
    return true;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   143
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   144
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   145
bool HWTeam::FileExists()
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   146
{
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   147
    QFile f(cfgdir->absolutePath() + "/Teams/" + TeamName + ".hwt");
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   148
    return f.exists();
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   149
}
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   150
3159
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   151
bool HWTeam::DeleteFile()
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   152
{
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   153
    if(m_isNetTeam)
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   154
        return false;
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   155
    QFile cfgfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".hwt");
3159
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   156
    cfgfile.remove();
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   157
    return true;
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   158
}
e5eff81d7635 Frontend:
smxx
parents: 2948
diff changeset
   159
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   160
bool HWTeam::SaveToFile()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   161
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   162
    if (OldTeamName != TeamName)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   163
    {
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   164
        QFile cfgfile(cfgdir->absolutePath() + "/Teams/" + OldTeamName + ".hwt");
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   165
        cfgfile.remove();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   166
        OldTeamName = TeamName;
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   167
    }
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   168
    QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + TeamName + ".hwt", QSettings::IniFormat, 0);
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   169
    teamfile.setIniCodec("UTF-8");
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   170
    teamfile.setValue("Team/Name", TeamName);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   171
    teamfile.setValue("Team/Grave", Grave);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   172
    teamfile.setValue("Team/Fort", Fort);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   173
    teamfile.setValue("Team/Voicepack", Voicepack);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   174
    teamfile.setValue("Team/Flag", Flag);
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   175
    teamfile.setValue("Team/Difficulty", difficulty);
3381
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   176
    teamfile.setValue("Team/Rounds", Rounds);
f8800c44b3de Engine:
smxx
parents: 3359
diff changeset
   177
    teamfile.setValue("Team/Wins", Wins);
3758
80007c41c35e Frontend:
smaxx
parents: 3697
diff changeset
   178
    teamfile.setValue("Team/CampaignProgress", CampaignProgress);
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   179
    for(int i = 0; i < 8; i++)
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   180
    {
3333
560e2766c445 Frontend:
smxx
parents: 3236
diff changeset
   181
        QString hh = QString("Hedgehog%1/").arg(i);
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   182
        teamfile.setValue(hh + "Name", Hedgehogs[i].Name);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   183
        teamfile.setValue(hh + "Hat", Hedgehogs[i].Hat);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   184
        teamfile.setValue(hh + "Rounds", Hedgehogs[i].Rounds);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   185
        teamfile.setValue(hh + "Kills", Hedgehogs[i].Kills);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   186
        teamfile.setValue(hh + "Deaths", Hedgehogs[i].Deaths);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   187
        teamfile.setValue(hh + "Suicides", Hedgehogs[i].Suicides);
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   188
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   189
    for(int i = 0; i < BINDS_NUMBER; i++)
3359
d17b9f6adae5 Engine:
smxx
parents: 3344
diff changeset
   190
        teamfile.setValue(QString("Binds/%1").arg(binds[i].action), binds[i].strbind);
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   191
    for(int i = 0; i < MAX_ACHIEVEMENTS; i++)
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   192
        if(achievements[i][0][0])
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   193
            teamfile.setValue(QString("Achievements/%1").arg(achievements[i][0]), AchievementProgress[i]);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   194
        else
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   195
            break;
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   196
    return true;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   197
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   198
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   199
void HWTeam::SetToPage(HWForm * hwform)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   200
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   201
    hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   202
    hwform->ui.pageEditTeam->CBTeamLvl->setCurrentIndex(difficulty);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   203
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   204
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   205
         hwform->ui.pageEditTeam->HHNameEdit[i]->setText(Hedgehogs[i].Name);
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   206
         if (Hedgehogs[i].Hat.startsWith("Reserved"))
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   207
            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
   208
         else
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   209
            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
   210
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   211
    hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave));
3767
2416a3f51c77 Frontend:
smaxx
parents: 3758
diff changeset
   212
    hwform->ui.pageEditTeam->CBFlag->setCurrentIndex(hwform->ui.pageEditTeam->CBFlag->findData(Flag));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   213
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   214
    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
   215
    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
   216
    //hwform->ui.pageEditTeam->CBFort_activated(Fort);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   217
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   218
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   219
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   220
        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
   221
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   222
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   223
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   224
void HWTeam::GetFromPage(HWForm * hwform)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   225
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   226
    TeamName  = hwform->ui.pageEditTeam->TeamNameEdit->text();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   227
    difficulty = hwform->ui.pageEditTeam->CBTeamLvl->currentIndex();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   228
    for(int i = 0; i < 8; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   229
    {
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   230
        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
   231
        if (hwform->ui.pageEditTeam->HHHats[i]->currentText().startsWith("Reserved"))
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   232
            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
   233
        else
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   234
            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
   235
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   236
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   237
    Grave = hwform->ui.pageEditTeam->CBGrave->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   238
    Fort = hwform->ui.pageEditTeam->CBFort->currentText();
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   239
    Voicepack = hwform->ui.pageEditTeam->CBVoicepack->currentText();
3767
2416a3f51c77 Frontend:
smaxx
parents: 3758
diff changeset
   240
    Flag = hwform->ui.pageEditTeam->CBFlag->itemData(hwform->ui.pageEditTeam->CBFlag->currentIndex()).toString();
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   241
    for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   242
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   243
        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
   244
    }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   245
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   246
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
   247
QStringList HWTeam::TeamGameConfig(quint32 InitHealth) const
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   248
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   249
    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
   250
    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
   251
    {
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   252
        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
   253
        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
   254
    }
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
   255
    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
   256
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   257
    sl.push_back(QString("egrave " + Grave));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   258
    sl.push_back(QString("efort " + Fort));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   259
    sl.push_back(QString("evoicepack " + Voicepack));
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   260
    sl.push_back(QString("eflag " + Flag));
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
    if (!m_isNetTeam)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   263
        for(int i = 0; i < BINDS_NUMBER; i++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   264
            if(!binds[i].strbind.isEmpty())
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   265
                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
   266
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   267
    for (int t = 0; t < numHedgehogs; t++)
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   268
    {
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   269
      sl.push_back(QString("eaddhh %1 %2 %3")
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   270
               .arg(QString::number(difficulty),
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   271
                QString::number(InitHealth),
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   272
                Hedgehogs[t].Name));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   273
      sl.push_back(QString("ehat %1")
3344
b18a166e6ca4 Frontend:
smxx
parents: 3333
diff changeset
   274
               .arg(Hedgehogs[t].Hat));
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   275
    }
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2879
diff changeset
   276
    return sl;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   277
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   278
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   279
bool HWTeam::isNetTeam() const
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   280
{
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   281
  return m_isNetTeam;
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   282
}
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   283
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
   284
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   285
bool HWTeam::operator==(const HWTeam& t1) const {
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   286
  return TeamName==t1.TeamName;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   287
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   288
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   289
bool HWTeam::operator<(const HWTeam& t1) const {
1325
c8994d47f41d Adding teams now works
unc0rr
parents: 1293
diff changeset
   290
  return TeamName<t1.TeamName; // if names are equal - test if it is net team
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   291
}
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
   292
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1683
diff changeset
   293