public override void Update(GameTime gameTime)
{
ControlManager.Update(gameTime, PlayerIndex.One);
if (InputHandler.PressedCancel())
StateManager.ChangeState(GameRef.TitleScreen);
if (InputHandler.PressedUp())
{
GameRef.Select.Play();
_menuIndex--;
if (_menuIndex < 0)
_menuIndex = _menuText.Length;
}
if (InputHandler.PressedDown())
{
GameRef.Select.Play();
_menuIndex = (_menuIndex + 1) % (_menuText.Length + 1);
}
if (InputHandler.PressedAction())
{
if (_menuIndex == _menuText.Length)
{
GameRef.Choose.Play();
StateManager.ChangeState(GameRef.TitleScreen);
}
bool error = false;
switch (_menuIndex)
{
// Lives
case 0:
if (!_finished["livesNumber"] &&
PlayerData.LivesNumberIndex < Improvements.LivesNumberData.Count - 1 &&
PlayerData.Credits >= Improvements.LivesNumberData[PlayerData.LivesNumberIndex + 1].Value)
{
PlayerData.Credits -= Improvements.LivesNumberData[PlayerData.LivesNumberIndex + 1].Value;
PlayerData.LivesNumberIndex++;
}
else
{
error = true;
}
break;
case 1:
if (!_finished["shootType"] &&
PlayerData.ShootTypeIndex < Improvements.ShootTypeData.Count - 1 &&
PlayerData.Credits >= Improvements.ShootTypeData[PlayerData.ShootTypeIndex + 1].Value)
{
PlayerData.Credits -= Improvements.ShootTypeData[PlayerData.ShootTypeIndex + 1].Value;
PlayerData.ShootTypeIndex++;
}
else
{
error = true;
}
break;
case 2:
if (!_finished["shootPower"] &&
PlayerData.ShootPowerIndex < Improvements.ShootPowerData.Count - 1 &&
PlayerData.Credits >= Improvements.ShootPowerData[PlayerData.ShootPowerIndex + 1].Value)
{
PlayerData.Credits -= Improvements.ShootPowerData[PlayerData.ShootPowerIndex + 1].Value;
PlayerData.ShootPowerIndex++;
}
else
{
error = true;
}
break;
case 3:
if (!_finished["shootFrequency"] &&
PlayerData.ShootFrequencyIndex < Improvements.ShootFrequencyData.Count - 1 &&
PlayerData.Credits >= Improvements.ShootFrequencyData[PlayerData.ShootFrequencyIndex + 1].Value)
{
PlayerData.Credits -= Improvements.ShootFrequencyData[PlayerData.ShootFrequencyIndex + 1].Value;
PlayerData.ShootFrequencyIndex++;
}
else
{
error = true;
}
break;
case 4:
if (!_finished["timerInitialTime"] &&
PlayerData.TimerInitialTimeIndex < Improvements.TimerInitialTimeData.Count - 1 &&
PlayerData.Credits >= Improvements.TimerInitialTimeData[PlayerData.TimerInitialTimeIndex + 1].Value)
{
PlayerData.Credits -= Improvements.TimerInitialTimeData[PlayerData.TimerInitialTimeIndex + 1].Value;
PlayerData.TimerInitialTimeIndex++;
}
else
{
error = true;
}
break;
case 5:
if (!_finished["timerExtraTime"] &&
PlayerData.TimerExtraTimeIndex < Improvements.TimerExtraTimeData.Count - 1 &&
PlayerData.Credits >= Improvements.TimerExtraTimeData[PlayerData.TimerExtraTimeIndex + 1].Value)
{
PlayerData.Credits -= Improvements.TimerExtraTimeData[PlayerData.TimerExtraTimeIndex + 1].Value;
PlayerData.TimerExtraTimeIndex++;
}
else
{
error = true;
}
break;
case 6:
if (!_finished["bulletTimeDivisor"] &&
PlayerData.InvicibleTimeIndex < Improvements.InvicibleTimeData.Count - 1 &&
PlayerData.Credits >= Improvements.InvicibleTimeData[PlayerData.InvicibleTimeIndex + 1].Value)
{
PlayerData.Credits -= Improvements.InvicibleTimeData[PlayerData.InvicibleTimeIndex + 1].Value;
PlayerData.InvicibleTimeIndex++;
}
else
{
error = true;
}
break;
case 7:
if (!_finished["slowMode"] &&
!PlayerData.SlowModeEnabled &&
PlayerData.Credits >= Improvements.SlowModePrice)
{
PlayerData.Credits -= Improvements.SlowModePrice;
PlayerData.SlowModeEnabled = true;
}
else
{
error = true;
}
break;
case 8:
if (!_finished["bulletTime"] &&
!PlayerData.BulletTimeEnabled &&
PlayerData.Credits >= Improvements.BulletTimePrice)
{
PlayerData.Credits -= Improvements.BulletTimePrice;
PlayerData.BulletTimeEnabled = true;
}
else
{
error = true;
}
break;
case 9:
if (!_finished["bulletTimeTimer"] &&
PlayerData.BulletTimeTimerIndex < Improvements.BulletTimeTimerData.Count - 1 &&
PlayerData.Credits >= Improvements.BulletTimeTimerData[PlayerData.BulletTimeTimerIndex + 1].Value)
{
PlayerData.Credits -= Improvements.BulletTimeTimerData[PlayerData.BulletTimeTimerIndex + 1].Value;
PlayerData.BulletTimeTimerIndex++;
}
else
{
error = true;
}
break;
case 10:
if (!_finished["bulletTimeDivisor"] &&
PlayerData.BulletTimeDivisorIndex < Improvements.BulletTimeDivisorData.Count - 1 &&
PlayerData.Credits >= Improvements.BulletTimeDivisorData[PlayerData.BulletTimeDivisorIndex + 1].Value)
{
PlayerData.Credits -= Improvements.BulletTimeDivisorData[PlayerData.BulletTimeDivisorIndex + 1].Value;
PlayerData.BulletTimeDivisorIndex++;
}
else
{
error = true;
}
break;
default:
error = true;
break;
}
if (error)
_error = "You don't have enought credits to buy this !";
else
{
_error = "";
_buySound.Play();
}
UpdateMenuText();
}
base.Update(gameTime);
}