QTfrontend/team.h
author unc0rr
Tue, 28 Jan 2014 17:00:46 +0400
changeset 10084 83156a03e574
parent 9998 736015b847e3
child 10108 c68cf030eded
permissions -rw-r--r--
AI always activates invulnerability and extra damage if it has them
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: 486
diff changeset
     2
 * Hedgewars, a free turn based strategy game
9998
736015b847e3 update copyright to 2014
sheepluva
parents: 9466
diff changeset
     3
 * Copyright (c) 2004-2014 Andrey Korotaev <unC0Rr@gmail.com>
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 352
diff changeset
     4
 * Copyright (c) 2007 Igor Ulyanov <iulyanov@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#ifndef TEAM_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
#define TEAM_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
207
287077789132 coosing colors added
displacer
parents: 184
diff changeset
    23
#include <QColor>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    24
#include <QString>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
#include "binds.h"
3344
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    26
#include "achievements.h"
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    27
#include "hwconsts.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
class HWForm;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    30
class GameUIConfig;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    32
class HWTeamConstructException
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    33
{
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    34
};
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    35
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    36
// structure for customization and statistics of a single hedgehog
3344
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    37
struct HWHog
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    38
{
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    39
    QString Name;
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    40
    QString Hat;
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    41
    int Rounds, Kills, Deaths, Suicides;
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    42
};
b18a166e6ca4 Frontend:
smxx
parents: 3236
diff changeset
    43
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    44
// class representing a team
6223
cc3eb9b7230f It doesn't make much sense to make checks like 'if(game)' if you never set game to 0. Using smart pointers instead. Does it fix segfaults? Probably.
unc0rr
parents: 6024
diff changeset
    45
class HWTeam : public QObject
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    46
{
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    47
        Q_OBJECT
6223
cc3eb9b7230f It doesn't make much sense to make checks like 'if(game)' if you never set game to 0. Using smart pointers instead. Does it fix segfaults? Probably.
unc0rr
parents: 6024
diff changeset
    48
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2747
diff changeset
    49
    public:
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    50
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    51
        // constructors
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2747
diff changeset
    52
        HWTeam(const QString & teamname);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2747
diff changeset
    53
        HWTeam(const QStringList& strLst);
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2747
diff changeset
    54
        HWTeam();
6225
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
    55
        HWTeam(const HWTeam & other);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    57
        // file operations
6024
d38da7c19e43 some more cleanups and refactoring.
sheepluva
parents: 6015
diff changeset
    58
        static HWTeam loadFromFile(const QString & teamName);
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    59
        bool loadFromFile();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    60
        bool deleteFile();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    61
        bool saveToFile();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    62
        bool fileExists();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    63
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    64
        // attribute getters
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    65
        unsigned int campaignProgress() const;
7130
fcab1fd02bc6 - Allow switching colors with mouse wheel
unc0rr
parents: 6952
diff changeset
    66
        int color() const;
fcab1fd02bc6 - Allow switching colors with mouse wheel
unc0rr
parents: 6952
diff changeset
    67
        QColor qcolor() const;
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    68
        unsigned int difficulty() const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    69
        QString flag() const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    70
        QString fort() const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    71
        QString grave() const;
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    72
        const HWHog & hedgehog(unsigned int idx) const;
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    73
        bool isNetTeam() const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    74
        QString keyBind(unsigned int idx) const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    75
        QString name() const;
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    76
        unsigned char numHedgehogs() const;
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    77
        QString owner() const;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6225
diff changeset
    78
        QString voicepack() const;
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 348
diff changeset
    79
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    80
        // attribute setters
6024
d38da7c19e43 some more cleanups and refactoring.
sheepluva
parents: 6015
diff changeset
    81
        void bindKey(unsigned int idx, const QString & key);
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    82
        void setDifficulty(unsigned int level);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    83
        void setFlag(const QString & flag);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    84
        void setFort(const QString & fort);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    85
        void setGrave(const QString & grave);
6024
d38da7c19e43 some more cleanups and refactoring.
sheepluva
parents: 6015
diff changeset
    86
        void setHedgehog(unsigned int idx, HWHog hh);
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    87
        void setName(const QString & name);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    88
        void setNumHedgehogs(unsigned char num);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    89
        void setVoicepack(const QString & voicepack);
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    90
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    91
        // increments for statistical info
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    92
        void incRounds();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    93
        void incWins();
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    94
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    95
        // convert team info into strings for further computation
9466
8b48c27201af - Load default binds from settings.ini
unc0rr
parents: 9080
diff changeset
    96
        QStringList teamGameConfig(quint32 InitHealth) const;
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    97
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
    98
        // comparison operators
6225
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
    99
        bool operator == (const HWTeam& t1) const;
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
   100
        bool operator < (const HWTeam& t1) const;
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
   101
        HWTeam & operator = (const HWTeam & other);
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   102
7130
fcab1fd02bc6 - Allow switching colors with mouse wheel
unc0rr
parents: 6952
diff changeset
   103
public slots:
fcab1fd02bc6 - Allow switching colors with mouse wheel
unc0rr
parents: 6952
diff changeset
   104
        void setColor(int color);
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   105
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   106
    private:
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   107
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   108
        QString OldTeamName;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   109
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   110
        // class members that contain the general team info and settings
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   111
        QString m_name;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   112
        QString m_grave;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   113
        QString m_fort;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   114
        QString m_flag;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   115
        QString m_voicepack;
7131
c0c787eb526e Make frontend compile with clang
unc0rr
parents: 7130
diff changeset
   116
        QList<HWHog> m_hedgehogs;
6225
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
   117
        quint8 m_difficulty;
7131
c0c787eb526e Make frontend compile with clang
unc0rr
parents: 7130
diff changeset
   118
        QList<BindAction> m_binds;
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
   119
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   120
        // class members that contain info for the current game setup
6225
505643d4c23d disconnect when going back from lobby page (regression fix)
sheepluva
parents: 6223
diff changeset
   121
        quint8 m_numHedgehogs;
7130
fcab1fd02bc6 - Allow switching colors with mouse wheel
unc0rr
parents: 6952
diff changeset
   122
        int m_color;
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   123
        bool m_isNetTeam;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   124
        QString m_owner;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   125
6015
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   126
        // class members that contain statistics, etc.
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   127
        unsigned int m_campaignProgress;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   128
        unsigned int m_rounds;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   129
        unsigned int m_wins;
daffc14a518a cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents: 4976
diff changeset
   130
        unsigned int AchievementProgress[MAX_ACHIEVEMENTS];
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   131
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   132
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   133
#endif