123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package pathgame.rendering;
- import me.hammerle.snuviengine.api.Renderer;
- import pathgame.gameplay.Level;
- import pathgame.gameplay.Player;
- /**
- * A container for holding everything about the renderer for the score menu
- *
- * @author julia
- */
- public class ScoreMenuRenderer
- {
- /**
- * Recalculates the rendering positions and settings of the menu-elements on
- * the screen every rendertick based on the gamelogic in the gametick
- *
- * @param r the renderer
- * @param lag the current lag
- * @param level the current level containing the player and the map
- */
- public void renderTick(Renderer r, float lag, Level level)
- {
- float windowWidth = r.getViewWidth();
- float windowHeight = r.getViewHeight();
- float paddingX = 30;
- float paddingY = 50;
- r.setMixColorEnabled(false);
- r.setColorEnabled(true);
- r.setTextureEnabled(false);
- r.setBlendingEnabled(true);
- r.getColorRenderer().drawRectangle(paddingX, paddingY, windowWidth - paddingX, windowHeight - paddingY, 0x90000000);
- r.setTextureEnabled(true);
- r.translateTo(0.0f, 0.0f);
- float scale = scale(r, 1);
- Player p = level.getPlayer();
- String message = String.format("&2%d&f of &2%d&f Energy used",
- p.getEnergyUsed(), p.getEnergySupply());
- r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * 0.15f, message);
- message = getMessage(p.getEnergyUsed(), level.getAlgorithmValue(), p.getEnergySupply());
- r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * (-0.15f), message);
- scale = scale(r, 2);
- if(p.hasLost())
- {
- message = "What a pity! Out of energy!";
- }
- else
- {
- message = "Congratulations!";
- }
- r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2, message);
- message = "[&7PRESS ENTER&f]";
- r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - paddingY * scale - getHeight(r, message)) - 10, message);
- }
- private float getWidth(Renderer r, String s)
- {
- return r.getFontRenderer().getSize(s).getWidth();
- }
- private float getHeight(Renderer r, String s)
- {
- return r.getFontRenderer().getSize(s).getHeight();
- }
- private float scale(Renderer r, int scale)
- {
- r.scale(scale, scale);
- r.updateMatrix();
- return 1.0f / scale;
- }
-
- private String getMessage(int playerEnergy, int algorithmEnergy, int maxEnergy)
- {
- if(playerEnergy == algorithmEnergy)
- {
- return "As good as the algorithm!";
- }
- float energyPercent = ((float) playerEnergy / maxEnergy) * Level.ALGORITHM_4;
- if(energyPercent < Level.ALGORITHM_1)
- {
- return "Better than the algorithm!";
- }
- else if(energyPercent < Level.ALGORITHM_2)
- {
- return "0-10% over the algorithm!";
- }
- else if(energyPercent < Level.ALGORITHM_3)
- {
- return "10-20% over the algorithm!";
- }
- else if(energyPercent < Level.ALGORITHM_4)
- {
- return "20-30% over the algorithm!";
- }
- else
- {
- return "30% over the algorithm!";
- }
- }
- }
|