QTfrontend/hwform.cpp
author unc0rr
Mon, 29 Sep 2008 22:14:23 +0000
changeset 1301 c6fe8a4bfd34
parent 1268 34c3795ecb63
child 1310 4616e15d566f
permissions -rw-r--r--
Fix a bug screwing team selection up in network game (REMOVETEAM message doesn't have teamID, and after removing the team QMap still contains old info, when add and remove team with the same name, total hedgehogs number will be decreased by first team hh number)
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: 989
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 869
diff changeset
     3
 * Copyright (c) 2005-2008 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>
407
c7890ba9ed6e lost connection to server warning message
displacer
parents: 383
diff changeset
    21
#include <QMessageBox>
502
bc178daca088 Fix build with CMake & gcc 4.1.2 on my system (treating #include <QtGui> as including directory)
unc0rr
parents: 496
diff changeset
    22
#include <QPushButton>
bc178daca088 Fix build with CMake & gcc 4.1.2 on my system (treating #include <QtGui> as including directory)
unc0rr
parents: 496
diff changeset
    23
#include <QListWidget>
bc178daca088 Fix build with CMake & gcc 4.1.2 on my system (treating #include <QtGui> as including directory)
unc0rr
parents: 496
diff changeset
    24
#include <QStackedLayout>
bc178daca088 Fix build with CMake & gcc 4.1.2 on my system (treating #include <QtGui> as including directory)
unc0rr
parents: 496
diff changeset
    25
#include <QLineEdit>
bc178daca088 Fix build with CMake & gcc 4.1.2 on my system (treating #include <QtGui> as including directory)
unc0rr
parents: 496
diff changeset
    26
#include <QLabel>
636
dc93ac775bb9 - Switch between local and internet game
unc0rr
parents: 635
diff changeset
    27
#include <QRadioButton>
654
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
    28
#include <QSpinBox>
674
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
    29
#include <QCloseEvent>
1235
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
    30
#include <QCheckBox>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
#include "hwform.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    33
#include "game.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    34
#include "team.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    35
#include "teamselect.h"
681
7a20c50988ec working weapons select
displacer
parents: 674
diff changeset
    36
#include "selectWeapon.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    37
#include "gameuiconfig.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    38
#include "pages.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    39
#include "hwconsts.h"
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
    40
#include "newnetclient.h"
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
    41
#include "gamecfgwidget.h"
632
5e09ae25729f Half implement possibility for different backends of servers list
unc0rr
parents: 625
diff changeset
    42
#include "netserverslist.h"
634
b9db5ff5cfdb Fix some bugs
unc0rr
parents: 632
diff changeset
    43
#include "netudpserver.h"
b9db5ff5cfdb Fix some bugs
unc0rr
parents: 632
diff changeset
    44
#include "netwwwserver.h"
461
105af110b0e6 chatWidget with layout
displacer
parents: 453
diff changeset
    45
#include "chatwidget.h"
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
    46
#include "playrecordpage.h"
653
4f44fc06ca45 Class to ask host/port to connect to ('Specify' button on PageNet)
unc0rr
parents: 647
diff changeset
    47
#include "input_ip.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    48
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    49
HWForm::HWForm(QWidget *parent)
637
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
    50
  : QMainWindow(parent), pnetserver(0), pRegisterServer(0), editedTeam(0), hwnet(0)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
	ui.setupUi(this);
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
    53
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
    54
	ui.pageOptions->CBResolution->addItems(sdli.getResolutions());
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
    55
301
29bf9c1a3ad3 Use QSettings to storing config
unc0rr
parents: 290
diff changeset
    56
	config = new GameUIConfig(this, cfgdir->absolutePath() + "/hedgewars.ini");
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    57
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
    58
	UpdateTeamsLists();
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
    59
	UpdateWeapons();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    60
1162
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
    61
	connect(config, SIGNAL(frontendFullscreen(bool)), this, SLOT(onFrontendFullscreen(bool)));
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
    62
	onFrontendFullscreen(config->isFrontendFullscreen());
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
    63
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    64
	connect(ui.pageMain->BtnSinglePlayer,	SIGNAL(clicked()),	this, SLOT(GoToSinglePlayer()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    65
	connect(ui.pageMain->BtnSetup,	SIGNAL(clicked()),	this, SLOT(GoToSetup()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    66
	connect(ui.pageMain->BtnNet,	SIGNAL(clicked()),	this, SLOT(GoToNet()));
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
    67
	connect(ui.pageMain->BtnInfo,	SIGNAL(clicked()),	this, SLOT(GoToInfo()));
530
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
    68
	connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed()));
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
    69
	connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    70
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
	connect(ui.pageEditTeam->BtnTeamSave,	SIGNAL(clicked()),	this, SLOT(TeamSave()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
	connect(ui.pageEditTeam->BtnTeamDiscard,	SIGNAL(clicked()),	this, SLOT(TeamDiscard()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    73
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
    74
	connect(ui.pageMultiplayer->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    75
	connect(ui.pageMultiplayer->BtnStartMPGame,	SIGNAL(clicked()),	this, SLOT(StartMPGame()));
493
0c0ed17ad675 - Fix warning
unc0rr
parents: 492
diff changeset
    76
	connect(ui.pageMultiplayer->teamsSelect, SIGNAL(setEnabledGameStart(bool)),
492
78e80f899b59 disable start game button with teams num < 2
displacer
parents: 486
diff changeset
    77
		ui.pageMultiplayer->BtnStartMPGame, SLOT(setEnabled(bool)));
586
ecb6347dfeca Prepare to new page 'Training'
unc0rr
parents: 585
diff changeset
    78
	connect(ui.pageMultiplayer->teamsSelect, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    79
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
    80
	connect(ui.pagePlayDemo->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    81
	connect(ui.pagePlayDemo->BtnPlayDemo,	SIGNAL(clicked()),	this, SLOT(PlayDemo()));
247
07605d2a2024 - Fix infinite loop when selecting weapon with ammo menu
unc0rr
parents: 245
diff changeset
    82
	connect(ui.pagePlayDemo->DemosList,	SIGNAL(doubleClicked (const QModelIndex &)),	this, SLOT(PlayDemo()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    83
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
    84
	connect(ui.pageOptions->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    85
	connect(ui.pageOptions->BtnNewTeam,	SIGNAL(clicked()),	this, SLOT(NewTeam()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    86
	connect(ui.pageOptions->BtnEditTeam,	SIGNAL(clicked()),	this, SLOT(EditTeam()));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    87
	connect(ui.pageOptions->BtnSaveOptions,	SIGNAL(clicked()),	config, SLOT(SaveOptions()));
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 311
diff changeset
    88
	connect(ui.pageOptions->BtnSaveOptions,	SIGNAL(clicked()),	this, SLOT(GoBack()));
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
    89
694
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
    90
	connect(ui.pageOptions->WeaponEdit,	SIGNAL(clicked()),	this, SLOT(GoToSelectWeapon()));
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
    91
	connect(ui.pageOptions->WeaponsButt,	SIGNAL(clicked()),	this, SLOT(GoToSelectNewWeapon()));
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
    92
	connect(ui.pageSelectWeapon->pWeapons,       SIGNAL(weaponsChanged()), this, SLOT(UpdateWeapons()));
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
    93
	connect(ui.pageNetGame->pGameCFG,       SIGNAL(newWeaponsName(const QString&)), this, SLOT(NetWeaponNameChanged(const QString&)));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    94
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
    95
	connect(ui.pageNet->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
653
4f44fc06ca45 Class to ask host/port to connect to ('Specify' button on PageNet)
unc0rr
parents: 647
diff changeset
    96
	connect(ui.pageNet->BtnSpecifyServer,	SIGNAL(clicked()),	this, SLOT(NetConnect()));
646
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
    97
	connect(ui.pageNet->BtnNetSvrStart,	SIGNAL(clicked()),	this, SLOT(GoToNetServer()));
666
07fa9a74a074 Abstract HWForm from custom PageNet implementation
unc0rr
parents: 665
diff changeset
    98
	connect(ui.pageNet,	SIGNAL(connectClicked(const QString &, quint16)),	this, SLOT(NetConnectServer(const QString &, quint16)));
646
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
    99
	
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   100
	connect(ui.pageNetServer->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   101
	connect(ui.pageNetServer->BtnStart,	SIGNAL(clicked()),	this, SLOT(NetStartServer()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   102
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   103
	connect(ui.pageNetGame->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   104
	connect(ui.pageNetGame->BtnGo,	SIGNAL(clicked()),	this, SLOT(NetStartGame()));
493
0c0ed17ad675 - Fix warning
unc0rr
parents: 492
diff changeset
   105
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)),
492
78e80f899b59 disable start game button with teams num < 2
displacer
parents: 486
diff changeset
   106
		ui.pageNetGame->BtnGo, SLOT(setEnabled(bool)));
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   107
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   108
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   109
	connect(ui.pageInfo->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   110
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   111
	connect(ui.pageGameStats->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   112
788
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 724
diff changeset
   113
	connect(ui.pageSinglePlayer->BtnSimpleGamePage,	SIGNAL(clicked()),	this, SLOT(SimpleGame()));
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   114
	connect(ui.pageSinglePlayer->BtnTrainPage,	SIGNAL(clicked()),	this, SLOT(GoToTraining()));
1150
ae86e36dad2e - Make look better
unc0rr
parents: 1066
diff changeset
   115
	connect(ui.pageSinglePlayer->BtnMultiplayer,	SIGNAL(clicked()),	this, SLOT(GoToMultiplayer()));
ae86e36dad2e - Make look better
unc0rr
parents: 1066
diff changeset
   116
	connect(ui.pageSinglePlayer->BtnLoad,	SIGNAL(clicked()),	this, SLOT(GoToSaves()));
ae86e36dad2e - Make look better
unc0rr
parents: 1066
diff changeset
   117
	connect(ui.pageSinglePlayer->BtnDemos,	SIGNAL(clicked()),	this, SLOT(GoToDemos()));
586
ecb6347dfeca Prepare to new page 'Training'
unc0rr
parents: 585
diff changeset
   118
	connect(ui.pageSinglePlayer->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
311
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   119
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   120
	connect(ui.pageTraining->BtnStartTrain,	SIGNAL(clicked()),	this, SLOT(StartTraining()));
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   121
	connect(ui.pageTraining->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   122
600
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   123
	connect(ui.pageSelectWeapon->BtnBack,	SIGNAL(clicked()),	this, SLOT(GoBack()));
683
57d624f71e65 select default and save weapons added
displacer
parents: 681
diff changeset
   124
	connect(ui.pageSelectWeapon->BtnDefault,	SIGNAL(clicked()),	ui.pageSelectWeapon->pWeapons, SLOT(setDefault()));
57d624f71e65 select default and save weapons added
displacer
parents: 681
diff changeset
   125
	connect(ui.pageSelectWeapon->BtnSave,	SIGNAL(clicked()),	ui.pageSelectWeapon->pWeapons, SLOT(save()));
600
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   126
718
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   127
	connect(ui.pageSelectWeapon->BtnDelete,	SIGNAL(clicked()),	
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   128
		ui.pageSelectWeapon->pWeapons, SLOT(deleteWeaponsName())); // executed first
724
21706280d913 delete weapon set should work fine now
displacer
parents: 718
diff changeset
   129
	connect(ui.pageSelectWeapon->pWeapons,	SIGNAL(weaponsDeleted()),
718
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   130
		this, SLOT(UpdateWeapons())); // executed second
724
21706280d913 delete weapon set should work fine now
displacer
parents: 718
diff changeset
   131
	connect(ui.pageSelectWeapon->pWeapons,	SIGNAL(weaponsDeleted()),
718
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   132
		this, SLOT(GoBack())); // executed third
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   133
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   134
	GoToPage(ID_PAGE_MAIN);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   135
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   136
1162
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
   137
void HWForm::onFrontendFullscreen(bool value)
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
   138
{
1163
5186cf914549 fullscreen disabling fixed
displacer
parents: 1162
diff changeset
   139
  if (value)
5186cf914549 fullscreen disabling fixed
displacer
parents: 1162
diff changeset
   140
    setWindowState(windowState() | Qt::WindowFullScreen);
5186cf914549 fullscreen disabling fixed
displacer
parents: 1162
diff changeset
   141
  else {
5186cf914549 fullscreen disabling fixed
displacer
parents: 1162
diff changeset
   142
    setWindowState(windowState() & !Qt::WindowFullScreen);
5186cf914549 fullscreen disabling fixed
displacer
parents: 1162
diff changeset
   143
  }
1162
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
   144
}
91bf5e3e558d Frontend Fullscreen mode added
displacer
parents: 1150
diff changeset
   145
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
   146
void HWForm::UpdateWeapons()
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
   147
{
702
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   148
  // FIXME: rewrite this with boost (or TR1/0x)
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   149
  QVector<QComboBox*> combos;
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   150
  combos.push_back(ui.pageOptions->WeaponsName);
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   151
  combos.push_back(ui.pageMultiplayer->gameCFG->WeaponsName);
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   152
  combos.push_back(ui.pageNetGame->pGameCFG->WeaponsName);
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   153
702
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   154
  for(QVector<QComboBox*>::iterator it=combos.begin(); it!=combos.end(); ++it) {
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   155
    (*it)->clear();
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   156
    (*it)->addItems(ui.pageSelectWeapon->pWeapons->getWeaponNames());
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   157
    int pos=(*it)->findText("Default");
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   158
    if (pos!=-1) {
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   159
      (*it)->setCurrentIndex(pos);
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   160
    }
97858a6682bb "Default" weapon is now default :)
displacer
parents: 697
diff changeset
   161
  }
695
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
   162
}
34a93d123712 update weapons combo fixed
displacer
parents: 694
diff changeset
   163
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   164
void HWForm::NetWeaponNameChanged(const QString& name)
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   165
{
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   166
  QString ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageNetGame->pGameCFG->WeaponsName->currentText());
703
424297e3165a weapon names transmitted over network
displacer
parents: 702
diff changeset
   167
  hwnet->onWeaponsNameChanged(name, ammo);
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   168
}
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   169
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   170
void HWForm::UpdateTeamsLists(const QStringList* editable_teams)
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   171
{
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   172
	QStringList teamslist;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   173
	if(editable_teams) {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   174
	  teamslist=*editable_teams;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   175
	} else {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   176
	  teamslist = config->GetTeamsList();
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   177
	}
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   178
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   179
	if(teamslist.empty()) {
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   180
		HWTeam defaultTeam("DefaultTeam");
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   181
		defaultTeam.SaveToFile();
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   182
		teamslist.push_back("DefaultTeam");
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   183
	}
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   184
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   185
	ui.pageOptions->CBTeamName->clear();
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   186
	ui.pageOptions->CBTeamName->addItems(teamslist);
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   187
}
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   188
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   189
void HWForm::GoToMain()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   190
{
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   191
	GoToPage(ID_PAGE_MAIN);
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 HWForm::GoToSinglePlayer()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   195
{
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   196
	GoToPage(ID_PAGE_SINGLEPLAYER);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   197
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   198
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   199
void HWForm::GoToTraining()
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   200
{
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   201
	GoToPage(ID_PAGE_TRAINING);
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   202
}
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   203
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   204
void HWForm::GoToSetup()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   205
{
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   206
	GoToPage(ID_PAGE_SETUP);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   207
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   208
694
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
   209
void HWForm::GoToSelectNewWeapon()
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
   210
{
717
490dc8bb5b87 edit weapons is really edit now
displacer
parents: 705
diff changeset
   211
  ui.pageSelectWeapon->pWeapons->setWeaponsName("", false);
694
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
   212
	GoToPage(ID_PAGE_SELECTWEAPON);
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
   213
}
436045756181 working save weapons to file
displacer
parents: 687
diff changeset
   214
600
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   215
void HWForm::GoToSelectWeapon()
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   216
{
717
490dc8bb5b87 edit weapons is really edit now
displacer
parents: 705
diff changeset
   217
  ui.pageSelectWeapon->pWeapons->setWeaponsName(ui.pageOptions->WeaponsName->currentText(), true);
600
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   218
	GoToPage(ID_PAGE_SELECTWEAPON);
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   219
}
f6e5f4e122db Select weapon scheme page
unc0rr
parents: 597
diff changeset
   220
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   221
void HWForm::GoToInfo()
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   222
{
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   223
	GoToPage(ID_PAGE_INFO);
187
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   224
}
96c3154efee5 "About" page, not yet filled with content
unc0rr
parents: 184
diff changeset
   225
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   226
void HWForm::GoToMultiplayer()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   227
{
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   228
	GoToPage(ID_PAGE_MULTIPLAYER);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   229
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   230
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   231
void HWForm::GoToSaves()
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   232
{
581
909141b17f68 Better 'Load' page
unc0rr
parents: 580
diff changeset
   233
	ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Save);
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   234
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   235
	GoToPage(ID_PAGE_DEMOS);
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   236
}
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   237
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   238
void HWForm::GoToDemos()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   239
{
581
909141b17f68 Better 'Load' page
unc0rr
parents: 580
diff changeset
   240
	ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Demo);
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   241
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   242
	GoToPage(ID_PAGE_DEMOS);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   243
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   244
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   245
void HWForm::GoToNet()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   246
{
646
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   247
	ui.pageNet->updateServersList();
632
5e09ae25729f Half implement possibility for different backends of servers list
unc0rr
parents: 625
diff changeset
   248
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   249
	GoToPage(ID_PAGE_NET);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   250
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   251
646
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   252
void HWForm::GoToNetServer()
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   253
{
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   254
	GoToPage(ID_PAGE_NETSERVER);
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   255
}
ed610c2cd0a4 Some work on network widgets
unc0rr
parents: 637
diff changeset
   256
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   257
void HWForm::OnPageShown(quint8 id, quint8 lastid)
311
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   258
{
322
e7175ae57945 first new widgets added to net game
displacer
parents: 314
diff changeset
   259
	if (id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETCFG) {
311
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   260
		QStringList tmNames=config->GetTeamsList();
322
e7175ae57945 first new widgets added to net game
displacer
parents: 314
diff changeset
   261
		TeamSelWidget* curTeamSelWidget;
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   262
		if(id == ID_PAGE_MULTIPLAYER) {
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   263
		  curTeamSelWidget=ui.pageMultiplayer->teamsSelect;
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   264
		} else {
322
e7175ae57945 first new widgets added to net game
displacer
parents: 314
diff changeset
   265
		  curTeamSelWidget=ui.pageNetGame->pNetTeamsWidget;
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   266
		}
311
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   267
		QList<HWTeam> teamsList;
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   268
		for(QStringList::iterator it=tmNames.begin(); it!=tmNames.end(); it++) {
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   269
		  HWTeam team(*it);
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   270
		  team.LoadFromFile();
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   271
		  teamsList.push_back(team);
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   272
		}
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   273
		if(lastid==ID_PAGE_SETUP) { // _TEAM
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   274
		  if (editedTeam) {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   275
		    curTeamSelWidget->addTeam(*editedTeam);
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   276
		  }
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   277
		} else {
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   278
		  curTeamSelWidget->resetPlayingTeams(teamsList);
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   279
		}
311
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   280
	}
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   281
}
b8905423f19f - Limit list of teams in game with 200 px
unc0rr
parents: 307
diff changeset
   282
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   283
void HWForm::GoToPage(quint8 id)
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   284
{
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   285
	quint8 lastid=ui.Pages->currentIndex();
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   286
	PagesStack.push(ui.Pages->currentIndex());
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   287
	OnPageShown(id, lastid);
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   288
	ui.Pages->setCurrentIndex(id);
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   289
}
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   290
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   291
void HWForm::GoBack()
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   292
{
350
c3ccec3834e8 more correct net disconnection
displacer
parents: 347
diff changeset
   293
	if (!PagesStack.isEmpty() && PagesStack.top() == ID_PAGE_NET) {
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   294
	  if(hwnet || pnetserver) NetDisconnect();
350
c3ccec3834e8 more correct net disconnection
displacer
parents: 347
diff changeset
   295
	}
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   296
	quint8 id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop();
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   297
	OnPageShown(id, ui.Pages->currentIndex());
289
604c4a779c20 Stacked walking trough pages
unc0rr
parents: 271
diff changeset
   298
	ui.Pages->setCurrentIndex(id);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   299
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   300
530
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   301
void HWForm::btnExitPressed()
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   302
{
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   303
	eggTimer.start();
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   304
}
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   305
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   306
void HWForm::btnExitClicked()
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   307
{
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   308
	if (eggTimer.elapsed() < 3000)
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   309
		close();
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   310
	else
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   311
	{
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   312
		QPushButton * btn = findChild<QPushButton *>("imageButt");
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   313
		if (btn)
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   314
		{
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   315
			btn->setIcon(QIcon(":/res/bonus.png"));
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   316
		}
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   317
	}
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   318
}
f0b962214436 Easter egg (with stub image, will paint later)
unc0rr
parents: 502
diff changeset
   319
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   320
void HWForm::IntermediateSetup()
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   321
{
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   322
  quint8 id=ui.Pages->currentIndex();
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   323
  TeamSelWidget* curTeamSelWidget;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   324
  if(id == ID_PAGE_MULTIPLAYER) {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   325
    curTeamSelWidget=ui.pageMultiplayer->teamsSelect;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   326
  } else {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   327
    curTeamSelWidget=ui.pageNetGame->pNetTeamsWidget;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   328
  }
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   329
  QList<HWTeam> teams=curTeamSelWidget->getDontPlayingTeams();
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   330
  QStringList tmnames;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   331
  for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it) {
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   332
    tmnames+=it->TeamName;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   333
  }
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   334
  UpdateTeamsLists(&tmnames); // FIXME: still need more work if teamname is updated while configuring
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   335
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   336
  GoToPage(ID_PAGE_SETUP);
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   337
}
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   338
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   339
void HWForm::NewTeam()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   340
{
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   341
	editedTeam = new HWTeam("unnamed");
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   342
	editedTeam->SetToPage(this);
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   343
	GoToPage(ID_PAGE_SETUP_TEAM);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   344
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   345
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   346
void HWForm::EditTeam()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   347
{
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   348
	editedTeam = new HWTeam(ui.pageOptions->CBTeamName->currentText());
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   349
	editedTeam->LoadFromFile();
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   350
	editedTeam->SetToPage(this);
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   351
	GoToPage(ID_PAGE_SETUP_TEAM);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   352
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   353
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   354
void HWForm::TeamSave()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   355
{
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   356
	editedTeam->GetFromPage(this);
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   357
	editedTeam->SaveToFile();
535
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   358
	delete editedTeam;
a14eaf35cf4b "Setup" button instead of "New team", exclude playing teams from setup
displacer
parents: 533
diff changeset
   359
	editedTeam=0;
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   360
	UpdateTeamsLists();
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   361
	GoBack();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   362
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   363
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   364
void HWForm::TeamDiscard()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   365
{
245
4f6b53b7a567 Make teams config file name be team name
unc0rr
parents: 233
diff changeset
   366
	delete editedTeam;
496
00465a8ef129 merged new team from branch
displacer
parents: 493
diff changeset
   367
	editedTeam=0;
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   368
	GoBack();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   369
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   370
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   371
void HWForm::SimpleGame()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   372
{
788
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 724
diff changeset
   373
	CreateGame(0, 0, cDefaultAmmoStore->mid(10));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   374
	game->StartQuick();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   375
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   376
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   377
void HWForm::PlayDemo()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   378
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   379
	QListWidgetItem * curritem = ui.pagePlayDemo->DemosList->currentItem();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   380
	if (!curritem)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   381
	{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   382
		QMessageBox::critical(this,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   383
				tr("Error"),
581
909141b17f68 Better 'Load' page
unc0rr
parents: 580
diff changeset
   384
				tr("Please, select record from the list above"),
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   385
				tr("OK"));
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   386
		return ;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   387
	}
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   388
	CreateGame(0, 0, 0);
580
d3ebf84e9fad Working 'Load' page
unc0rr
parents: 579
diff changeset
   389
	game->PlayDemo(curritem->data(Qt::UserRole).toString());
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   390
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   391
666
07fa9a74a074 Abstract HWForm from custom PageNet implementation
unc0rr
parents: 665
diff changeset
   392
void HWForm::NetConnectServer(const QString & host, quint16 port)
416
595d8663254d update button for udp servers list
displacer
parents: 412
diff changeset
   393
{
666
07fa9a74a074 Abstract HWForm from custom PageNet implementation
unc0rr
parents: 665
diff changeset
   394
  _NetConnect(host, port, ui.pageOptions->editNetNick->text());
416
595d8663254d update button for udp servers list
displacer
parents: 412
diff changeset
   395
}
595d8663254d update button for udp servers list
displacer
parents: 412
diff changeset
   396
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   397
void HWForm::_NetConnect(const QString & hostName, quint16 port, const QString & nick)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   398
{
637
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   399
	if(hwnet) {
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   400
		hwnet->Disconnect();
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   401
		delete hwnet;
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   402
		hwnet=0;
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   403
	}
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 461
diff changeset
   404
	ui.pageNetGame->pChatWidget->clear();
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   405
	hwnet = new HWNewNet(config, ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget);
637
8fa7ed5e13bd Fix bad behavior when quickly click Connect button more than once
unc0rr
parents: 636
diff changeset
   406
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   407
	connect(hwnet, SIGNAL(AskForRunGame()), this, SLOT(CreateNetGame()));
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   408
	connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter()));
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   409
	connect(hwnet, SIGNAL(AddNetTeam(const HWTeam&)), this, SLOT(AddNetTeam(const HWTeam&)));
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   410
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 465
diff changeset
   411
	connect(hwnet, SIGNAL(chatStringFromNet(const QStringList&)),
461
105af110b0e6 chatWidget with layout
displacer
parents: 453
diff changeset
   412
		ui.pageNetGame->pChatWidget, SLOT(onChatStringFromNet(const QStringList&)));
105af110b0e6 chatWidget with layout
displacer
parents: 453
diff changeset
   413
	connect(ui.pageNetGame->pChatWidget, SIGNAL(chatLine(const QString&)),
105af110b0e6 chatWidget with layout
displacer
parents: 453
diff changeset
   414
		hwnet, SLOT(chatLineToNet(const QString&)));
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 465
diff changeset
   415
	connect(hwnet, SIGNAL(nickAdded(const QString&)),
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 461
diff changeset
   416
		ui.pageNetGame->pChatWidget, SLOT(nickAdded(const QString&)));
471
e1eb64ba5e9c Small cleanup, faster compilation as a result
unc0rr
parents: 465
diff changeset
   417
	connect(hwnet, SIGNAL(nickRemoved(const QString&)),
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 461
diff changeset
   418
		ui.pageNetGame->pChatWidget, SLOT(nickRemoved(const QString&)));
461
105af110b0e6 chatWidget with layout
displacer
parents: 453
diff changeset
   419
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 350
diff changeset
   420
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(hhogsNumChanged(const HWTeam&)),
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 350
diff changeset
   421
		hwnet, SLOT(onHedgehogsNumChanged(const HWTeam&)));
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 352
diff changeset
   422
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamColorChanged(const HWTeam&)),
4bac77f8cd38 network colors (alpha)
displacer
parents: 352
diff changeset
   423
		hwnet, SLOT(onTeamColorChanged(const HWTeam&)));
327
a281ff0803f1 Connect signal and slot directly for AddTeam event
unc0rr
parents: 324
diff changeset
   424
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamWillPlay(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
373
df912aab6b7e network team add can be denied by server
displacer
parents: 372
diff changeset
   425
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(acceptRequested(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
   426
	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamNotPlaying(const HWTeam&)), hwnet, SLOT(RemoveTeam(const HWTeam&)));
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   427
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   428
	connect(ui.pageNetGame->pGameCFG, SIGNAL(seedChanged(const QString &)), hwnet, SLOT(onSeedChanged(const QString &)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   429
	connect(ui.pageNetGame->pGameCFG, SIGNAL(mapChanged(const QString &)), hwnet, SLOT(onMapChanged(const QString &)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   430
	connect(ui.pageNetGame->pGameCFG, SIGNAL(themeChanged(const QString &)), hwnet, SLOT(onThemeChanged(const QString &)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   431
	connect(ui.pageNetGame->pGameCFG, SIGNAL(initHealthChanged(quint32)), hwnet, SLOT(onInitHealthChanged(quint32)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   432
	connect(ui.pageNetGame->pGameCFG, SIGNAL(turnTimeChanged(quint32)), hwnet, SLOT(onTurnTimeChanged(quint32)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   433
	connect(ui.pageNetGame->pGameCFG, SIGNAL(fortsModeChanged(bool)), hwnet, SLOT(onFortsModeChanged(bool)));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   434
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   435
	connect(hwnet, SIGNAL(Disconnected()), this, SLOT(ForcedDisconnect()));
330
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   436
	connect(hwnet, SIGNAL(seedChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(setSeed(const QString &)));
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   437
	connect(hwnet, SIGNAL(mapChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(setMap(const QString &)));
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   438
	connect(hwnet, SIGNAL(themeChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(setTheme(const QString &)));
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   439
	connect(hwnet, SIGNAL(initHealthChanged(quint32)), ui.pageNetGame->pGameCFG, SLOT(setInitHealth(quint32)));
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   440
	connect(hwnet, SIGNAL(turnTimeChanged(quint32)), ui.pageNetGame->pGameCFG, SLOT(setTurnTime(quint32)));
09cfe028a629 Fix infinite loop
unc0rr
parents: 329
diff changeset
   441
	connect(hwnet, SIGNAL(fortsModeChanged(bool)), ui.pageNetGame->pGameCFG, SLOT(setFortsMode(bool)));
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   442
	connect(hwnet, SIGNAL(hhnumChanged(const HWTeam&)),
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 350
diff changeset
   443
		ui.pageNetGame->pNetTeamsWidget, SLOT(changeHHNum(const HWTeam&)));
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   444
	connect(hwnet, SIGNAL(teamColorChanged(const HWTeam&)),
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 352
diff changeset
   445
		ui.pageNetGame->pNetTeamsWidget, SLOT(changeTeamColor(const HWTeam&)));
703
424297e3165a weapon names transmitted over network
displacer
parents: 702
diff changeset
   446
	connect(hwnet, SIGNAL(ammoChanged(const QString&, const QString&)), ui.pageNetGame->pGameCFG, SLOT(setNetAmmo(const QString&, const QString&)));
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 328
diff changeset
   447
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   448
	hwnet->Connect(hostName, port, nick);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   449
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   450
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   451
void HWForm::NetConnect()
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   452
{
653
4f44fc06ca45 Class to ask host/port to connect to ('Specify' button on PageNet)
unc0rr
parents: 647
diff changeset
   453
	HWHostPortDialog * hpd = new HWHostPortDialog(this);
654
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   454
	hpd->leHost->setText(*netHost);
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   455
	hpd->sbPort->setValue(netPort);
653
4f44fc06ca45 Class to ask host/port to connect to ('Specify' button on PageNet)
unc0rr
parents: 647
diff changeset
   456
654
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   457
	if (hpd->exec() == QDialog::Accepted)
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   458
	{
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   459
		config->SaveOptions();
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   460
		delete netHost;
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   461
		netHost = new QString(hpd->leHost->text());
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   462
		netPort = hpd->sbPort->value();
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   463
		_NetConnect(*netHost, netPort, ui.pageOptions->editNetNick->text());
1019b8fa8638 Finish asking host/port dialog implementation
unc0rr
parents: 653
diff changeset
   464
	}
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   465
}
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   466
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   467
void HWForm::NetStartServer()
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   468
{
672
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   469
	config->SaveOptions();
636
dc93ac775bb9 - Switch between local and internet game
unc0rr
parents: 635
diff changeset
   470
672
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   471
	pnetserver = new HWNetServer;
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   472
	if(!pnetserver->StartServer(ui.pageNetServer->sbPort->value()))
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   473
	{
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   474
		QMessageBox::critical(0, tr("Error"),
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   475
					tr("Unable to start the server"));
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   476
		delete pnetserver;
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   477
		pnetserver = 0;
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   478
		return;
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   479
	}
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   480
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   481
	_NetConnect("localhost", pnetserver->getRunningPort(), ui.pageOptions->editNetNick->text());
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   482
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   483
	if (ui.pageNet->rbLocalGame->isChecked())
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   484
		pRegisterServer = new HWNetUdpServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value());
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   485
	else
08ed55ea1e2a - Fix a bug when server fails to start, and then connecting to another server on the same host (strange, the fix won't work on my machine)
unc0rr
parents: 668
diff changeset
   486
		pRegisterServer = new HWNetWwwServer(0, ui.pageNetServer->leServerDescr->text(), ui.pageNetServer->sbPort->value());
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   487
}
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   488
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   489
void HWForm::NetDisconnect()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   490
{
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   491
  if(hwnet) {
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   492
    hwnet->Disconnect();
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   493
    delete hwnet;
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   494
    hwnet=0;
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   495
  }
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   496
  if(pnetserver) {
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   497
    if (pRegisterServer)
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   498
    {
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   499
      pRegisterServer->unregister();
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   500
      pRegisterServer = 0;
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   501
    }
659
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 658
diff changeset
   502
314
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   503
    pnetserver->StopServer();
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   504
    delete pnetserver;
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   505
    pnetserver=0;
83773ccf4f09 client/server net pre-alpha
displacer
parents: 312
diff changeset
   506
  }
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   507
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   508
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   509
void HWForm::ForcedDisconnect()
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   510
{
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   511
  if(pnetserver) return; // we have server - let it care of all things
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   512
  if (hwnet) {
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   513
    hwnet->deleteLater();
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   514
    hwnet=0;
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   515
    QMessageBox::warning(this, QMessageBox::tr("Network"),
407
c7890ba9ed6e lost connection to server warning message
displacer
parents: 383
diff changeset
   516
			 QMessageBox::tr("Connection to server is lost"));
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   517
  }
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   518
  GoBack();
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   519
}
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 373
diff changeset
   520
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   521
void HWForm::NetGameEnter()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   522
{
290
09738170c557 - Further work on stack of pages
unc0rr
parents: 289
diff changeset
   523
	GoToPage(ID_PAGE_NETCFG);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   524
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   525
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   526
void HWForm::NetStartGame()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   527
{
448
e968e19a464c waiting state for net Go button
displacer
parents: 425
diff changeset
   528
  ui.pageNetGame->BtnGo->setText(QPushButton::tr("Waiting"));
e968e19a464c waiting state for net Go button
displacer
parents: 425
diff changeset
   529
  ui.pageNetGame->BtnGo->setEnabled(false);
e968e19a464c waiting state for net Go button
displacer
parents: 425
diff changeset
   530
  hwnet->StartGame();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   531
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   532
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   533
void HWForm::AddNetTeam(const HWTeam& team)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   534
{
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   535
  ui.pageNetGame->pNetTeamsWidget->addTeam(team);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   536
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   537
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   538
void HWForm::StartMPGame()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   539
{
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   540
	QString ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageMultiplayer->gameCFG->WeaponsName->currentText());
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   541
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   542
	CreateGame(ui.pageMultiplayer->gameCFG, ui.pageMultiplayer->teamsSelect, ammo);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   543
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   544
	game->StartLocal();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   545
}
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   546
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   547
void HWForm::GameStateChanged(GameState gameState)
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   548
{
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   549
	switch(gameState) {
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   550
		case gsStarted: {
1268
34c3795ecb63 Fix music starting to play after the round even if it was turned off
unc0rr
parents: 1235
diff changeset
   551
			Music(false);
1223
41d7283934c1 Hackish way to play music in frontend... to be fixed
unc0rr
parents: 1165
diff changeset
   552
			GoToPage(ID_PAGE_INGAME);
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   553
			ui.pageGameStats->labelGameStats->setText("");
661
0523b15353a2 Unregister server in servers list when the game is started
unc0rr
parents: 660
diff changeset
   554
			if (pRegisterServer)
0523b15353a2 Unregister server in servers list when the game is started
unc0rr
parents: 660
diff changeset
   555
			{
0523b15353a2 Unregister server in servers list when the game is started
unc0rr
parents: 660
diff changeset
   556
				pRegisterServer->unregister();
0523b15353a2 Unregister server in servers list when the game is started
unc0rr
parents: 660
diff changeset
   557
				pRegisterServer = 0;
0523b15353a2 Unregister server in servers list when the game is started
unc0rr
parents: 660
diff changeset
   558
			}
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   559
			break;
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   560
		}
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   561
		case gsFinished: {
686
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 683
diff changeset
   562
			GoBack();
1268
34c3795ecb63 Fix music starting to play after the round even if it was turned off
unc0rr
parents: 1235
diff changeset
   563
			Music(ui.pageOptions->CBEnableMusic->isChecked());
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   564
			GoToPage(ID_PAGE_GAMESTATS);
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   565
			break;
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   566
		}
686
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 683
diff changeset
   567
		default: {
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 683
diff changeset
   568
			quint8 id = ui.Pages->currentIndex();
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
   569
			if (id == ID_PAGE_INGAME) {
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
   570
				GoBack();
1268
34c3795ecb63 Fix music starting to play after the round even if it was turned off
unc0rr
parents: 1235
diff changeset
   571
				Music(ui.pageOptions->CBEnableMusic->isChecked());
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1223
diff changeset
   572
			}
686
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 683
diff changeset
   573
		};
307
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   574
	}
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 323
diff changeset
   575
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   576
	if (hwnet)
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   577
	{
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   578
		ui.pageNetGame->BtnGo->setText(QPushButton::tr("Go!"));
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   579
		ui.pageNetGame->BtnGo->setEnabled(true);
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   580
	}
307
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   581
}
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   582
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   583
void HWForm::AddStatText(const QString & msg)
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   584
{
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   585
	ui.pageGameStats->labelGameStats->setText(
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   586
		ui.pageGameStats->labelGameStats->text() + msg);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   587
}
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   588
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   589
void HWForm::GameStats(char type, const QString & info)
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   590
{
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   591
	switch(type) {
307
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   592
		case 'r' : {
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   593
			AddStatText(QString("<h1 align=\"center\">%1</h1>").arg(info));
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   594
			break;
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   595
		}
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   596
		case 'D' : {
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   597
			int i = info.indexOf(' ');
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   598
			QString message = QLabel::tr("<p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p>")
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   599
					.arg(info.mid(i + 1), info.left(i));
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   600
			AddStatText(message);
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   601
			break;
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   602
		}
869
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   603
		case 'k' : {
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   604
			int i = info.indexOf(' ');
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   605
			QString message = QLabel::tr("<p>The best shot award was won by <b>%1</b> with <b>%2</b> kills.</p>")
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   606
					.arg(info.mid(i + 1), info.left(i));
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   607
			AddStatText(message);
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   608
			break;
daddcd31ef34 - New statistics
unc0rr
parents: 788
diff changeset
   609
		}
307
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   610
		case 'K' : {
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   611
			QString message = QLabel::tr("<p>A total of <b>%1</b> Hedgehog(s) were killed during this round.</p>").arg(info);
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   612
			AddStatText(message);
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   613
			break;
96b428ac11f2 More statistics
unc0rr
parents: 306
diff changeset
   614
		}
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   615
	}
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   616
}
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   617
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   618
void HWForm::CreateGame(GameCFGWidget * gamecfg, TeamSelWidget* pTeamSelWidget, QString ammo)
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   619
{
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   620
	game = new HWGame(config, gamecfg, ammo, pTeamSelWidget);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   621
	connect(game, SIGNAL(GameStateChanged(GameState)), this, SLOT(GameStateChanged(GameState)));
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   622
	connect(game, SIGNAL(GameStats(char, const QString &)), this, SLOT(GameStats(char, const QString &)));
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   623
	connect(game, SIGNAL(ErrorMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   624
	connect(game, SIGNAL(HaveRecord(bool, const QByteArray &)), this, SLOT(GetRecord(bool, const QByteArray &)));
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 301
diff changeset
   625
}
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   626
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   627
void HWForm::ShowErrorMessage(const QString & msg)
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   628
{
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   629
	QMessageBox::warning(this,
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   630
			"Hedgewars",
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   631
			msg);
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 418
diff changeset
   632
}
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   633
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   634
void HWForm::GetRecord(bool isDemo, const QByteArray & record)
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   635
{
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   636
	QString filename;
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   637
	QByteArray demo = record;
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   638
	if (isDemo)
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   639
	{
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   640
		demo.replace(QByteArray("\x02TL"), QByteArray("\x02TD"));
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   641
		demo.replace(QByteArray("\x02TN"), QByteArray("\x02TD"));
989
49075d163d69 Fix demo records of rounds restored after saving
unc0rr
parents: 883
diff changeset
   642
		demo.replace(QByteArray("\x02TS"), QByteArray("\x02TD"));
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   643
		filename = cfgdir->absolutePath() + "/Demos/LastRound.hwd_" + *cProtoVer;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   644
	} else
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   645
	{
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   646
		demo.replace(QByteArray("\x02TL"), QByteArray("\x02TS"));
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   647
		demo.replace(QByteArray("\x02TN"), QByteArray("\x02TS"));
579
94db15de0392 - Some changes to make build process clear
unc0rr
parents: 541
diff changeset
   648
		filename = cfgdir->absolutePath() + "/Saves/LastRound.hws_" + *cProtoVer;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   649
	}
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   650
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   651
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   652
	QFile demofile(filename);
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   653
	if (!demofile.open(QIODevice::WriteOnly))
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   654
	{
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   655
		ShowErrorMessage(tr("Cannot save record to file %1").arg(filename));
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   656
		return ;
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   657
	}
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   658
	demofile.write(demo.constData(), demo.size());
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   659
	demofile.close();
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 530
diff changeset
   660
}
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   661
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   662
void HWForm::StartTraining()
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   663
{
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   664
	CreateGame(0, 0, 0);
587
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   665
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   666
	game->StartTraining();
74db4115064a More work on Training mode
unc0rr
parents: 586
diff changeset
   667
}
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   668
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   669
void HWForm::CreateNetGame()
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   670
{
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   671
	QString ammo;
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   672
	if (pnetserver) {
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   673
	  ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageNetGame->pGameCFG->WeaponsName->currentText());
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   674
	} else {
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   675
	  ammo=ui.pageNetGame->pGameCFG->getNetAmmo();
44f167938201 pre-alpha network weapons selection
displacer
parents: 696
diff changeset
   676
	}
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   677
	CreateGame(ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget, ammo);
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   678
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   679
	connect(game, SIGNAL(SendNet(const QByteArray &)), hwnet, SLOT(SendNet(const QByteArray &)));
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   680
	connect(hwnet, SIGNAL(FromNet(const QByteArray &)), game, SLOT(FromNet(const QByteArray &)));
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   681
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   682
	game->StartNet();
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 659
diff changeset
   683
}
674
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   684
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   685
void HWForm::closeEvent(QCloseEvent *event)
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   686
{
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   687
	config->SaveOptions();
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   688
	event->accept();
a15c8e3c69b3 Save and restore window size
unc0rr
parents: 672
diff changeset
   689
}
1235
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   690
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   691
void HWForm::Music(bool checked)
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   692
{
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   693
	if (checked)
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   694
		sdli.StartMusic();
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   695
	else
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   696
		sdli.StopMusic();
070629f3902d - Set frontend's music volume level to 50%
unc0rr
parents: 1225
diff changeset
   697
}