예제 #1
0
        private void onCharacterClickHandler(object publishedEvent)
        {
            CharacterClickEvent e = publishedEvent as CharacterClickEvent;
            var        position   = e.ClickedPosition;
            IClickable obj        = e.ClickedObject?.GetComponent <IClickable>();
            Character  character  = e.ClickedObject?.GetComponent <Character>();

            Observer.Publish(new ResetSingleEffectEvent("Character_On_Ground_Click_Effect"));

            if (character == this)
            {
                _status = clickStatus.CHARACTER;
            }
            else if (obj != null)
            {
                if (_status == clickStatus.FRIST_CLICK &&
                    obj.Contains(_fristClickPosition))
                {
                    _status = clickStatus.SECOND_CLICK;
                }
                else if ((_status == clickStatus.FRIST_CLICK &&
                          !obj.Contains(_fristClickPosition)) ||
                         _status == clickStatus.CHARACTER)
                {
                    _fristClickPosition = e.ClickedObject.transform.position;
                    obj.isClicked       = true;
                    _status             = clickStatus.FRIST_CLICK;
                }

                ClickPos = e.ClickedObject.transform.position;
            }
            else if (e.ClickedObject?.tag == "ground") //todo: hardcoded
            {
                if (_status == clickStatus.FRIST_CLICK &&
                    Vector3.Distance(position, _fristClickPosition) < 0.5f)
                {
                    _status = clickStatus.SECOND_CLICK;
                }
                else if ((_status == clickStatus.FRIST_CLICK &&
                          Vector3.Distance(position, _fristClickPosition) > 0.5f) ||
                         _status == clickStatus.CHARACTER)
                {
                    Observer.Publish(new ExecuteEffectEvent(position, "Character_On_Ground_Click_Effect"));
                    _fristClickPosition = position;
                    _status             = clickStatus.FRIST_CLICK;
                }

                ClickPos = position;
            }
            else if (e.ClickedObject == null)
            {
                _status = clickStatus.ESC;
                Observer.Publish(new VoidResetEvent());
                isClicked = false;
            }
        }
예제 #2
0
 public void setStatus(int v)
 {
     _status = (clickStatus)v;
 }