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; }
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); } }
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); } } }
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); } } }