/* 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.
 *
 */

#include "graphics/macgui/macwindowmanager.h"
#include "graphics/macgui/macmenu.h"

#include "pink/pink.h"
#include "pink/director.h"
#include "pink/objects/actors/lead_actor.h"

namespace Pink {

enum {
	kNewGameAction = 0,
	kLoadSave,
	kSaveAction,
	kSaveAsAction,
	kSongsAction,
	kSoundSettingsAction,
	kLastSavesAction,
	kPauseAction,
	kExitAction
};

enum {
	kShowContent = 9,
	kShowGreece,
	kShowIndonesia,
	kShowIsrael,
	kShowKenya,
	kShowRussia
};

enum {
	kShowPDAAction = 15,

	kShowAustraliaArt = 16,
	kShowAustraliaCloth,
	kShowAustraliaFood,
	kShowAustraliaHistory,
	kShowAustraliaNature,
	kShowAustraliaPeople,
	kShowAustraliaPlaces,
	kShowAustraliaReligion,

	kShowBhutanArt = 24,
	kShowBhutanCloth,
	kShowBhutanFood,
	kShowBhutanHistory,
	kShowBhutanNature,
	kShowBhutanPeople,
	kShowBhutanPlaces,
	kShowBhutanReligion,

	kShowChinaArt = 32,
	kShowChinaCloth,
	kShowChinaFood,
	kShowChinaHistory,
	kShowChinaNature,
	kShowChinaPeople,
	kShowChinaPlaces,
	kShowChinaReligion,

	kShowEnglandArt = 40,
	kShowEnglandCloth,
	kShowEnglandFood,
	kShowEnglandHistory,
	kShowEnglandNature,
	kShowEnglandPeople,
	kShowEnglandPlaces,
	kShowEnglandReligion,

	kShowEgyptArt = 48,
	kShowEgyptCloth,
	kShowEgyptFood,
	kShowEgyptHistory,
	kShowEgyptNature,
	kShowEgyptPeople,
	kShowEgyptPlaces,
	kShowEgyptReligion,

