QTfrontend/hwform.h
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 2012 76fff564246b
child 2098 c977d7f2aa09
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
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: 788
diff changeset
     2
 * Hedgewars, a free turn based strategy game
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 475
diff changeset
     3
 * Copyright (c) 2005-2007 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
#ifndef HWFORM_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#define HWFORM_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 461
diff changeset
    22
#include <QMainWindow>
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 245
diff changeset
    23
#include <QStack>
530
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 496
diff changeset
    24
#include <QTime>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 311
diff changeset
    26
#include "netserver.h"
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 289
diff changeset
    27
#include "game.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
#include "ui_hwform.h"
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
    29
#include "SDLs.h"
2012
76fff564246b TheXception's patch:
unc0rr
parents: 2009
diff changeset
    30
#include "bgwidget.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
class HWGame;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    33
class HWTeam;
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1905
diff changeset
    34
class HWNamegen;
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 311
diff changeset
    35
class HWNewNet;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    36
class GameUIConfig;
634
b9db5ff5cfdb Fix some bugs
unc0rr
parents: 600
diff changeset
    37
class HWNetRegisterServer;
674
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 666
diff changeset
    38
class QCloseEvent;
1897
e9dcb47013c7 - Some style changes by nemo
unc0rr
parents: 1885
diff changeset
    39
class AmmoSchemeModel;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    40
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    41
class HWForm : public QMainWindow
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    42
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    43
	Q_OBJECT
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    44
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    45
public:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    46
	HWForm(QWidget *parent = 0);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    47
	Ui_HWForm ui;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    48
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    49
private slots:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    50
	void GoToMain();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
	void GoToSinglePlayer();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
	void GoToSetup();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    53
	void GoToMultiplayer();
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 535
diff changeset
    54
	void GoToSaves();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    55
	void GoToDemos();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
	void GoToNet();
1950
09ad18a1be11 Implement two buttons
unc0rr
parents: 1907
diff changeset
    57
	void GoToNetType();
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
    58
	void GoToInfo();
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
    59
	void GoToTraining();
600
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 587
diff changeset
    60
	void GoToSelectWeapon();
2009
91f461c218ab TheXception's patch:
unc0rr
parents: 1950
diff changeset
    61
	void GoToSelectWeaponSet(const QString & name);
694
436045756181 working save weapons to file
displacer
parents: 686
diff changeset
    62
	void GoToSelectNewWeapon();
646
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 634
diff changeset
    63
	void GoToNetServer();
1885
75489216b5b0 Continue work on new schemes
unc0rr
parents: 1884
diff changeset
    64
	void GoToSchemes();
1905
b1ec8db513f2 - Use QCryptographicHash for md5
unc0rr
parents: 1904
diff changeset
    65
	void GoToAdmin();
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 245
diff changeset
    66
	void GoToPage(quint8 id);
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 245
diff changeset
    67
	void GoBack();
530
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 496
diff changeset
    68
	void btnExitPressed();
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 496
diff changeset
    69
	void btnExitClicked();
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
    70
	void IntermediateSetup();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
	void NewTeam();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
	void EditTeam();
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1800
diff changeset
    73
	void RandomNames();
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1800
diff changeset
    74
	void RandomName(const int &i);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    75
	void TeamSave();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    76
	void TeamDiscard();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    77
	void SimpleGame();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    78
	void PlayDemo();
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
    79
	void StartTraining();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    80
	void NetConnect();
666
07fa9a74a074 Abstract HWForm from custom PageNet implementation
unc0rr
parents: 662
diff changeset
    81
	void NetConnectServer(const QString & host, quint16 port);
1395
46fd70de89e2 Add "Join official server" button
unc0rr
parents: 1354
diff changeset
    82
	void NetConnectOfficialServer();
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 311
diff changeset
    83
	void NetStartServer();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    84
	void NetDisconnect();
1311
49beb1221c0b - Add stub page for rooms list
unc0rr
parents: 1235
diff changeset
    85
	void NetConnected();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    86
	void NetGameEnter();
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
    87
	void AddNetTeam(const HWTeam& team);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    88
	void StartMPGame();
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 289
diff changeset
    89
	void GameStateChanged(GameState gameState);
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 341
diff changeset
    90
	void ForcedDisconnect();
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 416
diff changeset
    91
	void ShowErrorMessage(const QString &);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
    92
	void GetRecord(bool isDemo, const QByteArray & record);
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 646
diff changeset
    93
	void CreateNetGame();
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
    94
	void UpdateWeapons();
1162
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1066
diff changeset
    95
	void onFrontendFullscreen(bool value);
1235
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
    96
	void Music(bool checked);
1409
d1cbe4a57ebf Add button for controlling room options (no usefull yet)
unc0rr
parents: 1404
diff changeset
    97
	void NetGameMaster();
