public void Init(Elemental.Element element = Elemental.Element.NONE) { _instance = this; _rigidbody = GetComponent <Rigidbody>(); SetupStateMachine(); _cameraController = FindObjectOfType <GolfCameraController>(); StopAllForces(); ResetToPosition(InitialPosition); _stateMachine.ChangeState(_waitForInputState); _cameraController.SetInitialCamera(); EventManager.Instance.StartListening(ShootEvent.EventName, PanFinished); _elementalAbsorber = transform.GetComponent <ElementalAbsorber>(); if (element == Elemental.Element.NONE) { return; } if (element != Elemental.Element.ANY) { _elementalAbsorber.CurrentElement = element; return; } List <Elemental.Element> availableColors = new List <Elemental.Element>(); availableColors.Add(Elemental.Element.EARTH); availableColors.Add(Elemental.Element.FIRE); availableColors.Add(Elemental.Element.WATER); _elementalAbsorber.CurrentElement = (Elemental.Element)UnityEngine.Random.Range(0, availableColors.Count); }
public void OnElementChange(Elemental.Element element) { if (_renderer == null) { return; } Color color = Color.magenta; switch (element) { case Elemental.Element.NONE: color = Color.white; break; case Elemental.Element.FIRE: color = Color.red; break; case Elemental.Element.WATER: color = Color.blue; break; case Elemental.Element.ICE: color = Color.cyan; break; case Elemental.Element.AIR: color = Color.white; break; case Elemental.Element.EARTH: color = Color.green; break; default: color = Color.magenta; Debug.Log("Element not supported: " + element.ToString()); break; } color.a = _renderer.material.color.a; _renderer.material.color = color; var trailRenderer = GetComponent <TrailRenderer>(); if (trailRenderer != null) { color.a = trailRenderer.startColor.a; trailRenderer.startColor = color; color.a = trailRenderer.endColor.a; trailRenderer.endColor = color; } }
/// <summary> /// Returns adjusted damage taking elemental effects into account /// </summary> public float ReturnEffectiveDamage(float baseDamage, Elemental.Element attack, Elemental.Element defense) { if (attack == Elemental.Element.None || defense == Elemental.Element.None) { return(baseDamage); } else { foreach (var combination in interactions) { if (attack == combination.attacking && defense == combination.defending) { return(baseDamage * combination.damageFactor); } } // Exception case print("Interaction is not set in TestingManager script"); print(attack + " - " + defense); return(baseDamage); } }
/// <summary> /// Damages attached character /// </summary> /// <param name="entityHealth">Health component of Entity</param> /// <param name="attackingElement">Element of effect</param> /// <param name="dmg">Amount of damage to deal</param> protected void Damage(Health entityHealth, Elemental.Element attackingElement, float dmg) { entityHealth.MHealth -= dmg; }
/// <summary> /// Damages attached character /// </summary> /// <param name="attackingElement">Element of effect</param> /// <param name="dmg">Amount of damage to deal</param> public void Damage(Elemental.Element attackingElement, float dmg) { MHealth -= TestingManager.Instance.ReturnEffectiveDamage(dmg, attackingElement, GetComponent <Elemental>().characterElement); }