Created
December 20, 2025 21:14
-
-
Save Geolykt/789ac5957968095f96c1a45dc424f81a to your computer and use it in GitHub Desktop.
Test class of SLAPI's chart API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package de.geolykt.starloader; | |
| import java.util.Objects; | |
| import org.jetbrains.annotations.NotNull; | |
| import de.geolykt.starloader.api.Galimulator; | |
| import de.geolykt.starloader.api.empire.ActiveEmpire; | |
| import de.geolykt.starloader.api.empire.Empire; | |
| import de.geolykt.starloader.api.event.EventHandler; | |
| import de.geolykt.starloader.api.event.Listener; | |
| import de.geolykt.starloader.api.event.lifecycle.LogicalTickEvent; | |
| import de.geolykt.starloader.api.event.lifecycle.LogicalTickEvent.Phase; | |
| import de.geolykt.starloader.api.gui.Drawing; | |
| import de.geolykt.starloader.api.gui.Dynbind; | |
| import de.geolykt.starloader.api.gui.graph.LineChartComponentSupplier; | |
| import de.geolykt.starloader.api.gui.graph.RollingChartData; | |
| import de.geolykt.starloader.api.gui.screen.ComponentSupplier; | |
| import de.geolykt.starloader.api.gui.screen.LineWrappingInfo; | |
| import de.geolykt.starloader.api.gui.screen.Screen; | |
| import de.geolykt.starloader.api.gui.screen.ScreenBuilder; | |
| import de.geolykt.starloader.api.gui.text.TextColor; | |
| public class TestListener implements Listener { | |
| private class ShowScienceChartKeybind implements Dynbind { | |
| private Screen screen; | |
| @Override | |
| public @NotNull String getDescription() { | |
| return "Shows a chart with the science levels of the empires."; | |
| } | |
| @Override | |
| public @NotNull String getKeyDescription() { | |
| return "Shift + S"; | |
| } | |
| @Override | |
| public boolean isValidChar(char character) { | |
| return character == 'S'; | |
| } | |
| @Override | |
| public boolean isValidKeycode(int key) { | |
| return false; | |
| } | |
| @Override | |
| public void performAction() { | |
| if (screen == null) { | |
| ScreenBuilder builder = ScreenBuilder.getBuilder(); | |
| LineWrappingInfo lwInfo = new LineWrappingInfo(false, false, false, false); | |
| ComponentSupplier supplier = new LineChartComponentSupplier(scienceLevels, lwInfo, 800, 500); | |
| builder.addComponentSupplier(supplier); | |
| builder.setHeaderColor(TextColor.DARK_GREEN); | |
| builder.setHeaderEnabled(true); | |
| builder.setTitle("Science Graph test"); | |
| builder.setWidth(820); | |
| screen = builder.build(); | |
| } | |
| Drawing.showScreen(Objects.requireNonNull(screen)); | |
| } | |
| } | |
| private @NotNull RollingChartData<Empire> scienceLevels = new RollingChartData<>(10_000); | |
| public TestListener() { | |
| Galimulator.registerKeybind(new ShowScienceChartKeybind()); | |
| } | |
| @EventHandler | |
| public void onTick(LogicalTickEvent event) { | |
| if (event.getPhase() == Phase.PRE_LOGICAL && (Galimulator.getGameYear() % 100) == 0) { | |
| scienceLevels.incrementPosition(); | |
| for (ActiveEmpire e : Galimulator.getEmpires()) { | |
| scienceLevels.addNode(e, e.getTechnologyLevel()); | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment