Skip to content

Commit 11a55b9

Browse files
committed
Fix Windows options
1 parent 8ea8ed0 commit 11a55b9

File tree

4 files changed

+125
-119
lines changed

4 files changed

+125
-119
lines changed

engine/Orbit.Engine/GameSceneManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ private void UpdateScene()
134134
var postUpdate = DateTime.UtcNow;
135135
var updateDuration = callbackMilliseconds - (postUpdate - currentUpdate).TotalMilliseconds;
136136

137-
var delayUntilNextUpdate = Math.Min(updateDuration, callbackMilliseconds);
137+
var delayUntilNextUpdate = Math.Clamp(updateDuration, 0, callbackMilliseconds);
138138

139139
dispatcher.DispatchDelayed(
140140
TimeSpan.FromMilliseconds(delayUntilNextUpdate),

engine/Orbit.Input/MauiAppBuilderExtensions.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,16 @@ public static MauiAppBuilder UseOrbitKeyboard(
106106
"OnLaunched",
107107
(Microsoft.UI.Xaml.Application application, Microsoft.UI.Xaml.LaunchActivatedEventArgs args) =>
108108
{
109-
var appWindow = Super.App.Windows.First() as Microsoft.Maui.Controls.Window;
109+
var appWindow = Application.Current?.Windows.First();
110+
111+
if (appWindow is null)
112+
{
113+
return;
114+
}
110115

111116
var window = appWindow.Handler?.PlatformView as Microsoft.Maui.MauiWinUIWindow;
112117

113-
if (keyboardOptions.AutoAttachToLifecycleEvents)
118+
if (window is not null)
114119
{
115120
KeyboardManager.Current.AttachKeyboard(window.Content);
116121
}

engine/Orbit.Input/Platforms/Windows/KeyboardManager.cs

Lines changed: 116 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -5,138 +5,138 @@ namespace Orbit.Input;
55

66
public partial class KeyboardManager
77
{
8-
public static void AttachKeyboard(UIElement window)
8+
public void AttachKeyboard(UIElement window)
99
{
10-
window.PreviewKeyUp += (sender, args) =>
11-
{
12-
var mapped = MapToMaui(args.Key);
13-
KeyboardReleased(mapped);
10+
window.PreviewKeyUp += OnWindowPreviewKeyUp;
11+
window.PreviewKeyDown += OnWindowPreviewKeyDown;
12+
}
1413

15-
//Trace.WriteLine($"[KEY] {args.Key} => {mapped}");
16-
};
17-
window.PreviewKeyDown += (sender, args) =>
18-
{
19-
var mapped = MapToMaui(args.Key);
20-
KeyboardPressed(mapped);
21-
};
14+
public void DetachKeyboard(UIElement window)
15+
{
16+
window.PreviewKeyUp -= OnWindowPreviewKeyUp;
17+
window.PreviewKeyDown -= OnWindowPreviewKeyDown;
2218
}
2319

20+
private void OnWindowPreviewKeyDown(object sender, Microsoft.UI.Xaml.Input.KeyRoutedEventArgs e) => KeyboardKeyPressed(ToKeyboardKey(e.Key));
21+
22+
private void OnWindowPreviewKeyUp(object sender, Microsoft.UI.Xaml.Input.KeyRoutedEventArgs e) => KeyboardKeyReleased(ToKeyboardKey(e.Key));
23+
2424
/// <summary>
2525
/// Same as map to Java tbh
2626
/// </summary>
2727
/// <param name="virtualKey"></param>
2828
/// <returns></returns>
29-
public static KeyboardKey MapToMaui(VirtualKey virtualKey)
29+
public static KeyboardKey ToKeyboardKey(VirtualKey virtualKey)
3030
{
3131
switch (virtualKey)
3232
{
33-
case VirtualKey.Space: return KeyboardKey.Space;
34-
case VirtualKey.Left: return KeyboardKey.ArrowLeft;
35-
case VirtualKey.Up: return KeyboardKey.ArrowUp;
36-
case VirtualKey.Right: return KeyboardKey.ArrowRight;
37-
case VirtualKey.Down: return KeyboardKey.ArrowDown;
38-
case VirtualKey.Number0: return KeyboardKey.Digit0;
39-
case VirtualKey.Number1: return KeyboardKey.Digit1;
40-
case VirtualKey.Number2: return KeyboardKey.Digit2;
41-
case VirtualKey.Number3: return KeyboardKey.Digit3;
42-
case VirtualKey.Number4: return KeyboardKey.Digit4;
43-
case VirtualKey.Number5: return KeyboardKey.Digit5;
44-
case VirtualKey.Number6: return KeyboardKey.Digit6;
45-
case VirtualKey.Number7: return KeyboardKey.Digit7;
46-
case VirtualKey.Number8: return KeyboardKey.Digit8;
47-
case VirtualKey.Number9: return KeyboardKey.Digit9;
48-
case VirtualKey.A: return KeyboardKey.KeyA;
49-
case VirtualKey.B: return KeyboardKey.KeyB;
50-
case VirtualKey.C: return KeyboardKey.KeyC;
51-
case VirtualKey.D: return KeyboardKey.KeyD;
52-
case VirtualKey.E: return KeyboardKey.KeyE;
53-
case VirtualKey.F: return KeyboardKey.KeyF;
54-
case VirtualKey.G: return KeyboardKey.KeyG;
55-
case VirtualKey.H: return KeyboardKey.KeyH;
56-
case VirtualKey.I: return KeyboardKey.KeyI;
57-
case VirtualKey.J: return KeyboardKey.KeyJ;
58-
case VirtualKey.K: return KeyboardKey.KeyK;
59-
case VirtualKey.L: return KeyboardKey.KeyL;
60-
case VirtualKey.M: return KeyboardKey.KeyM;
61-
case VirtualKey.N: return KeyboardKey.KeyN;
62-
case VirtualKey.O: return KeyboardKey.KeyO;
63-
case VirtualKey.P: return KeyboardKey.KeyP;
64-
case VirtualKey.Q: return KeyboardKey.KeyQ;
65-
case VirtualKey.R: return KeyboardKey.KeyR;
66-
case VirtualKey.S: return KeyboardKey.KeyS;
67-
case VirtualKey.T: return KeyboardKey.KeyT;
68-
case VirtualKey.U: return KeyboardKey.KeyU;
69-
case VirtualKey.V: return KeyboardKey.KeyV;
70-
case VirtualKey.W: return KeyboardKey.KeyW;
71-
case VirtualKey.X: return KeyboardKey.KeyX;
72-
case VirtualKey.Y: return KeyboardKey.KeyY;
73-
case VirtualKey.Z: return KeyboardKey.KeyZ;
74-
case VirtualKey.CapitalLock: return KeyboardKey.CapsLock;
75-
case VirtualKey.Insert: return KeyboardKey.Insert;
76-
case VirtualKey.Delete: return KeyboardKey.Delete;
77-
case VirtualKey.Snapshot: return KeyboardKey.PrintScreen;
78-
case VirtualKey.Home: return KeyboardKey.Home;
79-
case VirtualKey.End: return KeyboardKey.End;
80-
case VirtualKey.PageDown: return KeyboardKey.PageDown;
81-
case VirtualKey.PageUp: return KeyboardKey.PageUp;
82-
case VirtualKey.Escape: return KeyboardKey.Escape;
83-
case VirtualKey.Pause: return KeyboardKey.Pause;
84-
case VirtualKey.Menu: return KeyboardKey.AltLeft;
85-
case VirtualKey.LeftMenu: return KeyboardKey.AltLeft;
86-
case VirtualKey.RightMenu: return KeyboardKey.AltRight;
87-
case VirtualKey.Shift: return KeyboardKey.ShiftLeft;
88-
case VirtualKey.LeftShift: return KeyboardKey.ShiftLeft;
89-
case VirtualKey.RightShift: return KeyboardKey.ShiftRight;
90-
case VirtualKey.LeftControl: return KeyboardKey.ControlLeft;
91-
case VirtualKey.RightControl: return KeyboardKey.ControlRight;
92-
case VirtualKey.Control: return KeyboardKey.ControlLeft;
93-
case VirtualKey.Enter: return KeyboardKey.Enter;
94-
case VirtualKey.Tab: return KeyboardKey.Tab;
95-
case VirtualKey.Back: return KeyboardKey.Backspace;
96-
case VirtualKey.F1: return KeyboardKey.F1;
97-
case VirtualKey.F2: return KeyboardKey.F2;
98-
case VirtualKey.F3: return KeyboardKey.F3;
99-
case VirtualKey.F4: return KeyboardKey.F4;
100-
case VirtualKey.F5: return KeyboardKey.F5;
101-
case VirtualKey.F6: return KeyboardKey.F6;
102-
case VirtualKey.F7: return KeyboardKey.F7;
103-
case VirtualKey.F8: return KeyboardKey.F8;
104-
case VirtualKey.F9: return KeyboardKey.F9;
105-
case VirtualKey.F10: return KeyboardKey.F10;
106-
case VirtualKey.F11: return KeyboardKey.F11;
107-
case VirtualKey.F12: return KeyboardKey.F12;
108-
case VirtualKey.NumberKeyLock: return KeyboardKey.NumLock;
109-
case VirtualKey.Scroll: return KeyboardKey.ScrollLock;
110-
case VirtualKey.NumberPad0: return KeyboardKey.Numpad0;
111-
case VirtualKey.NumberPad1: return KeyboardKey.Numpad1;
112-
case VirtualKey.NumberPad2: return KeyboardKey.Numpad2;
113-
case VirtualKey.NumberPad3: return KeyboardKey.Numpad3;
114-
case VirtualKey.NumberPad4: return KeyboardKey.Numpad4;
115-
case VirtualKey.NumberPad5: return KeyboardKey.Numpad5;
116-
case VirtualKey.NumberPad6: return KeyboardKey.Numpad6;
117-
case VirtualKey.NumberPad7: return KeyboardKey.Numpad7;
118-
case VirtualKey.NumberPad8: return KeyboardKey.Numpad8;
119-
case VirtualKey.NumberPad9: return KeyboardKey.Numpad9;
120-
case VirtualKey.LeftWindows: return KeyboardKey.MetaLeft;
121-
case VirtualKey.RightWindows: return KeyboardKey.MetaRight;
122-
case VirtualKey.Divide: return KeyboardKey.NumpadDivide;
123-
case VirtualKey.Multiply: return KeyboardKey.NumpadMultiply;
124-
case VirtualKey.Subtract: return KeyboardKey.NumpadSubtract;
125-
case VirtualKey.Add: return KeyboardKey.NumpadAdd;
33+
case VirtualKey.Space: return KeyboardKey.Space;
34+
case VirtualKey.Left: return KeyboardKey.ArrowLeft;
35+
case VirtualKey.Up: return KeyboardKey.ArrowUp;
36+
case VirtualKey.Right: return KeyboardKey.ArrowRight;
37+
case VirtualKey.Down: return KeyboardKey.ArrowDown;
38+
case VirtualKey.Number0: return KeyboardKey.Digit0;
39+
case VirtualKey.Number1: return KeyboardKey.Digit1;
40+
case VirtualKey.Number2: return KeyboardKey.Digit2;
41+
case VirtualKey.Number3: return KeyboardKey.Digit3;
42+
case VirtualKey.Number4: return KeyboardKey.Digit4;
43+
case VirtualKey.Number5: return KeyboardKey.Digit5;
44+
case VirtualKey.Number6: return KeyboardKey.Digit6;
45+
case VirtualKey.Number7: return KeyboardKey.Digit7;
46+
case VirtualKey.Number8: return KeyboardKey.Digit8;
47+
case VirtualKey.Number9: return KeyboardKey.Digit9;
48+
case VirtualKey.A: return KeyboardKey.KeyA;
49+
case VirtualKey.B: return KeyboardKey.KeyB;
50+
case VirtualKey.C: return KeyboardKey.KeyC;
51+
case VirtualKey.D: return KeyboardKey.KeyD;
52+
case VirtualKey.E: return KeyboardKey.KeyE;
53+
case VirtualKey.F: return KeyboardKey.KeyF;
54+
case VirtualKey.G: return KeyboardKey.KeyG;
55+
case VirtualKey.H: return KeyboardKey.KeyH;
56+
case VirtualKey.I: return KeyboardKey.KeyI;
57+
case VirtualKey.J: return KeyboardKey.KeyJ;
58+
case VirtualKey.K: return KeyboardKey.KeyK;
59+
case VirtualKey.L: return KeyboardKey.KeyL;
60+
case VirtualKey.M: return KeyboardKey.KeyM;
61+
case VirtualKey.N: return KeyboardKey.KeyN;
62+
case VirtualKey.O: return KeyboardKey.KeyO;
63+
case VirtualKey.P: return KeyboardKey.KeyP;
64+
case VirtualKey.Q: return KeyboardKey.KeyQ;
65+
case VirtualKey.R: return KeyboardKey.KeyR;
66+
case VirtualKey.S: return KeyboardKey.KeyS;
67+
case VirtualKey.T: return KeyboardKey.KeyT;
68+
case VirtualKey.U: return KeyboardKey.KeyU;
69+
case VirtualKey.V: return KeyboardKey.KeyV;
70+
case VirtualKey.W: return KeyboardKey.KeyW;
71+
case VirtualKey.X: return KeyboardKey.KeyX;
72+
case VirtualKey.Y: return KeyboardKey.KeyY;
73+
case VirtualKey.Z: return KeyboardKey.KeyZ;
74+
case VirtualKey.CapitalLock: return KeyboardKey.CapsLock;
75+
case VirtualKey.Insert: return KeyboardKey.Insert;
76+
case VirtualKey.Delete: return KeyboardKey.Delete;
77+
case VirtualKey.Snapshot: return KeyboardKey.PrintScreen;
78+
case VirtualKey.Home: return KeyboardKey.Home;
79+
case VirtualKey.End: return KeyboardKey.End;
80+
case VirtualKey.PageDown: return KeyboardKey.PageDown;
81+
case VirtualKey.PageUp: return KeyboardKey.PageUp;
82+
case VirtualKey.Escape: return KeyboardKey.Escape;
83+
case VirtualKey.Pause: return KeyboardKey.Pause;
84+
case VirtualKey.Menu: return KeyboardKey.AltLeft;
85+
case VirtualKey.LeftMenu: return KeyboardKey.AltLeft;
86+
case VirtualKey.RightMenu: return KeyboardKey.AltRight;
87+
case VirtualKey.Shift: return KeyboardKey.ShiftLeft;
88+
case VirtualKey.LeftShift: return KeyboardKey.ShiftLeft;
89+
case VirtualKey.RightShift: return KeyboardKey.ShiftRight;
90+
case VirtualKey.LeftControl: return KeyboardKey.ControlLeft;
91+
case VirtualKey.RightControl: return KeyboardKey.ControlRight;
92+
case VirtualKey.Control: return KeyboardKey.ControlLeft;
93+
case VirtualKey.Enter: return KeyboardKey.Enter;
94+
case VirtualKey.Tab: return KeyboardKey.Tab;
95+
case VirtualKey.Back: return KeyboardKey.Backspace;
96+
case VirtualKey.F1: return KeyboardKey.F1;
97+
case VirtualKey.F2: return KeyboardKey.F2;
98+
case VirtualKey.F3: return KeyboardKey.F3;
99+
case VirtualKey.F4: return KeyboardKey.F4;
100+
case VirtualKey.F5: return KeyboardKey.F5;
101+
case VirtualKey.F6: return KeyboardKey.F6;
102+
case VirtualKey.F7: return KeyboardKey.F7;
103+
case VirtualKey.F8: return KeyboardKey.F8;
104+
case VirtualKey.F9: return KeyboardKey.F9;
105+
case VirtualKey.F10: return KeyboardKey.F10;
106+
case VirtualKey.F11: return KeyboardKey.F11;
107+
case VirtualKey.F12: return KeyboardKey.F12;
108+
case VirtualKey.NumberKeyLock: return KeyboardKey.NumLock;
109+
case VirtualKey.Scroll: return KeyboardKey.ScrollLock;
110+
case VirtualKey.NumberPad0: return KeyboardKey.Numpad0;
111+
case VirtualKey.NumberPad1: return KeyboardKey.Numpad1;
112+
case VirtualKey.NumberPad2: return KeyboardKey.Numpad2;
113+
case VirtualKey.NumberPad3: return KeyboardKey.Numpad3;
114+
case VirtualKey.NumberPad4: return KeyboardKey.Numpad4;
115+
case VirtualKey.NumberPad5: return KeyboardKey.Numpad5;
116+
case VirtualKey.NumberPad6: return KeyboardKey.Numpad6;
117+
case VirtualKey.NumberPad7: return KeyboardKey.Numpad7;
118+
case VirtualKey.NumberPad8: return KeyboardKey.Numpad8;
119+
case VirtualKey.NumberPad9: return KeyboardKey.Numpad9;
120+
case VirtualKey.LeftWindows: return KeyboardKey.MetaLeft;
121+
case VirtualKey.RightWindows: return KeyboardKey.MetaRight;
122+
case VirtualKey.Divide: return KeyboardKey.NumpadDivide;
123+
case VirtualKey.Multiply: return KeyboardKey.NumpadMultiply;
124+
case VirtualKey.Subtract: return KeyboardKey.NumpadSubtract;
125+
case VirtualKey.Add: return KeyboardKey.NumpadAdd;
126126
}
127127

128128
switch ((int)virtualKey)
129129
{
130-
case 187: return KeyboardKey.Equal;
131-
case 189: return KeyboardKey.Minus;
132-
case 192: return KeyboardKey.Backquote;
133-
case 188: return KeyboardKey.Comma;
134-
case 190: return KeyboardKey.Period;
135-
case 191: return KeyboardKey.Slash;
136-
case 219: return KeyboardKey.BracketLeft;
137-
case 221: return KeyboardKey.BracketRight;
138-
case 220: return KeyboardKey.Backslash;
139-
case 186: return KeyboardKey.Semicolon;
130+
case 187: return KeyboardKey.Equal;
131+
case 189: return KeyboardKey.Minus;
132+
case 192: return KeyboardKey.Backquote;
133+
case 188: return KeyboardKey.Comma;
134+
case 190: return KeyboardKey.Period;
135+
case 191: return KeyboardKey.Slash;
136+
case 219: return KeyboardKey.BracketLeft;
137+
case 221: return KeyboardKey.BracketRight;
138+
case 220: return KeyboardKey.Backslash;
139+
case 186: return KeyboardKey.Semicolon;
140140
}
141141

142142
return KeyboardKey.Unknown;

games/Platformer.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Global
2727
{622CFDD5-7E63-4EBC-A67F-8418CD1CE2DA}.Release|Any CPU.Build.0 = Release|Any CPU
2828
{3DE622E7-1CBE-4B83-B2D5-FD0AD23F1090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2929
{3DE622E7-1CBE-4B83-B2D5-FD0AD23F1090}.Debug|Any CPU.Build.0 = Debug|Any CPU
30+
{3DE622E7-1CBE-4B83-B2D5-FD0AD23F1090}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
3031
{3DE622E7-1CBE-4B83-B2D5-FD0AD23F1090}.Release|Any CPU.ActiveCfg = Release|Any CPU
3132
{3DE622E7-1CBE-4B83-B2D5-FD0AD23F1090}.Release|Any CPU.Build.0 = Release|Any CPU
3233
{F63F5DA8-4C0D-469C-BB8E-D36B089F5F98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

0 commit comments

Comments
 (0)