//駒の移動範囲取得と強調 private void ChangeMovePoint() { selectAllRelativePieceMoveRange = GameManager.ManagerStore.piecesManager.GetMoveRange(selectPiece.GetKind()); selectRelativePieceMoveRange = selectAllRelativePieceMoveRange[selectPiece.GetShape()]; //絶対位置に変換し、移動可能なマス(敵の駒が存在するか、駒がない)をハイライト selectAbsolutePieceMoveRange = new List <int>(); selectedPieceDirection = selectPiece.GetForwardDirection(); int absFaceId; foreach (int moveFace in selectRelativePieceMoveRange) { absFaceId = GameManager.ManagerStore.fieldManager.ConvertRelative2AbsId(selectPiece.GetFaceId(), moveFace, selectedPieceDirection); //Queenの二週目の挙動を無理やり矯正(kisuke) if (selectPiece.GetKind() == PieceKind.Queen && moveFace == (selectPiece.GetShape())) { var fFaceId_ = selectPiece.GetForwardFaceId(); var ffFace_ = ManagerStore.fieldManager.GetFace2Face(fFaceId_, selectPiece.GetFaceId()); absFaceId = ffFace_.GetComponent <Field.SurfaceInfo>().FaceId; } int returnPieceId = ManagerStore.fieldManager.IsPieceOnFace(absFaceId); if (returnPieceId == -1 || (returnPieceId > -1 && ManagerStore.cp.HasPiece(returnPieceId) == true)) { selectAbsolutePieceMoveRange.Add(absFaceId); } } GameManager.ManagerStore.fieldManager.PointMovableFace(selectAbsolutePieceMoveRange); }
//駒を実際に動かす ターン交代 勝利条件確認 private void ExcuteMotion(Piece.Pieces piece, int moveFaceId, int rotateDirection) { fromFaceIdforRecord = piece.GetFaceId(); toFaceIdforRecord = moveFaceId; if (moveFaceId > -1) { if (CanMoveCollision(TM.IsPlayerTurn(), moveFaceId, piece) == true) { //Debug.Log("pi:"+piece.IsAnimate()); piece.MoveBeginEffect(); //Debug.Log("pi:"+piece.IsAnimate()); piece.MovePiece(moveFaceId); piece.MoveFinishEffect(); //Debug.Log("pi:" + piece.IsAnimate()); if (effectHumanPiece == -1) { GameManager.ResultData.positionRecord.Add(Position.PositionData.SaveByPlayer(ManagerStore.humanPlayer, ManagerStore.cp)); //Move.ReversibleMove rm = new Move.ReversibleMove(); //rm.InitNotCapturedMove(fromFaceIdforRecord, toFaceIdforRecord); //GameManager.ResultData.moveRecord.Add(rm); } } } else { //駒を移動しない場合Record記録 移動する場合はエフェクト終了後に記録 GameManager.ResultData.positionRecord.Add(Position.PositionData.SaveByPlayer(ManagerStore.humanPlayer, ManagerStore.cp)); //Move.ReversibleMove rm = new Move.ReversibleMove(); //rm.InitRotation(fromFaceIdforRecord,rotateDirection); //GameManager.ResultData.moveRecord.Add(rm); } if (rotateDirection != 0) { piece.RotatePiece(rotateDirection); } GJ.WinnerCheck(); TM.ChangeTuen(); }