niwa99/Tower-Defense

View on GitHub
app/src/main/java/de/dhbw/map/objects/enemy/Tank.java

Summary

Maintainability
A
1 hr
Test Coverage
package de.dhbw.map.objects.enemy;

import android.widget.ImageView;

import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;

import de.dhbw.activities.GameActivity;
import de.dhbw.game.EnemyType;
import de.dhbw.map.structure.MapStructure;

import static de.dhbw.util.Constants.*;

public class Tank extends AEnemy {

    protected Timer timer;

    /**
     * Constructor
     * @param label
     * @param level
     * @param gameActivity
     */
    public Tank(String label, int level, GameActivity gameActivity) {
        super(label, UUID.randomUUID(), getTankHealthpointsByLevel(level), getTankSpeedByLevel(level), getTankValueByLevel(level), getTankLifePointsCostsByLevel(level), gameActivity, EnemyType.TANK, DRAWABLE_TANK, DRAWABLE_TANK_HITTED);
        timer = new Timer();
    }

    /**
     * Constructor
     * @param label
     * @param level
     * @param gameActivity
     * @param enemyView
     */
    public Tank(String label, int level, GameActivity gameActivity, EnemyView enemyView) {
        super(label, UUID.randomUUID(), getTankHealthpointsByLevel(level), getTankSpeedByLevel(level), getTankValueByLevel(level), getTankLifePointsCostsByLevel(level), gameActivity, EnemyType.TANK, enemyView);
        timer = new Timer();
    }

    /**
     * Constructor (only for test purposes)
     * @param label
     * @param level
     * @param image
     * @param gameActivity
     */
    public Tank(String label, int level, ImageView image, GameActivity gameActivity) {
        super(label, UUID.randomUUID(), getTankHealthpointsByLevel(level), getTankSpeedByLevel(level), getTankValueByLevel(level), getTankLifePointsCostsByLevel(level), gameActivity, EnemyType.TANK, DRAWABLE_TANK, DRAWABLE_TANK_HITTED);
        timer = new Timer();
    }

    /**
     * Get healthpoints by level.
     * @param level
     * @return healthpoints
     */
    private static int getTankHealthpointsByLevel(int level) {
        return TANK_HEALTHPOINTS * level;
    }

    /**
     * Get speed by level.
     * @param level
     * @return speed
     */
    public static int getTankSpeedByLevel(int level) {
        return TANK_SPEED;
    }

    /**
     * Get value by level.
     * @param level
     * @return value
     */
    private static int getTankValueByLevel(int level) {
        return TANK_VALUE * (level / 5 + 1);
    }

    /**
     * Get lifepointcosts by level.
     * @param level
     * @return lifepointcosts
     */
    public static int getTankLifePointsCostsByLevel(int level) {
        return TANK_LIFE_POINT_COSTS * (level / 5 + 1);
    }
}