示例#1
0
    public void OnEndDrag(PointerEventData eventData)
    {
        if (m_piece.IsStatic || !m_piece.Interactable)
        {
            return;
        }

        Vector3 position = transform.position;

        PieceCoordinates coord = Layout.PosToCoord(position);

        SlotController slot = Layout.GetSlotAt(coord);

        PieceController other = GameController.Instance.Pieces.Find(p => p.Coordinates == coord);

        if (!slot || other)
        {
            transform.position = m_originalPosition;

            SFX.Instance.PlayOneShot(SFXData.Type.Pop);
        }
        else
        {
            position = Layout.CoordToPos(coord);

            m_piece.Coordinates.Set(coord);

            transform.position = position;

            m_piece.StateChanged();

            SFX.Instance.PlayOneShot(SFXData.Type.Positive);
        }
    }
示例#2
0
    private bool CanPlacePieceInConnection(EConnectionPoints connection, Dictionary <PieceCoordinates, MapNode> coordinateMap)
    {
        PieceCoordinates nextCoordinates;

        switch (connection)
        {
        default:
            nextCoordinates = new PieceCoordinates(0, 0);
            break;

        case EConnectionPoints.Up:
            nextCoordinates = new PieceCoordinates(Coordinates.X, Coordinates.Z + 1);
            break;

        case EConnectionPoints.Down:
            nextCoordinates = new PieceCoordinates(Coordinates.X, Coordinates.Z - 1);
            break;

        case EConnectionPoints.Left:
            nextCoordinates = new PieceCoordinates(Coordinates.X - 1, Coordinates.Z);
            break;

        case EConnectionPoints.Right:
            nextCoordinates = new PieceCoordinates(Coordinates.X + 1, Coordinates.Z);
            break;
        }

        return(!coordinateMap.ContainsKey(nextCoordinates));
    }
示例#3
0
 /**
  * Get the board slot at coordinate
  */
 public abstract SlotController GetSlotAt(PieceCoordinates coord);
示例#4
0
 /**
  * Convert coordinates to position
  */
 public abstract Vector3 CoordToPos(PieceCoordinates coord);
示例#5
0
 public void Set(PieceCoordinates coord)
 {
     this.x = coord.x;
     this.y = coord.y;
     this.z = coord.z;
 }