public virtual void Activate(UseableObject[] objectsToActivate, TycoonEntity activator) { foreach(UseableObject obj in objectsToActivate) { activator.UseObject(obj); } }
public void UseObject(UseableObject objectToUse) { if (mState == TycoonEntityStates.CLIMBING || mState == TycoonEntityStates.USING) { return; } if (objectToUse.Activate(this)) { mCurrentUsingObject = objectToUse; mUseStartTime = Time.realtimeSinceStartup; EventManager.Instance.AddHandler<UseableObjectEvent>(UseableObjectEventHandler); SetState(TycoonEntityStates.USING); } }
public void UseableObjectEventHandler(object sender, UseableObjectEvent evt) { if (evt.Sender == mCurrentUsingObject) { mCurrentUsingObject = null; SetState(TycoonEntityStates.IDLE); EventManager.Instance.RemoveHandler<UseableObjectEvent>(UseableObjectEventHandler); } }
public UseableObjectEvent(TycoonEntity activator, UseableObject.UseableObjectStates objectState, object sender) : base(Vector3.zero, sender) { Activator = activator; ObjectState = objectState; }
private void OnTriggerExit() { this.useableObject = null; }
private void OnTriggerEnter(Collider other) { this.useableObject = other.gameObject.GetComponent <UseableObject>(); }