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; } }
public void setStatus(int v) { _status = (clickStatus)v; }