Added Fullscreen mode
This commit is contained in:
parent
fc85eb5658
commit
52f3f653d8
@ -18,11 +18,11 @@
|
|||||||
|
|
||||||
package ru.windcorp.progressia.client.graphics.backend;
|
package ru.windcorp.progressia.client.graphics.backend;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
|
||||||
|
|
||||||
import glm.vec._2.i.Vec2i;
|
import glm.vec._2.i.Vec2i;
|
||||||
|
import org.lwjgl.glfw.GLFWVidMode;
|
||||||
|
|
||||||
import static org.lwjgl.glfw.GLFW.*;
|
import static org.lwjgl.glfw.GLFW.*;
|
||||||
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
|
|
||||||
public class GraphicsBackend {
|
public class GraphicsBackend {
|
||||||
|
|
||||||
@ -38,6 +38,8 @@ public class GraphicsBackend {
|
|||||||
|
|
||||||
private static boolean faceCullingEnabled = false;
|
private static boolean faceCullingEnabled = false;
|
||||||
|
|
||||||
|
private static boolean isFullscreen = false;
|
||||||
|
|
||||||
private GraphicsBackend() {
|
private GraphicsBackend() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,4 +130,33 @@ public class GraphicsBackend {
|
|||||||
faceCullingEnabled = useFaceCulling;
|
faceCullingEnabled = useFaceCulling;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFullscreen() {
|
||||||
|
return isFullscreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setFullscreen() {
|
||||||
|
GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
|
||||||
|
glfwSetWindowMonitor(
|
||||||
|
getWindowHandle(),
|
||||||
|
glfwGetPrimaryMonitor(),
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
vidmode.width(),
|
||||||
|
vidmode.height(),
|
||||||
|
0);
|
||||||
|
isFullscreen = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWindowed() {
|
||||||
|
GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
|
||||||
|
glfwSetWindowMonitor(
|
||||||
|
getWindowHandle(),
|
||||||
|
0,
|
||||||
|
(vidmode.width() - getFrameWidth()) / 2,
|
||||||
|
(vidmode.height() - getFrameHeight()) / 2,
|
||||||
|
getFrameWidth(),
|
||||||
|
getFrameHeight(),
|
||||||
|
0);
|
||||||
|
isFullscreen = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,4 +73,12 @@ public class GraphicsInterface {
|
|||||||
GraphicsBackend.startNextLayer();
|
GraphicsBackend.startNextLayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void makeFullscreen(boolean state) {
|
||||||
|
if (state) {
|
||||||
|
GraphicsBackend.setFullscreen();
|
||||||
|
} else {
|
||||||
|
GraphicsBackend.setWindowed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,16 +18,12 @@
|
|||||||
|
|
||||||
package ru.windcorp.progressia.test;
|
package ru.windcorp.progressia.test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import glm.vec._3.Vec3;
|
import glm.vec._3.Vec3;
|
||||||
import glm.vec._4.Vec4;
|
import glm.vec._4.Vec4;
|
||||||
import ru.windcorp.progressia.client.Client;
|
import ru.windcorp.progressia.client.Client;
|
||||||
import ru.windcorp.progressia.client.ClientState;
|
import ru.windcorp.progressia.client.ClientState;
|
||||||
import ru.windcorp.progressia.client.graphics.Colors;
|
import ru.windcorp.progressia.client.graphics.Colors;
|
||||||
|
import ru.windcorp.progressia.client.graphics.backend.GraphicsBackend;
|
||||||
import ru.windcorp.progressia.client.graphics.backend.GraphicsInterface;
|
import ru.windcorp.progressia.client.graphics.backend.GraphicsInterface;
|
||||||
import ru.windcorp.progressia.client.graphics.font.Font;
|
import ru.windcorp.progressia.client.graphics.font.Font;
|
||||||
import ru.windcorp.progressia.client.graphics.gui.DynamicLabel;
|
import ru.windcorp.progressia.client.graphics.gui.DynamicLabel;
|
||||||
@ -44,6 +40,11 @@ import ru.windcorp.progressia.common.util.dynstr.DynamicStrings;
|
|||||||
import ru.windcorp.progressia.server.Server;
|
import ru.windcorp.progressia.server.Server;
|
||||||
import ru.windcorp.progressia.server.ServerState;
|
import ru.windcorp.progressia.server.ServerState;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class LayerTestGUI extends GUILayer {
|
public class LayerTestGUI extends GUILayer {
|
||||||
|
|
||||||
public LayerTestGUI() {
|
public LayerTestGUI() {
|
||||||
@ -110,6 +111,14 @@ public class LayerTestGUI extends GUILayer {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
panel.addChild(
|
||||||
|
new Label(
|
||||||
|
"FullscreenDisplay",
|
||||||
|
font,
|
||||||
|
tmp_dynFormat("LayerTestGUI.IsFullscreen", GraphicsBackend::isFullscreen)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
panel.addChild(
|
panel.addChild(
|
||||||
new DynamicLabel(
|
new DynamicLabel(
|
||||||
"FPSDisplay",
|
"FPSDisplay",
|
||||||
|
@ -187,6 +187,13 @@ public class TestPlayerControls {
|
|||||||
handleEscape();
|
handleEscape();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GLFW.GLFW_KEY_F11:
|
||||||
|
if (!event.isPress())
|
||||||
|
return false;
|
||||||
|
GraphicsInterface.makeFullscreen(!GraphicsBackend.isFullscreen());
|
||||||
|
updateGUI();
|
||||||
|
break;
|
||||||
|
|
||||||
case GLFW.GLFW_KEY_F3:
|
case GLFW.GLFW_KEY_F3:
|
||||||
if (!event.isPress())
|
if (!event.isPress())
|
||||||
return false;
|
return false;
|
||||||
|
@ -19,4 +19,5 @@ LayerTestGUI.PosDisplay.NA.Client = Pos: client n/a
|
|||||||
LayerTestGUI.PosDisplay.NA.Entity = Pos: entity n/a
|
LayerTestGUI.PosDisplay.NA.Entity = Pos: entity n/a
|
||||||
LayerTestGUI.SelectedBlockDisplay = %s Block: %s
|
LayerTestGUI.SelectedBlockDisplay = %s Block: %s
|
||||||
LayerTestGUI.SelectedTileDisplay = %s Tile: %s
|
LayerTestGUI.SelectedTileDisplay = %s Tile: %s
|
||||||
LayerTestGUI.PlacementModeHint = (Blocks %s Tiles: Ctrl + Mouse Wheel)
|
LayerTestGUI.PlacementModeHint = (Blocks %s Tiles: Ctrl + Mouse Wheel)
|
||||||
|
LayerTestGUI.IsFullscreen = Fullscreen: %5s (F11)
|
@ -19,4 +19,5 @@ LayerTestGUI.PosDisplay.NA.Client = Поз: клиент н/д
|
|||||||
LayerTestGUI.PosDisplay.NA.Entity = Поз: сущность н/д
|
LayerTestGUI.PosDisplay.NA.Entity = Поз: сущность н/д
|
||||||
LayerTestGUI.SelectedBlockDisplay = %s Блок: %s
|
LayerTestGUI.SelectedBlockDisplay = %s Блок: %s
|
||||||
LayerTestGUI.SelectedTileDisplay = %s Плитка: %s
|
LayerTestGUI.SelectedTileDisplay = %s Плитка: %s
|
||||||
LayerTestGUI.PlacementModeHint = (Блок %s плитки: Ctrl + прокрутка)
|
LayerTestGUI.PlacementModeHint = (Блок %s плитки: Ctrl + прокрутка)
|
||||||
|
LayerTestGUI.IsFullscreen = Полный экран: %5s (F11)
|
Reference in New Issue
Block a user