using System; using System.ComponentModel; using System.Reactive.Linq; using DynamicData; using DynamicData.Binding; using Splat; using StarsAssistant.Model; using StarsAssistant.ViewModels; namespace StarsAssistant.Services; public class PlanetManager { protected Services.Game Game = Locator.Current.GetService()!; private SourceCache _planets = new(p => p.Name); public IObservable> PlayerPlanetsSource => _planets .Connect() .Filter(planet => planet.OwnerId == Game.Player.Name) .Transform(planet => new PlayerPlanetViewModel(planet)); public PlanetManager() { } public void InitFromDatabase() { using var db = Locator.Current.GetService()!; { var allPlanets = db.Planet.ToList(); _planets.AddOrUpdate(allPlanets); } } }