package org.codecranachan.asteroidpush.base.ui.workshop; import org.codecranachan.asteroidpush.AsteroidPush; import org.codecranachan.asteroidpush.base.ui.context.TestRunContext; import org.codecranachan.asteroidpush.base.ui.widget.BasicWidget; import org.codecranachan.asteroidpush.base.workshop.Blueprint; import org.codecranachan.asteroidpush.base.workshop.WorkshopCoordinator; import org.newdawn.slick.Color; import org.newdawn.slick.Font; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Input; import org.newdawn.slick.geom.Rectangle; import org.newdawn.slick.state.StateBasedGame; public class StartTestRunButton extends BasicWidget { private Font font; private WorkshopCoordinator coordinator; private boolean doTestRun; static private String RUN_TEST_TEXT = "Test Run"; static private String NO_SHIP_TEXT = "No Ship"; static private String ERROR_TEXT = "StartTestRunButton: No coordinator set"; public StartTestRunButton(WorkshopCoordinator coordinator, Font font) { this.font = font; this.coordinator = coordinator; } public void render(Graphics g) { String text; if (coordinator == null) { text = ERROR_TEXT; g.setColor(Color.red); } if (coordinator.getManipulatedBlueprint() == null) { text = NO_SHIP_TEXT; g.setColor(Color.darkGray); } else { text = RUN_TEST_TEXT; g.setColor(Color.yellow); } Rectangle frame = getFrame(); Font currentFont = g.getFont(); g.setFont(font); g.drawRoundRect(frame.getX(), frame.getY(), frame.getWidth() - 2, frame.getHeight() - 2, 15); g.drawString(text, frame.getCenterX() - (float) font.getWidth(text) / 2.0f, frame.getCenterY() - (float) font.getHeight(text) / 2.0f); g.setFont(currentFont); } public void update(GameContainer container, StateBasedGame game, int delta) { if (doTestRun) { doTestRun = false; Blueprint prototype = coordinator.getManipulatedBlueprint(); AsteroidPush push = (AsteroidPush) game; push.pushContext(new TestRunContext(push.getLocalPlayer(), prototype)); } } public void mousePressed(int button, int x, int y) { if (coordinator == null) { return; } if (button == Input.MOUSE_LEFT_BUTTON && coordinator.getManipulatedBlueprint() != null) { doTestRun = true; } } }