Ejemplo n.º 1
0
    public void OnEndDrag(PointerEventData data)
    {
        ConstantHandler.Instance.ComponentDragged = false;
        if (ConstantHandler.Instance.ComponentAdded)
        {
            IVector3 pos = ConstantHandler.Instance.PositionComponentAdded;

            if ((_typeOfItem == GridHandler.SpotType.OR_CENTRE || _typeOfItem == GridHandler.SpotType.AND_CENTRE) && _grid.isOnGrid(pos.x, pos.y, pos.z - 1) && _grid.isOnGrid(pos.x, pos.y, pos.z + 1))
            {
                sib1 = _grid.GetGridSpot(pos.x, pos.y, pos.z - 1);
                sib2 = _grid.GetGridSpot(pos.x, pos.y, pos.z + 1);
                _sib.Add(sib1);
                _sib.Add(sib2);

                GridHandler.GridSpot eld;
                eld = _grid.GetGridSpot(pos.x, pos.y, pos.z);
                _grid.SetSpotToType(_typeOfItem, pos.x, pos.y, pos.z);
                _grid.AttachComponent(pos.x, pos.y, pos.z);
                _grid.SetSiblingsForComponent(pos.x, pos.y, pos.z, _sib, GridHandler.ComponentDirection.FRONT, GridHandler.ComponentDirection.BACK);
                _grid.SetEldest(sib1.Position.x, sib1.Position.y, sib1.Position.z, eld.Position);
                _grid.SetEldest(sib2.Position.x, sib2.Position.y, sib2.Position.z, eld.Position);
            }
            else if (_typeOfItem != GridHandler.SpotType.OR_CENTRE && _typeOfItem != GridHandler.SpotType.AND_CENTRE)
            {
                if (_grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.OR_CENTRE || _grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.AND_CENTRE)
                {
                    List <GridHandler.GridSpot> sib = _grid.GetSiblings(pos.x, pos.y, pos.z);
                    foreach (GridHandler.GridSpot s in sib)
                    {
                        _grid.SetSpotToType(GridHandler.SpotType.EMPTY, s.Position.x, s.Position.y, s.Position.z);
                        _grid.AttachComponent(s.Position.x, s.Position.y, s.Position.z);
                    }
                }
                else if (_grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.OR_LEFT || _grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.OR_RIGHT || _grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.AND_LEFT || _grid.GetComponentType(pos.x, pos.y, pos.z) == GridHandler.SpotType.AND_RIGHT)
                {
                    eldest = _grid.GetEldest(pos.x, pos.y, pos.z);
                    List <GridHandler.GridSpot> sib = _grid.GetSiblings(eldest.x, eldest.y, eldest.z);
                    foreach (GridHandler.GridSpot s in sib)
                    {
                        _grid.SetSpotToType(GridHandler.SpotType.EMPTY, s.Position.x, s.Position.y, s.Position.z);
                        _grid.AttachComponent(s.Position.x, s.Position.y, s.Position.z);
                    }
                    _grid.SetSpotToType(GridHandler.SpotType.EMPTY, eldest.x, eldest.y, eldest.z);
                    _grid.AttachComponent(eldest.x, eldest.y, eldest.z);
                }
                _grid.SetSpotToType(_typeOfItem, pos.x, pos.y, pos.z);
                _grid.AttachComponent(pos.x, pos.y, pos.z);
            }

            ConstantHandler.Instance.PositionComponentAdded = IVector3.zero;
            ConstantHandler.Instance.ComponentAdded         = false;
        }
        Destroy(gameObject);
    }