package de.fau.cs.mad.fly.features.upgrades;
import com.badlogic.gdx.math.Vector3;
import de.fau.cs.mad.fly.I18n;
import de.fau.cs.mad.fly.features.IFeatureInit;
import de.fau.cs.mad.fly.features.game.CollectibleObjects;
import de.fau.cs.mad.fly.features.overlay.InfoOverlay;
import de.fau.cs.mad.fly.features.upgrades.types.Collectible;
import de.fau.cs.mad.fly.features.upgrades.types.ResizeGatesUpgrade;
import de.fau.cs.mad.fly.sound.AudioManager;
import de.fau.cs.mad.fly.game.GameController;
import de.fau.cs.mad.fly.res.GateCircuit;
import de.fau.cs.mad.fly.res.GateGoal;
/**
* Used to display and handle gate resize upgrades.
*
* @author Tobi
*
*/
public class ResizeGatesUpgradeHandler extends CollectibleObjects implements IFeatureInit {
private GateCircuit gateCircuit;
/**
* Creates an resize gates upgrade handler.
*/
public ResizeGatesUpgradeHandler() {
super("ResizeGatesUpgrade");
}
@Override
public void init(GameController game) {
gateCircuit = game.getLevel().getGateCircuit();
}
@Override
protected void handleCollecting(Collectible c) {
GameController.getInstance().getAudioManager().play(AudioManager.Sounds.PICKUP);
ResizeGatesUpgrade upgrade = (ResizeGatesUpgrade) c;
resizeGates(upgrade.getScale());
InfoOverlay.getInstance().setOverlay(I18n.t("resizeGatesUpgradeCollected"), 3);
}
/**
* Resizes the gates and the gate holes with the scaling vector.
*
* @param scale
* The scaling vector of the resizing of the gates.
*/
private void resizeGates(Vector3 scale) {
Vector3 scaling = new Vector3();
for (GateGoal g : gateCircuit.allGateGoals()) {
if (g.getDisplay() != null) {
g.getDisplay().transform.scl(scale);
g.getDisplay().transform.getScale(scaling);
g.getDisplay().getRigidBody().getCollisionShape().setLocalScaling(scaling);
}
g.transform.scl(scale);
g.transform.getScale(scaling);
g.getRigidBody().getCollisionShape().setLocalScaling(scaling);
}
}
}