#include <stdlib.h> // For rand()
#include <time.h> // For time()
+#include "gameboard.h"
+#include "editorwindow.h" // Actual mouse/drawing window
#include "gamewidget.h" // Actual mouse/drawing window
//#include "resource.h"
//#include "optiondlg.h" // Options dialog class
MainWin::MainWin()
{
+ // We create the EditorWindow 1st because the GameWidget will crash if there
+ // is no level data loaded...
+ editorWindow = new EditorWindow(this);
gameWidget = new GameWidget(this);
setCentralWidget(gameWidget);
gameWidget->setFocusPolicy(Qt::StrongFocus); // Without this, it gets no keys
setWindowTitle("Warehouse Man Deluxe");
setWindowIcon(QIcon(":/wmd-icon.png"));
- newGame = CreateAction(tr("&New"), tr("New Game"), tr("Start a new game of Warehouse Man Deluxe"), QIcon(), QKeySequence(tr("ctrl+n")));
-// connect(newGame, SIGNAL(triggered()), this, SLOT(OnNewGame()));
+ editorWindow->show();
- gamePlay = CreateAction(tr("&Play"), tr(""), tr(""), QIcon(), QKeySequence(tr("ctrl+a")));
-// connect(gamePlay, SIGNAL(triggered()), this, SLOT(OnGamePlay()));
+ newGame = CreateAction(tr("&New"), tr("New Game"), tr("Start a new game of Warehouse Man Deluxe"), QIcon(), QKeySequence(tr("ctrl+n")));
+ connect(newGame, SIGNAL(triggered()), this, SLOT(HandleNewGame()));
- helpUndo = CreateAction(tr("&Undo"), tr(""), tr(""), QIcon(), QKeySequence(tr("ctrl+z")));
-// connect(helpUndo, SIGNAL(triggered()), this, SLOT(OnHelpUndo()));
+ undoAction = CreateAction(tr("&Undo"), tr(""), tr(""), QIcon(), QKeySequence(tr("ctrl+z")));
+ connect(undoAction, SIGNAL(triggered()), this, SLOT(HandleUndo()));
resetLevel = CreateAction(tr("&Reset Level"), tr("Reset Level"), tr("Start the current level over"), QIcon(), QKeySequence(tr("ctrl+r")));
- connect(resetLevel, SIGNAL(triggered()), this, SLOT(ResetCurrentLevel()));
+ connect(resetLevel, SIGNAL(triggered()), this, SLOT(HandleReset()));
+
+ skipLevel = CreateAction(tr("&Skip Level"), tr("Skip Level"), tr("Skip the current level"), QIcon(), QKeySequence(tr("ctrl+k")));
+ connect(skipLevel, SIGNAL(triggered()), this, SLOT(HandleSkipLevel()));
gameOptions = CreateAction(tr("&Options..."), tr("Options"), tr("Configure Warehouse Man Deluxe's options"), QIcon(), QKeySequence(tr("ctrl+o")));
// connect(gameOptions, SIGNAL(triggered()), this, SLOT(OnGameOptions()));
// connect(gameBoard, SIGNAL(UpdateScore(int)), this, SLOT(OnUpdateScore(int)));
connect(gameWidget, SIGNAL(GameWasWon()), this, SLOT(WeHaveAWinner()));
+ // Connect editor to game widget...
+ connect(editorWindow, SIGNAL(SetupLevel(Level *)), gameWidget,
+ SLOT(HandlePlayGameFromEditor(Level *)));
+
+
QMenu * menu = menuBar()->addMenu(tr("&Game"));
menu->addAction(newGame);
menu->addSeparator();
- menu->addAction(gamePlay);
- menu->addAction(helpUndo);
+// menu->addAction(gamePlay);
+ menu->addAction(undoAction);
menu->addAction(resetLevel);
+ menu->addAction(skipLevel);
menu->addSeparator();
menu->addAction(gameOptions);
menu->addAction(gameStats);
QSettings settings("Underground Software", "Warehouse Man Deluxe");
QPoint mainWinPosition = settings.value("pos", QPoint(200, 100)).toPoint();
move(mainWinPosition);
+ QSize mainWinSize = settings.value("size", QSize(500, 500)).toSize();
+ resize(mainWinSize);
/* nCardBack = settings.value("CardBack", BACK4).toInt();
m_nBackground = settings.value("Background", 0).toInt();
MainWin::~MainWin()
{
// ShutDownAudio();
+ delete editorWindow;
}
QSettings settings("Underground Software", "Warehouse Man Deluxe");
settings.setValue("pos", pos());
+ settings.setValue("size", size());
/*
settings.setValue("CardBack", nCardBack);
}
+void MainWin::HandleNewGame(void)
+{
+// ResetGame();
+ gameWidget->level = 0;
+ gameWidget->NextLevel();
+}
+
+
void MainWin::AboutGame(void)
{
- QMessageBox::about(this, tr("About Warehouse Man Deluxe"), tr("Warehouse Man Deluxe Version 1.0\n\nCopyright © 2014 Underground Software\n\nWritten by James L. Hammons"));
+ QMessageBox::about(this, tr("About Warehouse Man Deluxe"), tr("Warehouse Man Deluxe Version 1.0\n\nCopyright (C) 2014 Underground Software\n\nWritten by James Hammons"));
}
}
-void MainWin::ResetCurrentLevel(void)
+void MainWin::HandleReset(void)
{
gameWidget->ResetLevel();
}
+void MainWin::HandleSkipLevel(void)
+{
+ gameWidget->NextLevel();
+}
+
+
+void MainWin::HandleUndo(void)
+{
+ gameWidget->UndoLastMove();
+}
+
+
#if 0
void MainWin::OnNewGame(void)
{
}
-void MainWin::OnHelpUndo(void)
+void MainWin::OnundoAction(void)
{
if (m_bCanUndo)
{