All checks were successful
EpicKnarvik97/Rogue101/pipeline/head This commit looks good
Renames some badly named interfaces and classes Changes a bunch of packages for better structure Adds some missing comments Improves path finding performance somewhat Adds an NPC death sound Makes fake walls noticeable Makes all NPCs drop their items when they die (as the NPCs may steal items from a player)
237 lines
9.0 KiB
Java
237 lines
9.0 KiB
Java
package inf101.v18.gfx.textmode;
|
||
|
||
import inf101.v18.gfx.Screen;
|
||
import javafx.application.Application;
|
||
import javafx.scene.input.KeyCode;
|
||
import javafx.scene.input.KeyEvent;
|
||
import javafx.scene.paint.Color;
|
||
import javafx.stage.Stage;
|
||
|
||
import java.util.Objects;
|
||
|
||
public class TextFontAdjuster extends Application {
|
||
// private static final String FONT_NAME = "PetMe64.ttf";
|
||
// new TextFont(FONT_NAME, 22.2, TextModes.CHAR_BOX_SIZE, 0.0, 0.0, 1.0, 1.0);
|
||
private static TextFontAdjuster demo;
|
||
|
||
public static TextFontAdjuster getInstance() {
|
||
return demo;
|
||
}
|
||
|
||
public static void main(String[] args) {
|
||
launch(args);
|
||
}
|
||
|
||
private TextFont textFont = Printer.FONT_SYMBOLA;//
|
||
// new TextFont("ZXSpectrum-7.otf", 22.00, TextMode.CHAR_BOX_SIZE, 3.1000,
|
||
// -3.8000, 1.0000, 1.0000, true);
|
||
private Screen screen;
|
||
|
||
private boolean paused;
|
||
private Printer printer;
|
||
|
||
private boolean grid = true;
|
||
|
||
private final double adjustAmount = 0.1;
|
||
|
||
private double adjustX(KeyCode code) {
|
||
switch (code) {
|
||
case LEFT:
|
||
return -1 * adjustAmount;
|
||
case RIGHT:
|
||
return 1 * adjustAmount;
|
||
default:
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
private double adjustY(KeyCode code) {
|
||
switch (code) {
|
||
case UP:
|
||
return 1 * adjustAmount;
|
||
case DOWN:
|
||
return -1 * adjustAmount;
|
||
default:
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
private void drawBackgroundGrid() {
|
||
if (grid) {
|
||
printer.drawCharCells();
|
||
/*
|
||
* painter.turnTo(0); for (int y = 0; y < printer.getPageHeight(); y++) {
|
||
* painter.jumpTo(0, y * printer.getCharHeight()); for (int x = 0; x <
|
||
* printer.getLineWidth(); x++) { painter.setInk( (x + y) % 2 == 0 ?
|
||
* Color.CORNFLOWERBLUE : Color.CORNFLOWERBLUE.brighter().brighter());
|
||
* painter.fillRectangle(printer.getCharWidth(), printer.getCharHeight());
|
||
* painter.jump(printer.getCharWidth()); } }
|
||
*/
|
||
} else {
|
||
screen.clearBackground();
|
||
}
|
||
}
|
||
|
||
private void printHelp() {
|
||
printer.moveTo(1, 1);
|
||
printer.setAutoScroll(false);
|
||
printer.println(" " + Printer.center("TextFontAdjuster", 36) + " ");
|
||
printer.println(" ");
|
||
printer.println(" ");
|
||
printer.println(" ");
|
||
printer.println("________________________________________");
|
||
printer.println("Adjust letter parameters: ");
|
||
printer.println(" Font size: CTRL +, CTRL - ");
|
||
printer.println(" Position: LEFT, RIGHT, UP, DOWN ");
|
||
printer.println(" Scaling: CTRL-(LEFT, RIGHT, UP, DOWN)");
|
||
printer.println("Commands / options (with CTRL key): ");
|
||
printer.println(" Hires (R) – Grid (G) – Fullscreen (F) ");
|
||
printer.println(" Help (H) – Quit (Q) ");
|
||
printer.println("Write text with any other key. ");
|
||
printer.println("_-*-_-*-_-*-_-*-_-*-_-*-_-*-_-*-_-*-_-*-");
|
||
printer.println(" ");
|
||
printer.println("Sample text: ");
|
||
printer.println("the quick brown fox jumps over the lazy ");
|
||
printer.println(" dog, THE QUICK BROWN FOX JUMPS OVER THE");
|
||
printer.println("LAZY DOG den vågale røde reven værer den");
|
||
printer.println("sinte hunden DEN VÅGALE RØDE REVEN VÆRER");
|
||
printer.println("DEN SINTE HUNDEN !\"#%&/()?,._-@£${[]}?|^");
|
||
|
||
// printer.print(" ");
|
||
printer.moveTo(1, 15);
|
||
printer.setAutoScroll(true);
|
||
|
||
}
|
||
|
||
private void printInfo() {
|
||
printer.moveTo(1, 3);
|
||
printer.println(String.format("Font: %s at %1.1fpt ", textFont.getFont().getName(),
|
||
textFont.getFont().getSize()));
|
||
printer.println(String.format(" xTr=%-1.1f yTr=%-1.1f xSc=%-1.1f ySc=%-1.1f ", textFont.getxTranslate(),
|
||
textFont.getyTranslate(), textFont.getxScale(), textFont.getyScale()));
|
||
System.out.printf("new TextFont(\"%s\", %1.2f, Printer.CHAR_HEIGHT, %1.4f, %1.4f, %1.4f, %1.4f)%n",
|
||
textFont.getFont().getName(), textFont.getSize(), textFont.getxTranslate(), textFont.getyTranslate(),
|
||
textFont.getxScale(), textFont.getyScale());
|
||
|
||
printer.moveTo(1, 15);
|
||
}
|
||
|
||
private void setup() {
|
||
drawBackgroundGrid();
|
||
printHelp();
|
||
printInfo();
|
||
}
|
||
|
||
@Override
|
||
public void start(Stage stage) {
|
||
demo = this;
|
||
|
||
screen = Screen.startPaintScene(stage);
|
||
|
||
printer = screen.createPrinter();
|
||
printer.setInk(Color.BLACK);
|
||
printer.setFont(textFont);
|
||
screen.setKeyOverride((KeyEvent event) -> {
|
||
KeyCode code = event.getCode();
|
||
// System.out.println(event);
|
||
if (event.isControlDown() || event.isShortcutDown()) {
|
||
if (code == KeyCode.Q) {
|
||
System.exit(0);
|
||
} else if (code == KeyCode.P) {
|
||
paused = !paused;
|
||
return true;
|
||
} else if (code == KeyCode.R) {
|
||
printer.cycleMode(true);
|
||
drawBackgroundGrid();
|
||
return true;
|
||
} else if (code == KeyCode.S) {
|
||
if (event.isAltDown()) {
|
||
screen.fitScaling();
|
||
} else {
|
||
screen.zoomCycle();
|
||
}
|
||
drawBackgroundGrid();
|
||
return true;
|
||
} else if (code == KeyCode.A) {
|
||
screen.cycleAspect();
|
||
return true;
|
||
} else if (code == KeyCode.G) {
|
||
grid = !grid;
|
||
drawBackgroundGrid();
|
||
return true;
|
||
} else if (code == KeyCode.H) {
|
||
printHelp();
|
||
printInfo();
|
||
return true;
|
||
} else if (code == KeyCode.F) {
|
||
stage.setFullScreen(!stage.isFullScreen());
|
||
return true;
|
||
} else if (code == KeyCode.M) {
|
||
printer.print("\r");
|
||
return true;
|
||
} else if (code == KeyCode.L) {
|
||
printer.redrawTextPage();
|
||
return true;
|
||
} else if (code == KeyCode.DIGIT1) {
|
||
DemoPages.printBoxDrawing(printer);
|
||
return true;
|
||
} else if (code == KeyCode.DIGIT2) {
|
||
DemoPages.printZX(printer);
|
||
return true;
|
||
} else if (code == KeyCode.DIGIT3) {
|
||
DemoPages.printBlockPlotting(printer);
|
||
return true;
|
||
} else if (code == KeyCode.DIGIT4) {
|
||
DemoPages.printVideoAttributes(printer);
|
||
return true;
|
||
} else if (code == KeyCode.DIGIT5) {
|
||
DemoPages.printAnsiArt(printer);
|
||
return true;
|
||
} else if (code == KeyCode.PLUS) {
|
||
textFont = textFont.adjust(adjustAmount, 0.0, 0.0, 0.0, 0.0);
|
||
printer.setFont(textFont);
|
||
printer.redrawTextPage();
|
||
printInfo();
|
||
return true;
|
||
} else if (code == KeyCode.MINUS) {
|
||
textFont = textFont.adjust(-adjustAmount, 0.0, 0.0, 0.0, 0.0);
|
||
printer.setFont(textFont);
|
||
printer.redrawTextPage();
|
||
printInfo();
|
||
return true;
|
||
} else if (code == KeyCode.LEFT || code == KeyCode.RIGHT || code == KeyCode.UP
|
||
|| code == KeyCode.DOWN) {
|
||
textFont = textFont.adjust(0.0, 0.0, 0.0, adjustX(code), adjustY(code));
|
||
printer.setFont(textFont);
|
||
printer.redrawTextPage();
|
||
printInfo();
|
||
return true;
|
||
}
|
||
} else if (code == KeyCode.LEFT || code == KeyCode.RIGHT || code == KeyCode.UP || code == KeyCode.DOWN) {
|
||
textFont = textFont.adjust(0.0, adjustX(code), adjustY(code), 0.0, 0.0);
|
||
printer.setFont(textFont);
|
||
printer.redrawTextPage();
|
||
printInfo();
|
||
return true;
|
||
} else if (code == KeyCode.ENTER) {
|
||
|
||
printer.print("\n");
|
||
return true;
|
||
}
|
||
return false;
|
||
});
|
||
screen.setKeyTypedHandler((KeyEvent event) -> {
|
||
if (!Objects.equals(event.getCharacter(), KeyEvent.CHAR_UNDEFINED)) {
|
||
printer.print(event.getCharacter());
|
||
return true;
|
||
}
|
||
return false;
|
||
});
|
||
setup();
|
||
|
||
stage.show();
|
||
|
||
}
|
||
|
||
}
|