diff --git a/engines/avalanche/avalanche.cpp b/engines/avalanche/avalanche.cpp index 3b1ca6026db..3f83f821918 100644 --- a/engines/avalanche/avalanche.cpp +++ b/engines/avalanche/avalanche.cpp @@ -58,6 +58,7 @@ AvalancheEngine::AvalancheEngine(OSystem *syst, const AvalancheGameDescription * _ghostroom = nullptr; _help = nullptr; _shootemup = nullptr; + _mainmenu = nullptr; _platform = gd->desc.platform; initVariables(); @@ -83,6 +84,7 @@ AvalancheEngine::~AvalancheEngine() { delete _ghostroom; delete _help; delete _shootemup; + delete _mainmenu; for (int i = 0; i < 31; i++) { for (int j = 0; j < 2; j++) { @@ -168,6 +170,7 @@ Common::ErrorCode AvalancheEngine::initialize() { _ghostroom = new GhostRoom(this); _help = new Help(this); _shootemup = new ShootEmUp(this); + _mainmenu = new MainMenu(this); _graphics->init(); _dialogs->init(); diff --git a/engines/avalanche/avalanche.h b/engines/avalanche/avalanche.h index 2012da6a125..41ec00e6a59 100644 --- a/engines/avalanche/avalanche.h +++ b/engines/avalanche/avalanche.h @@ -45,6 +45,7 @@ #include "avalanche/ghostroom.h" #include "avalanche/help.h" #include "avalanche/shootemup.h" +#include "avalanche/mainmenu.h" #include "common/serializer.h" @@ -91,6 +92,7 @@ public: GhostRoom *_ghostroom; Help *_help; ShootEmUp *_shootemup; + MainMenu *_mainmenu; OSystem *_system; diff --git a/engines/avalanche/avalot.cpp b/engines/avalanche/avalot.cpp index 5e530a42667..fefbbedd341 100644 --- a/engines/avalanche/avalot.cpp +++ b/engines/avalanche/avalot.cpp @@ -210,6 +210,8 @@ void AvalancheEngine::setup() { loadGame(loadSlot); } else { + _mainmenu->run(); + newGame(); thinkAbout(kObjectMoney, kThing); diff --git a/engines/avalanche/mainmenu.cpp b/engines/avalanche/mainmenu.cpp new file mode 100644 index 00000000000..b9ff900bf2f --- /dev/null +++ b/engines/avalanche/mainmenu.cpp @@ -0,0 +1,80 @@ +/* ScummVM - Graphic Adventure Engine +* +* ScummVM is the legal property of its developers, whose names +* are too numerous to list here. Please refer to the COPYRIGHT +* file distributed with this source distribution. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +*/ + +/* +* This code is based on the original source code of Lord Avalot d'Argent version 1.3. +* Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman. +*/ + +#include "avalanche/avalanche.h" +#include "avalanche/mainmenu.h" + +namespace Avalanche { + +MainMenu::MainMenu(AvalancheEngine *vm) { + _vm = vm; + + registrant = Common::String(""); +} + +void MainMenu::run() { + icons(); + loadMenu(); + loadRegiInfo(); + + option(1, "Play the game."); + option(2, "Read the background."); + option(3, "Preview... perhaps..."); + option(4, "View the documentation."); + option(5, "Registration info."); + option(6, "Exit back to DOS."); + centre(275, registrant); + centre(303, "Make your choice, or wait for the demo."); + + wait(); +} + +void MainMenu::icons() { + warning("STUB: MainMenu::icons()"); +} + +void MainMenu::loadMenu() { + warning("STUB: MainMenu::loadMenu()"); +} + +void MainMenu::loadRegiInfo() { + warning("STUB: MainMenu::loadRegiInfo()"); +} + +void MainMenu::option(byte which, Common::String what) { + warning("STUB: MainMenu::option()"); +} + +void MainMenu::centre(int16 y, Common::String text) { + warning("STUB: MainMenu::centre()"); +} + +void MainMenu::wait() { + warning("STUB: MainMenu::wait()"); +} + +} // End of namespace Avalanche diff --git a/engines/avalanche/mainmenu.h b/engines/avalanche/mainmenu.h new file mode 100644 index 00000000000..0eece87c02f --- /dev/null +++ b/engines/avalanche/mainmenu.h @@ -0,0 +1,55 @@ +/* ScummVM - Graphic Adventure Engine +* +* ScummVM is the legal property of its developers, whose names +* are too numerous to list here. Please refer to the COPYRIGHT +* file distributed with this source distribution. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +*/ + +/* +* This code is based on the original source code of Lord Avalot d'Argent version 1.3. +* Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman. +*/ + +#ifndef AVALANCHE_MAINMENU_H +#define AVALANCHE_MAINMENU_H + +namespace Avalanche { +class AvalancheEngine; + +class MainMenu { +public: + MainMenu(AvalancheEngine *vm); + + void run(); + +private: + AvalancheEngine *_vm; + + Common::String registrant; + + void icons(); + void loadMenu(); + void loadRegiInfo(); + void option(byte which, Common::String what); + void centre(int16 y, Common::String text); + void wait(); +}; + +} // End of namespace Avalanche + +#endif // AVALANCHE_MAINMENU_H diff --git a/engines/avalanche/module.mk b/engines/avalanche/module.mk index 16ad5d944cf..d31fd0d91aa 100644 --- a/engines/avalanche/module.mk +++ b/engines/avalanche/module.mk @@ -19,7 +19,8 @@ MODULE_OBJS = \ clock.o \ ghostroom.o \ help.o \ - shootemup.o + shootemup.o \ + mainmenu.o # This module can be built as a plugin ifeq ($(ENABLE_AVALANCHE), DYNAMIC_PLUGIN)