public AllLevels GetLevels(ISaver saver, Preset[] levelPresets) { int lastID = -1; LevelParameters[] param = new LevelParameters[levelPresets.Length]; SavingParametersContainer spc; bool hasData = saver != null && saver.HasData(); if (hasData) { spc = saver.Load(); } else { spc = new SavingParametersContainer(); spc.SavingParameters = new SavingParameters[0]; } bool find = false; for (int i = 0; i < param.Length; ++i) { param[i] = new LevelParameters(); param[i].Preset = levelPresets[i]; find = false; for (int j = 0; j < spc.SavingParameters.Length; ++j) { if (spc.SavingParameters[j].ID == param[i].Preset.ID) { param[i].SavedParameters = spc.SavingParameters[j]; find = true; break; } } if (!find) { param[i].SavedParameters = GenerateLevel(param[i].Preset.ID); } if (lastID < param[i].Preset.ID) { lastID = param[i].Preset.ID; } } if (!hasData) { SetFirstOpen(param); } return(new AllLevels(param, lastID)); }