public Player(string name, int handSize, int chips) { Name = name; Chips = chips; Status = RoundStatus.Unset; Hand = new Card[handSize]; }
public void ChangeRoundStatus(RoundStatus nextRoundStatus) { switch (nextRoundStatus) { case RoundStatus.RoundEnd: roundStatus = RoundStatus.RoundEnd; if (roundTurn == RoundTurn.EnemyRound) { enemy.BuffReduce(); roundTurn = RoundTurn.PlayerRound; roundNum++; } else { player.BuffReduce(); roundTurn = RoundTurn.EnemyRound; } ChangeRoundStatus(RoundStatus.RoundBegin); break; case RoundStatus.RoundBegin: roundStatus = RoundStatus.RoundBegin; RoundBegin(); break; case RoundStatus.Rounding: roundStatus = RoundStatus.Rounding; break; } }
public static YakuValue 一气(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { const int flag = 73; // binary : 1001001 int handFlag = 0; foreach (var meld in decompose) { if (meld.Type != MeldType.Sequence) { continue; } handFlag |= 1 << Tile.GetIndex(meld.First); } Assert.IsTrue(handFlag >= 0, "Only 27 flag bits, this number should not be less than 0"); while (handFlag > 0) { if ((handFlag & flag) == flag) { return new YakuValue { Name = "一气通贯", Value = handStatus.HasFlag(HandStatus.Menqing) ? 2 : 1 } } ; handFlag >>= 9; } return(new YakuValue()); }
public static YakuValue 抢杠(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { return(handStatus.HasFlag(HandStatus.RobKong) ? new YakuValue { Name = "抢杠", Value = 1 } : new YakuValue()); }
public static void Test3Dragons() { var handTiles = new List <Tile> { new Tile(Suit.S, 4), new Tile(Suit.S, 5), new Tile(Suit.S, 6), new Tile(Suit.Z, 2), new Tile(Suit.Z, 2), new Tile(Suit.Z, 5), new Tile(Suit.Z, 5) }; var openMelds = new List <Meld> { new Meld(false, new Tile(Suit.Z, 6), new Tile(Suit.Z, 6), new Tile(Suit.Z, 6), new Tile(Suit.Z, 6)), new Meld(true, new Tile(Suit.Z, 7), new Tile(Suit.Z, 7), new Tile(Suit.Z, 7)) }; var settings = new GameSetting(); var handStatus = HandStatus.Tsumo; var roundStatus = new RoundStatus { PlayerIndex = 0, OyaPlayerIndex = 1, FieldCount = 0, TotalPlayer = 2 }; var pointInfo = MahjongLogic.GetPointInfo(handTiles.ToArray(), openMelds.ToArray(), new Tile(Suit.Z, 2), handStatus, roundStatus, settings, false); Debug.Log($"Point: {pointInfo}"); }
public static YakuValue 色同刻(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { const int flag = 1 + (1 << 9) + (1 << 18); // binary : 1000000001000000001 int handFlag = 0; foreach (var meld in decompose) { if (meld.Type != MeldType.Triplet || meld.Suit == Suit.Z) { continue; } handFlag |= 1 << Tile.GetIndex(meld.First); } Assert.IsTrue(handFlag >= 0, "Only 27 flag bits, this number should not be less than 0"); for (int i = 0; i < 9; i++) { if ((handFlag & flag) == flag) { return new YakuValue { Name = "三色同刻", Value = 2 } } ; handFlag >>= 1; } return(new YakuValue()); }
private static IList <YakuValue> CountYaku(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting yakuSettings, bool isQTJ) { var result = new List <YakuValue>(); if (decompose == null || decompose.Count == 0) { return(result); } foreach (var yakuMethod in YakuMethods) { var value = (YakuValue)yakuMethod.Invoke(yakuSettings, new object[] { decompose, winningTile, handStatus, roundStatus, yakuSettings }); if (value.Value != 0) { result.Add(value); } } if (isQTJ) { return(result); } var hasYakuman = result.Any(yakuValue => yakuValue.Type == YakuType.Yakuman); return(hasYakuman ? result.Where(yakuValue => yakuValue.Type == YakuType.Yakuman).ToList() : result); }
private static PointInfo GetPointInfo(ISet <List <Meld> > decomposes, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings, bool isQTJ, int dora, int uraDora, int redDora, int beiDora) { Debug.Log($"GetPointInfo method, parameters: \ndecomposes: {DecompositionToString(decomposes)}, " + $"winningTile: {winningTile}, handStatus: {handStatus}, roundStatus: {roundStatus}, " + $"dora: {dora}, uraDora: {uraDora}, redDora: {redDora}, beiDora: {beiDora}"); var infos = new List <PointInfo>(); foreach (var decompose in decomposes) { var yakus = CountYaku(decompose, winningTile, handStatus, roundStatus, settings, isQTJ); var fu = CountFu(decompose, winningTile, handStatus, roundStatus, yakus, settings); if (yakus.Count == 0) { continue; } var info = new PointInfo(fu, yakus, isQTJ, dora, uraDora, redDora, beiDora); infos.Add(info); Debug.Log($"Decompose: {string.Join(", ", decompose)}, PointInfo: {info}"); } if (infos.Count == 0) { return(new PointInfo()); } infos.Sort(); Debug.Log($"CountPoint: {string.Join(", ", infos.Select(info => info.ToString()))}"); return(infos[infos.Count - 1]); }
// todo -- this may contains bugs public static YakuValue 全带系(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { if (!decompose.All(meld => meld.HasYaojiu)) { return(new YakuValue()); } if (decompose.All(meld => meld.Suit == Suit.Z)) { return new YakuValue { Name = "字一色", Value = 1, Type = YakuType.Yakuman } } ; var all = decompose.All(meld => meld.IsYaojiu); var any = decompose.Any(meld => meld.Suit == Suit.Z); if (all) { return any ? new YakuValue { Name = "混老头", Value = 2 } } : new YakuValue { Name = "清老头", Value = 1, Type = YakuType.Yakuman }; return(any ? new YakuValue { Name = "混全带幺九", Value = handStatus.HasFlag(HandStatus.Menqing) ? 2 : 1 } : new YakuValue { Name = "纯全带幺九", Value = handStatus.HasFlag(HandStatus.Menqing) ? 3 : 2 }); }
public static YakuValue 平和(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { if (!handStatus.HasFlag(HandStatus.Menqing)) { return(new YakuValue()); } int countOfSequence = 0; bool twoSide = false; foreach (var meld in decompose) { if (meld.Type != MeldType.Pair && meld.Type != MeldType.Sequence) { return(new YakuValue()); } if (meld.Type == MeldType.Sequence) { countOfSequence++; twoSide = twoSide || meld.IsTwoSideIgnoreColor(winningTile); } } if (countOfSequence == 4 && twoSide) { return new YakuValue { Name = "平和", Value = 1 } } ; return(new YakuValue()); }
public static YakuValue 绿一色(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { var counts = MahjongLogic.CountTiles(decompose); for (int i = 0; i < counts.Length; i++) { if (Greens.Contains(i)) { continue; } if (counts[i] > 0) { return(new YakuValue()); } } return(counts[Greens[Greens.Length - 1]] == 0 ? new YakuValue { Name = "纯绿一色", Value = settings.纯绿一色, Type = YakuType.Yakuman } : new YakuValue { Name = "绿一色", Value = 1, Type = YakuType.Yakuman }); }
public IEnumerator Run() { _Register(); _view.Enter(_playerData, _enemiesData); _fightStatus = FightStatus.Fighting; _roundStatus = RoundStatus.HeroTurn; _roundCount = 0; while (!_leave) { switch (_fightStatus) { case FightStatus.Fighting: yield return(_FightRound()); break; case FightStatus.FightResult: _BattleResultEvent(); _fightStatus = FightStatus.FightEnd; break; case FightStatus.FightEnd: break; } yield return(null); } }
private void _SetFightResultFlag(bool win) { _fightStatus = FightStatus.FightResult; _roundStatus = RoundStatus.None; _view.SetFightEndFlag(); _isWin = win; }
private void _EndHeroTurn(int pos) { _playerData.TeamHeroes[pos].SetEndTurnFlag(true); if (_CheckIsAllHeroTurnEnd()) { _roundStatus = RoundStatus.EnemyTurn; } }
public void ServerShutdown() { roundStatus = RoundStatus.Setup; playerServerStats = null; playerLocalStats = null; winnerText.GetComponent <Text>().text = ""; startRoundButton.SetActive(false); }
// GET: League/Scoring public ActionResult LeagueScoring(TournamentDetailsMvcModel model, int id, int divisionId = 0, int roundId = 0) { TournamentDetailsMvcModel input = new TournamentDetailsMvcModel(); var t = GlobalConfiguration.Connection.Tournaments_GetByID(id); input.TournamentName = t.TournamentName; input.Id = t.Id; input.DivisionsEntered = t.DivisionsEntered; input.DivisionsEntered = GlobalConfiguration.Connection.TeamGroupEntries_GetSpecific(t.DivisionsEntered); if (divisionId != 0) { DivisionModel division = t.DivisionsEntered.First(x => x.Id == divisionId); division = GlobalConfiguration.Connection.GetGroups(division); input.SelectedDivision = division; foreach (GroupModel gm in division.Groups) { var activeFound = false; for (int i = 0; i < gm.Rounds.Count; i++) { RoundStatus status = RoundStatus.Locked; if (!activeFound) { if (gm.Rounds[i].TrueForAll(x => x.Winner != null)) { status = RoundStatus.Complete; } else { status = RoundStatus.Active; activeFound = true; if (roundId == 0) { roundId = i + 1; } } } input.Rounds.Add(new RoundMvcModel { RoundName = "Round " + (i + 1), RoundNumber = i + 1, RoundId = roundId, Status = status, GroupId = gm.Id }); input.TempMatchups = GetMatchups(gm.Rounds[i], input.Id, divisionId, gm.Id, roundId, status); foreach (MatchupMvcModel mvc in input.TempMatchups) { input.Matchups.Add(mvc); } } } } return(View(input)); }
public void Resume() { _logger.LogInformation("恢复视频上墙"); if (m_CancellationTokeSource != null && !m_CancellationTokeSource.IsCancellationRequested) { m_CancellationTokeSource.Cancel(); } m_RoundStatus = RoundStatus.Running; }
///// <summary> ///// 触发 ///// </summary> //private void RaiseRoundSectionSwitchEvent() //{ // if (OnRoundSectionSwitch != null) // { // m_CurrentRoundSection = m_videoRoundScene.VideoRoundSections.ElementAt(m_RoundSectionIndex); // RoundEventArgs arg = new RoundEventArgs() { Section = m_CurrentRoundSection }; // OnRoundSectionSwitch(this, arg); // } //} ///// <summary> ///// 执行轮巡动作 ///// </summary> //protected abstract void ExecuteRoundAction(); public void Pause() { _logger.LogInformation("暂停视频上墙"); if (m_CancellationTokeSource == null || m_CancellationTokeSource.IsCancellationRequested) { m_CancellationTokeSource = new CancellationTokenSource(); } m_RoundStatus = RoundStatus.Pausing; }
public void Stop() { _logger.LogInformation("停止视频上墙"); m_RoundStatus = RoundStatus.Exit; if (m_CancellationTokeSource != null && !m_CancellationTokeSource.IsCancellationRequested) { m_CancellationTokeSource.Cancel(); } }
public Player(Socket socket, string name, int chips, int handSize) { ID = Guid.NewGuid(); Socket = socket; Name = name; Chips = chips; Status = RoundStatus.Unset; Hand = new Card[handSize]; }
public ActionResult Details(int id, int roundId = 0) { List <TournamentModel> tournaments = GlobalConfig.Connection.GetTournament_All(); try { TournamentMVCDetailsModel input = new TournamentMVCDetailsModel(); TournamentModel t = tournaments.Where(x => x.Id == id).First(); input.TournamentName = t.TournamentName; var orderedRounds = t.Rounds.OrderBy(x => x.First().MatchupRound).ToList(); bool activeRound = false; for (int i = 0; i < orderedRounds.Count; i++) { RoundStatus status = RoundStatus.Locked; if (!activeRound) { if (orderedRounds[i].TrueForAll(x => x.Winner != null)) { status = RoundStatus.Complete; } else { status = RoundStatus.Active; activeRound = true; if (roundId == 0) { // Setting the roundId to be the active round number roundId = i + 1; } } } // "i + 1" because our loop starts at 0, hence "int i = 0" input.Rounds.Add( new RoundMVCModel { RoundName = "Round " + (i + 1), Status = status, RoundNumber = i + 1 }); } // Converting a 1 based list to a 0 based list for lookup input.Matchups = GetMatchups(orderedRounds[roundId - 1], id, roundId); return(View(input)); } catch (Exception) { return(RedirectToAction("Index", "Home")); } }
public ActionResult Details(int id, int roundId = 0) { List <TournamentModel> tournaments = GlobalConfig.Connection.GetTournament_All(); try { var input = new TournamentMVCDetailsModel(); TournamentModel t = tournaments.Where(x => x.Id == id).First(); input.TournamentName = t.TournamentName; var orderedRounds = t.Rounds.OrderBy(x => x.First().MatchupRound).ToList(); var activeFound = false; for (int i = 0; i < orderedRounds.Count; i++) { RoundStatus status = RoundStatus.Locked; if (!activeFound) { if (orderedRounds[i].TrueForAll(x => x.Winner != null)) { status = RoundStatus.Complete; } else { status = RoundStatus.Active; activeFound = true; if (roundId == 0) { roundId = i + 1; } } } input.Rounds.Add( new RoundMVCModel { RoundName = "Round " + (i + 1), Status = status, RoundNumber = i + 1 }); } input.Matchups = GetMatchups(orderedRounds[roundId - 1], id, roundId); return(View(input)); } catch { return(RedirectToAction("Index", "Home")); } }
public static YakuValue 暗刻系(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { var count = decompose.Count(meld => meld.Type == MeldType.Triplet && !meld.Revealed); if (count < 3) { return(new YakuValue()); } Assert.IsTrue(count >= 3 && count <= 4, "There could not be more than 4 triplets in a complete hand"); var winningTileInOther = decompose.Any(meld => !meld.Revealed && (meld.Type == MeldType.Pair || meld.Type == MeldType.Sequence) && meld.ContainsIgnoreColor(winningTile)); if (handStatus.HasFlag(HandStatus.Tsumo)) { if (count == 3) { return new YakuValue { Name = "三暗刻", Value = 2 } } ; // count == 4 return(winningTileInOther ? new YakuValue { Name = "四暗刻·单骑听", Value = settings.四暗刻单骑, Type = YakuType.Yakuman } : new YakuValue { Name = "四暗刻", Value = 1, Type = YakuType.Yakuman }); } if (count == 3 && !winningTileInOther) { return(new YakuValue()); } if (count == 3 && winningTileInOther) { return new YakuValue { Name = "三暗刻", Value = 2 } } ; // count == 4 return(winningTileInOther ? new YakuValue { Name = "四暗刻·单骑听", Value = settings.四暗刻单骑, Type = YakuType.Yakuman } : new YakuValue { Name = "三暗刻", Value = 2 }); }
public void InitView(GameStatus game_status) { currentStatus = new RoundStatus(); SetNames(game_status.PlayerNamesk__BackingField.ToArray()); lbl_state.Content = "Bidding"; lbl_strong_shape.Content = ""; UpdateTakes(new[] { 0, 0, 0, 0 }); UpdateBids(new[] { "", "", "", "" }); UpdateScores(game_status.Scoresk__BackingField.ToArray()); ShowCards(new Card?[4] { null, null, null, null }); }
public static YakuValue 自摸(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { if (!handStatus.HasFlag(HandStatus.Menqing) || !handStatus.HasFlag(HandStatus.Tsumo)) { return(new YakuValue()); } return(new YakuValue { Name = "门前清自摸和", Value = 1 }); }
protected virtual IEnumerator MainPhase() { while (m_IsMainLoopEnd == false) { yield return(null); } m_RoundStatus = RoundStatus.EndPhase; m_StageManager.StartCoroutine(EndPhase()); yield return(null); }
private void Run() { m_RoundStatus = RoundStatus.Running; while (true) { if (m_RoundStatus == RoundStatus.Exit) { break; } var token = new CancellationTokenSource(); if (m_RoundStatus == RoundStatus.Pausing) { try { //暂停 Task.Delay(-1).Wait(m_CancellationTokeSource.Token); } catch (Exception ex) { Console.WriteLine("等待异常,Message:{0},\r\nStackTrace:{1}", ex.Message, ex.StackTrace); } } if (GoToNext) { Next(); } else { Previous(); GoToNext = true; } if (m_videoRoundScene.VideoRoundSections.Count == 1) //不轮巡 { Task.Delay(-1).Wait(m_CancellationTokeSource.Token); } else { try { //休眠 m_WaitTokenSource = new CancellationTokenSource(); Task.Delay(m_CurrentRoundSection.RoundInterval * 1000).Wait(m_WaitTokenSource.Token); } catch (Exception ex) { } } } Console.WriteLine("Round End at {0}, Task Status:{1}", DateTime.Now, m_Executor.Status); }
/// <summary> /// Note: lingshang and haidi should be obtained in baseHandStatus /// </summary> /// <param name="playerIndex"></param> /// <param name="CurrentRoundStatus"></param> /// <param name="winningTile"></param> /// <param name="baseHandStatus"></param> /// <returns></returns> public static PointInfo GetPointInfo(int playerIndex, ServerRoundStatus CurrentRoundStatus, Tile winningTile, HandStatus baseHandStatus, Tile[] doraTiles, Tile[] uraDoraTiles, int beiDora, GameSetting yakuSettings) { var zhenting = CurrentRoundStatus.IsZhenting(playerIndex); if (zhenting && !baseHandStatus.HasFlag(HandStatus.Tsumo)) { return(new PointInfo()); } var handData = CurrentRoundStatus.HandData(playerIndex); var handStatus = baseHandStatus; if (MahjongLogic.TestMenqing(handData.Melds)) { handStatus |= HandStatus.Menqing; } // test richi if (CurrentRoundStatus.RichiStatus(playerIndex)) { handStatus |= HandStatus.Richi; // test one-shot if (yakuSettings.HasOneShot && CurrentRoundStatus.OneShotStatus(playerIndex)) { handStatus |= HandStatus.OneShot; } // test WRichi if (CurrentRoundStatus.FirstTurn) { handStatus |= HandStatus.WRichi; } } // test first turn if (CurrentRoundStatus.FirstTurn) { handStatus |= HandStatus.FirstTurn; } var roundStatus = new RoundStatus { PlayerIndex = playerIndex, OyaPlayerIndex = CurrentRoundStatus.OyaPlayerIndex, CurrentExtraRound = CurrentRoundStatus.Extra, RichiSticks = CurrentRoundStatus.RichiSticks, FieldCount = CurrentRoundStatus.Field, TotalPlayer = CurrentRoundStatus.TotalPlayers }; var isQTJ = CurrentRoundStatus.GameSettings.GameMode == GameMode.QTJ; return(MahjongLogic.GetPointInfo(handData.HandTiles, handData.Melds, winningTile, handStatus, roundStatus, yakuSettings, isQTJ, doraTiles, uraDoraTiles, beiDora)); }
public static YakuValue 一发(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { if (handStatus.HasFlag(HandStatus.Menqing) && (handStatus.HasFlag(HandStatus.Richi) || handStatus.HasFlag(HandStatus.WRichi)) && handStatus.HasFlag(HandStatus.OneShot)) { return new YakuValue { Name = "一发", Value = 1 } } ; return(new YakuValue()); }
public static YakuValue 海底(List <Meld> decompose, Tile winningTile, HandStatus handStatus, RoundStatus roundStatus, GameSetting settings) { if (!handStatus.HasFlag(HandStatus.Haidi)) { return(new YakuValue()); } return(handStatus.HasFlag(HandStatus.Tsumo) ? new YakuValue { Name = "海底捞月", Value = 1 } : new YakuValue { Name = "河底摸鱼", Value = 1 }); }
public void StartRound() { Debug.Log("Starting round"); startRoundButton.SetActive(false); rulesMenu.SetActive(false); CleanupDisconnectedPlayers(); // Just in case there's a // Load game rules from input fields // Kills to win int ktw = killsToWin; bool tryParseKtw = int.TryParse(killsToWinInput.GetComponent <TMP_InputField>().text, out ktw); killsToWin = ktw; // Hit points int hp = hitPoints; bool tryParseHP = int.TryParse(hitPointsInput.GetComponent <TMP_InputField>().text, out hp); hitPoints = hp; // Damage int d = damage; bool tryParseDamage = int.TryParse(damageInput.GetComponent <TMP_InputField>().text, out d); damage = d; // Respawn Time float rt = respawnTime; bool tryParseRT = float.TryParse(respawnTimeInput.GetComponent <TMP_InputField>().text, out rt); respawnTime = rt; roundStatus = RoundStatus.InRound; foreach (PlayerSoul p in playerSouls) { if (p != null) { p.StartRound(); } } InitializeStats(); RpcStartRound(); }
public void UpdateRoundStatus(RoundStatus status, Card[][] allCards) { // if (status.Statek__BackingField != currentStatus.Statek__BackingField) // { // StartNewState(status.Statek__BackingField); // } currentStatus = status; lbl_state.Content = status.Statek__BackingField.ToString(); Brush red = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)); Brush black = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); lbl_Name0.Foreground = black; lbl_Name1.Foreground = black; lbl_Name2.Foreground = black; lbl_Name3.Foreground = black; switch (status.PlayerTurnk__BackingField) { case PlayerSeat.Self: lbl_Name0.Foreground = red; break; case PlayerSeat.West: lbl_Name1.Foreground = red; break; case PlayerSeat.North: lbl_Name2.Foreground = red; break; case PlayerSeat.East: lbl_Name3.Foreground = red; break; } var bids = (from b in status.Biddingsk__BackingField select b.HasValue ? String.Format("{0} {1}", b.Value.Amountk__BackingField, b.Value.Suitk__BackingField.ToString()) : "").ToArray(); UpdateBids(bids); ShowCards(status.CurrentPlayk__BackingField.ToArray()); lbl_strong_shape.Content = status.Trumpk__BackingField.HasValue ? status.Trumpk__BackingField.Value.ToString() : ""; UpdateTakes(status.TricksTakenk__BackingField.ToArray()); RecieveCards(allCards); }
public void UpdateRoundStatus(RoundStatus status) { // check if the state has changed if (status.Statek__BackingField != currentStatus.Statek__BackingField) { StartNewState(status.Statek__BackingField, status); } // if waiting for approval for card to throw if (cardToThrow != null && status.Statek__BackingField == RoundState.Playing) { cards.Remove(cardToThrow.Value); RecieveCards(); cardToThrow = null; } lbl_state.Content = status.Statek__BackingField.ToString(); // highlight current player currentStatus = status; Brush red = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)); Brush black = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); lbl_Name0.Foreground = black; lbl_Name1.Foreground = black; lbl_Name2.Foreground = black; lbl_Name3.Foreground = black; switch (status.PlayerTurnk__BackingField) { case PlayerSeat.Self: lbl_Name0.Foreground = red; break; case PlayerSeat.West: lbl_Name1.Foreground = red; break; case PlayerSeat.North: lbl_Name2.Foreground = red; break; case PlayerSeat.East: lbl_Name3.Foreground = red; break; } // update bids var bids = (from b in status.Biddingsk__BackingField select b.HasValue ? String.Format("{0} {1}", b.Value.Amountk__BackingField, b.Value.Suitk__BackingField.ToString()) : "").ToArray(); UpdateBids(bids); // update cards ShowCards(status.CurrentPlayk__BackingField.ToArray()); UpdateTakes(status.TricksTakenk__BackingField.ToArray()); }
private void StartNewState(RoundState roundState, RoundStatus status) { switch (roundState) { case RoundState.Contract: img_trump.Source = new BitmapImage(new Uri(ContractDialog.GetSuitImageUrl(status.Trumpk__BackingField), UriKind.Relative)); img_trump.Visibility = System.Windows.Visibility.Visible; break; case RoundState.Bidding: img_trump.Visibility = System.Windows.Visibility.Collapsed; break; } }
void client_RecieveRoundStatusUpdateReceived(object sender, RecieveRoundStatusUpdateReceivedEventArgs e) { roundStatus = e.status; if (gameTable != null) { gameTable.UpdateRoundStatus(roundStatus); } else { if (gameStatus != null) { StartGame(); } } }
public void InitView(GameStatus game_status, RoundStatus status) { currentStatus = status; currentGameStatus = game_status; SetNames(game_status.PlayerNamesk__BackingField.ToArray()); UpdateTakes(new[] { 0, 0, 0, 0 }); UpdateBids(new[] { "", "", "", "" }); UpdateScores(game_status.Scoresk__BackingField.ToArray()); ShowCards(new Card?[4] { null, null, null, null }); InitCardDisplay(); img_player_self.Source = new BitmapImage(new Uri(GetImageForPlayer(game_status.PlayerTypesk__BackingField[0], game_status.PlayerNamesk__BackingField[0], MainApp.photoUrl), UriKind.Absolute)); img_player_west.Source = new BitmapImage(new Uri(GetImageForPlayer(game_status.PlayerTypesk__BackingField[1], game_status.PlayerNamesk__BackingField[1], game_status.PlayerPhotosk__BackingField[1]), UriKind.Absolute)); img_player_north.Source = new BitmapImage(new Uri(GetImageForPlayer(game_status.PlayerTypesk__BackingField[2], game_status.PlayerNamesk__BackingField[2], game_status.PlayerPhotosk__BackingField[2]), UriKind.Absolute)); img_player_east.Source = new BitmapImage(new Uri(GetImageForPlayer(game_status.PlayerTypesk__BackingField[3], game_status.PlayerNamesk__BackingField[3], game_status.PlayerPhotosk__BackingField[3]), UriKind.Absolute)); scrl_chat.Visibility = game_status.PlayerTypesk__BackingField.Count(t => t.Equals("_human")) > 1 ? Visibility.Visible : System.Windows.Visibility.Collapsed; txt_chat_input.Visibility = scrl_chat.Visibility; }