summaryrefslogtreecommitdiffstats
path: root/konquest/newgamedlg.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2020-12-11 16:15:55 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2020-12-11 16:15:55 +0900
commit931f81f9fe49f3fe339bb3cb23501393bfbb2d0a (patch)
treea9a654a2acd2bd8ddfc026fee8c1f9ea18ea8deb /konquest/newgamedlg.cpp
parenteb03b1cb9c58427f256e50b857df40aae0db940e (diff)
downloadtdegames-931f81f9fe49f3fe339bb3cb23501393bfbb2d0a.tar.gz
tdegames-931f81f9fe49f3fe339bb3cb23501393bfbb2d0a.zip
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'konquest/newgamedlg.cpp')
-rw-r--r--konquest/newgamedlg.cpp325
1 files changed, 325 insertions, 0 deletions
diff --git a/konquest/newgamedlg.cpp b/konquest/newgamedlg.cpp
new file mode 100644
index 00000000..b609f1a2
--- /dev/null
+++ b/konquest/newgamedlg.cpp
@@ -0,0 +1,325 @@
+#include <tqheader.h>
+#include <tqlayout.h>
+#include <tqcolor.h>
+#include <tqlabel.h>
+#include <tqslider.h>
+#include <tqevent.h>
+#include <tqkeycode.h>
+#include <tqlistview.h>
+#include <tqpushbutton.h>
+#include <tqlineedit.h>
+
+#include <tdeapplication.h>
+#include <tdeconfig.h>
+#include <tdelocale.h>
+#include <tdemessagebox.h>
+#include <kpushbutton.h>
+#include <kstdguiitem.h>
+
+#include "newgamedlg.h"
+#include "newgamedlg.moc"
+
+#include "newGameDlg_ui.h"
+
+/*************************************************************************
+ New Game Dialog Members
+ ************************************************************************/
+
+NewGameDlg::NewGameDlg( TQWidget *parent, Map *pmap, PlayerList *players,
+ Player *neutralPlayer, PlanetList *planets )
+ : KDialogBase( parent, "new_game_dialog", true, i18n("Start New Game"),
+ KDialogBase::Ok|KDialogBase::Default|KDialogBase::Cancel, KDialogBase::NoDefault, true ),
+ plrList(players), plnetList(planets), neutral(neutralPlayer),
+ map(pmap)
+{
+ w = new NewGameDlgUI(this);
+ w->map->setMap(map);
+ w->listPlayers->header()->hide();
+// w->listPlayers->setMinimumSize( 100, 150 );
+ w->listPlayers->setSortColumn(-1);
+ w->listPlayers->setHScrollBarMode(TQScrollView::AlwaysOff);
+ w->sliderPlayers->setMinimumWidth(270);
+ w->sliderPlanets->setMinimumWidth(270);
+
+ w->newPlayer->setMaxLength( 8 );
+
+ connect(w->sliderPlayers, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotPlayerCount(int)));
+ connect(w->sliderPlanets, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotNewMap()));
+ connect(w->sliderTurns, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotTurns()));
+ connect(w->rejectMap, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotNewMap()));
+ connect(w->newPlayer, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(slotNewPlayer()));
+ connect(w->newPlayer, TQT_SIGNAL(returnPressed()), this, TQT_SLOT(slotAddPlayer()));
+ connect(w->addPlayer, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotAddPlayer()));
+
+ init();
+
+ setMainWidget(w);
+}
+
+void
+NewGameDlg::slotDefault()
+{
+ w->sliderPlayers->setValue(2);
+ w->sliderPlanets->setValue(3);
+ w->sliderTurns->setValue(15);
+
+ w->listPlayers->clear();
+
+ setPlayerCount(2);
+
+ updateMiniMap();
+ updateLabels();
+}
+
+void
+NewGameDlg::init()
+{
+ TDEConfig *config = kapp->config();
+ config->setGroup("Game");
+ int nrOfPlayers = config->readNumEntry("NrOfPlayers");
+ if (nrOfPlayers < 2)
+ nrOfPlayers = 2;
+ if (nrOfPlayers > MAX_PLAYERS)
+ nrOfPlayers = MAX_PLAYERS;
+
+ int nrOfPlanets = config->readNumEntry("NrOfPlanets", 3);
+ int nrOfTurns = config->readNumEntry("NrOfTurns", 15);
+
+ w->sliderPlayers->setValue(nrOfPlayers);
+ w->sliderPlanets->setValue(nrOfPlanets);
+ w->sliderTurns->setValue(nrOfTurns);
+ setPlayerCount(nrOfPlayers);
+ slotNewPlayer();
+
+ // Restore player names
+ int plrNum = 0;
+ for( TQListViewItem *item = w->listPlayers->firstChild();
+ item; item = item->nextSibling(), plrNum++ )
+ {
+ TQString key = TQString("Player_%1").arg(plrNum);
+
+ TQString playerName = config->readEntry(key);
+ if (playerName.isEmpty())
+ continue;
+
+ item->setText(2, "H"); // Human
+ item->setText(1, i18n("Human Player"));
+ item->setText(0, playerName);
+ }
+
+ updateMiniMap();
+ updateLabels();
+}
+
+void
+NewGameDlg::slotNewPlayer()
+{
+ w->addPlayer->setEnabled(!w->newPlayer->text().isEmpty());
+}
+
+void
+NewGameDlg::slotAddPlayer()
+{
+ TQString playerName = w->newPlayer->text();
+ if (playerName.isEmpty())
+ return;
+
+ TQListViewItem *item;
+ do
+ {
+ item = w->listPlayers->firstChild();
+ while( item )
+ {
+ if (item->text(2) == "A")
+ break;
+
+ item = item->nextSibling();
+ }
+ if (!item)
+ {
+ int nrPlayers = w->listPlayers->childCount();
+ if (nrPlayers >= MAX_PLAYERS)
+ return; // Too bad
+ nrPlayers++;
+ w->sliderPlayers->setValue(nrPlayers);
+ setPlayerCount(nrPlayers);
+ }
+ }
+ while(!item);
+
+ item->setText(2, "H"); // Human
+ item->setText(1, i18n("Human Player"));
+ item->setText(0, playerName);
+
+ w->newPlayer->setText(TQString());
+
+ updateMiniMap();
+ updateLabels();
+}
+
+void
+NewGameDlg::setPlayerCount(int playerCount)
+{
+ TQColor PlayerColors[MAX_PLAYERS] = { TQColor( 130, 130, 255 ), yellow, red, green,
+ white, cyan, magenta, TQColor( 235, 153, 46 ),
+ TQColor( 106, 157, 104 ), TQColor( 131, 153, 128) };
+
+ int i = 0;
+ TQListViewItem *lastItem = 0;
+ TQListViewItem *item = 0;
+ TQListViewItem *nextItem = w->listPlayers->firstChild();
+ while( (item = nextItem) )
+ {
+ nextItem = item->nextSibling();
+ if (i >= playerCount)
+ {
+ delete item;
+ }
+ else
+ {
+ lastItem = item;
+ }
+ i++;
+ }
+
+ while(w->listPlayers->childCount() < playerCount)
+ {
+ TQString playerName = i18n("Generated AI player name", "Comp%1").arg(i+1);
+ TQPixmap pm(16,16);
+ TQColor color(PlayerColors[i]);
+ pm.fill(color);
+ TQListViewItem *item = new TQListViewItem(w->listPlayers, lastItem, playerName, i18n("Computer Player"), "A", color.name());
+ item->setPixmap(0, pm);
+ lastItem = item;
+ i++;
+ }
+}
+
+void
+NewGameDlg::slotPlayerCount(int playerCount)
+{
+ if (w->listPlayers->childCount() == playerCount)
+ return;
+
+ setPlayerCount(playerCount);
+
+ updateMiniMap();
+ updateLabels();
+}
+
+void
+NewGameDlg::slotTurns()
+{
+ updateLabels();
+}
+
+void
+NewGameDlg::slotNewMap()
+{
+ updateMiniMap();
+ updateLabels();
+}
+
+int
+NewGameDlg::turns()
+{
+ return w->sliderTurns->value();
+}
+
+void
+NewGameDlg::updateLabels()
+{
+ w->labelPlayers->setText(i18n("Number of &players: %1").arg(w->sliderPlayers->value()));
+ w->labelPlanets->setText(i18n("Number of neutral p&lanets: %1").arg(w->sliderPlanets->value()));
+ w->labelTurns->setText(i18n("Number of &turns: %1").arg(w->sliderTurns->value()));
+}
+
+void
+NewGameDlg::slotOk()
+{
+ bool hasHumans = false;
+ for( TQListViewItem *item = w->listPlayers->firstChild();
+ item; item = item->nextSibling() )
+ {
+ bool ai = (item->text(2) == "A");
+ if (!ai)
+ hasHumans = true;
+ }
+
+ if (!hasHumans)
+ {
+ KMessageBox::information(this, i18n("The game is much more fun when you add a human player!"));
+ w->newPlayer->setFocus();
+ return;
+ }
+ KDialogBase::slotOk();
+}
+
+void
+NewGameDlg::save()
+{
+ TDEConfig *config = kapp->config();
+ config->setGroup("Game");
+
+ config->writeEntry("NrOfPlayers", w->sliderPlayers->value());
+ config->writeEntry("NrOfPlanets", w->sliderPlanets->value());
+ config->writeEntry("NrOfTurns", w->sliderTurns->value());
+
+ int plrNum = 0;
+ for( TQListViewItem *item = w->listPlayers->firstChild();
+ item; item = item->nextSibling() )
+ {
+ TQString key = TQString("Player_%1").arg(plrNum);
+ TQString playerName = item->text(0);
+ bool ai = (item->text(2) == "A");
+ if (ai)
+ {
+ if (config->hasKey(key))
+ config->deleteEntry(key);
+ }
+ else
+ {
+ config->writeEntry(key, playerName);
+ }
+ plrNum++;
+ }
+ config->sync();
+}
+
+void
+NewGameDlg::updateMiniMap()
+{
+ // Clear map,, player and planet lists
+ map->clearMap();
+
+ Planet *planet;
+ planet = plnetList->first();
+ for( planet = plnetList->take(); planet != 0; planet = plnetList->take() ) {
+ delete planet;
+ }
+
+ Player *player;
+ player = plrList->first();
+ for( player = plrList->take(); player != 0; player = plrList->take() ) {
+ delete player;
+ }
+
+ // Make player list
+ // Does the name already exist in the list
+ int plrNum = 0;
+ for( TQListViewItem *item = w->listPlayers->firstChild();
+ item; item = item->nextSibling() )
+ {
+ TQString playerName = item->text(0);
+ bool ai = (item->text(2) == "A");
+ TQColor color(item->text(3));
+ plrList->append( Player::createPlayer( playerName, color, plrNum, ai ));
+ plrNum++;
+ }
+
+ // make the planets
+ map->populateMap( *plrList, neutral,
+ w->sliderPlanets->value(),
+ *plnetList );
+}
+