public void TryChangeState(State target) { switch (target) { case State.Closed: _up.gameObject.SetActive(false); _down.gameObject.SetActive(false); _maskRect.gameObject.SetActive(false); _statusText.text = "Press A to join"; break; case State.Selecting: if (_state == State.Ready) { _characterSelect._readyCount--; } if (_characterSpotlightAnchor.transform.childCount != 0) { Destroy(_characterSpotlightAnchor.GetChild(0).gameObject); } _up.gameObject.SetActive(true); _down.gameObject.SetActive(true); _maskRect.gameObject.SetActive(true); _statusText.text = ""; break; case State.Ready: _characterSelect._readyCount++; Vector3 position = _camera.Camera.ScreenToWorldPoint( _characterSpotlightAnchor.position); // TODO maybe select locked character?? Resource resource = _characterResources.Characters[_selectedIndex]; World.Objects.Characters.Character character = resource.Create( position, _characterSpotlightAnchor, Quaternion.Euler(new Vector3(0, 180, 0))); character.transform.localScale = new Vector3( _characterSpotlightSize, _characterSpotlightSize, _characterSpotlightSize); _up.gameObject.SetActive(false); _down.gameObject.SetActive(false); _maskRect.gameObject.SetActive(false); _statusText.text = "Ready"; break; } _state = target; }
public bool TryUse(World.Objects.Characters.Character source) { if (IsAvailable(source)) { DoUse(source); return(true); } return(false); }
public virtual bool TryUseAgainst(World.Objects.Characters.Character source, World.Objects.BaseObject target) { if (IsAvailable(source)) { DoUseAgainst(source, target); return(true); } return(false); }
public override bool Verify(World.Objects.Characters.Character target) { foreach (var cond in _conditions) { if (!cond.Verify(target)) { return(true); } } return(false); }
public override bool TryUse(World.Objects.Characters.Character source) { if (_item.TryUse(source)) { if (_item.Quantity == 0) { Remove(); } return(true); } return(false); }
//// public virtual bool TryApply(World.Objects.Characters.Character source, World.Objects.Actions.ActionProduct action, World.Objects.Characters.Character target) { if (!Unconditional) { foreach (var cond in GlobalConditions) { if (cond == null) { continue; } if (!cond.Verify()) { return(false); } } foreach (var cond in TargetConditions) { if (cond == null) { continue; } if (!Check(cond, target)) { return(false); } } foreach (var cond in SourceConditions) { if (cond == null) { continue; } if (!Check(cond, source)) { return(false); } } } DoApply(source, action, target); return(true); }
protected virtual void DoApply(BaseObject source, World.Objects.Actions.ActionProduct action, World.Objects.Characters.Character target) { DoApply(source, action, target as BaseObject); }
// Attach no listener public virtual IConditionedState GetListenedState(World.Objects.Characters.Character target) { return(null); }
public void OnCharacterStart(World.Objects.Characters.Character character) { _character = character; }
public virtual bool TryUse(World.Objects.Characters.Character source) { return(true); }
private void DoUse(World.Objects.Characters.Character source) { _action.Use(source); _cooldownTimer.Start(); _endLagTimer.Start(); }
public virtual void DoUseAgainst(World.Objects.Characters.Character source, World.Objects.BaseObject target) { _action.UseAgainst(source, target); _cooldownTimer.Start(); _endLagTimer.Start(); }
public virtual bool IsAvailable(World.Objects.Characters.Character source) { return(!_resource.IsConditional || source.Verify(_resource.Condition)); }
public void OnCharacterChange(World.Objects.Characters.Character character) { _character = character; }