Fixed text encoding, texture transparency, labels in debug layer
This commit is contained in:
parent
802f736e37
commit
b3ce0ca3c4
@ -50,10 +50,10 @@ public class Colors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Vec4 toVector(int argb, Vec4 output) {
|
public static Vec4 toVector(int argb, Vec4 output) {
|
||||||
output.w = ((argb & 0xFF000000) >>> 24) / 256f; // Alpha
|
output.w = ((argb & 0xFF000000) >>> 24) / (float) 0xFF; // Alpha
|
||||||
output.x = ((argb & 0x00FF0000) >>> 16) / 256f; // Red
|
output.x = ((argb & 0x00FF0000) >>> 16) / (float) 0xFF; // Red
|
||||||
output.y = ((argb & 0x0000FF00) >>> 8) / 256f; // Green
|
output.y = ((argb & 0x0000FF00) >>> 8) / (float) 0xFF; // Green
|
||||||
output.z = ((argb & 0x000000FF) ) / 256f; // Blue
|
output.z = ((argb & 0x000000FF) ) / (float) 0xFF; // Blue
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import ru.windcorp.progressia.client.graphics.flat.RenderTarget;
|
|||||||
import ru.windcorp.progressia.client.graphics.font.Font;
|
import ru.windcorp.progressia.client.graphics.font.Font;
|
||||||
import ru.windcorp.progressia.client.localization.MutableString;
|
import ru.windcorp.progressia.client.localization.MutableString;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class Label extends Component {
|
public class Label extends Component {
|
||||||
@ -31,9 +32,21 @@ public class Label extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Label(String name, Font font, MutableString contents) {
|
public Label(String name, Font font, MutableString contents) {
|
||||||
this(name, font, contents::get);
|
// Not the most elegant solution
|
||||||
|
|
||||||
this.mutableStringListener = this::update;
|
this(name, font, () -> {
|
||||||
|
contents.update();
|
||||||
|
return contents.get();
|
||||||
|
});
|
||||||
|
|
||||||
|
AtomicBoolean isUpdating = new AtomicBoolean();
|
||||||
|
|
||||||
|
this.mutableStringListener = () -> {
|
||||||
|
if (isUpdating.compareAndSet(false, true)) {
|
||||||
|
this.update();
|
||||||
|
isUpdating.set(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
contents.addListener(mutableStringListener);
|
contents.addListener(mutableStringListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ import java.io.InputStream;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import org.lwjgl.BufferUtils;
|
import org.lwjgl.BufferUtils;
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ public class Resource extends Named {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Reader getReader() {
|
public Reader getReader() {
|
||||||
return new InputStreamReader(getInputStream());
|
return new InputStreamReader(getInputStream(), StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String readAsString() {
|
public String readAsString() {
|
||||||
|
@ -19,6 +19,7 @@ package ru.windcorp.progressia.test;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import glm.vec._3.Vec3;
|
import glm.vec._3.Vec3;
|
||||||
@ -35,6 +36,7 @@ import ru.windcorp.progressia.client.graphics.gui.Panel;
|
|||||||
import ru.windcorp.progressia.client.graphics.gui.layout.LayoutAlign;
|
import ru.windcorp.progressia.client.graphics.gui.layout.LayoutAlign;
|
||||||
import ru.windcorp.progressia.client.graphics.gui.layout.LayoutVertical;
|
import ru.windcorp.progressia.client.graphics.gui.layout.LayoutVertical;
|
||||||
import ru.windcorp.progressia.client.localization.Localizer;
|
import ru.windcorp.progressia.client.localization.Localizer;
|
||||||
|
import ru.windcorp.progressia.client.localization.MutableString;
|
||||||
import ru.windcorp.progressia.client.localization.MutableStringLocalized;
|
import ru.windcorp.progressia.client.localization.MutableStringLocalized;
|
||||||
import ru.windcorp.progressia.common.Units;
|
import ru.windcorp.progressia.common.Units;
|
||||||
import ru.windcorp.progressia.common.util.dynstr.DynamicStrings;
|
import ru.windcorp.progressia.common.util.dynstr.DynamicStrings;
|
||||||
@ -55,32 +57,32 @@ public class LayerTestGUI extends GUILayer {
|
|||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"IsFlyingDisplay", font,
|
"IsFlyingDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.IsFlyingDisplay").format(tpc.isFlying())
|
tmp_dynFormat("LayerTestGUI.IsFlyingDisplay", tpc::isFlying)
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"IsSprintingDisplay", font,
|
"IsSprintingDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.IsSprintingDisplay").format(tpc.isSprinting())
|
tmp_dynFormat("LayerTestGUI.IsSprintingDisplay", tpc::isSprinting)
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"IsMouseCapturedDisplay", font,
|
"IsMouseCapturedDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.IsMouseCapturedDisplay").format(tpc.isMouseCaptured())
|
tmp_dynFormat("LayerTestGUI.IsMouseCapturedDisplay", tpc::isMouseCaptured)
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"CameraModeDisplay", font,
|
"CameraModeDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.CameraModeDisplay").format(ClientState.getInstance().getCamera().getCurrentModeIndex())
|
tmp_dynFormat("LayerTestGUI.CameraModeDisplay", ClientState.getInstance().getCamera()::getCurrentModeIndex)
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"GravityModeDisplay", font,
|
"GravityModeDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.GravityModeDisplay").format(tpc.useMinecraftGravity() ? "Minecraft" : "Realistic")
|
tmp_dynFormat("LayerTestGUI.GravityModeDisplay", () -> tpc.useMinecraftGravity() ? "Minecraft" : "Realistic")
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"LanguageDisplay", font,
|
"LanguageDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.LanguageDisplay").apply(s -> String.format(s, Localizer.getInstance().getLanguage()))
|
tmp_dynFormat("LayerTestGUI.LanguageDisplay", Localizer.getInstance()::getLanguage)
|
||||||
));
|
));
|
||||||
|
|
||||||
panel.addChild(new DynamicLabel(
|
panel.addChild(new DynamicLabel(
|
||||||
@ -115,16 +117,16 @@ public class LayerTestGUI extends GUILayer {
|
|||||||
|
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"SelectedBlockDisplay", font,
|
"SelectedBlockDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.SelectedBlockDisplay").format(
|
tmp_dynFormat("LayerTestGUI.SelectedBlockDisplay",
|
||||||
TestPlayerControls.getInstance().isBlockSelected() ? ">" : " ",
|
() -> tpc.isBlockSelected() ? ">" : " ",
|
||||||
TestPlayerControls.getInstance().getSelectedBlock().getId()
|
() -> tpc.getSelectedBlock().getId()
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
"SelectedTileDisplay", font,
|
"SelectedTileDisplay", font,
|
||||||
new MutableStringLocalized("LayerTestGUI.SelectedTileDisplay").format(
|
tmp_dynFormat("LayerTestGUI.SelectedTileDisplay",
|
||||||
TestPlayerControls.getInstance().isBlockSelected() ? " " : ">",
|
() -> tpc.isBlockSelected() ? " " : ">",
|
||||||
TestPlayerControls.getInstance().getSelectedTile().getId()
|
() -> tpc.getSelectedTile().getId()
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
panel.addChild(new Label(
|
panel.addChild(new Label(
|
||||||
@ -225,6 +227,25 @@ public class LayerTestGUI extends GUILayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static MutableString tmp_dynFormat(String formatKey, Supplier<?>... suppliers) {
|
||||||
|
return new MutableStringLocalized(formatKey).apply(s -> {
|
||||||
|
Object[] args = new Object[suppliers.length];
|
||||||
|
|
||||||
|
for (int i = 0; i < suppliers.length; ++i) {
|
||||||
|
Supplier<?> supplier = suppliers[i];
|
||||||
|
|
||||||
|
Object value = supplier != null ? supplier.get() : "null";
|
||||||
|
if (!(value instanceof Number)) {
|
||||||
|
value = Objects.toString(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
args[i] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return String.format(s, args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// private static class DebugComponent extends Component {
|
// private static class DebugComponent extends Component {
|
||||||
// private final int color;
|
// private final int color;
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user