d1cbe4a57ebf Add button for controlling room options (no usefull yet)
unc0rr
parents: 1404
diff changeset
    98
	void NetGameSlave();
1418
69df8f2a7cba Delay for 250 msec before connect to local server
unc0rr
parents: 1409
diff changeset
    99
	void AsyncNetServerStart();
1600
305e13c5f327 Go page back when room is abandoned by its admin
unc0rr
parents: 1531
diff changeset
   100
	void NetLeftRoom();
1899
5763f46d7486 Sync schemes config over net should work now (untested)
unc0rr
parents: 1897
diff changeset
   101
	void selectFirstNetScheme();
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 646
diff changeset
   102
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   103
private:
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 311
diff changeset
   104
	void _NetConnect(const QString & hostName, quint16 port, const QString & nick);
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   105
	void UpdateTeamsLists(const QStringList* editable_teams=0);
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   106
	void CreateGame(GameCFGWidget * gamecfg, TeamSelWidget* pTeamSelWidget, QString ammo);
674
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 666
diff changeset
   107
	void closeEvent(QCloseEvent *event);
1419
8650a8f55006 Set custom palette to scrollbars
unc0rr
parents: 1418
diff changeset
   108
	void CustomizePalettes();
2012
76fff564246b TheXception's patch:
unc0rr
parents: 2009
diff changeset
   109
	void resizeEvent(QResizeEvent * event);
1419
8650a8f55006 Set custom palette to scrollbars
unc0rr
parents: 1418
diff changeset
   110
	
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   111
	enum PageIDs {
788
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   112
		ID_PAGE_SETUP_TEAM      =  0,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   113
		ID_PAGE_SETUP           =  1,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   114
		ID_PAGE_MULTIPLAYER     =  2,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   115
		ID_PAGE_DEMOS           =  3,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   116
		ID_PAGE_NET             =  4,
1354
a8dcdeb88a43 Various small insignificant improvements everywhere
unc0rr
parents: 1311
diff changeset
   117
		ID_PAGE_NETGAME         =  5,
788
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   118
		ID_PAGE_INFO            =  6,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   119
		ID_PAGE_MAIN            =  7,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   120
		ID_PAGE_GAMESTATS       =  8,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   121
		ID_PAGE_SINGLEPLAYER    =  9,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   122
		ID_PAGE_TRAINING        = 10,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   123
		ID_PAGE_SELECTWEAPON    = 11,
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 697
diff changeset
   124
		ID_PAGE_NETSERVER       = 12,
1311
49beb1221c0b - Add stub page for rooms list
unc0rr
parents: 1235
diff changeset
   125
		ID_PAGE_INGAME          = 13,
1800
f1df2eb32a16 "connecting" page
unc0rr
parents: 1622
diff changeset
   126
		ID_PAGE_ROOMSLIST       = 14,
1884
40e59e9f82ce Continue work on new schemes implementation
unc0rr
parents: 1840
diff changeset
   127
		ID_PAGE_CONNECTING      = 15,
1905
b1ec8db513f2 - Use QCryptographicHash for md5
unc0rr
parents: 1904
diff changeset
   128
		ID_PAGE_SCHEME          = 16,
1950
09ad18a1be11 Implement two buttons
unc0rr
parents: 1907
diff changeset
   129
		ID_PAGE_ADMIN           = 17,
09ad18a1be11 Implement two buttons
unc0rr
parents: 1907
diff changeset
   130
		ID_PAGE_NETTYPE         = 18
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   131
		};
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   132
	HWGame * game;
1904
20348675b015 - Fix warnings in frontend
unc0rr
parents: 1899
diff changeset
   133
	HWNetServer* pnetserver;
20348675b015 - Fix warnings in frontend
unc0rr
parents: 1899
diff changeset
   134
	HWNetRegisterServer* pRegisterServer;
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 187
diff changeset
   135
	HWTeam * editedTeam;
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 311
diff changeset
   136
	HWNewNet * hwnet;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   137
	GameUIConfig * config;
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1905
diff changeset
   138
	HWNamegen * namegen;
1897
e9dcb47013c7 - Some style changes by nemo
unc0rr
parents: 1885
diff changeset
   139
	AmmoSchemeModel * ammoSchemeModel;
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 245
diff changeset
   140
	QStack<quint8> PagesStack;
530
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 496
diff changeset
   141
	QTime eggTimer;
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
   142
	SDLInteraction sdli;
2012
76fff564246b TheXception's patch:
unc0rr
parents: 2009
diff changeset
   143
	BGWidget * wBackground;
496
00465a8ef129 merged new team from branch
displacer
parents: 486
diff changeset
   144
	void OnPageShown(quint8 id, quint8 lastid=0);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   145
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   146
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   147
#endif