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 PawnMove() { PawnMoveSlot(_side.Equals(ESelectStartSide.FirstSide) ? _slot.x + 1 : _slot.x - 1); if (BoardManage.instance.detailBoxes[_slot.x].boxManages[_slot.y].GetPieces().isFirstMove) { PawnMoveSlotFirst(_side.Equals(ESelectStartSide.FirstSide) ? 2 : -2); } void PawnMoveSlot(int slotX) { int _slotPlayer = slotX; if (BoardManage.instance.detailBoxes.CheckOutOfRange(_slotPlayer)) { // Up if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y].transform.childCount <= 0) { _allSlot.Add(new Vector2Int(_slotPlayer, _slot.y)); } // Left if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages.CheckOutOfRange(_slot.y - 1)) { var _piece = BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y - 1].GetPieces(); if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y - 1].transform.childCount > 0 && _piece != null && !_piece.eSelectSide.Equals(_side)) { _allSlot.Add(new Vector2Int(_slotPlayer, _slot.y - 1)); } } // Right if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages.CheckOutOfRange(_slot.y + 1)) { var _piece = BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y + 1].GetPieces(); if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y + 1].transform.childCount > 0 && _piece != null && !_piece.eSelectSide.Equals(_side)) { _allSlot.Add(new Vector2Int(_slotPlayer, _slot.y + 1)); } } } } void PawnMoveSlotFirst(int slotX) { int _slotPlayer = _slot.x + slotX; if (BoardManage.instance.detailBoxes[slotX > 0 ? _slotPlayer - 1 : _slotPlayer + 1].boxManages[_slot.y].transform.childCount <= 0) { if (BoardManage.instance.detailBoxes[_slotPlayer].boxManages[_slot.y].transform.childCount <= 0) { _allSlot.Add(new Vector2Int(_slotPlayer, _slot.y)); } } } }
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; } }); } }
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; } }); } }
public void OnPointerClick(PointerEventData eventData) { if (!isClick && BoardManage.instance.eTurnPlayer.Equals(eSelectSide)) { BoxManage _box = GetComponentInParent <BoxManage>(); if (BoardManage.instance.checkersManage) { BoardManage.instance.checkersManage.ClearTemp(); BoardManage.instance.checkersManage.oldSlot = _box.slot; } isClick = !isClick; meshRdr.material = eSelectSide.Equals(ESelectStartSide.FirstSide) ? BoardManage.instance.selectionFirstMat : BoardManage.instance.selectionSecondMat; BoardManage.instance.subBoardMovePieces.CheckMovePieces(ePieces, eSelectSide, _box.slot); BoardManage.instance.presentPieces?.DefaulValue(); BoardManage.instance.presentPieces = this; } }