Beispiel #1
0
		private CreateSpellCastResult(bool success, SpellState spellState, CastFailedReason reason, string reasonText = default)
		{
			Success = success;
			SpellState = spellState;
			Reason = reason;
			ReasonText = reasonText ?? reason.ToString();
		}
Beispiel #2
0
        public void CastSpell(SpellState spellState)
        {
            if (spellState == default)
            {
                OnCastFailed?.Invoke(null, CastFailedReason.SpellNotFound);
                return;
            }

            if (CurrentSpellCast != null)
            {
                if (CurrentSpellCast.Spell == spellState.Spell)
                {
                    OnCastFailed?.Invoke(spellState.Spell, CastFailedReason.AlreadyCasting);
                    return;
                }
                CurrentSpellCast.Cancel(CancelCastReason.CastReplaced);
            }

            var result = spellState.TryCreateSpellCast(out var newSpellCast, this);

            if (result.Success)
            {
                SetCurrentSpellCast(newSpellCast);
                OnNewSpellCast?.Invoke(CurrentSpellCast);
                CurrentSpellCast.Start();
                if (result.SpellState.Spell.OnGlobalCooldown)
                {
                    _globalCooldownRemaining = GlobalCooldown;
                    OnGlobalCooldownStarted?.Invoke(_globalCooldownRemaining);
                }
            }
            else
            {
                OnCastFailed?.Invoke(result.SpellState.Spell, result.Reason.GetValueOrDefault());
            }
        }
Beispiel #3
0
		public static CreateSpellCastResult Succeeded(SpellState spellState)
		{
			return new CreateSpellCastResult(true, spellState);
		}
Beispiel #4
0
		public static CreateSpellCastResult Failed(CastFailedReason reason, SpellState spellState, string reasonText = default)
		{
			return new CreateSpellCastResult(false, spellState, reason, reasonText);
		}
Beispiel #5
0
		private CreateSpellCastResult(bool success, SpellState spellState)
		{
			Success = success;
			SpellState = spellState;
			Reason = default;
		}