Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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;
        }
    }
Exemplo n.º 3
0
        /// <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);
            }
        }
Exemplo n.º 4
0
 /// <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;
 }
Exemplo n.º 5
0
 /// <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);
 }