Monorepo for Aesthetic.Computer aesthetic.computer
at main 110 lines 3.5 kB view raw
1using Microsoft.UI.Xaml; 2using Microsoft.UI.Xaml.Input; 3using System; 4using Windows.Gaming.Input; 5using Windows.System; 6 7namespace AestheticComputer; 8 9public sealed partial class MainWindow : Window 10{ 11 private Gamepad? _gamepad; 12 13 public MainWindow() 14 { 15 this.InitializeComponent(); 16 17 // Make window fullscreen on Xbox 18 var appWindow = this.AppWindow; 19 appWindow.SetPresenter(Microsoft.UI.Windowing.AppWindowPresenterKind.FullScreen); 20 21 // Initialize WebView2 22 InitializeWebView(); 23 24 // Setup gamepad handling 25 SetupGamepad(); 26 } 27 28 private async void InitializeWebView() 29 { 30 try 31 { 32 await webView.EnsureCoreWebView2Async(); 33 34 // Configure WebView2 for optimal Xbox experience 35 var settings = webView.CoreWebView2.Settings; 36 settings.IsZoomControlEnabled = false; 37 settings.AreDefaultContextMenusEnabled = false; 38 settings.IsStatusBarEnabled = false; 39 settings.AreBrowserAcceleratorKeysEnabled = false; 40 41 // Inject Xbox-specific info 42 await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(@" 43 window.isXboxApp = true; 44 window.isDeviceMode = true; 45 console.log('🎮 Aesthetic Computer Xbox App'); 46 "); 47 48 // Handle navigation errors 49 webView.CoreWebView2.NavigationCompleted += (sender, args) => 50 { 51 if (!args.IsSuccess) 52 { 53 // Show offline message or retry 54 webView.CoreWebView2.NavigateToString(@" 55 <html> 56 <body style='background:#6600FF;color:white;font-family:sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;'> 57 <div style='text-align:center;'> 58 <h1>📡 Connecting...</h1> 59 <p>Please check your internet connection</p> 60 <button onclick='location.reload()' style='padding:20px 40px;font-size:24px;cursor:pointer;'>Retry</button> 61 </div> 62 </body> 63 </html> 64 "); 65 } 66 }; 67 } 68 catch (Exception ex) 69 { 70 System.Diagnostics.Debug.WriteLine($"WebView2 init failed: {ex.Message}"); 71 } 72 } 73 74 private void SetupGamepad() 75 { 76 // Watch for gamepad connections 77 Gamepad.GamepadAdded += (sender, gamepad) => 78 { 79 _gamepad = gamepad; 80 }; 81 82 Gamepad.GamepadRemoved += (sender, gamepad) => 83 { 84 if (_gamepad == gamepad) 85 _gamepad = null; 86 }; 87 88 // Check for already connected gamepads 89 if (Gamepad.Gamepads.Count > 0) 90 { 91 _gamepad = Gamepad.Gamepads[0]; 92 } 93 } 94 95 // Handle keyboard/gamepad navigation 96 private void OnKeyDown(object sender, KeyRoutedEventArgs e) 97 { 98 // Map Xbox controller buttons to web events 99 switch (e.Key) 100 { 101 case VirtualKey.GamepadMenu: 102 case VirtualKey.Escape: 103 // Could show an overlay menu 104 break; 105 case VirtualKey.GamepadView: 106 // Toggle fullscreen or info 107 break; 108 } 109 } 110}