Skip to content
This repository has been archived by the owner on Jul 27, 2018. It is now read-only.

Commit

Permalink
fix bug
Browse files Browse the repository at this point in the history
  • Loading branch information
Cyl18 committed Feb 18, 2018
1 parent a19d0b7 commit 972c077
Showing 1 changed file with 32 additions and 17 deletions.
49 changes: 32 additions & 17 deletions CardSharp/GameSteps/CommandParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,18 @@ public void Prepare(Desk desk)

public void Parse(Desk desk, Player player, string command)
{
if (!desk.Players.Contains(player))
if (ParseInternal(desk, player, command)) return;

if (RunHostedCheck(desk))
return;
if (desk.CurrentRule != null)
RunAutoPassCheck(desk);
}

private bool ParseInternal(Desk desk, Player player, string command)
{
if (!desk.Players.Contains(player))
return true;
if (desk.LastSuccessfulSender == desk.CurrentPlayer)
{
desk.CurrentRule = null;
Expand All @@ -32,31 +42,31 @@ public void Parse(Desk desk, Player player, string command)
case "结束游戏":
desk.AddMessage("CNM");
desk.FinishGame();
break;
return true;
case "记牌器":
desk.AddMessage(CardCounter.GenerateCardString(desk));
break;
return true;
case "全场牌数":
desk.AddMessage(string.Join(Environment.NewLine,
desk.PlayerList.Select(p => $"{p.ToAtCode()}: {p.Cards.Count}")));
break;
return true;
case "弃牌":
player.GiveUp = true;
desk.AddMessage("弃牌成功");
return;
return true;
case "托管":
player.HostedEnabled = true;
desk.AddMessage("托管成功");
RunHostedCheck(desk);
return;
return true;
case "结束托管":
player.HostedEnabled = false;
desk.AddMessage("结束成功");
break;
return true;
}

if (!IsValidPlayer(desk, player))
return;
return true;

switch (command)
{
Expand Down Expand Up @@ -105,9 +115,10 @@ public void Parse(Desk desk, Player player, string command)
break;
}

if (desk.CurrentPlayer.Cards.Count == 0) {
if (desk.CurrentPlayer.Cards.Count == 0)
{
PlayerWin(desk, player);
return;
return true;
}

if (command.StartsWith(""))
Expand Down Expand Up @@ -135,20 +146,19 @@ public void Parse(Desk desk, Player player, string command)
}
}

if (desk.LastSuccessfulSender == desk.CurrentPlayer) {
if (desk.LastSuccessfulSender == desk.CurrentPlayer)
{
desk.CurrentRule = null;
desk.LastCards = null;
}

if (desk.CurrentPlayer.Cards.Count == 0) {
if (desk.CurrentPlayer.Cards.Count == 0)
{
PlayerWin(desk, player);
return;
return true;
}

if (RunHostedCheck(desk))
return;
if (desk.CurrentRule != null)
RunAutoPassCheck(desk);
return false;
}

private void RunAutoPassCheck(Desk desk)
Expand Down Expand Up @@ -203,6 +213,11 @@ private static void PlayerWin(Desk desk, Player player)

private void AnalyzeGiveUpAndMoveNext(Desk desk)
{
if (desk.State == GameState.Unknown)
{
return;
}

do
{
MoveNext();
Expand Down

0 comments on commit 972c077

Please sign in to comment.