public static void Win(LevelDef levelDef)
{
var oldClearState = Get(levelDef.World, levelDef.Level);
var newClearState = levelDef.Difficulty == Difficulty.Easy ? LevelClearState.Easy : LevelClearState.Hard;
if (oldClearState.HasValue)
{
var oldClearStateValue = oldClearState.Value;
if (oldClearStateValue == LevelClearState.Hard && levelDef.Difficulty == Difficulty.Hard)
{
newClearState = LevelClearState.Perfect;
}
else if (levelDef.Difficulty == Difficulty.Easy)
{
return;
}
}
Set(levelDef.World, levelDef.Level, newClearState);
Unlocked = new WorldAndLevel(levelDef.World, levelDef.Level).Next();
}