#pragma once
//The major Game Phases enumerated - M. White 5 June, 2019 -----------------------------------------------------//
enum GameStatePhases																							//
{																												//
	phSplashScrn = 0, phMenuScrn, phNewGameScrn, phLoadGame, phDeleteGame, phPlayScrn, phEditor, MAX_GAMEPHASES	//
};																												//
//--------------------------------------------------------------------------------------------------------------//
//Quit Button - If a game was open, ask to save before shutting down--------------------------------------------//
//New Game - Changes Phase to New Game Screen																	//
//Load Game - Shows list of available scenarios currently saved													//
//Delete Game - Shows list of available scenarios available to delete (verify before allowing)					//
//Splash Screen shows Title page for a duration...																//
//Menu Screen shows options to go to...(Quit, Load, Save, New Character)										//
//Roster Screen shows User's available Avatars...																//
enum MainMenuScrnOptions																						//
{																												//
	msQuitBtn = 0, msNewGame, msLoadGame, msDeleteGame, msEditor, MAX_menuOPTIONS								//
};																												//
enum LoadGame
{
	lgQuit = 0, lgContinue, lgScrollUp, lgScrollDn, lgMAX
};
//Avatar creation stuff - M. White 10 May, 2019
enum NewGameOptions
{
	ngQuit = 0, ngRollDice, ngSex, ngPortLeft, ngPortRight,
	ngStrUp, ngStrDwn, ngDexUp, ngDexDwn, ngConUp, ngConDwn,
	ngIntUp, ngIntDwn, ngWisUp, ngWisDwn, ngChaUp, ngChaDwn,
	ngComUp, ngComDwn,
	ngStart, ngImport, ngExport,
	MAX_ngOPTIONS
};
//Map Related Enumerations - M. White 5 June, 2019--------------------------------------------------------------//
enum MapTypeDefinitions
{
	mapWORLD = 0, mapSCENE, maxMAP_Defs
};
enum MajorTerrain																								//
{																												//
	terOcean03 = 0, terOcean02, terOcean01,																		//
	terDesert, terPlains, terSwamp,																				//
	terRough, terHills, terMountains, terVolcano,																//
	terGlacier,																									//
	terSubBlank, terBlank,																						//
	MAX_TERRAIN																									//
};																												//
string GetTerrainString(int index)																				//
{																												//
	string temp;																								//
	switch(index)																								//
	{																											//
	case terOcean03:	temp = "Deep Ocean";		break;														//
	case terOcean02:	temp = "Ocean";				break;														//
	case terOcean01:	temp = "Shallow Ocean";		break;														//
	case terDesert:		temp = "Desert";			break;														//
	case terPlains:		temp = "Plains";			break;														//
	case terSwamp:		temp = "Swamp";				break;														//
	case terRough:		temp = "Rough";				break;														//
	case terHills:		temp = "Hills";				break;														//
	case terMountains:	temp = "Mountains";			break;														//
	case terVolcano:	temp = "Volcano";			break;														//
	case terGlacier:	temp = "Artic";				break;														//
	default:			temp = "Terrain Error";		break;														//
	};																											//
	return temp;																								//
}																												//
enum ForestFoilage																								//
{																												//
	ffLightForest = 0, ffDenseForest, fflightJungle, ffDenseJungle, ffSwampy, ffOasis, ffGrassy, ffEverGreen,	//
	MAX_Forests																									//
};																												//
string GetForestString(int Index)																				//
{																												//
	string temp;																								//
	switch(Index)																								//
	{																											//
	case ffLightForest:	temp = "Light Forest";		break;														//
	case ffDenseForest:	temp = "Dense Forest";		break;														//
	case fflightJungle:	temp = "Light Jungle";		break;														//
	case ffDenseJungle:	temp = "Dense Jungle";		break;														//
	case ffSwampy:		temp = "Swamp";				break;														//
	case ffOasis:		temp = "Oasis";				break;														//
	case ffGrassy:		temp = "Grass";				break;														//
	case ffEverGreen:	temp = "Ever Greens";		break;														//
	default:			temp = "Error Forests";		break;														//
	};																											//
	return temp;																								//
}																												//
enum PopulationCenters																							//
{																												//
	pcCamp = 0, pcRuins, pcTower, pcFort, pcCastle, pcVillage, pcTown, pcCity, pcCapital, MAX_PopCenters		//
};																												//
string GetCityString(int index)																					//
{																												//
	string temp;																								//
	switch(index)																								//
	{																											//
	case pcCamp:	temp = "Camp";			break;																//
	case pcRuins:	temp = "Ruins";			break;																//
	case pcTower:	temp = "Tower";			break;																//
	case pcFort:	temp = "Fort";			break;																//
	case pcCastle:	temp = "Castle";		break;																//
	case pcVillage:	temp = "Village";		break;																//
	case pcTown:	temp = "Town";			break;																//
	case pcCity:	temp = "City";			break;																//
	case pcCapital:	temp = "Capital";		break;																//
	default:		temp = "Cities Error";	break;																//
	};																											//
	return temp;																								//
}																												//
enum WallTypes																									//
{																												//
	wtArch01 = 0, wtArch02, wtArch03, wtArch04,																	//
	wtDiagCornerR, wtDiagCornerL, wtDiagCornerT, wtDiagCornerB,													//
	wtBend01, wtBend02, wtBend03, wtBend04, wtBend05, wtBend06, wtBend07, wtBend08,								//
	wtSlant01, wtSlant02,																						//
	wtDiagInterSects01, wtDiagInterSects02, wtDiagInterSects03, wtDiagInterSects04, wtDiagInterSects05,			//
	wtCorner01, wtCorner02, wtCorner03, wtCorner04,																//
	wtStraight01, wtStraight02,																					//
	wtInterSects01, wtInterSects02, wtInterSects03, wtInterSects04, wtInterSects05,								//
	MAX_WallTypes																								//
};																												//
//--------------------------------------------------------------------------------------------------------------//
//Editor Screen Stuff - M. White 10 May, 2019-------------------------------------------------------------------
enum EditorMenu
{
	edStart = 0, edNewWorldMenu, edNewSceneMenu, edLinkMaps, edStartLoc, edOpen, edDelete, edSave, 
	edQuit, edHidden, MAX_edMenuOptions
};
enum EditorMapViews																								//
{																												//
	edMapSqr1 = 0, edMapDiam, edMapRhom, edMapHex1, edMapSlideUp, edMapSlideDown, edMapSlideLeft,				//
	edMapSlideRight,																							//
	MAX_edOPTIONS																								//
};																												//
enum EditorWhatListToShow																						//
{																												//
	edCats_TileGround = 0, edCats_Resource, MAX_SHOWLIST														//
};																												//
enum edNewSubMenu																								//
{																												//
	edNewSubCancel = 0, edNewSubContinue, MAX_edNewSubMenu														//
};																												//
//these cats used to fill _SideBarMenuStr with an array of text - M. White 10 May, 2019	
enum EditorMapCategories																						//
{																												//
	edMC_Cities = 0, edMC_Coastal, edMC_Forests, edMC_RiverRoads, edMC_Terrain, edMC_walls001, edMC_Monsters,	//
	edMC_MAXCats																								//
};																												//
//--------------------------------------------------------------------------------------------------------------//
enum STR_Data	{ StrAA_ = 0, StrDA_, StrWA_, StrMP_, StrOD_, StrBB_, StrMAX							};
enum DEX_Data	{ DexRA_ = 0, DexMAA, DexDA_, DexMAX													};
enum CON_Data	{ ConHpA = 0, ConSS_, ConRS_, ConPS_, ConReg, ConMAX									};
enum INT_Data	{ IntNoL = 0, IntSL_, Int_TL, Int_SL, IntMAX											};
enum WIS_Data	{ WisMDA = 0, WisSF_, Wis1st, Wis2nd, Wis3rd, Wis4th, Wis5th, Wis6th, Wis7th, WisMAX	};
enum CHA_Data	{ ChaMnH = 0, ChaLB_, ChaRA_, ChaCA_, ChaMAX											};
enum COM_Data	{ ComIR_ = 0, ComApp_, ComMAX /*Appeal is the mod to see reaction...*/					};
//Monster Data--------------------------------------------------------------------------------------------------//
enum AlignmentEnums
{
	alignLG = 0, alignLN, alignLE, alignNG, alignNN, alignNE, alignCG, alignCN, alignCE, alignMax
};
enum MonsterThacoCategories																						//
{																												//
	MonThacoHalf = 0, MonThacoOneMinus, MonThacoOne, MonThacoTwo, MonThacoThree, MonThacoFour, MonThacoFive,	//
	MonThacoSix, MonThacoSeven, MonThacoEight, MonThacoNine, MonThacoTen, MonThacoEleven, MonThacoTwelve,		//
	MonThacoThirteen, MonThacoFourteen, MonThacoFifteen, MonThacoSixteen, MAX_MonThaco							//
};																												//
//Note: Monster Data Enumerations is for use in ferencing a multi-dimensional									//
//array of predefined integer data for easy reference - M. White 29 June, 2019									//
enum Mon_Data																									//
{																												//
	MonClimate1, MonClimate2,																					//
	MonTerrain1, MonTerrain2,																					//
	MonFrequency,																								//
	MonOrganization,																							//
	MonCycle,																									//
	MonDiet,																									//
	MonBaseInt,						//Minimum Score INT															//
	MonIntMod,						//Die type to roll for add...												//
	MonTreasureC, MonTreasureL,		//Carried, Lair																//
	MonAlign,																									//
	MonNumAppN,						//Normal die roll															//
	MonNumAppO,						//Habitat/society rolls...													//
	MonAC,																										//
	MonMvW,							//Walk																		//
	MonMvS,							//Swim																		//
	MonMvF,							//Fly																		//
	MonMvB,							//Burroughing																//
	MonMvFC,						//Flying class																//
	MonNumHD,						//Number dice to roll														//
	MonHDMod,						//Add/subtract to final dice rolls											//
	MonTHAC0,																									//
	MonNumAttN,						//Normal - aka, without held weapons...										//
	MonNumAttW,						//Held weapons																//
	MonDmgN01,						//Claw..?																	//
	MonDmgN02,						//Claw..?																	//
	MonDmgN03,						//Bite..?																	//
	MonDmgW_base,					//Base damage die - d4, d6, d8, d10, d12, d20								//
	MonDmgW_mult,					//How many dice rolls														//
	MonMR,							//Magic resistance															//
	MonSize,						//By categories...															//
	MonMorale,																									//
	MonXP,							//Normal xp value...														//
	MonDataMAX																									//
};																												//
struct MonsterDataStruct																						//
{																												//
	string		MonName;																						//
	int			data[MonDataMAX];																				//
};																												//
enum GamePlayOptions
{
	gpQuit = 0, gpExpandMsg, gpShrinkMsg, gpMAX
};