public static void GetPoint() { XmlDocument xd = new XmlDocument(); XmlReader xmlfile = MainActivity.Context.Resources.GetXml(Resource.Xml.database); xd.Load(xmlfile); XmlNodeList node = xd.SelectNodes("/resources/record"); if (node == null) { return; } foreach (XmlNode data in node) { if (data.Attributes == null) { continue; } var fu = Convert.ToInt32(data.SelectSingleNode("Fu")?.InnerText); var fan = Convert.ToInt32(data.SelectSingleNode("Fan")?.InnerText); var koAgareTotalPoint = Convert.ToInt32(data.SelectSingleNode("KoAgareTotalPoint")?.InnerText); var oyaAgareTotalPoint = Convert.ToInt32(data.SelectSingleNode("OyaAgareTotalPoint")?.InnerText); var oyaTsumoTotalPoint = Convert.ToInt32(data.SelectSingleNode("OyaTsumoTotalPoint")?.InnerText); var koTsumoTotalPoint = Convert.ToInt32(data.SelectSingleNode("KoTsumoTotalPoint")?.InnerText); var koTsumoLostPoint = Convert.ToInt32(data.SelectSingleNode("KoTsumoLostPoint")?.InnerText); var oyaTsumoLostPoint = Convert.ToInt32(data.SelectSingleNode("OyaTsumoLostPoint")?.InnerText); var point = new FuFanPoint(fu, fan, koAgareTotalPoint, oyaAgareTotalPoint, oyaTsumoTotalPoint, koTsumoTotalPoint, koTsumoLostPoint, oyaTsumoLostPoint); Element.FuFanPoints.Add(point); } }
public static void Method(int flagUp, int flagDown) { #region 初始化 _flagUp = flagUp; _flagDown = flagDown; _upPlayer = null; _downPlayer = null; _downPlayers = null; _targetPoint = null; _upPoint = null; _downOyaPoint = null; _downKoPoint = null; _isOyaAgare = false; _isTsumo = false; #endregion //对号入座 _upPlayer = Element.Players[_flagUp - 1]; _downPlayer = Element.Players[_flagDown - 1]; _downPlayers = Element.Players.Where(p => p.Name != _upPlayer.Name).Select(p => p); MainActivity.RunningOtherProgram = true; //判断是否亲和牌 _isOyaAgare = Element.Players[_flagUp - 1].Name == Element.Session.OyaName; //判断是否自摸 _isTsumo = _flagUp == _flagDown; //标准化点数 StandardizePoint(); if (_targetPoint == null) { MessageBox.Show("输入点数出错"); UpdateText.Set(MainActivity.ControlTextView, "谁胡牌?"); } else { AgareMethod(); //进行点数交换 if (MainActivity.DoubleRonCheckBox.Checked) { DoubleRonPrepare(); //双响准备 } else { AfterAgare(); //胡牌后处理 } } }
private static void StandardizePoint()//标准化点数 { var txt = MainActivity.InpuTextView.Text; var txtStrings = txt.Split(new[] { '/' }); int totalPoint; if (txt == "") { _targetPoint = null; return; } #region "7900" // "7900" length==1 if (txtStrings.Length == 1) { totalPoint = Convert.ToInt32(txt); if (_isOyaAgare && _isTsumo) { _targetPoint = Element.FuFanPoints.Where( p => p.OyaTsumoTotalPoint == totalPoint) .Select(p => p) .FirstOrDefault(); _upPoint = _targetPoint?.OyaTsumoTotalPoint; _downOyaPoint = null; _downKoPoint = _targetPoint?.OyaTsumoLostPoint; } else if (_isOyaAgare) { _targetPoint = Element.FuFanPoints.Where( p => p.OyaAgareTotalPoint == totalPoint) .Select(p => p) .FirstOrDefault(); _upPoint = _targetPoint?.OyaAgareTotalPoint; _downOyaPoint = null; _downKoPoint = null; } else if (_isTsumo) { _targetPoint = Element.FuFanPoints.Where( p => p.KoTsumoTotalPoint == totalPoint) .Select(p => p) .FirstOrDefault(); _upPoint = _targetPoint?.KoTsumoTotalPoint; _downOyaPoint = _targetPoint?.OyaTsumoLostPoint; _downKoPoint = _targetPoint?.KoTsumoLostPoint; } else { _targetPoint = Element.FuFanPoints.Where( p => p.KoAgareTotalPoint == totalPoint) .Select(p => p) .FirstOrDefault(); _upPoint = _targetPoint?.KoAgareTotalPoint; _downOyaPoint = null; _downKoPoint = null; } } #endregion #region "2000/3900" // "2000/3900" 子自摸only length==2 else if (txtStrings.Length == 2 && txtStrings[0] != "" && txtStrings[1] != "") { var lowPoint = Convert.ToInt32(txtStrings[0]) < Convert.ToInt32(txtStrings[1]) ? txtStrings[0] : txtStrings[1]; var highPoint = lowPoint == txtStrings[0] ? txtStrings[1] : txtStrings[0]; _targetPoint = Element.FuFanPoints.Where( p => p.KoTsumoLostPoint.ToString() == lowPoint && p.OyaTsumoLostPoint.ToString() == highPoint) .Select(p => p) .FirstOrDefault(); if (_isOyaAgare == true) { _targetPoint = null; } _upPoint = _targetPoint?.KoTsumoTotalPoint; _downOyaPoint = _targetPoint?.OyaTsumoLostPoint; _downKoPoint = _targetPoint?.KoTsumoLostPoint; } #endregion #region "//2000" // "//2000" 亲自摸only length==3 && [0]==null && [1]==null else if (txtStrings.Length == 3 && txtStrings[0] == "" && txtStrings[1] == "" && txtStrings[2] != "") { _targetPoint = Element.FuFanPoints.Where( p => p.OyaTsumoLostPoint.ToString() == txtStrings[2] && (p.OyaTsumoTotalPoint / 3).ToString() == txtStrings[2]) .Select(p => p) .FirstOrDefault(); if (_isOyaAgare == false) { _targetPoint = null; } _upPoint = _targetPoint?.OyaTsumoTotalPoint; _downOyaPoint = null; _downKoPoint = _targetPoint?.OyaTsumoLostPoint; } #endregion #region "30//4" // "30//4" length==3 && [0]!=null && [1]==null else if (txtStrings.Length == 3 && txtStrings[0] != "" && txtStrings[1] == "" && txtStrings[2] != "" && Convert.ToInt32(txtStrings[0]) <= 110) { int fan = Convert.ToInt32(txtStrings[2]) < 13 ? Convert.ToInt32(txtStrings[2]) : 13; if (fan <= 4)//4翻及以下 { _targetPoint = Element.FuFanPoints.Where( p => p.Fu.ToString() == txtStrings[0] && p.Fan == fan) .Select(p => p) .FirstOrDefault(); } else//5翻以上 { _targetPoint = Element.FuFanPoints.Where( p => p.Fan == fan) .Select(p => p) .FirstOrDefault(); } if (_targetPoint == null) { return; } if (_isOyaAgare && _isTsumo) { _upPoint = _targetPoint.OyaTsumoTotalPoint; _downOyaPoint = null; _downKoPoint = _targetPoint.OyaTsumoLostPoint; if (_targetPoint.Fu != 110 && _targetPoint.Fan != 1) { MessageBox.Show("亲家自摸" + _targetPoint.Fu + "符" + _targetPoint.Fan + "番为\n" + _targetPoint.OyaTsumoLostPoint + "点all"); } else { _targetPoint = null; } } else if (_isOyaAgare) { _upPoint = _targetPoint.OyaAgareTotalPoint; _downOyaPoint = null; _downKoPoint = null; if (_targetPoint.Fu != 20) { MessageBox.Show("亲家荣和" + _targetPoint.Fu + "符" + _targetPoint.Fan + "番为\n" + _targetPoint.OyaAgareTotalPoint + "点"); } else { _targetPoint = null; } } else if (_isTsumo) { _upPoint = _targetPoint.KoTsumoTotalPoint; _downOyaPoint = _targetPoint.OyaTsumoLostPoint; _downKoPoint = _targetPoint.KoTsumoLostPoint; if (_targetPoint.Fu != 110 || _targetPoint.Fan != 1) { MessageBox.Show("子家自摸" + _targetPoint.Fu + "符" + _targetPoint.Fan + "番为\n" + _targetPoint.KoTsumoLostPoint + "点/" + _targetPoint.OyaTsumoLostPoint + "点"); } else { _targetPoint = null; } } else { _upPoint = _targetPoint?.KoAgareTotalPoint; _downOyaPoint = null; _downKoPoint = null; if (_targetPoint.Fu != 20) { MessageBox.Show("子家荣和" + _targetPoint.Fu + "符" + _targetPoint.Fan + "番为\n" + _targetPoint.KoAgareTotalPoint + "点"); } else { _targetPoint = null; } } } #endregion }