public void OffBoxInteraction(ESelectStartSide eSelectStartSide) { if (eSelectStartSide.Equals(ESelectStartSide.FirstSide)) { allPiecesFirstPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = true; } }); allPiecesSecondPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = false; } }); } else { allPiecesFirstPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = false; } }); allPiecesSecondPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = true; } }); } }
public void CheckMovePieces(EPieces ePieces, ESelectStartSide eSelectSide, Vector2Int slot, bool isCheckmate = false) { _allSlot = new List <Vector2Int>(); _slot = slot; _side = eSelectSide; switch (ePieces) { case EPieces.Pawn: PawnMove(); break; case EPieces.Rook: RookMove(); break; case EPieces.Knight: KnightMove(); break; case EPieces.Bishop: BishopMove(); break; case EPieces.Queen: QueenMove(); break; case EPieces.King: KingMove(); break; case EPieces.PawnHott: PawnHottMove(); break; case EPieces.Hott: HottMove(); break; default: break; } _allSlot = _allSlot.Distinct().OrderBy(item => item.x).ThenBy(item => item.y).ToList(); (isCheckmate ? (System.Action)Checkmate : CheckInteractBoard)(); }
IEnumerator OffBoxInteraction(ESelectStartSide eSelectStartSide, float times = 0) { yield return(new WaitForSeconds(times)); if (eSelectStartSide.Equals(ESelectStartSide.FirstSide)) { allPiecesFirstPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = true; } }); allPiecesSecondPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = false; } }); } else { allPiecesFirstPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = false; } }); allPiecesSecondPlayers.ForEach(item => { if (item) { item.thisCollider.enabled = true; } }); } }
void Start() { _thisTog.onValueChanged.AddListener((result) => { if (_thisTog.isOn && isFirstSelect) { ESelectStartSide selectStartColor = BoardManage.instance.presentPieces.eSelectSide; var _remove = selectStartColor.Equals(ESelectStartSide.FirstSide) ? BoardManage.instance.chessManage.allPiecesFirstPlayers.Remove(BoardManage.instance.presentPieces) : BoardManage.instance.chessManage.allPiecesSecondPlayers.Remove(BoardManage.instance.presentPieces); BoardManage.instance.presentTargetBox.ClearChild(); BasePieces _piece = Instantiate(SelectPieces(), BoardManage.instance.presentTargetBox.transform); Destroy(_piece.GetComponent <Rigidbody>()); _piece.eSelectSide = selectStartColor; _piece.transform.localPosition = Vector3.zero; BoardManage.instance.presentPieces = _piece; if (selectStartColor.Equals(ESelectStartSide.FirstSide)) { _piece.meshRdr.material = BoardManage.instance.firstPlayerMat; BoardManage.instance.chessManage.allPiecesFirstPlayers.Add(_piece); } else { _piece.meshRdr.material = BoardManage.instance.secondPlayerMat; BoardManage.instance.chessManage.allPiecesSecondPlayers.Add(_piece); } EnchantPawn.CallBackSelectEnchant?.Invoke(false); } isFirstSelect = result; }); }
void SpawnPieceSingle(ESelectStartSide eSelectStartColor, BasePieces piece, Vector2Int slot, Material mat, List <BasePieces> basePieces) { Spawn(BoardManage.instance.detailBoxes[slot.x].boxManages[slot.y].transform); void Spawn(Transform parentPiece) { BasePieces _pieces = Instantiate(piece, parentPiece); _pieces.eSelectSide = eSelectStartColor; _pieces.meshRdr.material = mat; basePieces.Add(_pieces); } }
public void SwichTurn() { subBoardMovePieces.ClearBorad(); eTurnPlayer = ~(eTurnPlayer - 1); if (chessManage) { chessManage.CallBackCheckKingCheckmate?.Invoke(); chessManage.OffBoxInteraction(eTurnPlayer); } else { checkersManage.OffBoxInteraction(eTurnPlayer); } }
IEnumerator IEEatPiece(EPieces ePieces, ESelectStartSide eSelectSide, Vector2Int slot) { ClearTemp(); ClearNullList(); yield return(new WaitForFixedUpdate()); if (allPiecesFirstPlayers.Count(item => item) <= 0) { SideWin.CallBackSideWin?.Invoke(ESelectStartSide.SecondSide); } else if (allPiecesSecondPlayers.Count(item => item) <= 0) { SideWin.CallBackSideWin?.Invoke(ESelectStartSide.FirstSide); } else { if (isEatPiece) { oldSlot = BoardManage.instance.presentTargetBox.slot; yield return(new WaitForFixedUpdate()); yield return(StartCoroutine(BoardManage.instance.subBoardMovePieces.CheckChainingEat(ePieces, eSelectSide, slot))); } if (BoardManage.instance.presentTargetBox.isPawnEnchant && ePieces.Equals(EPieces.PawnHott)) { EnchantPawn.CallBackAutoEnchant?.Invoke(); } else if (BoardManage.instance.checkersManage.CheckHaveEatPiece()) { BoardManage.instance.checkersManage.OffBoxInteraction(BoardManage.instance.eTurnPlayer); } else { BoardManage.instance.presentPieces?.DefaulValue(); BoardManage.instance.SwichTurn(); } } }
public IEnumerator CheckChainingEat(EPieces ePieces, ESelectStartSide eSelectSide, Vector2Int slot) { BoardManage.instance.checkersManage.isEatPiece = false; _allSlot = new List <Vector2Int>(); _slot = slot; _side = eSelectSide; switch (ePieces) { case EPieces.PawnHott: PawnHottMove(true); break; case EPieces.Hott: HottMove(true); break; default: break; } if (BoardManage.instance.checkersManage.CheckHaveEatPiece()) { _allSlot = _allSlot.Distinct().OrderBy(item => item.x).ThenBy(item => item.y).ToList(); CheckInteractBoard(); } yield return(new WaitForFixedUpdate()); }
public void EatPiece(Vector2Int presentSlot, EPieces ePieces, ESelectStartSide eSelectSide, Vector2Int slot) { if (presentSlot.x > oldSlot.x) // Up { if (presentSlot.y > oldSlot.y) { if (tempEatUpRight && presentSlot.y > tempEatUpRight.transform.parent.GetComponent <BoxManage>().slot.y) { Debug.Log($"UR"); Destroy(tempEatUpRight.gameObject); isEatPiece = true; } else { Debug.Log($"OUR"); } } else { if (tempEatUpLeft && presentSlot.y < tempEatUpLeft.transform.parent.GetComponent <BoxManage>().slot.y) { Debug.Log($"UL"); Destroy(tempEatUpLeft.gameObject); isEatPiece = true; } else { Debug.Log($"OUL"); } } } else // Down { if (presentSlot.y > oldSlot.y) { if (tempEatDownRight && presentSlot.y > tempEatDownRight.transform.parent.GetComponent <BoxManage>().slot.y) { Debug.Log($"DR"); Destroy(tempEatDownRight.gameObject); isEatPiece = true; } else { Debug.Log($"ODR"); } } else { if (tempEatDownLeft && presentSlot.y < tempEatDownLeft.transform.parent.GetComponent <BoxManage>().slot.y) { Debug.Log($"DL"); Destroy(tempEatDownLeft.gameObject); isEatPiece = true; } else { Debug.Log($"ODL"); } } } StartCoroutine(IEEatPiece(ePieces, eSelectSide, slot)); }
void Start() { _selectStartColor = GetComponent <BasePieces>().eSelectSide; BoardManage.instance.chessManage.CallBackCheckKingCheckmate += CheckPiecesEatKing; }