|
|
|
package engine.jobs;
|
|
|
|
|
|
|
|
import engine.gameManager.ZoneManager;
|
|
|
|
import engine.job.AbstractScheduleJob;
|
|
|
|
import engine.objects.Building;
|
|
|
|
import engine.objects.City;
|
|
|
|
import org.pmw.tinylog.Logger;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This class handles upgrading of buildings, swapping the
|
|
|
|
* appropriate mesh according to the building's blueprint.
|
|
|
|
* @Author
|
|
|
|
*/
|
|
|
|
public class UpgradeBuildingJob extends AbstractScheduleJob {
|
|
|
|
|
|
|
|
private final Building rankingBuilding;
|
|
|
|
|
|
|
|
public UpgradeBuildingJob(Building building) {
|
|
|
|
super();
|
|
|
|
this.rankingBuilding = building;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void doJob() {
|
|
|
|
|
|
|
|
|
|
|
|
// Must have a building to rank!
|
|
|
|
|
|
|
|
if (rankingBuilding == null) {
|
|
|
|
Logger.error("Attempting to rank null building");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Make sure the building is currently set to upgrade
|
|
|
|
// (Duplicate job sanity check)
|
|
|
|
|
|
|
|
if (rankingBuilding.isRanking() == false)
|
|
|
|
return;
|
|
|
|
|
|
|
|
// SetCurrentRank also changes the mesh and maxhp
|
|
|
|
// accordingly for buildings with blueprints
|
|
|
|
|
|
|
|
rankingBuilding.setRank(rankingBuilding.getRank() + 1);
|
|
|
|
|
|
|
|
if(rankingBuilding.getBlueprint().isWallPiece()){
|
|
|
|
City cityObject = ZoneManager.getCityAtLocation(rankingBuilding.loc);
|
|
|
|
if(cityObject.getTOL().getRank() == 8) {
|
|
|
|
if (rankingBuilding.getBlueprint() != null && rankingBuilding.getBlueprint().getBuildingGroup() != null && rankingBuilding.getBlueprint().isWallPiece()) {
|
|
|
|
float currentHealthRatio = rankingBuilding.getCurrentHitpoints() / rankingBuilding.healthMax;
|
|
|
|
float newMax = rankingBuilding.healthMax * 1.1f;
|
|
|
|
rankingBuilding.setMaxHitPoints(newMax);
|
|
|
|
rankingBuilding.setHealth(rankingBuilding.healthMax * currentHealthRatio);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Reload the object
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void _cancelJob() {
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|