Пример #1
0
        private void MonsterShot(MonsterShot monsterShot)
        {
            // no score from a rebound or from an enemy shot
            if (monsterShot.Munition is IStandardShot standardShot && (standardShot.HasRebounded || !(standardShot.Originator is IPlayer)))
            {
                return;
            }

            var energyRemoved   = Math.Min(monsterShot.Monster.Energy, monsterShot.Munition.Energy);
            var increaseToScore = (energyRemoved >> 1) + 1;

            this._score += increaseToScore;
        }
Пример #2
0
 public void TestEnemyShotByOtherMonster()
     {
     var monster = new Mock<IMonster>();
     monster.Setup(m => m.Energy).Returns(5);
     var shot = new Mock<IStandardShot>();
     var otherMonster = new Mock<IMonster>();
     shot.Setup(s => s.Originator).Returns(otherMonster.Object);
     shot.Setup(s => s.Energy).Returns(10);
         
     using (var scoreKeeper = new ScoreKeeper())
         {
         MonsterShot monsterShot = new MonsterShot(monster.Object, shot.Object);
         Messenger.Default.Send(monsterShot);
         Assert.AreEqual(0, scoreKeeper.CurrentScore);
         }
     }
Пример #3
0
    void Shoot()
    {
        muzzleFlash.Play();
        GunAudio.Play();

        RaycastHit hit;

        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name);
            Vector3 impact = hit.normal;

            MonsterShot monsterShot = hit.transform.GetComponent <MonsterShot>();
            if (monsterShot != null)
            {
                monsterShot.TakeDamage(damage);
            }
        }
    }
Пример #4
0
        public void TestEnemyShotByPlayer()
            {
            var monster = new Mock<IMonster>();
            monster.Setup(m => m.Energy).Returns(5);
            var shot = new Mock<IMunition>();
            var player = new Mock<IPlayer>();
            shot.Setup(s => s.Originator).Returns(player.Object);

            var expected = new[] { 10, 10, 20, 20, 30, 30, 30, 30, 30, 30, 30 };
            for (int i = 0; i <= 10; i++)
                {
                shot.Setup(s => s.Energy).Returns(i);
                
                using (var scoreKeeper = new ScoreKeeper())
                    {
                    MonsterShot monsterShot = new MonsterShot(monster.Object, shot.Object);
                    Messenger.Default.Send(monsterShot);
                    Assert.AreEqual(expected[i], scoreKeeper.CurrentScore);
                    }
                }
            }