public SubProcedureEnum Next() { var prePri = CurrentPrimaryStage; var preSub = CurrentSubStage; int intPri = (int)CurrentPrimaryStage; int intSub = (int)CurrentSubStage; intSub = (intSub + 1) % Helper.EnumHelper.GetValues(typeof(SubProcedureEnum)).Length; if (intSub == 0) { intPri = (intPri + 1) % Helper.EnumHelper.GetValues(typeof(PrimaryProcedureEnum)).Length; } CurrentPrimaryStage = (PrimaryProcedureEnum)intPri; CurrentSubStage = (SubProcedureEnum)intSub; if (GameForward != null) { GameForward(prePri, preSub, CurrentPrimaryStage, CurrentSubStage); } return(CurrentSubStage); }
void Next() { var prePri = CurrentPrimaryStage; var preSub = CurrentSubStage; int intPri = (int)CurrentPrimaryStage; int intSub = (int)CurrentSubStage; intSub = (intSub + 1) % Helper.EnumHelper.GetValues(typeof(SubProcedureEnum)).Length; if (intSub == 0) { intPri = (intPri + 1) % Helper.EnumHelper.GetValues(typeof(PlayerEnum)).Length; } CurrentPrimaryStage = (PlayerEnum)intPri; CurrentSubStage = (SubProcedureEnum)intSub; if (CurrentSubStage == SubProcedureEnum.Checking) { bool blackWin = board.HasConsecutiveNPiece(Status.StateEnum.black, 5); bool whiteWin = board.HasConsecutiveNPiece(Status.StateEnum.white, 5); if (blackWin && whiteWin) { OnGameOver(Status.StateEnum.empty); } else if (blackWin) { OnGameOver(Status.StateEnum.black); } else if (whiteWin) { OnGameOver(Status.StateEnum.white); } else if (!board.Content.Any(e => e.State == Status.StateEnum.empty)) { OnGameOver(Status.StateEnum.empty); } else { Next(); return; } } OnTurnChange(); if (CurrentSubStage == SubProcedureEnum.Rotation && IsCurrentPlayerHuman()) { OnRotateButtonSwitch(true); } if (CurrentSubStage == SubProcedureEnum.Placement) { if (!IsCurrentPlayerHuman()) { new Thread(new ThreadStart(GetCurrentPlayer().Active)).Start(); //GetCurrentPlayer().Active(); } else { Placeable = true; } } }