You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
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() { |
|
} |
|
|
|
}
|
|
|