public static bool IsCompleted(string name, GameState state, ConfigRoot config) { if (!IsActive(name, state, config)) { return(false); } var scope = config.Events[name].Scope; var progress = state.Progress.GetOrDefault(scope); var nextLevelDesc = LevelUtils.GetDesc(scope, progress); return(!config.Levels.ContainsKey(nextLevelDesc)); }