Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.windcorp.game.graphics.elements;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.font.FontRenderContext;
- import java.awt.font.TextLayout;
- import java.awt.geom.AffineTransform;
- import java.awt.geom.Rectangle2D;
- import ru.windcorp.game.GameMain;
- import ru.windcorp.game.graphics.FrameHandler;
- public class InfoBox extends FramedPanel {
- private static final long serialVersionUID = 828347285451552842L;
- private String text;
- public static final int OFFSET = 32;
- private InfoBox(int startX, int startY, int sizeX, int sizeY, String message) {
- super(startX, startY, sizeX, sizeY);
- this.text = message;
- }
- @Override public void paint(Graphics g) {
- g.setColor(new Color(255, 255, 255));
- g.fillRect(startX, startY, sizeX, sizeY);
- g.setColor(new Color(0, 0, 0));
- g.setFont(Font.decode("Consolas"));
- g.drawString(text, super.startX + OFFSET, super.startY + OFFSET);
- /*
- E.g. text input "Line 0\nLine 1"
- Prints as "Line 0Line 1"
- */
- super.drawFrame(g, GameMain.getGlobalObserver()); //Draws the frame (no problem here)
- }
- public static InfoBox create(String text) {
- //text may contain some number of '\n's
- Rectangle2D r = new TextLayout(
- text,
- Font.decode("Consolas"),
- new FontRenderContext(new AffineTransform(), true, true)).getBounds();
- Frame f = ((FrameHandler) GameMain.getGraphicsObject()).getFrame();
- return new InfoBox(
- (int) ((f.getWidth() / 2) - ((r.getWidth() + (2 * OFFSET)) / 2)),
- (int) ((f.getHeight() / 2) - ((r.getHeight() + (2 * OFFSET)) / 2)),
- (int) r.getWidth() + (2 * OFFSET),
- (int) r.getHeight() + (2 * OFFSET),
- text);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement