
//Text Menus
class MenuProgress : Menu {
// - Level Progress
	// - 5 out 5 Monkeys Found
	// - Found/Missing Pistol Challenge Key
	// - Pistol Challenge complete/Incomplete (has upgrade)
// Weapon Upgrades
	// - Has Upgrade
	//------------------------------------------------------------------------------------------------------------------------
    MenuProgress() {
		super();
		ShowMainMenu();
    }
	//------------------------------------------------------------------------------------------------------------------------
	void ShowMainMenu() {
		StartMenu(3);
		SetItem(5, "Current Progress");
		SetItem(2, "Levels", MenuSelectCallBack(ShowLevel1Progress));
		SetItem(1, "Weapons", MenuSelectCallBack(ShowWeaponKnifeProgress));
		SetItem(0, "Exit", MenuSelectCallBack(ExitMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ExitMenu() {
		Close();
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowLevel1Progress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowLevel2Progress));
		SetOnPressedRight(MenuSelectCallBack(ShowLevel2Progress));
		SetItem(5, "Level 1 - Hub");
		SetItem(4, "" + GetMonkeysFoundOnLevel(1) + " out of " + GetMaxMonkeysOnLevel(1) + " monkeys found");
		SetItem(3, (HasChallengeKey(2) ? "Found" : "Missing") + " Bow Challenge Key");
		SetItem(2, "Bow Challenge " + (HasUpgradeBow() ? "complete" : "incomplete"));
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowLevel2Progress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowLevel1Progress));
		SetOnPressedRight(MenuSelectCallBack(ShowLevel1Progress));
		SetItem(5, "Level 2 - Jungle");
		SetItem(4, "" + GetMonkeysFoundOnLevel(2) + " out of " + GetMaxMonkeysOnLevel(2) + " monkeys found");
		SetItem(3, (HasChallengeKey(3) ? "Found" : "Missing") + " Pistol Challenge Key");
		SetItem(2, "Pistol Challenge " + (HasUpgradePistol() ? "complete" : "incomplete"));
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponKnifeProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponRocketProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponBowProgress));
		SetItem(5, "Knife");
		SetItem(4, HasUpgradeKnife() ? "Acquired Upgrade - Slash Projectile" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponBowProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponKnifeProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponPistolProgress));
		SetItem(5, "Bow");
		SetItem(4, HasUpgradeBow() ? "Acquired Upgrade - Super Shot" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponPistolProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponBowProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponShotgunProgress));
		SetItem(5, "Pistol");
		SetItem(4, HasUpgradePistol() ? "Acquired Upgrade - Triple Shot" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponShotgunProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponPistolProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponMinigunProgress));
		SetItem(5, "Shotgun");
		SetItem(4, HasUpgradeShotgun() ? "Acquired Upgrade - Deadly double damage" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponMinigunProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponShotgunProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponLaserProgress));
		SetItem(5, "Minigun");
		SetItem(4, HasUpgradeMinigun() ? "Acquired Upgrade - Ammo Conservation" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponLaserProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponMinigunProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponGrenadeProgress));
		SetItem(5, "Pulse Rifle");
		SetItem(4, HasUpgradeLaser() ? "Acquired Upgrade - Charge Beam" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponGrenadeProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponLaserProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponRocketProgress));
		SetItem(5, "Grenade Launcher");
		SetItem(4, HasUpgradeGrenade() ? "Acquired Upgrade - Micro Explosion Chain" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
	void ShowWeaponRocketProgress() {
		StartMenu(1);
		SetOnPressedLeft(MenuSelectCallBack(ShowWeaponGrenadeProgress));
		SetOnPressedRight(MenuSelectCallBack(ShowWeaponKnifeProgress));
		SetItem(5, "Rocket Launcher");
		SetItem(4, HasUpgradeRocket() ? "Acquired Upgrade - Hyper Speed" : "Missing Upgrade");
		SetItem(0, "Back", MenuSelectCallBack(ShowMainMenu));
	}
	//------------------------------------------------------------------------------------------------------------------------
};
