private void TrySaveWindowState(IModSettingsWindowState state) { if (state == null) { return; } state.ExpandedSettingPackIds = expandedModEntries .Select(e => e.SettingsPack?.ModId) .Where(id => id != null) .ToArray(); state.VerticalScrollPosition = scrollPosition.y; }
private void TryRestoreWindowState(IModSettingsWindowState state) { if (state == null) { return; } expandedModEntries.Clear(); var expandedIdSet = (state.ExpandedSettingPackIds ?? Enumerable.Empty <string>()).ToHashSet(); expandedModEntries.AddRange(listedMods.Where( m => m.SettingsPack != null && expandedIdSet.Contains(m.SettingsPack.ModId) )); scrollPosition = new Vector2(0f, state.VerticalScrollPosition); }