	kShowIndiaArt = 56,
	kShowIndiaCloth,
	kShowIndiaFood,
	kShowIndiaHistory,
	kShowIndiaNature,
	kShowIndiaPeople,
	kShowIndiaPlaces,
	kShowIndiaReligion
};

enum {
	kShowGameWebPage = 64,
	kShowTechSupport,
	kShowWinnnerPage,
	kShowWanderlustInteractive,
	kShowMGM,
	kShowDiagnostics,
	kShowAbout
};

static void menuCommandsCallback(int action, Common::U32String &, void *data) {
	PinkEngine *engine = (PinkEngine *)data;
	bool isPeril = engine->isPeril();
	if (!isPeril && action > 14) {
		action += 49;
	} else if (isPeril && action >= 9) {
		action += 6;
	}
	engine->executeMenuCommand(action);
}

void PinkEngine::initMenu(Common::PEResources &exeResources) {
	_director->getWndManager().setEnginePauseCallback(this, &pauseEngine);

	_menu = Graphics::MacMenu::createMenuFromPEexe(exeResources, &_director->getWndManager());
	_menu->calcDimensions();
	_menu->setCommandsCallback(&menuCommandsCallback, this);
}

void PinkEngine::executeMenuCommand(uint id) {
	switch (id) {
	case kNewGameAction: {
		const Common::String moduleName = _modules[0]->getName();
		initModule(moduleName, "", nullptr);
		break;
	}
	case kLoadSave:
	case kSaveAction:
	case kSaveAsAction:
	case kSoundSettingsAction:
	case kLastSavesAction:
	case kPauseAction:
	case kExitAction:
		openMainMenuDialog();
		break;
	case kSongsAction:
		initModule("Muzik", "", nullptr);
		break;

	case kShowPDAAction:
		_actor->loadPDA(kNavigatePage);
		break;

	case kShowAustraliaArt:
		_actor->loadPDA("AUSART");
		break;
	case kShowAustraliaCloth:
		_actor->loadPDA("AUSCLO");
		break;
	case kShowAustraliaFood:
		_actor->loadPDA("AUSFOO");
		break;
	case kShowAustraliaHistory:
		_actor->loadPDA("AUSHIS");
		break;
	case kShowAustraliaNature:
		_actor->loadPDA("AUSNAT");
		break;
	case kShowAustraliaPeople:
		_actor->loadPDA("AUSPEO");
		break;
	case kShowAustraliaPlaces:
		_actor->loadPDA("AUSPLA");
		break;
	case kShowAustraliaReligion:
		_actor->loadPDA("AUSREL");
		break;

	case kShowBhutanArt:
		_actor->loadPDA("BHUART");
		break;
	case kShowBhutanCloth:
		_actor->loadPDA("BHUCLO");
		break;
	case kShowBhutanFood:
		_actor->loadPDA("BHUFOO");
		break;
	case kShowBhutanHistory:
		_actor->loadPDA("BHUHIS");
		break;
	case kShowBhutanNature:
		_actor->loadPDA("BHUNAT");
		break;
	case kShowBhutanPeople:
		_actor->loadPDA("BHUPEO");
		break;
	case kShowBhutanPlaces:
		_actor->loadPDA("BHUPLA");
		break;
	case kShowBhutanReligion:
		_actor->loadPDA("BHUREL");
		break;

	case kShowChinaArt:
		_actor->loadPDA("CHIART");
		break;
	case kShowChinaCloth:
		_actor->loadPDA("CHICLO");
		break;
	case kShowChinaFood:
		_actor->loadPDA("CHIFOO");
		break;
	case kShowChinaHistory:
		_actor->loadPDA("CHIHIS");
		break;
	case kShowChinaNature:
		_actor->loadPDA("CHINAT");
		break;
	case kShowChinaPeople:
		_actor->loadPDA("CHIPEO");
		break;
	case kShowChinaPlaces:
		_actor->loadPDA("CHIPLA");
		break;
	case kShowChinaReligion:
		_actor->loadPDA("CHIREL");
		break;

	case kShowEnglandArt:
		_actor->loadPDA("BRIART");
		break;
	case kShowEnglandCloth:
		_actor->loadPDA("BRICLO");
		break;
	case kShowEnglandFood:
		_actor->loadPDA("BRIFOO");
		break;
	case kShowEnglandHistory:
		_actor->loadPDA("BRIHIS");
		break;
	case kShowEnglandNature:
		_actor->loadPDA("BRINAT");
		break;
	case kShowEnglandPeople:
		_actor->loadPDA("BRIPEO");
		break;
	case kShowEnglandPlaces:
		_actor->loadPDA("BRIPLA");
		break;
	case kShowEnglandReligion:
		_actor->loadPDA("BRIREL");
		break;

	case kShowEgyptArt:
		_actor->loadPDA("BRIART");
		break;
	case kShowEgyptCloth:
		_actor->loadPDA("BRICLO");
		break;
	case kShowEgyptFood:
		_actor->loadPDA("BRIFOO");
		break;
	case kShowEgyptHistory:
		_actor->loadPDA("BRIHIS");
		break;
	case kShowEgyptNature:
		_actor->loadPDA("BRINAT");
		break;
	case kShowEgyptPeople:
		_actor->loadPDA("BRIPEO");
		break;
	case kShowEgyptPlaces:
		_actor->loadPDA("BRIPLA");
		break;
	case kShowEgyptReligion:
		_actor->loadPDA("BRIREL");
		break;

	case kShowIndiaArt:
		_actor->loadPDA("INDART");
		break;
	case kShowIndiaCloth:
		_actor->loadPDA("INDCLO");
		break;
	case kShowIndiaFood:
		_actor->loadPDA("INDFOO");
		break;
	case kShowIndiaHistory:
		_actor->loadPDA("INDHIS");
		break;
	case kShowIndiaNature:
		_actor->loadPDA("INDNAT");
		break;
	case kShowIndiaPeople:
		_actor->loadPDA("INDPEO");
		break;
	case kShowIndiaPlaces:
		_actor->loadPDA("INDPLA");
		break;
	case kShowIndiaReligion:
		_actor->loadPDA("INDREL");
		break;

	case kShowContent:
		_actor->loadPDA("TOC");
		break;
	case kShowGreece:
		_actor->loadPDA("GREOVER");
		break;
	case kShowIndonesia:
		_actor->loadPDA("INDOVER");
		break;
	case kShowIsrael:
		_actor->loadPDA("ISROVER");
		break;
	case kShowKenya:
		_actor->loadPDA("KENOVER");
		break;
	case kShowRussia:
		_actor->loadPDA("SIBOVER");
		break;

	default:
		break;
	}
}

} // End of namespace Pink