Beispiel #1
0
        public void Update(float a_elapsedTime, List <Model.Enemy> a_enemies)
        {
            m_player.Update();

            RegenerateMana(a_elapsedTime, m_player);

            RegenerateHp(a_elapsedTime, m_player);

            m_spellSystem.Update(a_elapsedTime);

            DecreaseGlobalCD(m_player, a_elapsedTime);

            //Tar bort en spelares target om fienden dör eller evadar.
            if (m_player.Target != null && m_player.Target.GetType() == GameModel.ENEMY_NPC)
            {
                Enemy enemy = m_player.Target as Enemy;
                if (!m_player.Target.IsAlive() || enemy.IsEvading)
                {
                    m_player.Target      = null;
                    m_player.IsAttacking = false;
                }
            }

            //Kollar om spelaren attackerar.
            if (m_player.IsAttacking)
            {
                m_player.InCombat = true;
                //Testar om spelaren och hans target kolliderar / är i range för hitboxen.
                if (m_player.Target.ThisUnit.Bounds.Intersects(m_player.PlayerArea))
                {
                    m_player.IsWithinMeleRange = true;
                    //Om spelarens hit cooldown är mindre än 0 så slår spelaren.
                    if (m_player.SwingTime <= 0)
                    {
                        //Om player target fienden lever så sänks hans hp.
                        if (m_player.Target.IsAlive() && m_player.IsAlive())
                        {
                            m_player.Target.CurrentHp -= (m_player.AutohitDamage - m_player.Target.Armor);
                        }
                        //Sätter cooldown på ett slag.
                        m_player.SwingTime = 50;
                    }
                    else if (!m_player.IsCastingSpell)
                    {
                        m_player.SwingTime -= 1;
                    }
                }
                else
                {
                    m_player.IsWithinMeleRange = false;
                }
            }
            else
            {
                m_player.InCombat = false;
            }

            if (!m_player.IsAlive())
            {
                m_player.Target      = null;
                m_player.IsAttacking = false;

                if (m_player.SpawnTimer < 0)
                {
                    m_player.Spawn();
                }
                else
                {
                    m_player.SpawnTimer -= a_elapsedTime;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Main method ffor updating the player logic
        /// </summary>
        /// <param name="elapsedTime">Elapsed time in milleseconds</param>
        /// <param name="enemies">List of active enemies</param>
        public void Update(float elapsedTime, List <Model.Enemy> enemies)
        {
            _player.Update();

            RegenerateMana(elapsedTime, _player);

            RegenerateHp(elapsedTime, _player);

            _spellSystem.Update(elapsedTime);

            DecreaseGlobalCD(_player, elapsedTime);

            //Untarget the players target if it is dead or evading
            if (_player.Target != null && _player.Target.GetType() == GameModel.ENEMY_NPC)
            {
                Enemy enemy = _player.Target as Enemy;
                if (!_player.Target.IsAlive() || enemy.IsEvading)
                {
                    _player.Target      = null;
                    _player.IsAttacking = false;
                }
            }
            if (_player.IsAttacking)
            {
                _player.InCombat = true;
                //Checks if the player is in range of the enemy hitbox
                if (_player.Target.ThisUnit.Bounds.Intersects(_player.PlayerArea))
                {
                    _player.IsWithinMeleRange = true;
                    //Hit cooldown has ended
                    if (_player.SwingTime <= 0)
                    {
                        //If enemy is alive; reduce its hp
                        if (_player.Target.IsAlive() && _player.IsAlive())
                        {
                            _player.Target.CurrentHp -= (_player.AutohitDamage - _player.Target.Armor);
                        }

                        //Setting new cooldown
                        _player.SwingTime = 50;
                    }
                    else if (!_player.IsCastingSpell)
                    {
                        _player.SwingTime -= 1;
                    }
                }
                else
                {
                    _player.IsWithinMeleRange = false;
                }
            }
            else
            {
                _player.InCombat = false;
            }

            //If player is not alive
            if (!_player.IsAlive())
            {
                _player.Target      = null;
                _player.IsAttacking = false;

                if (_player.SpawnTimer < 0)
                {
                    _player.Spawn();
                }
                else
                {
                    _player.SpawnTimer -= elapsedTime;
                }
            }
        }