public void RefreshPlanets(Views.Game.Game g) { var window = new PlanetSelectorWindow(new PlanetSelectorVM(g, true, true, new List <PlanetVM>())); window.ShowDialog(); if (window.ReturnCards?.Any() != true) { return; } var ev = new GameEvent() { Type = GameEventType.RefreshPlanets, Timestamp = DateTime.UtcNow, Gametime = g.TimeElapsed, Parameters = JToken.FromObject(window.ReturnCards.Select(e => e.Name)) }; g.UpdateWithLogs(ev); }
public void AssignPlanets(Views.Game.Game g) { var window = new PlanetSelectorWindow(new PlanetSelectorVM(g, false, false, g.SelectedUser.Planets.AllItems.ToList())); window.ShowDialog(); if (window.ReturnCards == null) { return; } var allUserPlanets = g.Users.SelectMany(e => e.Planets.AllItems).ToList(); var existingOccupations = window.ReturnCards.Where(e => allUserPlanets.Exists(u => u.Model.Name.Equals(e.Name, StringComparison.CurrentCultureIgnoreCase))) .ToList(); if (existingOccupations.Any()) { if (MessageBox.Show( string.Join("\r\n", existingOccupations.Select(e => $"{e.Name} belongs to {g.Users.First(u => u.Planets.AllItems.Any(p => p.Model.Name.Equals(e.Name, StringComparison.InvariantCultureIgnoreCase))).Name}")) + "\r\nAre you sure to continue?", "The following planets are already occupied.", MessageBoxButton.YesNo) == MessageBoxResult.No) { return; } } var ev = new GameEvent() { Type = GameEventType.AssignPlanets, Timestamp = DateTime.UtcNow, Gametime = g.TimeElapsed, Parameters = JToken.FromObject(new AssignPlanetsParameter() { TargetUser = g.SelectedUser.Name, TargetPlanets = window.ReturnCards.Select(e => e.Name).ToArray() }) }; g.UpdateWithLogs(ev); }