Example #1
0
    public void EnttiyEntering_TargetedTrap_ChangesHealth(EntityType entityType, TrapTargetType trapTargetType, int expectedHealthChange)
    {
        //Arrange
        var trap   = new Trap();
        var player = Substitute.For <IEntity>();

        player.entityType.Returns(entityType);
        var startingHealth = player.health;

        //Act
        trap.HandleCharacterEntered(player, trapTargetType);

        //Assert
        Assert.AreEqual(expectedHealthChange, player.health - startingHealth);
    }
    public void HandleCharacterEntered(IEntity target, TrapTargetType trapTargetType)
    {
        switch (trapTargetType)
        {
        case TrapTargetType.Player:
            if (target.entityType == EntityType.Player)
            {
                Debug.Log("Damaged player");
                target.health--;
            }
            break;

        case TrapTargetType.Npc:
            if (target.entityType == EntityType.Npc)
            {
                Debug.Log("Damaged npc");
                target.health--;
            }
            break;

        case TrapTargetType.Animal:
            if (target.entityType == EntityType.Animal)
            {
                Debug.Log("Damaged Animal");
                target.health++;
            }
            break;

        case TrapTargetType.Any:
            Debug.Log("Damaged Anonymous");
            target.health--;
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(trapTargetType), trapTargetType, null);
        }
    }