예제 #1
0
 public void ChangeAvatarPositionOnScene(IActionObjectAnchor anchor)
 {
     if (_anchors.Contains(anchor))
     {
         _currentObject.ChangeAnchor(anchor);
     }
 }
예제 #2
0
    private bool SearchObject(Vector2 inputPosition)
    {
        var hit = Physics2D.OverlapCircle(inputPosition, 0.1f);

        if (hit != null)
        {
            IActionObjectAnchor anchor = hit.GetComponent <IActionObjectAnchor>();

            if (anchor != null)
            {
                if (_actionObjectSpawner.IsUsing)
                {
                    _actionObjectSpawner.ChangeAvatarPositionOnScene(anchor);
                }
                else if (_spawnObjectSpawner.IsUsing)
                {
                    _spawnObjectSpawner.ChangeAvatarPositionOnScene(anchor);
                }
                return(true);
            }
            else if (hit.GetComponent <ActionObject>() != null && !IsSpawnersUsing())
            {
                _actionObjectSpawner.DeletedObject(hit.GetComponent <ActionObject>());
                return(true);
            }
            else
            {
                return(false);
            }
        }
        else
        {
            return(false);
        }
    }
예제 #3
0
 public void ChangeAnchor(IActionObjectAnchor anchor)
 {
     if (IsUpgrade() && !anchor.IsFree || !IsUpgrade() && anchor.IsFree)
     {
         ChangeCurrentAnchor(anchor);
     }
 }
예제 #4
0
    protected virtual void FillingObjectSpawner(IGeneratedBy actionObject, IActionObjectAnchor anchor)
    {
        var avatar = Instantiate(actionObject.Avatar).GetComponent <Transform>();

        _currentObject = new ObjectSpawnerData(actionObject, avatar);
        anchor         = anchor ?? GetCorrectAnchorsArray().First();
        _currentObject.ChangeAnchor(anchor);
        ToggleAnchors();
    }
예제 #5
0
    protected override void FillingObjectSpawner(IGeneratedBy actionObject, IActionObjectAnchor anchor)
    {
        var avatar = Instantiate(actionObject.Avatar).GetComponent <Transform>();

        _currentObject = new ObjectSpawnerData(actionObject, avatar);
        if (_currentObject.IsUpgrade())
        {
            anchor = _currenUpgradetAnchor != null ? _currenUpgradetAnchor : GetCorrectAnchorsArray().First();
        }
        else
        {
            anchor = GetCorrectAnchorsArray().First();
        }
        _currentObject.ChangeAnchor(anchor);
        ToggleAnchors();
    }
예제 #6
0
    public override void ConfirmSetObject()
    {
        if (IsUsing)
        {
            if (_currentObject.IsUpgrade())
            {
                _currentObject.UsedUpgrade(false);
                _currenUpgradetAnchor = _currentObject.CurrentAnchor;
            }
            else
            {
                _currentObject.SetObjectOnScene(_spawnPool.GetObject() as ActionObject, false);
                Save(_levelName);
            }

            var anchors = _anchors.Where(a => !a.IsFree).ToArray();
            anchors = anchors.Where(a => a.InstalledFacility.IsCanUpgrade()).ToArray();
            if (anchors.Length == 0)
            {
                UsedMaxUpgrade?.Invoke();
            }
            base.ConfirmSetObject();
        }
    }
예제 #7
0
 private void ChangeCurrentAnchor(IActionObjectAnchor anchor)
 {
     _anchor         = anchor;
     Avatar.position = anchor.GetPosition();
 }