/// <summary>Handles the message.</summary> /// <param name="message">The message.</param> public void Handle(GameStarted message) { EnsureInitialized(); GameMode = message.GameMode; Hero = Heroes.FirstOrDefault(x => x.Key == message.Hero); OpponentHero = Heroes.FirstOrDefault(x => x.Key == message.OpponentHero); GoFirst = message.GoFirst; StartTime = message.StartTime; IsRunning = true; Deck = deckManager.GetOrCreateDeckBySlot(BindableServerCollection.Instance.DefaultName, message.Deck); events.PublishOnBackgroundThread(new ToggleFlyoutCommand(Flyouts.CurrentGame) { Show = true }); events.PublishOnBackgroundThread(new ToggleFlyoutCommand(Flyouts.EditGame) { Show = false }); var vm = IoC.Get <GameStartedBalloonViewModel>(); vm.SetGameResult(message); events.PublishOnBackgroundThread(new TrayNotification("A new game has started", vm, 10000) { BalloonType = BalloonTypes.GameStartEnd }); RefreshStats(); }
private void UpdateVillageHeroes(CocApi cocApi, VillageApiModel downloadedVillage) { List <TroopApiModel> newTroops = new List <TroopApiModel>(); foreach (TroopApiModel troop in downloadedVillage.Heroes.EmptyIfNull()) { TroopApiModel?oldTroop = Heroes.FirstOrDefault(t => t.Name == troop.Name); if (oldTroop == null || oldTroop.Level < troop.Level) { newTroops.Add(troop); } } if (newTroops.Count() > 0) { cocApi.VillageHeroesChangedEvent(this, newTroops); //Heroes = downloadedVillage.Heroes; } }
/// <summary>Handles the message.</summary> /// <param name="message">The message.</param> public async Task Handle(GameEnded message) { events.PublishOnBackgroundThread(new ResetCurrentGame()); // TODO: do not override if manually set. GameMode = message.GameMode; StartTime = message.StartTime; if (!string.IsNullOrWhiteSpace(message.Hero)) { Hero = Heroes.FirstOrDefault(x => x.Key == message.Hero); } if (!string.IsNullOrWhiteSpace(message.OpponentHero)) { OpponentHero = Heroes.FirstOrDefault(x => x.Key == message.OpponentHero); } if (message.GoFirst.HasValue) { GoFirst = message.GoFirst.Value; } IsRunning = false; Turns = message.Turns; GameMode = message.GameMode; Conceded = message.Conceded; GoFirst = !message.GoFirst.HasValue || message.GoFirst.Value; Hero = Heroes.FirstOrDefault(x => x.Key == message.Hero); OpponentHero = Heroes.FirstOrDefault(x => x.Key == message.OpponentHero); Started = message.StartTime; Stopped = message.EndTime; Victory = message.Victory.HasValue && message.Victory.Value; Deck = deckManager.GetOrCreateDeckBySlot(BindableServerCollection.Instance.DefaultName, message.Deck); await Save(); }
public MainViewModel() { Heroes = HeroesRepository.GetAllHeroes(); CurrentHero = Heroes.FirstOrDefault(); }
public Hero LookupHero(Tile tile) { return(Heroes.FirstOrDefault(x => x.ID == tile.OwnerId)); }
public int?HeroLevelOrDefault(string name) => Heroes.FirstOrDefault(h => h.Name == name)?.Level;