public void AttackedByPlayer(IGamePlayer i_player) { int playerAttackPower = Mathf.Max(i_player.GetAttackPowerForType(DefenseType), 0); int damage = Mathf.Max(playerAttackPower - Defense, 1); RemainingHP -= damage; SendModelChangedEvent(); }
public void WhenAttackedByPlayer_ExpectedDamageRemovedFromRemainingHP(int i_playerAttackPower, int i_monsterDefense, int i_expectedDamage) { IGamePlayer mockPlayer = Substitute.For <IGamePlayer>(); mockPlayer.GetAttackPowerForType(Arg.Any <int>()).Returns(i_playerAttackPower); IMonsterData mockMonsterData = Substitute.For <IMonsterData>(); mockMonsterData.GetMaxHP().Returns(100); mockMonsterData.GetDefense().Returns(i_monsterDefense); GameMonster systemUnderTest = new GameMonster(mockMonsterData); systemUnderTest.AttackedByPlayer(mockPlayer); int expectedHP = 100 - i_expectedDamage; Assert.AreEqual(expectedHP, systemUnderTest.RemainingHP); }