private void OnDragBegin() { if (go != null) { m_pieceItem = go.GetComponent <PieceItem>(); if (m_pieceItem != null) { m_pieceItem.OnDragBegin(); isDrage = true; } } }
public override void Init(int width, int height) { base.Init(width, height); pieceControls = new PieceItem[8]; for (int i = 0; i < 8; i++) { pieceControls[i] = new PieceItem(this, 8 + (i % 2) * 192, 111 + (i / 2) * 55, 193, 56); pieceControls[i].Init(i); } RefreshInfo(); OnFrame(0, 0); }
/// <summary> /// 棋子复活 /// </summary> /// <param name="lastEat"></param> /// <param name="to"></param> private void PieceReborn(int lastEat, Vector2 to) { int color = lastEat / 10; int type = lastEat % 10; string pieceName = ""; if (color == (int)Config.PieceColor.BLACK) { pieceName = "Black_"; } else { pieceName = "White_"; } switch ((Config.PieceType)type) { case Config.PieceType.P: pieceName = pieceName + "P"; break; case Config.PieceType.N: pieceName = pieceName + "N"; break; case Config.PieceType.B: pieceName = pieceName + "B"; break; case Config.PieceType.R: pieceName = pieceName + "R"; break; case Config.PieceType.Q: pieceName = pieceName + "Q"; break; case Config.PieceType.K: pieceName = pieceName + "K"; break; } GameObject temp = GameObject.Instantiate(m_piece); temp.name = to.x + "_" + to.y; temp.transform.parent = m_qizi.transform; temp.SetActive(true); PieceItem pieceItem = temp.AddComponent <PieceItem>(); pieceItem.InitView(temp, new Piece((Config.PieceColor)color, (Config.PieceType)type, (int)to.x, (int)to.y), false); pieceItem.isReborn = true; App.ObjectPoolManager.RegisteObject(pieceName, "FX/" + pieceName, 0, 30, -1); App.ObjectPoolManager.Instantiate(pieceName, (GameObject obj) => { if (color == (int)Config.PieceColor.BLACK) { obj.transform.localRotation = Quaternion.Euler(0, 180, 0); } obj.SetActive(true); obj.transform.parent = temp.transform; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = new Vector3(1.1f, 1.1f, 1.1f); pieceItem.pieceModel = obj; }); }
/// <summary> /// 初始化棋盘 /// </summary> private void InitChessBoard() { for (int y = 0; y < Config.Board.MaxY; y++) { for (int x = 0; x < Config.Board.MaxX; x++) { int piece = App.ChessLogic.GetPiece(x, y); if (piece >= 0) { int color = piece / 10; int type = piece % 10; string pieceName = ""; if (color == (int)Config.PieceColor.BLACK) { pieceName = "Black_"; } else { pieceName = "White_"; } switch ((Config.PieceType)type) { case Config.PieceType.P: pieceName = pieceName + "P"; break; case Config.PieceType.N: pieceName = pieceName + "N"; break; case Config.PieceType.B: pieceName = pieceName + "B"; break; case Config.PieceType.R: pieceName = pieceName + "R"; break; case Config.PieceType.Q: pieceName = pieceName + "Q"; break; case Config.PieceType.K: pieceName = pieceName + "K"; break; } GameObject temp = GameObject.Instantiate(m_piece); temp.transform.parent = m_qizi.transform; temp.SetActive(true); PieceItem pieceItem = temp.AddComponent <PieceItem>(); pieceItem.InitView(temp, new Piece((Config.PieceColor)color, (Config.PieceType)type, x + 1, y + 1), false); App.ObjectPoolManager.RegisteObject(pieceName, "FX/" + pieceName, 0, 30, -1); App.ObjectPoolManager.Instantiate(pieceName, (GameObject obj) => { if (selfColor == Config.PieceColor.WHITE) { obj.transform.localRotation = Quaternion.Euler(0, 180, 0); } obj.SetActive(true); obj.transform.parent = temp.transform; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = new Vector3(1.1f, 1.1f, 1.1f); pieceItem.pieceModel = obj; }); } } } }
public PieceItemMediator(PieceItem pieceItem, string name) : base(name + NAME) { m_viewComponent = pieceItem; }
private void OnUndoClick() { Debug.Log("OnUndoClick"); App.ChessLogic.Undo(m_lastFrom, m_lastTo, m_lastEat); if (m_lastEat > -1) { int color = m_lastEat / 10; int type = m_lastEat % 10; string pieceName = ""; if (color == (int)Config.PieceColor.BLACK) { pieceName = "Black_"; } else { pieceName = "White_"; } switch ((Config.PieceType)type) { case Config.PieceType.P: pieceName = pieceName + "P"; break; case Config.PieceType.N: pieceName = pieceName + "N"; break; case Config.PieceType.B: pieceName = pieceName + "B"; break; case Config.PieceType.R: pieceName = pieceName + "R"; break; case Config.PieceType.Q: pieceName = pieceName + "Q"; break; case Config.PieceType.K: pieceName = pieceName + "K"; break; } GameObject temp = GameObject.Instantiate(m_chess); temp.name = m_lastTo.x + "_" + m_lastTo.y; temp.transform.parent = m_qizi.transform; temp.SetActive(true); PieceItem pieceItem = temp.AddComponent <PieceItem>(); pieceItem.InitView(temp, new Piece((Config.PieceColor)color, (Config.PieceType)type, (int)m_lastTo.x, (int)m_lastTo.y), true); pieceItem.isReborn = true; App.ObjectPoolManager.RegisteObject(pieceName, "FX/" + pieceName, 0, 30, -1); App.ObjectPoolManager.Instantiate(pieceName, (GameObject obj) => { if (color == (int)Config.PieceColor.BLACK) { obj.transform.localRotation = Quaternion.Euler(0, 180, 0); } obj.SetActive(true); obj.transform.parent = temp.transform; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = new Vector3(1.1f, 1.1f, 1.1f); pieceItem.pieceModel = obj; }); } Vector2[] body = new Vector2[] { m_lastFrom, m_lastTo, new Vector2(m_lastEat, 0) }; m_mediator.NotifyUndo(body); }