public int Process(float expectedGrade, float actualGrade, bool changeState)
{
int difficultyThisTurn = 0;
if (state == ChallengeState.NotYet && game.CurrentMeasure >= Measure)
{
if (expectedGrade > actualGrade)
{
if (changeState)
{
state = ChallengeState.Skipped;
}
}
else
{
state = ChallengeState.Active;
}
}
if (state == ChallengeState.Active)
{
bool anyUnsent = false;
foreach (ChallengeBeat beat in beats)
{
if (beat.Unsent && (beat.Beat + (Measure * 4)) <= game.CurrentBeat)
{
beat.Unsent = false;
foreach (EnemyMaker em in beat.Enemies)
{
CycEnemy enemy = (CycEnemy)em(this);
difficultyThisTurn += enemy.Difficulty;
}
}
else
{
anyUnsent = true;
}
}
if (!anyUnsent && changeState)
{
state = ChallengeState.Deployed;
}
}
return difficultyThisTurn;
}