void Instance_OnPlayerActionTriggerEvent(TableModel table, BaseAction action) { Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { Console.WriteLine("ON TABLE HISTORY EVENT"); if (this.GameTable.ID == table.ID) { if (action is BetAction) { this.ParseBetAction(action); } else if (action is CardTableAction) { CardTableAction actionEntry = (CardTableAction)action; Console.WriteLine("CardTableAction <____"); OnCashierGroupMoney((o, e) => { CashierWorkspace.Children.Clear(); }); AddTableCards(actionEntry.Cards, false); } else if (action is TablePotAction) { //Akcja otrzymania przez gracza funduszy var actionEntry = action as TablePotAction; this.OnCashierPotAction(actionEntry.Pot, actionEntry.Player); } else if (action is CardHighlightAction) { //Podświetlamy wygrane układy //Bierzemy wszystkie kontrolki /*CardHighlightAction actionEntry = (CardHighlightAction)action; * * //Czyścimy wszystkie elementy = opacity 1.0 * * //Bierzemy seat playera * var playerCardList = this.SeatList. * FirstOrDefault(p => p.player != null && p.player.User.ID == actionEntry.Player.User.ID). * CardShowcase.Children.OfType<GameControls.Card>(). * ToList(); * * List<GameControls.Card> listOfCards = TableCards.Children.OfType<GameControls.Card>().ToList(); * listOfCards = listOfCards.Concat(playerCardList).Distinct().ToList();*/ } this.ParseTable(table); } })); }
void Instance_OnTableHitoryEvent(TableModel table, ObservableCollection <BaseAction> tableHistory) { Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { if (this.GameTable.ID == table.ID) { this.ParseTable(table); //Pobieramy akcje aktualnego stage if (tableHistory != null) { //Pobieramy karty List <BaseAction> actionListStage = tableHistory.ToList(); foreach (BaseAction action in actionListStage) { if (action is BetAction) { this.ParseBetAction(action, true); } else if (action is CardTableAction) { CardTableAction actionEntry = (CardTableAction)action; AddTableCards(actionEntry.Cards, true); CashierWorkspace.Children.Clear(); } } } //Ustawiamy aktywnego uzytkownika jesli jest taki i jego timer if (table.ActionPlayer != null) { lock (table.ActionPlayer) { var _seat = this.SeatList.FirstOrDefault(p => p.player.User.ID == table.ActionPlayer.User.ID); var lastTableHistoryEntry = tableHistory.LastOrDefault(); if (_seat != null && lastTableHistoryEntry != null) { TimeSpan difference = DateTime.Now.Subtract(lastTableHistoryEntry.CreatedAt); _seat.RunTimer(table.ActionTimer, difference.TotalMilliseconds); } } } } })); }
private void InitializeStage() { Console.WriteLine("InitializeStage()"); StageGameProcess = new StageProcess(this); StageGameProcess.Initialize(); StageGameProcess.OnStageChangeEvent += (stage) => { Console.WriteLine("OnStageChangeEvent()"); Thread.Sleep(100); List <CardModel> cards = new List <CardModel>(); switch (stage) { case Enums.Stage.Flop: this.SendDealerMessage("Rozkładam flopa."); cards.Add(Helper.Pop <CardModel>(GameTypeHandler.CardList)); cards.Add(Helper.Pop <CardModel>(GameTypeHandler.CardList)); cards.Add(Helper.Pop <CardModel>(GameTypeHandler.CardList)); break; case Enums.Stage.Turn: this.SendDealerMessage("Rozkładam turn."); cards.Add(Helper.Pop <CardModel>(GameTypeHandler.CardList)); break; case Enums.Stage.River: this.SendDealerMessage("Rozkładam river."); cards.Add(Helper.Pop <CardModel>(GameTypeHandler.CardList)); break; } Console.WriteLine("Rozdanie kart na stole = " + stage.ToString()); //Zapisuje zebrane karty do pamieci GameTableModel.TableCardList = GameTableModel.TableCardList.Concat(cards).ToList(); //Przekazujemy karty publice CardTableAction cardAction = new CardTableAction() { CreatedAt = DateTime.Now, Cards = cards, Stage = GameTableModel.Stage }; GameTableModel.ActionHistory.Add(cardAction); Thread.Sleep(1500); }; StageGameProcess.OnStageProcessFinishEvent += () => { Console.WriteLine("OnStageProcessFinishEvent"); if (GameTableModel.PlayerHavingPlayStatus().Count == 1) { //Wygrywa jeden gracz var playerWinner = GameTableModel.PlayerHavingPlayStatus().FirstOrDefault(); playerWinner.Stack += GameTableModel.TablePot; var message = "Gracz " + playerWinner.User.Username + " wygrywa główną pulę " + CurrencyFormat.Get(GameTableModel.Currency, GameTableModel.TablePot) + " ponieważ reszta graczy spasowała karty."; Console.WriteLine(message); this.SendDealerMessage(message); GameTableModel.ShowSystemMessage("Wygrywa " + playerWinner.User.Username, message); Thread.Sleep(2000); GameTableModel.HideSystemMessage(); } else { //Showdown StageShowdown stageShowdown = new StageShowdown(this); stageShowdown.OnShowdownWinnerEvent += (evaluatorItem) => { Console.WriteLine("points: " + evaluatorItem.Points + " (kicker points: " + evaluatorItem.KickerPoints + ")"); }; stageShowdown.ShowdownStart(); stageShowdown.ShowdownPotDistribution(); } Thread.Sleep(100); GameTableModel.ShowSystemMessage("Zakończenie rozdania", "Nowe rozdanie zostanie rozpoczęte za 4 sekundy"); Console.WriteLine("Zakończenie gry na stole " + this.GameTableModel.Name); Thread.Sleep(3600); GameTableModel.HideSystemMessage(); BaseFinished(); if (OnGameFinishedEvent != null) { OnGameFinishedEvent(this); } IsFinished = true; }; }