mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-16 11:06:06 -04:00
Port EditHotkeyScreen to C
This commit is contained in:
parent
25790d86ca
commit
ad75bf435e
@ -11,16 +11,15 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
|
textFont = new Font(game.FontName, 40);
|
||||||
base.Init();
|
base.Init();
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 40);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ContextRecreated() {
|
protected override void ContextRecreated() {
|
||||||
string score = game.Chat.Status1.Text;
|
string score = game.Chat.Status1.Text;
|
||||||
widgets = new Widget[] {
|
widgets = new Widget[] {
|
||||||
TextWidget.Create(game, "Game over!", regularFont)
|
TextWidget.Create(game, "Game over!", textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -150),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -150),
|
||||||
TextWidget.Create(game, score, titleFont)
|
TextWidget.Create(game, score, titleFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -75),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -75),
|
||||||
|
@ -51,8 +51,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
game.Keyboard.KeyRepeat = true;
|
game.Keyboard.KeyRepeat = true;
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,18 +61,18 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
bool existed = origHotkey.BaseKey != Key.Unknown;
|
bool existed = origHotkey.BaseKey != Key.Unknown;
|
||||||
|
|
||||||
InputWidget input;
|
InputWidget input;
|
||||||
input = MenuInputWidget.Create(game, 500, 30, curHotkey.Text, regularFont, new StringValidator())
|
input = MenuInputWidget.Create(game, 500, 30, curHotkey.Text, textFont, new StringValidator())
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -35);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -35);
|
||||||
input.ShowCaret = true;
|
input.ShowCaret = true;
|
||||||
|
|
||||||
widgets = new Widget[] {
|
widgets = new Widget[] {
|
||||||
Make(0, -150, "Key: " + curHotkey.BaseKey, 300, titleFont, BaseKeyClick),
|
Make(0, -150, "Key: " + curHotkey.BaseKey, BaseKeyClick),
|
||||||
Make(0, -100, "Modifiers:" + flags, 300, titleFont, ModifiersClick),
|
Make(0, -100, "Modifiers:" + flags, ModifiersClick),
|
||||||
input,
|
input,
|
||||||
Make(-100, 10, "Input stays open: " + staysOpen, 300, titleFont, LeaveOpenClick),
|
Make(-100, 10, "Input stays open: " + staysOpen, LeaveOpenClick),
|
||||||
|
|
||||||
Make(0, 80, existed ? "Save changes" : "Add hotkey", 300, titleFont, SaveChangesClick),
|
Make(0, 80, existed ? "Save changes" : "Add hotkey", SaveChangesClick),
|
||||||
Make(0, 130, existed ? "Remove hotkey" : "Cancel", 300, titleFont, RemoveHotkeyClick),
|
Make(0, 130, existed ? "Remove hotkey" : "Cancel", RemoveHotkeyClick),
|
||||||
MakeBack(false, titleFont, SwitchPause),
|
MakeBack(false, titleFont, SwitchPause),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -85,8 +83,8 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
base.Dispose();
|
base.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
ButtonWidget Make(int x, int y, string text, int width, Font font, ClickHandler onClick) {
|
ButtonWidget Make(int x, int y, string text, ClickHandler onClick) {
|
||||||
return ButtonWidget.Create(game, width, text, font, onClick)
|
return ButtonWidget.Create(game, 300, text, titleFont, onClick)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, x, y);
|
.SetLocation(Anchor.Centre, Anchor.Centre, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,8 +30,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
game.Keyboard.KeyRepeat = true;
|
game.Keyboard.KeyRepeat = true;
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +42,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
MakeLabel(-150, -80, "Width:"), MakeLabel(-150, -40, "Height:"),
|
MakeLabel(-150, -80, "Width:"), MakeLabel(-150, -40, "Height:"),
|
||||||
MakeLabel(-150, 0, "Length:"), MakeLabel(-140, 40, "Seed:"),
|
MakeLabel(-150, 0, "Length:"), MakeLabel(-140, 40, "Seed:"),
|
||||||
TextWidget.Create(game, "Generate new level", regularFont)
|
TextWidget.Create(game, "Generate new level", textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -130),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -130),
|
||||||
|
|
||||||
ButtonWidget.Create(game, 200, "Flatgrass", titleFont, GenFlatgrassClick)
|
ButtonWidget.Create(game, 200, "Flatgrass", titleFont, GenFlatgrassClick)
|
||||||
@ -58,7 +56,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
InputWidget MakeInput(int y, bool seed, string value) {
|
InputWidget MakeInput(int y, bool seed, string value) {
|
||||||
MenuInputValidator validator = seed ? new SeedValidator() : new IntegerValidator(1, 8192);
|
MenuInputValidator validator = seed ? new SeedValidator() : new IntegerValidator(1, 8192);
|
||||||
InputWidget input = MenuInputWidget.Create(game, 200, 30, value,
|
InputWidget input = MenuInputWidget.Create(game, 200, 30, value,
|
||||||
regularFont, validator)
|
textFont, validator)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, y);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, y);
|
||||||
|
|
||||||
input.Active = false;
|
input.Active = false;
|
||||||
@ -67,7 +65,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TextWidget MakeLabel(int x, int y, string text) {
|
TextWidget MakeLabel(int x, int y, string text) {
|
||||||
TextWidget label = TextWidget.Create(game, text, regularFont)
|
TextWidget label = TextWidget.Create(game, text, textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, x, y);
|
.SetLocation(Anchor.Centre, Anchor.Centre, x, y);
|
||||||
|
|
||||||
label.XOffset = -110 - label.Width / 2;
|
label.XOffset = -110 - label.Width / 2;
|
||||||
@ -135,23 +133,23 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ContextRecreated() {
|
protected override void ContextRecreated() {
|
||||||
widgets = new Widget[] {
|
widgets = new Widget[] {
|
||||||
ButtonWidget.Create(game, 400, "Small", titleFont, GenSmallClick)
|
Make(-100, "Small", GenSmallClick),
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -100),
|
Make( -50, "Normal", GenMediumClick),
|
||||||
ButtonWidget.Create(game, 400, "Normal", titleFont, GenMediumClick)
|
Make( 0, "Huge", GenHugeClick),
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -50),
|
|
||||||
ButtonWidget.Create(game, 400, "Huge", titleFont, GenHugeClick)
|
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 0),
|
|
||||||
MakeBack(false, titleFont, SwitchPause),
|
MakeBack(false, titleFont, SwitchPause),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ButtonWidget Make(int y, string text, ClickHandler onClick) {
|
||||||
|
return ButtonWidget.Create(game, 400, text, titleFont, onClick)
|
||||||
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, y);
|
||||||
|
}
|
||||||
|
|
||||||
void GenSmallClick(Game game, Widget widget) { DoGen(128); }
|
void GenSmallClick(Game game, Widget widget) { DoGen(128); }
|
||||||
void GenMediumClick(Game game, Widget widget) { DoGen(256); }
|
void GenMediumClick(Game game, Widget widget) { DoGen(256); }
|
||||||
void GenHugeClick(Game game, Widget widget) { DoGen(512); }
|
void GenHugeClick(Game game, Widget widget) { DoGen(512); }
|
||||||
|
@ -20,12 +20,10 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
protected ClickHandler leftPage, rightPage;
|
protected ClickHandler leftPage, rightPage;
|
||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
base.Init();
|
||||||
regularFont = new Font(game.FontName, 16);
|
if (keyNames == null) {
|
||||||
base.Init();
|
|
||||||
|
|
||||||
if (keyNames == null)
|
|
||||||
keyNames = Enum.GetNames(typeof(Key));
|
keyNames = Enum.GetNames(typeof(Key));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void MakeWidgets(int y, int arrowsY) {
|
protected void MakeWidgets(int y, int arrowsY) {
|
||||||
|
@ -163,7 +163,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
widgets = new Widget[binds.Length + 5];
|
widgets = new Widget[binds.Length + 5];
|
||||||
MakeWidgets(-40, 10);
|
MakeWidgets(-40, 10);
|
||||||
|
|
||||||
widgets[index++] = TextWidget.Create(game, "&eRight click to remove the key binding", regularFont)
|
widgets[index++] = TextWidget.Create(game, "&eRight click to remove the key binding", textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
game.Keyboard.KeyRepeat = true;
|
game.Keyboard.KeyRepeat = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,7 +141,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
const int extHelpY = 100;
|
const int extHelpY = 100;
|
||||||
|
|
||||||
void MakeExtendedHelp(string[] desc) {
|
void MakeExtendedHelp(string[] desc) {
|
||||||
extendedHelp = new TextGroupWidget(game, desc.Length, regularFont, null)
|
extendedHelp = new TextGroupWidget(game, desc.Length, textFont, null)
|
||||||
.SetLocation(Anchor.Min, Anchor.Min, 0, 0);
|
.SetLocation(Anchor.Min, Anchor.Min, 0, 0);
|
||||||
extendedHelp.Init();
|
extendedHelp.Init();
|
||||||
for (int i = 0; i < desc.Length; i++)
|
for (int i = 0; i < desc.Length; i++)
|
||||||
@ -185,7 +183,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
activeButton = button;
|
activeButton = button;
|
||||||
InputClosed();
|
InputClosed();
|
||||||
|
|
||||||
input = MenuInputWidget.Create(game, 400, 30, button.GetValue(game), regularFont, validator)
|
input = MenuInputWidget.Create(game, 400, 30, button.GetValue(game), textFont, validator)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 110);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 110);
|
||||||
input.ShowCaret = true;
|
input.ShowCaret = true;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
HandlesAllInput = true;
|
HandlesAllInput = true;
|
||||||
}
|
}
|
||||||
protected Widget[] widgets;
|
protected Widget[] widgets;
|
||||||
protected Font titleFont, regularFont;
|
protected Font titleFont, textFont;
|
||||||
|
|
||||||
protected int IndexOfWidget(Widget w) {
|
protected int IndexOfWidget(Widget w) {
|
||||||
for (int i = 0; i < widgets.Length; i++) {
|
for (int i = 0; i < widgets.Length; i++) {
|
||||||
@ -28,6 +28,9 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
|
if (titleFont == null) titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
||||||
|
if (textFont == null) textFont = new Font(game.FontName, 16);
|
||||||
|
|
||||||
game.Graphics.ContextLost += ContextLost;
|
game.Graphics.ContextLost += ContextLost;
|
||||||
game.Graphics.ContextRecreated += ContextRecreated;
|
game.Graphics.ContextRecreated += ContextRecreated;
|
||||||
}
|
}
|
||||||
@ -35,7 +38,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public override void Dispose() {
|
public override void Dispose() {
|
||||||
ContextLost();
|
ContextLost();
|
||||||
if (titleFont != null) titleFont.Dispose();
|
if (titleFont != null) titleFont.Dispose();
|
||||||
if (regularFont != null) regularFont.Dispose();
|
if (textFont != null) textFont.Dispose();
|
||||||
|
|
||||||
game.Graphics.ContextLost -= ContextLost;
|
game.Graphics.ContextLost -= ContextLost;
|
||||||
game.Graphics.ContextRecreated -= ContextRecreated;
|
game.Graphics.ContextRecreated -= ContextRecreated;
|
||||||
|
@ -40,7 +40,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
MakeOpt(1, -100, "Use CPE", onClick, GetCPE, SetCPE),
|
MakeOpt(1, -100, "Use CPE", onClick, GetCPE, SetCPE),
|
||||||
MakeOpt(1, -50, "Use server textures", onClick, GetTexs, SetTexs),
|
MakeOpt(1, -50, "Use server textures", onClick, GetTexs, SetTexs),
|
||||||
|
|
||||||
TextWidget.Create(game, "&eButtons on the right require restarting game", regularFont)
|
TextWidget.Create(game, "&eButtons on the right require restarting game", textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100),
|
||||||
MakeBack(false, titleFont, SwitchBack),
|
MakeBack(false, titleFont, SwitchBack),
|
||||||
null, null,
|
null, null,
|
||||||
|
@ -15,8 +15,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
game.Events.HackPermissionsChanged += CheckHacksAllowed;
|
game.Events.HackPermissionsChanged += CheckHacksAllowed;
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +49,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
void MakeDesc() {
|
void MakeDesc() {
|
||||||
string text = descriptions[selectedI];
|
string text = descriptions[selectedI];
|
||||||
widgets[widgets.Length - 1] = TextWidget.Create(game, text, regularFont)
|
widgets[widgets.Length - 1] = TextWidget.Create(game, text, textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
game.Events.HackPermissionsChanged += CheckHacksAllowed;
|
game.Events.HackPermissionsChanged += CheckHacksAllowed;
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
@ -49,8 +49,6 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
game.Keyboard.KeyRepeat = true;
|
game.Keyboard.KeyRepeat = true;
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +58,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void ContextRecreated() {
|
protected override void ContextRecreated() {
|
||||||
input = MenuInputWidget.Create(game, 500, 30, "", regularFont, new PathValidator())
|
input = MenuInputWidget.Create(game, 500, 30, "", textFont, new PathValidator())
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -30);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -30);
|
||||||
input.ShowCaret = true;
|
input.ShowCaret = true;
|
||||||
|
|
||||||
@ -69,7 +67,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 20),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 20),
|
||||||
ButtonWidget.Create(game, 200, "Save schematic", titleFont, SaveSchematic)
|
ButtonWidget.Create(game, 200, "Save schematic", titleFont, SaveSchematic)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, -150, 120),
|
.SetLocation(Anchor.Centre, Anchor.Centre, -150, 120),
|
||||||
TextWidget.Create(game, "&eCan be imported into MCEdit", regularFont)
|
TextWidget.Create(game, "&eCan be imported into MCEdit", textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 110, 120),
|
.SetLocation(Anchor.Centre, Anchor.Centre, 110, 120),
|
||||||
MakeBack(false, titleFont, SwitchPause),
|
MakeBack(false, titleFont, SwitchPause),
|
||||||
input,
|
input,
|
||||||
@ -143,7 +141,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
void MakeDescWidget(string text) {
|
void MakeDescWidget(string text) {
|
||||||
DisposeDescWidget();
|
DisposeDescWidget();
|
||||||
desc = TextWidget.Create(game, text, regularFont)
|
desc = TextWidget.Create(game, text, textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 65);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 65);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
public Overlay(Game game) : base(game) { }
|
public Overlay(Game game) : base(game) { }
|
||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
base.Init();
|
base.Init();
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
|
||||||
regularFont = new Font(game.FontName, 16);
|
|
||||||
|
|
||||||
if (game.Graphics.LostContext) return;
|
if (game.Graphics.LostContext) return;
|
||||||
MakeButtons();
|
MakeButtons();
|
||||||
RedrawText();
|
RedrawText();
|
||||||
@ -73,7 +70,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
|
|
||||||
for (int i = 1; i < 4; i++) {
|
for (int i = 1; i < 4; i++) {
|
||||||
if (lines[i] == null) continue;
|
if (lines[i] == null) continue;
|
||||||
labels[i] = TextWidget.Create(game, lines[i], regularFont)
|
labels[i] = TextWidget.Create(game, lines[i], textFont)
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -70 + 20 * i);
|
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -70 + 20 * i);
|
||||||
labels[i].Colour = new FastColour(224, 224, 224);
|
labels[i].Colour = new FastColour(224, 224, 224);
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,11 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
int dynamicVb;
|
int dynamicVb;
|
||||||
|
|
||||||
public override void Init() {
|
public override void Init() {
|
||||||
|
textFont = new Font(game.FontName, 8);
|
||||||
base.Init();
|
base.Init();
|
||||||
if (vertices == null) {
|
if (vertices == null) {
|
||||||
vertices = new VertexP3fT2fC4b[verticesCount];
|
vertices = new VertexP3fT2fC4b[verticesCount];
|
||||||
}
|
}
|
||||||
regularFont.Dispose();
|
|
||||||
regularFont = new Font(game.FontName, 8);
|
|
||||||
ContextRecreated();
|
ContextRecreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +54,7 @@ namespace ClassicalSharp.Gui.Screens {
|
|||||||
base.ContextRecreated();
|
base.ContextRecreated();
|
||||||
dynamicVb = game.Graphics.CreateDynamicVb(VertexFormat.P3fT2fC4b, verticesCount);
|
dynamicVb = game.Graphics.CreateDynamicVb(VertexFormat.P3fT2fC4b, verticesCount);
|
||||||
idAtlas = new TextAtlas(game, 16);
|
idAtlas = new TextAtlas(game, 16);
|
||||||
idAtlas.Pack("0123456789", regularFont, "f");
|
idAtlas.Pack("0123456789", textFont, "f");
|
||||||
UpdateTileSize();
|
UpdateTileSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,14 +77,14 @@ namespace ClassicalSharp.Renderers {
|
|||||||
float x2 = x + 1, y2 = y + height, z2 = z + 1;
|
float x2 = x + 1, y2 = y + height, z2 = z + 1;
|
||||||
|
|
||||||
v.X = x1; v.Y = y1; v.Z = z1; v.U = 0; v.V = v1; vertices[vCount++] = v;
|
v.X = x1; v.Y = y1; v.Z = z1; v.U = 0; v.V = v1; vertices[vCount++] = v;
|
||||||
v.Y = y2; v.V = v2; vertices[vCount++] = v;
|
v.Y = y2; v.V = v2; vertices[vCount++] = v;
|
||||||
v.X = x2; v.Z = z2; v.U = 1; vertices[vCount++] = v;
|
v.X = x2; v.Z = z2; v.U = 1; vertices[vCount++] = v;
|
||||||
v.Y = y1; v.V = v1; vertices[vCount++] = v;
|
v.Y = y1; v.V = v1; vertices[vCount++] = v;
|
||||||
|
|
||||||
v.Z = z1; vertices[vCount++] = v;
|
v.Z = z1; vertices[vCount++] = v;
|
||||||
v.Y = y2; v.V = v2; vertices[vCount++] = v;
|
v.Y = y2; v.V = v2; vertices[vCount++] = v;
|
||||||
v.X = x1; v.Z = z2; v.U = 0; vertices[vCount++] = v;
|
v.X = x1; v.Z = z2; v.U = 0; vertices[vCount++] = v;
|
||||||
v.Y = y1; v.V = v1; vertices[vCount++] = v;
|
v.Y = y1; v.V = v1; vertices[vCount++] = v;
|
||||||
}
|
}
|
||||||
if (particles && (rainAcc >= 0.25 || moved)) {
|
if (particles && (rainAcc >= 0.25 || moved)) {
|
||||||
rainAcc = 0;
|
rainAcc = 0;
|
||||||
|
@ -263,7 +263,7 @@ bool Hotkeys_IsHotkey(Key key, STRING_TRANSIENT String* text, bool* moreInput) {
|
|||||||
UInt8 flags = 0;
|
UInt8 flags = 0;
|
||||||
if (Key_IsControlPressed()) flags |= HOTKEYS_FLAG_CTRL;
|
if (Key_IsControlPressed()) flags |= HOTKEYS_FLAG_CTRL;
|
||||||
if (Key_IsShiftPressed()) flags |= HOTKEYS_FLAG_SHIFT;
|
if (Key_IsShiftPressed()) flags |= HOTKEYS_FLAG_SHIFT;
|
||||||
if (Key_IsAltPressed()) flags |= HOTKEYS_FLAT_ALT;
|
if (Key_IsAltPressed()) flags |= HOTKEYS_FLAG_ALT;
|
||||||
|
|
||||||
String_Clear(text);
|
String_Clear(text);
|
||||||
*moreInput = false;
|
*moreInput = false;
|
||||||
|
@ -129,7 +129,7 @@ HotkeyData HotkeysList[HOTKEYS_MAX_COUNT];
|
|||||||
StringsBuffer HotkeysText;
|
StringsBuffer HotkeysText;
|
||||||
#define HOTKEYS_FLAG_CTRL 1
|
#define HOTKEYS_FLAG_CTRL 1
|
||||||
#define HOTKEYS_FLAG_SHIFT 2
|
#define HOTKEYS_FLAG_SHIFT 2
|
||||||
#define HOTKEYS_FLAT_ALT 4
|
#define HOTKEYS_FLAG_ALT 4
|
||||||
|
|
||||||
void Hotkeys_Add(Key baseKey, UInt8 flags, STRING_PURE String* text, bool more);
|
void Hotkeys_Add(Key baseKey, UInt8 flags, STRING_PURE String* text, bool more);
|
||||||
bool Hotkeys_Remove(Key baseKey, UInt8 flags);
|
bool Hotkeys_Remove(Key baseKey, UInt8 flags);
|
||||||
|
@ -39,7 +39,7 @@ typedef void (*Menu_ContextRecreated)(GuiElement* elem);
|
|||||||
Screen_Layout \
|
Screen_Layout \
|
||||||
Widget** WidgetsPtr; \
|
Widget** WidgetsPtr; \
|
||||||
Int32 WidgetsCount; \
|
Int32 WidgetsCount; \
|
||||||
FontDesc TitleFont, RegularFont; \
|
FontDesc TitleFont, TextFont; \
|
||||||
Menu_ContextRecreated ContextRecreated;
|
Menu_ContextRecreated ContextRecreated;
|
||||||
|
|
||||||
typedef struct MenuScreen_ { MenuScreen_Layout } MenuScreen;
|
typedef struct MenuScreen_ { MenuScreen_Layout } MenuScreen;
|
||||||
@ -58,6 +58,23 @@ typedef struct OptionsGroupScreen_ {
|
|||||||
Int32 SelectedI;
|
Int32 SelectedI;
|
||||||
} OptionsGroupScreen;
|
} OptionsGroupScreen;
|
||||||
|
|
||||||
|
typedef struct DeathScreen_ {
|
||||||
|
MenuScreen_Layout
|
||||||
|
Widget* Widgets[4];
|
||||||
|
TextWidget Title, Score;
|
||||||
|
ButtonWidget Gen, Load;
|
||||||
|
} DeathScreen;
|
||||||
|
|
||||||
|
typedef struct EditHotkeyScreen_ {
|
||||||
|
MenuScreen_Layout
|
||||||
|
HotkeyData CurHotkey, OrigHotkey;
|
||||||
|
Int32 SelectedI;
|
||||||
|
bool SupressNextPress;
|
||||||
|
MenuInputWidget Input;
|
||||||
|
ButtonWidget Buttons[6];
|
||||||
|
Widget* Widgets[7];
|
||||||
|
} EditHotkeyScreen;
|
||||||
|
|
||||||
|
|
||||||
void Menu_FreeWidgets(Widget** widgets, Int32 widgetsCount) {
|
void Menu_FreeWidgets(Widget** widgets, Int32 widgetsCount) {
|
||||||
if (widgets == NULL) return;
|
if (widgets == NULL) return;
|
||||||
@ -338,7 +355,7 @@ bool MenuScreen_HandlesMouseMove(GuiElement* elem, Int32 x, Int32 y) {
|
|||||||
MenuScreen* screen = (MenuScreen*)elem;
|
MenuScreen* screen = (MenuScreen*)elem;
|
||||||
return Menu_HandleMouseMove(screen->WidgetsPtr, screen->WidgetsCount, x, y) >= 0;
|
return Menu_HandleMouseMove(screen->WidgetsPtr, screen->WidgetsCount, x, y) >= 0;
|
||||||
}
|
}
|
||||||
bool MenuScreen_HandlesMouseMove(GuiElement* elem, Int32 x, Int32 y, MouseButton btn) { return true; }
|
bool MenuScreen_HandlesMouseUp(GuiElement* elem, Int32 x, Int32 y, MouseButton btn) { return true; }
|
||||||
bool MenuScreen_HandlesMouseScroll(GuiElement* elem, Real32 delta) { return true; }
|
bool MenuScreen_HandlesMouseScroll(GuiElement* elem, Real32 delta) { return true; }
|
||||||
|
|
||||||
bool MenuScreen_HandlesKeyDown(GuiElement* elem, Key key) {
|
bool MenuScreen_HandlesKeyDown(GuiElement* elem, Key key) {
|
||||||
@ -360,6 +377,14 @@ void MenuScreen_ContextRecreated(void* obj) {
|
|||||||
|
|
||||||
void MenuScreen_Init(GuiElement* elem) {
|
void MenuScreen_Init(GuiElement* elem) {
|
||||||
MenuScreen* screen = (MenuScreen*)elem;
|
MenuScreen* screen = (MenuScreen*)elem;
|
||||||
|
|
||||||
|
if (screen->TitleFont.Handle == NULL) {
|
||||||
|
Platform_MakeFont(&screen->TitleFont, &Game_FontName, 16, FONT_STYLE_BOLD);
|
||||||
|
}
|
||||||
|
if (screen->TextFont.Handle == NULL) {
|
||||||
|
Platform_MakeFont(&screen->TextFont, &Game_FontName, 16, FONT_STYLE_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
Event_RegisterVoid(&GfxEvents_ContextLost, screen, MenuScreen_ContextLost);
|
Event_RegisterVoid(&GfxEvents_ContextLost, screen, MenuScreen_ContextLost);
|
||||||
Event_RegisterVoid(&GfxEvents_ContextRecreated, screen, MenuScreen_ContextRecreated);
|
Event_RegisterVoid(&GfxEvents_ContextRecreated, screen, MenuScreen_ContextRecreated);
|
||||||
}
|
}
|
||||||
@ -379,8 +404,8 @@ void MenuScreen_Free(GuiElement* elem) {
|
|||||||
if (screen->TitleFont.Handle != NULL) {
|
if (screen->TitleFont.Handle != NULL) {
|
||||||
Platform_FreeFont(&screen->TitleFont);
|
Platform_FreeFont(&screen->TitleFont);
|
||||||
}
|
}
|
||||||
if (screen->RegularFont.Handle != NULL) {
|
if (screen->TextFont.Handle != NULL) {
|
||||||
Platform_FreeFont(&screen->RegularFont);
|
Platform_FreeFont(&screen->TextFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
Event_UnregisterVoid(&GfxEvents_ContextLost, screen, MenuScreen_ContextLost);
|
Event_UnregisterVoid(&GfxEvents_ContextLost, screen, MenuScreen_ContextLost);
|
||||||
@ -401,7 +426,7 @@ void MenuScreen_MakeInstance(MenuScreen* screen, Widget** widgets, Int32 count,
|
|||||||
screen->VTABLE->HandlesKeyUp = MenuScreen_HandlesKeyUp;
|
screen->VTABLE->HandlesKeyUp = MenuScreen_HandlesKeyUp;
|
||||||
screen->VTABLE->HandlesKeyPress = MenuScreen_HandlesKeyPress;
|
screen->VTABLE->HandlesKeyPress = MenuScreen_HandlesKeyPress;
|
||||||
screen->VTABLE->HandlesMouseDown = MenuScreen_HandlesMouseDown;
|
screen->VTABLE->HandlesMouseDown = MenuScreen_HandlesMouseDown;
|
||||||
screen->VTABLE->HandlesMouseUp = MenuScreen_HandlesMouseMove;
|
screen->VTABLE->HandlesMouseUp = MenuScreen_HandlesMouseUp;
|
||||||
screen->VTABLE->HandlesMouseMove = MenuScreen_HandlesMouseMove;
|
screen->VTABLE->HandlesMouseMove = MenuScreen_HandlesMouseMove;
|
||||||
screen->VTABLE->HandlesMouseScroll = MenuScreen_HandlesMouseScroll;
|
screen->VTABLE->HandlesMouseScroll = MenuScreen_HandlesMouseScroll;
|
||||||
|
|
||||||
@ -422,16 +447,20 @@ void MenuScreen_MakeInstance(MenuScreen* screen, Widget** widgets, Int32 count,
|
|||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
GuiElementVTABLE PauseScreen_VTABLE;
|
GuiElementVTABLE PauseScreen_VTABLE;
|
||||||
PauseScreen PauseScreen_Instance;
|
PauseScreen PauseScreen_Instance;
|
||||||
void PauseScreen_Make(PauseScreen* screen, Int32 i, Int32 dir, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
void PauseScreen_Make(PauseScreen* screen, Int32 i, Int32 dir, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
||||||
String text = String_FromRaw(title, UInt16_MaxValue);
|
|
||||||
ButtonWidget* btn = &screen->Buttons[i];
|
ButtonWidget* btn = &screen->Buttons[i];
|
||||||
|
screen->Widgets[i] = (Widget*)btn;
|
||||||
|
|
||||||
|
String text = String_FromReadonly(title);
|
||||||
ButtonWidget_Create(btn, &text, 300, &screen->TitleFont, onClick);
|
ButtonWidget_Create(btn, &text, 300, &screen->TitleFont, onClick);
|
||||||
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, dir * 160, y);
|
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, dir * 160, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PauseScreen_MakeClassic(PauseScreen* screen, Int32 i, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
void PauseScreen_MakeClassic(PauseScreen* screen, Int32 i, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
||||||
String text = String_FromRaw(title, UInt16_MaxValue);
|
|
||||||
ButtonWidget* btn = &screen->Buttons[i];
|
ButtonWidget* btn = &screen->Buttons[i];
|
||||||
|
screen->Widgets[i] = (Widget*)btn;
|
||||||
|
|
||||||
|
String text = String_FromReadonly(title);
|
||||||
ButtonWidget_Create(btn, &text, 400, &screen->TitleFont, onClick);
|
ButtonWidget_Create(btn, &text, 400, &screen->TitleFont, onClick);
|
||||||
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, y);
|
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, y);
|
||||||
}
|
}
|
||||||
@ -445,7 +474,7 @@ void PauseScreen_Hotkeys(GuiElement* a, GuiElement* b) { Gui_SetNewScre
|
|||||||
void PauseScreen_NostalgiaOptions(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(NostalgiaScreen_MakeInstance()); }
|
void PauseScreen_NostalgiaOptions(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(NostalgiaScreen_MakeInstance()); }
|
||||||
void PauseScreen_Game(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(NULL); }
|
void PauseScreen_Game(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(NULL); }
|
||||||
void PauseScreen_ClassicOptions(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(ClassicOptionsScreen_MakeInstance()); }
|
void PauseScreen_ClassicOptions(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(ClassicOptionsScreen_MakeInstance()); }
|
||||||
void PauseScreen_QuitGame(GuiElement* a, GuiElement* b) { Window_Close(); }
|
void PauseScreen_Quit(GuiElement* a, GuiElement* b) { Window_Close(); }
|
||||||
|
|
||||||
void PauseScreen_CheckHacksAllowed(void* obj) {
|
void PauseScreen_CheckHacksAllowed(void* obj) {
|
||||||
if (Game_UseClassicOptions) return;
|
if (Game_UseClassicOptions) return;
|
||||||
@ -455,10 +484,6 @@ void PauseScreen_CheckHacksAllowed(void* obj) {
|
|||||||
|
|
||||||
void PauseScreen_ContextRecreated(void* obj) {
|
void PauseScreen_ContextRecreated(void* obj) {
|
||||||
PauseScreen* screen = (PauseScreen*)obj;
|
PauseScreen* screen = (PauseScreen*)obj;
|
||||||
Int32 i;
|
|
||||||
for (i = 0; i < Array_Elems(screen->Buttons); i++) {
|
|
||||||
screen->Widgets[i] = &screen->Buttons[i];
|
|
||||||
}
|
|
||||||
FontDesc* font = &screen->TitleFont;
|
FontDesc* font = &screen->TitleFont;
|
||||||
|
|
||||||
if (Game_UseClassicOptions) {
|
if (Game_UseClassicOptions) {
|
||||||
@ -469,7 +494,8 @@ void PauseScreen_ContextRecreated(void* obj) {
|
|||||||
PauseScreen_MakeClassic(screen, 4, 150, "Nostalgia options...", PauseScreen_NostalgiaOptions);
|
PauseScreen_MakeClassic(screen, 4, 150, "Nostalgia options...", PauseScreen_NostalgiaOptions);
|
||||||
|
|
||||||
String back = String_FromConst("Back to game");
|
String back = String_FromConst("Back to game");
|
||||||
Menu_MakeBack(&screen->Buttons[5], 400, &back, 25, font, PauseScreen_QuitGame);
|
screen->Widgets[5] = (Widget*)(&screen->Buttons[5]);
|
||||||
|
Menu_MakeBack(&screen->Buttons[5], 400, &back, 25, font, PauseScreen_Game);
|
||||||
|
|
||||||
/* Disable nostalgia options in classic mode*/
|
/* Disable nostalgia options in classic mode*/
|
||||||
if (Game_ClassicMode) { screen->Widgets[4] = NULL; }
|
if (Game_ClassicMode) { screen->Widgets[4] = NULL; }
|
||||||
@ -484,9 +510,12 @@ void PauseScreen_ContextRecreated(void* obj) {
|
|||||||
PauseScreen_Make(screen, 5, -1, 50, "Hotkeys...", PauseScreen_Hotkeys);
|
PauseScreen_Make(screen, 5, -1, 50, "Hotkeys...", PauseScreen_Hotkeys);
|
||||||
|
|
||||||
String quitMsg = String_FromConst("Quit game");
|
String quitMsg = String_FromConst("Quit game");
|
||||||
ButtonWidget_Create(&screen->Buttons[6], &quitMsg, 120, font, PauseScreen_QuitGame);
|
screen->Widgets[6] = (Widget*)(&screen->Buttons[6]);
|
||||||
Widget_SetLocation((Widget*)(&screen->Buttons[6]), ANCHOR_MAX, ANCHOR_MAX, 5, 5);
|
ButtonWidget_Create(&screen->Buttons[6], &quitMsg, 120, font, PauseScreen_Quit);
|
||||||
Menu_MakeDefaultBack(&screen->Buttons[7], true, font, PauseScreen_QuitGame);
|
Widget_SetLocation(screen->Widgets[6], ANCHOR_MAX, ANCHOR_MAX, 5, 5);
|
||||||
|
|
||||||
|
screen->Widgets[7] = (Widget*)(&screen->Buttons[7]);
|
||||||
|
Menu_MakeDefaultBack(&screen->Buttons[7], true, font, PauseScreen_Game);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ServerConnection_IsSinglePlayer) {
|
if (!ServerConnection_IsSinglePlayer) {
|
||||||
@ -499,7 +528,6 @@ void PauseScreen_ContextRecreated(void* obj) {
|
|||||||
void PauseScreen_Init(GuiElement* elem) {
|
void PauseScreen_Init(GuiElement* elem) {
|
||||||
PauseScreen* screen = (PauseScreen*)elem;
|
PauseScreen* screen = (PauseScreen*)elem;
|
||||||
MenuScreen_Init(elem);
|
MenuScreen_Init(elem);
|
||||||
Platform_MakeFont(&screen->TitleFont, &Game_FontName, 16, FONT_STYLE_BOLD);
|
|
||||||
Event_RegisterVoid(&UserEvents_HackPermissionsChanged, screen, PauseScreen_CheckHacksAllowed);
|
Event_RegisterVoid(&UserEvents_HackPermissionsChanged, screen, PauseScreen_CheckHacksAllowed);
|
||||||
screen->ContextRecreated(elem);
|
screen->ContextRecreated(elem);
|
||||||
}
|
}
|
||||||
@ -518,7 +546,7 @@ Screen* PauseScreen_MakeInstance(void) {
|
|||||||
|
|
||||||
screen->VTABLE->Init = PauseScreen_Init;
|
screen->VTABLE->Init = PauseScreen_Init;
|
||||||
screen->VTABLE->Free = PauseScreen_Free;
|
screen->VTABLE->Free = PauseScreen_Free;
|
||||||
return screen;
|
return (Screen*)screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -542,17 +570,19 @@ void OptionsGroupScreen_CheckHacksAllowed(void* obj) {
|
|||||||
screen->Buttons[5].Disabled = !LocalPlayer_Instance.Hacks.CanAnyHacks; /* env settings */
|
screen->Buttons[5].Disabled = !LocalPlayer_Instance.Hacks.CanAnyHacks; /* env settings */
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsGroupScreen_Make(OptionsGroupScreen* screen, Int32 i, Int32 dir, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
void OptionsGroupScreen_Make(OptionsGroupScreen* screen, Int32 i, Int32 dir, Int32 y, const UInt8* title, Widget_LeftClick onClick) {
|
||||||
String text = String_FromRaw(title, UInt16_MaxValue);
|
|
||||||
ButtonWidget* btn = &screen->Buttons[i];
|
ButtonWidget* btn = &screen->Buttons[i];
|
||||||
|
screen->Widgets[i] = (Widget*)btn;
|
||||||
|
|
||||||
|
String text = String_FromReadonly(title);
|
||||||
ButtonWidget_Create(btn, &text, 300, &screen->TitleFont, onClick);
|
ButtonWidget_Create(btn, &text, 300, &screen->TitleFont, onClick);
|
||||||
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, dir * 160, y);
|
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, dir * 160, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsGroupScreen_MakeDesc(OptionsGroupScreen* screen) {
|
void OptionsGroupScreen_MakeDesc(OptionsGroupScreen* screen) {
|
||||||
String text = String_FromRaw(optsGroup_descs[screen->SelectedI], UInt16_MaxValue);
|
screen->Widgets[8] = (Widget*)(&screen->Desc);
|
||||||
screen->Widgets[8] = &screen->Desc;
|
String text = String_FromReadonly(optsGroup_descs[screen->SelectedI]);
|
||||||
TextWidget_Create(&screen->Desc, &text, &screen->RegularFont);
|
TextWidget_Create(&screen->Desc, &text, &screen->TextFont);
|
||||||
Widget_SetLocation((Widget*)(&screen->Desc), ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 100);
|
Widget_SetLocation((Widget*)(&screen->Desc), ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -566,11 +596,6 @@ void OptionsGroupScreen_Nostalgia(GuiElement* a, GuiElement* b) { Gui_SetNewScre
|
|||||||
|
|
||||||
void OptionsGroupScreen_ContextRecreated(void* obj) {
|
void OptionsGroupScreen_ContextRecreated(void* obj) {
|
||||||
OptionsGroupScreen* screen = (OptionsGroupScreen*)obj;
|
OptionsGroupScreen* screen = (OptionsGroupScreen*)obj;
|
||||||
Int32 i;
|
|
||||||
for (i = 0; i < Array_Elems(screen->Buttons); i++) {
|
|
||||||
screen->Widgets[i] = &screen->Buttons[i];
|
|
||||||
}
|
|
||||||
screen->Widgets[8] = NULL; /* Description text widget placeholder */
|
|
||||||
|
|
||||||
OptionsGroupScreen_Make(screen, 0, -1, -100, "Misc options...", OptionsGroupScreen_Misc);
|
OptionsGroupScreen_Make(screen, 0, -1, -100, "Misc options...", OptionsGroupScreen_Misc);
|
||||||
OptionsGroupScreen_Make(screen, 1, -1, -50, "Gui options...", OptionsGroupScreen_Gui);
|
OptionsGroupScreen_Make(screen, 1, -1, -50, "Gui options...", OptionsGroupScreen_Gui);
|
||||||
@ -579,7 +604,10 @@ void OptionsGroupScreen_ContextRecreated(void* obj) {
|
|||||||
OptionsGroupScreen_Make(screen, 4, 1, -50, "Hacks settings...", OptionsGroupScreen_Hacks);
|
OptionsGroupScreen_Make(screen, 4, 1, -50, "Hacks settings...", OptionsGroupScreen_Hacks);
|
||||||
OptionsGroupScreen_Make(screen, 5, 1, 0, "Env settings...", OptionsGroupScreen_Env);
|
OptionsGroupScreen_Make(screen, 5, 1, 0, "Env settings...", OptionsGroupScreen_Env);
|
||||||
OptionsGroupScreen_Make(screen, 6, 1, 50, "Nostalgia options...", OptionsGroupScreen_Nostalgia);
|
OptionsGroupScreen_Make(screen, 6, 1, 50, "Nostalgia options...", OptionsGroupScreen_Nostalgia);
|
||||||
Menu_MakeDefaultBack(&screen->Buttons[7], false, &screen->TitleFont, Menu_SwitchPause);
|
|
||||||
|
screen->Widgets[7] = (Widget*)(&screen->Buttons[7]);
|
||||||
|
Menu_MakeDefaultBack(&screen->Buttons[7], false, &screen->TitleFont, Menu_SwitchPause);
|
||||||
|
screen->Widgets[8] = NULL; /* Description text widget placeholder */
|
||||||
|
|
||||||
if (screen->SelectedI >= 0) { OptionsGroupScreen_MakeDesc(screen); }
|
if (screen->SelectedI >= 0) { OptionsGroupScreen_MakeDesc(screen); }
|
||||||
OptionsGroupScreen_CheckHacksAllowed(obj);
|
OptionsGroupScreen_CheckHacksAllowed(obj);
|
||||||
@ -588,8 +616,6 @@ void OptionsGroupScreen_ContextRecreated(void* obj) {
|
|||||||
void OptionsGroupScreen_Init(GuiElement* elem) {
|
void OptionsGroupScreen_Init(GuiElement* elem) {
|
||||||
OptionsGroupScreen* screen = (OptionsGroupScreen*)elem;
|
OptionsGroupScreen* screen = (OptionsGroupScreen*)elem;
|
||||||
MenuScreen_Init(elem);
|
MenuScreen_Init(elem);
|
||||||
Platform_MakeFont(&screen->TitleFont, &Game_FontName, 16, FONT_STYLE_BOLD);
|
|
||||||
Platform_MakeFont(&screen->RegularFont, &Game_FontName, 16, FONT_STYLE_NORMAL);
|
|
||||||
Event_RegisterVoid(&UserEvents_HackPermissionsChanged, screen, OptionsGroupScreen_CheckHacksAllowed);
|
Event_RegisterVoid(&UserEvents_HackPermissionsChanged, screen, OptionsGroupScreen_CheckHacksAllowed);
|
||||||
screen->ContextRecreated(elem);
|
screen->ContextRecreated(elem);
|
||||||
}
|
}
|
||||||
@ -623,36 +649,271 @@ Screen* OptionsGroupScreen_MakeInstance(void) {
|
|||||||
screen->VTABLE->HandlesMouseMove = OptionsGroupScreen_HandlesMouseMove;
|
screen->VTABLE->HandlesMouseMove = OptionsGroupScreen_HandlesMouseMove;
|
||||||
|
|
||||||
screen->SelectedI = -1;
|
screen->SelectedI = -1;
|
||||||
return screen;
|
return (Screen*)screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*------------------------------------------------------DeathScreen--------------------------------------------------------*
|
*------------------------------------------------------DeathScreen--------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
|
GuiElementVTABLE DeathScreen_VTABLE;
|
||||||
void DeathScreen_Gen(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(GenLevelScreen_MakeInstance()); }
|
DeathScreen DeathScreen_Instance;
|
||||||
|
void DeathScreen_Gen(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(GenLevelScreen_MakeInstance()); }
|
||||||
void DeathScreen_Load(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(LoadLevelScreen_MakeInstance()); }
|
void DeathScreen_Load(GuiElement* a, GuiElement* b) { Gui_SetNewScreen(LoadLevelScreen_MakeInstance()); }
|
||||||
|
|
||||||
void DeathScreen_Init(GuiElement* elem) {
|
void DeathScreen_Init(GuiElement* elem) {
|
||||||
base.Init();
|
DeathScreen* screen = (DeathScreen*)elem;
|
||||||
titleFont = new Font(game.FontName, 16, FontStyle.Bold);
|
Platform_MakeFont(&screen->TextFont, &Game_FontName, 40, FONT_STYLE_NORMAL);
|
||||||
regularFont = new Font(game.FontName, 40);
|
MenuScreen_Init(elem);
|
||||||
ContextRecreated();
|
screen->ContextRecreated(elem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HandlesKeyDown(Key key) { return true; }
|
bool DeathScreen_HandlesKeyDown(GuiElement* elem, Key key) { return true; }
|
||||||
|
|
||||||
void DeathScreen_ContextRecreated(void* obj) {
|
void DeathScreen_ContextRecreated(void* obj) {
|
||||||
string score = game.Chat.Status1.Text;
|
DeathScreen* screen = (DeathScreen*)obj;
|
||||||
widgets = new Widget[]{
|
|
||||||
TextWidget.Create(game, "Game over!", regularFont)
|
String title = String_FromConst("Game over!");
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -150),
|
screen->Widgets[0] = (Widget*)(&screen->Title);
|
||||||
TextWidget.Create(game, score, titleFont)
|
TextWidget_Create(&screen->Title, &title, &screen->TextFont);
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, -75),
|
Widget_SetLocation(screen->Widgets[0], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -150);
|
||||||
ButtonWidget.Create(game, 400, "Generate new level...", titleFont, GenLevelClick)
|
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 25),
|
String score = String_FromRawArray(Chat_Status[1].Buffer);
|
||||||
ButtonWidget.Create(game, 400, "Load level...", titleFont, LoadLevelClick)
|
screen->Widgets[1] = (Widget*)(&screen->Score);
|
||||||
.SetLocation(Anchor.Centre, Anchor.Centre, 0, 75),
|
TextWidget_Create(&screen->Score, &score, &screen->TitleFont);
|
||||||
};
|
Widget_SetLocation(screen->Widgets[1], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -75);
|
||||||
|
|
||||||
|
String gen = String_FromConst("Generate new level...")
|
||||||
|
screen->Widgets[2] = (Widget*)(&screen->Gen);
|
||||||
|
ButtonWidget_Create(&screen->Gen, &gen, 400, &screen->TitleFont, DeathScreen_Gen);
|
||||||
|
Widget_SetLocation(screen->Widgets[2], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 25);
|
||||||
|
|
||||||
|
String load = String_FromConst("Load level...");
|
||||||
|
screen->Widgets[3] = (Widget*)(&screen->Load);
|
||||||
|
ButtonWidget_Create(&screen->Load, &load, 400, &screen->TitleFont, DeathScreen_Load);
|
||||||
|
Widget_SetLocation(screen->Widgets[3], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 75);
|
||||||
|
}
|
||||||
|
|
||||||
|
Screen* DeathScreen_MakeInstance(void) {
|
||||||
|
DeathScreen* screen = &DeathScreen_Instance;
|
||||||
|
MenuScreen_MakeInstance((MenuScreen*)screen, screen->Widgets, Array_Elems(screen->Widgets), DeathScreen_ContextRecreated);
|
||||||
|
DeathScreen_VTABLE = *screen->VTABLE;
|
||||||
|
screen->VTABLE = &DeathScreen_VTABLE;
|
||||||
|
|
||||||
|
screen->VTABLE->Init = DeathScreen_Init;
|
||||||
|
screen->VTABLE->HandlesKeyDown = DeathScreen_HandlesKeyDown;
|
||||||
|
return (Screen*)screen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*########################################################################################################################*
|
||||||
|
*----------------------------------------------------EditHotkeyScreen-----------------------------------------------------*
|
||||||
|
*#########################################################################################################################*/
|
||||||
|
GuiElementVTABLE EditHotkeyScreen_VTABLE;
|
||||||
|
EditHotkeyScreen EditHotkeyScreen_Instance;
|
||||||
|
void EditHotkeyScreen_Make(EditHotkeyScreen* screen, Int32 i, Int32 x, Int32 y, STRING_PURE String* text, Widget_LeftClick onClick) {
|
||||||
|
ButtonWidget* btn = &screen->Buttons[i];
|
||||||
|
screen->Widgets[i] = (Widget*)btn;
|
||||||
|
|
||||||
|
ButtonWidget_Create(btn, text, 300, &screen->TitleFont, onClick);
|
||||||
|
Widget_SetLocation((Widget*)btn, ANCHOR_CENTRE, ANCHOR_CENTRE, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_MakeFlags(UInt8 flags, STRING_TRANSIENT String* str) {
|
||||||
|
if (flags == 0) String_AppendConst(str, " None");
|
||||||
|
if (flags & HOTKEYS_FLAG_CTRL) String_AppendConst(str, " Ctrl");
|
||||||
|
if (flags & HOTKEYS_FLAG_SHIFT) String_AppendConst(str, " Shift");
|
||||||
|
if (flags & HOTKEYS_FLAG_ALT) String_AppendConst(str, " Alt");
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_MakeBaseKey(EditHotkeyScreen* screen, Widget_LeftClick onClick) {
|
||||||
|
UInt8 textBuffer[String_BufferSize(STRING_SIZE)];
|
||||||
|
String text = String_InitAndClearArray(textBuffer);
|
||||||
|
|
||||||
|
String_AppendConst(&text, "Key: ");
|
||||||
|
String_AppendConst(&text, Key_Names[screen->CurHotkey.BaseKey]);
|
||||||
|
EditHotkeyScreen_Make(screen, 0, 0, -150, &text, onClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_MakeModifiers(EditHotkeyScreen* screen, Widget_LeftClick onClick) {
|
||||||
|
UInt8 textBuffer[String_BufferSize(STRING_SIZE)];
|
||||||
|
String text = String_InitAndClearArray(textBuffer);
|
||||||
|
|
||||||
|
String_AppendConst(&text, "Modifiers:");
|
||||||
|
EditHotkeyScreen_MakeFlags(screen->CurHotkey.Flags, &text);
|
||||||
|
EditHotkeyScreen_Make(screen, 1, 0, -100, &text, onClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_MakeLeaveOpen(EditHotkeyScreen* screen, Widget_LeftClick onClick) {
|
||||||
|
UInt8 textBuffer[String_BufferSize(STRING_SIZE)];
|
||||||
|
String text = String_InitAndClearArray(textBuffer);
|
||||||
|
|
||||||
|
String_AppendConst(&text, "Input stays open: ");
|
||||||
|
String_AppendConst(&text, screen->CurHotkey.StaysOpen ? "ON" : "OFF");
|
||||||
|
EditHotkeyScreen_Make(screen, 2, -100, 10, &text, onClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_LeaveOpen(GuiElement* elem, GuiElement* widget) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
/* Reset 'waiting for key..' state of two other buttons */
|
||||||
|
if (screen->SelectedI == 0) {
|
||||||
|
EditHotkeyScreen_MakeBaseKey(screen, EditHotkeyScreen_BaseKey);
|
||||||
|
screen->SupressNextPress = false;
|
||||||
|
} else if (screen->SelectedI == 1) {
|
||||||
|
EditHotkeyScreen_MakeModifiers(screen, EditHotkeyScreen_Modifiers);
|
||||||
|
screen->SupressNextPress = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
screen->SelectedI = -1;
|
||||||
|
screen->CurHotkey.StaysOpen = !screen->CurHotkey.StaysOpen;
|
||||||
|
EditHotkeyScreen_MakeLeaveOpen(screen, EditHotkeyScreen_LeaveOpen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_SaveChanges(GuiElement* elem, GuiElement* widget) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
HotkeyData hotkey = screen->OrigHotkey;
|
||||||
|
if (hotkey.BaseKey != Key_Unknown) {
|
||||||
|
Hotkeys_Remove(hotkey.BaseKey, hotkey.Flags);
|
||||||
|
Hotkeys_UserRemovedHotkey(hotkey.BaseKey, hotkey.Flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
hotkey = screen->CurHotkey;
|
||||||
|
if (hotkey.BaseKey != Key_Unknown) {
|
||||||
|
String text = screen->Input.Base.Text;
|
||||||
|
Hotkeys_Add(hotkey.BaseKey, hotkey.Flags, &text, hotkey.StaysOpen);
|
||||||
|
Hotkeys_UserAddedHotkey(hotkey.BaseKey, hotkey.Flags, hotkey.StaysOpen, &text);
|
||||||
|
}
|
||||||
|
Gui_SetNewScreen(HotkeyListScreen_MakeInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_RemoveHotkey(GuiElement* elem, GuiElement* widget) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
HotkeyData hotkey = screen->OrigHotkey;
|
||||||
|
if (hotkey.BaseKey != Key_Unknown) {
|
||||||
|
Hotkeys_Remove(hotkey.BaseKey, hotkey.Flags);
|
||||||
|
Hotkeys_UserRemovedHotkey(hotkey.BaseKey, hotkey.Flags);
|
||||||
|
}
|
||||||
|
Gui_SetNewScreen(HotkeyListScreen_MakeInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_BaseKey(GuiElement* elem, GuiElement* widget) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
screen->SelectedI = 0;
|
||||||
|
screen->SupressNextPress = true;
|
||||||
|
String msg = String_FromConst("Key: press a key..");
|
||||||
|
ButtonWidget_SetText(&screen->Buttons[0], &msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_Modifiers(GuiElement* elem, GuiElement* widget) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
screen->SelectedI = 1;
|
||||||
|
screen->SupressNextPress = true;
|
||||||
|
String msg = String_FromConst("Modifiers: press a key..");
|
||||||
|
ButtonWidget_SetText(&screen->Buttons[1], &msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_Init(GuiElement* elem) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)screen;
|
||||||
|
MenuScreen_Init(elem);
|
||||||
|
Key_KeyRepeat = true;
|
||||||
|
screen->ContextRecreated(elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_Render(GuiElement* elem, Real64 delta) {
|
||||||
|
MenuScreen_Render(elem, delta);
|
||||||
|
Int32 cX = Game_Width / 2, cY = Game_Height / 2;
|
||||||
|
PackedCol grey = PACKEDCOL_CONST(150, 150, 150, 255);
|
||||||
|
GfxCommon_Draw2DFlat(cX - 250, cY - 65, 500, 2, grey);
|
||||||
|
GfxCommon_Draw2DFlat(cX - 250, cY + 45, 500, 2, grey);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_Free(GuiElement* elem) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)elem;
|
||||||
|
Key_KeyRepeat = false;
|
||||||
|
screen->SelectedI = -1;
|
||||||
|
MenuScreen_Free(elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EditHotkeyScreen_HandlesKeyPress(GuiElement* elem, UInt8 key) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)screen;
|
||||||
|
if (screen->SupressNextPress) {
|
||||||
|
screen->SupressNextPress = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return Elem_HandlesKeyPress(&screen->Input.Base, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EditHotkeyScreen_HandlesKeyDown(GuiElement* elem, Key key) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)screen;
|
||||||
|
if (screen->SelectedI >= 0) {
|
||||||
|
if (screen->SelectedI == 0) {
|
||||||
|
screen->CurHotkey.BaseKey = key;
|
||||||
|
EditHotkeyScreen_MakeBaseKey(screen, EditHotkeyScreen_BaseKey);
|
||||||
|
} else if (screen->SelectedI == 1) {
|
||||||
|
if (key == Key_ControlLeft || key == Key_ControlRight) screen->CurHotkey.Flags |= HOTKEYS_FLAG_CTRL;
|
||||||
|
else if (key == Key_ShiftLeft || key == Key_ShiftRight) screen->CurHotkey.Flags |= HOTKEYS_FLAG_SHIFT;
|
||||||
|
else if (key == Key_AltLeft || key == Key_AltRight) screen->CurHotkey.Flags |= HOTKEYS_FLAG_ALT;
|
||||||
|
else screen->CurHotkey.Flags = 0;
|
||||||
|
|
||||||
|
EditHotkeyScreen_MakeModifiers(screen, EditHotkeyScreen_Modifiers);
|
||||||
|
}
|
||||||
|
|
||||||
|
screen->SupressNextPress = true;
|
||||||
|
screen->SelectedI = -1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return Elem_HandlesKeyDown(&screen->Input.Base, key) || MenuScreen_HandlesKeyDown(elem, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EditHotkeyScreen_HandlesKeyUp(GuiElement* elem, Key key) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)screen;
|
||||||
|
return Elem_HandlesKeyUp(&screen->Input.Base, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditHotkeyScreen_ContextRecreated(void* obj) {
|
||||||
|
EditHotkeyScreen* screen = (EditHotkeyScreen*)obj;
|
||||||
|
MenuInputValidator validator = MenuInputValidator_String();
|
||||||
|
String text = String_MakeNull();
|
||||||
|
|
||||||
|
bool existed = screen->OrigHotkey.BaseKey != Key_Unknown;
|
||||||
|
if (existed) {
|
||||||
|
text = StringsBuffer_UNSAFE_Get(&HotkeysText, screen->OrigHotkey.TextIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditHotkeyScreen_MakeBaseKey(screen, EditHotkeyScreen_BaseKey);
|
||||||
|
EditHotkeyScreen_MakeModifiers(screen, EditHotkeyScreen_Modifiers);
|
||||||
|
EditHotkeyScreen_MakeLeaveOpen(screen, EditHotkeyScreen_LeaveOpen);
|
||||||
|
|
||||||
|
String addText = String_FromReadonly(existed ? "Save changes" : "Add hotkey");
|
||||||
|
EditHotkeyScreen_Make(screen, 3, 0, 80, &addText, EditHotkeyScreen_SaveChanges);
|
||||||
|
String remText = String_FromReadonly(existed ? "Remove hotkey" : "Cancel");
|
||||||
|
EditHotkeyScreen_Make(screen, 4, 0, 130, &remText, EditHotkeyScreen_RemoveHotkey);
|
||||||
|
|
||||||
|
screen->Widgets[5] = (Widget*)(&screen->Buttons[5]);
|
||||||
|
Menu_MakeDefaultBack(&screen->Buttons[5], false, &screen->TitleFont, Menu_SwitchPause);
|
||||||
|
|
||||||
|
screen->Widgets[6] = (Widget*)(&screen->Input);
|
||||||
|
MenuInputWidget_Create(&screen->Input, 500, 30, &text, &screen->TextFont, &validator);
|
||||||
|
Widget_SetLocation(screen->Widgets[6], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -35);
|
||||||
|
screen->Input.Base.ShowCaret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Screen* EditHotkeyScreen_MakeInstance(HotkeyData original) {
|
||||||
|
EditHotkeyScreen* screen = &EditHotkeyScreen_Instance;
|
||||||
|
MenuScreen_MakeInstance((MenuScreen*)screen, screen->Widgets, Array_Elems(screen->Widgets), DeathScreen_ContextRecreated);
|
||||||
|
EditHotkeyScreen_VTABLE = *screen->VTABLE;
|
||||||
|
screen->VTABLE = &EditHotkeyScreen_VTABLE;
|
||||||
|
|
||||||
|
screen->VTABLE->Init = EditHotkeyScreen_Init;
|
||||||
|
screen->VTABLE->Render = EditHotkeyScreen_Render;
|
||||||
|
screen->VTABLE->Free = EditHotkeyScreen_Free;
|
||||||
|
|
||||||
|
screen->VTABLE->HandlesKeyPress = EditHotkeyScreen_HandlesKeyPress;
|
||||||
|
screen->VTABLE->HandlesKeyDown = EditHotkeyScreen_HandlesKeyDown;
|
||||||
|
screen->VTABLE->HandlesKeyUp = EditHotkeyScreen_HandlesKeyUp;
|
||||||
|
|
||||||
|
screen->SelectedI = -1;
|
||||||
|
screen->OrigHotkey = original;
|
||||||
|
screen->CurHotkey = original;
|
||||||
|
return (Screen*)screen;
|
||||||
}
|
}
|
@ -506,8 +506,7 @@ bool Gfx_WarnIfNecessary(void) {
|
|||||||
Chat_AddRaw(tmp3, "&cIt is likely you need to install video card drivers.");
|
Chat_AddRaw(tmp3, "&cIt is likely you need to install video card drivers.");
|
||||||
}
|
}
|
||||||
|
|
||||||
UInt8* rendererRaw = glGetString(GL_RENDERER);
|
String renderer = String_FromReadonly(glGetString(GL_RENDERER));
|
||||||
String renderer = String_FromRaw(rendererRaw, UInt16_MaxValue);
|
|
||||||
String intel = String_FromConst("Intel");
|
String intel = String_FromConst("Intel");
|
||||||
if (!String_ContainsString(&renderer, &intel)) return false;
|
if (!String_ContainsString(&renderer, &intel)) return false;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user