浏览代码

Better Way of having platform specific Battery Info.

Dominique Louis 1 月之前
父节点
当前提交
154ccc36e5

+ 36 - 0
BatteryStatus/.config/dotnet-tools.json

@@ -0,0 +1,36 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "dotnet-mgcb": {
+      "version": "3.8.4",
+      "commands": [
+        "mgcb"
+      ]
+    },
+    "dotnet-mgcb-editor": {
+      "version": "3.8.4",
+      "commands": [
+        "mgcb-editor"
+      ]
+    },
+    "dotnet-mgcb-editor-linux": {
+      "version": "3.8.4",
+      "commands": [
+        "mgcb-editor-linux"
+      ]
+    },
+    "dotnet-mgcb-editor-windows": {
+      "version": "3.8.4",
+      "commands": [
+        "mgcb-editor-windows"
+      ]
+    },
+    "dotnet-mgcb-editor-mac": {
+      "version": "3.8.4",
+      "commands": [
+        "mgcb-editor-mac"
+      ]
+    }
+  }
+}

+ 24 - 10
BatteryStatus/.vscode/launch.json

@@ -2,34 +2,48 @@
     "version": "0.2.0",
     "configurations": [
         {
-            "name": "Windows",
+            "name": "Launch Windows",
             "type": "coreclr",
             "request": "launch",
             "preLaunchTask": "build-windows",
-            "program": "${workspaceFolder}/Platforms/Windows/bin/Debug/net8.0-windows/BatteryStatus.Windows.exe",
+            "program": "${workspaceFolder}/Platforms/Windows/bin/Debug/net8.0-windows/BatteryStatus.exe",
             "args": [],
             "cwd": "${workspaceFolder}/Platforms/Windows",
             "stopAtEntry": false,
             "console": "internalConsole"
         },
         {
-            "name": "DesktopGL",
+            "name": "Launch Desktop",
             "type": "coreclr",
             "request": "launch",
             "preLaunchTask": "build-desktopgl",
-            "program": "${workspaceFolder}/Platforms/DesktopGL/bin/Debug/net8.0/BatteryStatus.DesktopGL.exe",
+            "program": "${workspaceFolder}/Platforms/DesktopGL/bin/Debug/net8.0/BatteryStatus",
             "args": [],
             "cwd": "${workspaceFolder}/Platforms/DesktopGL",
             "stopAtEntry": false,
             "console": "internalConsole"
         },
         {
-            "name": "Android",
-            "type": "mono",
-            "request": "attach",
-            "address": "localhost",
-            "port": 10000,
-			"preLaunchTask": "debug-android"
+            "name": "Launch Android",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-android",
+            "program": "${workspaceFolder}/Platforms/Android/bin/Debug/net8.0-android/BatteryStatus.dll",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/Android",
+            "stopAtEntry": false,
+            "console": "internalConsole"
+        },
+        {
+            "name": "Launch iOS",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-ios",
+            "program": "${workspaceFolder}/Platforms/iOS/bin/Debug/net8.0-ios/BatteryStatus.dll",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/iOS",
+            "stopAtEntry": false,
+            "console": "internalConsole"
         }
     ]
 }

+ 7 - 14
BatteryStatus/.vscode/tasks.json

@@ -22,31 +22,24 @@
             "problemMatcher": "$msCompile"
         },
         {
-            "label": "run-windows",
+            "label": "build-android",
             "command": "dotnet",
             "type": "process",
             "args": [
-                "run",
-                "--project",
-                "Platforms/Windows/BatteryStatus.Windows.csproj"
+                "build",
+                "Platforms/Android/BatteryStatus.Android.csproj"
             ],
             "problemMatcher": "$msCompile"
         },
         {
-            "label": "run-desktopgl",
+            "label": "build-ios",
             "command": "dotnet",
             "type": "process",
             "args": [
-                "run",
-                "--project",
-                "Platforms/DesktopGL/BatteryStatus.DesktopGL.csproj"
+                "build",
+                "Platforms/iOS/BatteryStatus.iOS.csproj"
             ],
             "problemMatcher": "$msCompile"
-        },
-        {
-			"label": "debug-android",
-			"type": "shell",
-			"command": "dotnet build -p:Configuration=Debug ${workspaceFolder}/Platforms/Android/BatteryStatus.Android.csproj \"/t:Install\" /p:AndroidAttachDebugger=true /p:AndroidSdbHostPort=10000"
-		}
+        }
     ]
 }

+ 19 - 0
BatteryStatus/Core/BatteryStatus.Core.csproj

@@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <RootNamespace>BatteryStatus.Core</RootNamespace>
+    <Nullable>enable</Nullable>
+    <AssemblyTitle>BatteryStatus.Core</AssemblyTitle>
+    <Description>Core library for BatteryStatus MonoGame sample.</Description>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Content\SpriteFont1.xnb">
+      <Link>Content\SpriteFont1.xnb</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+</Project>

+ 22 - 11
BatteryStatus/Core/Game1.cs → BatteryStatus/Core/BatteryStatusGame.cs

@@ -1,22 +1,24 @@
 using System;
 using Microsoft.Xna.Framework;
 using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus
 {
-    public class Game1 : Game
+    public class BatteryStatusGame : Game, IDisposable
     {
         GraphicsDeviceManager graphics;
-        SpriteBatch spriteBatch;
-        SpriteFont font;
+        SpriteBatch spriteBatch = null!;
+        SpriteFont font = null!;
+        private readonly IPowerStatus powerStatus;
 
-        public Game1()
+        public BatteryStatusGame(IPowerStatus powerStatus)
         {
+            this.powerStatus = powerStatus ?? throw new ArgumentNullException(nameof(powerStatus));
+
             graphics = new GraphicsDeviceManager(this);
             Content.RootDirectory = "Content";
-#if __MOBILE__ 
-            graphics.IsFullScreen = true;
-#endif
+            IsMouseVisible = true;
         }
 
         protected override void Initialize()
@@ -33,17 +35,26 @@ namespace BatteryStatusDemo
         protected override void Update(GameTime gameTime)
         {
             base.Update(gameTime);
+
+            // Exit the game if the back button is pressed or Escape key is pressed
+            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
+                Exit();
         }
 
         protected override void Draw(GameTime gameTime)
         {
             graphics.GraphicsDevice.Clear(Color.MonoGameOrange);
             spriteBatch.Begin();
-            spriteBatch.DrawString(font, "[Battery Status]\n" + PowerStatus.BatteryChargeStatus, new Vector2(10, 100), Color.Black);
-            spriteBatch.DrawString(font, "[PowerLine Status]\n" + PowerStatus.PowerLineStatus, new Vector2(10, 200), Color.Black);
-            spriteBatch.DrawString(font, "[Charge]\n" + PowerStatus.BatteryLifePercent + "%", new Vector2(10, 300), Color.Black);
+            spriteBatch.DrawString(font, "[Battery Status]\n" + powerStatus.BatteryChargeStatus, new Vector2(10, 100), Color.Black);
+            spriteBatch.DrawString(font, "[PowerLine Status]\n" + powerStatus.PowerLineStatus, new Vector2(10, 200), Color.Black);
+            spriteBatch.DrawString(font, "[Charge]\n" + powerStatus.BatteryLifePercent + "%", new Vector2(10, 300), Color.Black);
             spriteBatch.End();
             base.Draw(gameTime);
         }
+
+        public new void Dispose()
+        {
+            base.Dispose();
+        }
     }
 }

+ 9 - 0
BatteryStatus/Core/IPowerStatus.cs

@@ -0,0 +1,9 @@
+namespace BatteryStatus
+{
+    public interface IPowerStatus
+    {
+        string BatteryChargeStatus { get; }
+        string PowerLineStatus { get; }
+        int BatteryLifePercent { get; }
+    }
+}

+ 0 - 0
BatteryStatus/Core/PowerStatus.cs


+ 1 - 1
BatteryStatus/Platforms/Android/AndroidManifest.xml

@@ -6,4 +6,4 @@
   <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="34" />
   <uses-feature android:glEsVersion="0x00020000" android:required="true" />
   <application android:label="@string/app_name" android:icon="@drawable/icon"></application>
-</manifest>
+</manifest>

+ 3 - 4
BatteryStatus/Platforms/Android/BatteryStatus.Android.csproj

@@ -4,15 +4,14 @@
     <OutputType>Exe</OutputType>
     <RootNamespace>BatteryStatus.Android</RootNamespace>
     <Nullable>enable</Nullable>
-    <AssemblyTitle>BatteryStatus.Android</AssemblyTitle>
+    <AssemblyName>BatteryStatus</AssemblyName>
+    <AssemblyTitle>BatteryStatus Android</AssemblyTitle>
     <Description>Android platform for BatteryStatus MonoGame sample.</Description>
     <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
     <SupportedOSPlatformVersion>28</SupportedOSPlatformVersion>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="..\..\Core\Game1.cs" Link="Game1.cs" />
-  </ItemGroup>
-  <ItemGroup>
+    <ProjectReference Include="..\..\Core\BatteryStatus.Core.csproj" />
     <PackageReference Include="MonoGame.Framework.Android" Version="3.8.*" />
   </ItemGroup>
   <ItemGroup>

+ 25 - 21
BatteryStatus/Platforms/Android/MainActivity.cs

@@ -2,29 +2,33 @@ using Android.App;
 using Android.Content.PM;
 using Android.OS;
 using Android.Views;
+using BatteryStatus;
 using Microsoft.Xna.Framework;
 
-namespace BatteryStatusDemo
+namespace Ascent
 {
-	[Activity(Label = "BatteryStatus",
-		Name = "com.cartblanche.batterystatus.MainActivity",
-		MainLauncher = true,
-		ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize)]
-	public class MainActivity : AndroidGameActivity
-	{
-		private Game1 _game;
-		private View _view;
+    [Activity(
+        Label = "@string/app_name",
+        MainLauncher = true,
+        Icon = "@drawable/icon",
+        AlwaysRetainTaskState = true,
+        LaunchMode = LaunchMode.SingleInstance,
+        ScreenOrientation = ScreenOrientation.FullUser,
+        ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize
+    )]
+    public class MainActivity : AndroidGameActivity
+    {
+        private BatteryStatusGame _game;
+        private View _view;
 
-		protected override void OnCreate(Bundle bundle)
-		{
-			base.OnCreate(bundle);
+        protected override void OnCreate(Bundle bundle)
+        {
+            base.OnCreate(bundle);
 
-			_game = new Game1();
-			//Game1.SetInstance(_game);
-			_view = _game.Services.GetService(typeof(View)) as View;
-
-			SetContentView(_view);
-			_game.Run();
-		}
-	}
-}
+            _game = new BatteryStatusGame();
+            _view = _game.Services.GetService(typeof(View)) as View;
+            SetContentView(_view);
+            _game.Run();
+        }
+    }
+}

+ 19 - 18
BatteryStatus/Platforms/Android/PowerStatus.cs

@@ -2,12 +2,13 @@
 using Android.App;
 using Android.Content;
 using Android.OS;
+using BatteryStatus;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.Android
 {
-    public static partial class PowerStatus
+    public class PowerStatus : IPowerStatus
     {
-        public static string BatteryChargeStatus
+        public string BatteryChargeStatus
         {
             get
             {
@@ -17,17 +18,17 @@ namespace BatteryStatusDemo
                 {
                     int status = battery.GetIntExtra(BatteryManager.ExtraStatus, -1);
 
-                    switch ((Android.OS.BatteryStatus)status)
+                    switch ((global::Android.OS.BatteryStatus)status)
                     {
-                        case Android.OS.BatteryStatus.Charging:
+                        case global::Android.OS.BatteryStatus.Charging:
                             return "Charging";
-                        case Android.OS.BatteryStatus.Full:
+                        case global::Android.OS.BatteryStatus.Full:
                             return "Full";
-                        case Android.OS.BatteryStatus.Discharging:
+                        case global::Android.OS.BatteryStatus.Discharging:
                             return "Discharging";
-                        case Android.OS.BatteryStatus.NotCharging:
+                        case global::Android.OS.BatteryStatus.NotCharging:
                             return "Not Charging";
-                        case Android.OS.BatteryStatus.Unknown:
+                        case global::Android.OS.BatteryStatus.Unknown:
                         default:
                             return "Unknown";
                     }
@@ -37,7 +38,7 @@ namespace BatteryStatusDemo
 			}
         }
 
-        public static string PowerLineStatus
+        public string PowerLineStatus
         {
             get
             {
@@ -45,19 +46,19 @@ namespace BatteryStatusDemo
                 var battery = Application.Context.RegisterReceiver(null, filter);
                 if (battery != null)
                 {
-                    int plugged = battery.GetIntExtra(Android.OS.BatteryManager.ExtraPlugged, -1);
-                    if (plugged == (int)Android.OS.BatteryPlugged.Ac)
+                    int plugged = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraPlugged, -1);
+                    if (plugged == (int)global::Android.OS.BatteryPlugged.Ac)
                         return "AC";
-                    if (plugged == (int)Android.OS.BatteryPlugged.Usb)
+                    if (plugged == (int)global::Android.OS.BatteryPlugged.Usb)
                         return "USB";
-                    if (plugged == (int)Android.OS.BatteryPlugged.Wireless)
+                    if (plugged == (int)global::Android.OS.BatteryPlugged.Wireless)
                         return "Wireless";
                 }
                 return "Unplugged";
             }
         }
 
-        public static int BatteryLifePercent
+        public int BatteryLifePercent
         {
             get
             {
@@ -65,8 +66,8 @@ namespace BatteryStatusDemo
                 var battery = Application.Context.RegisterReceiver(null, filter);
                 if (battery != null)
                 {
-                    int level = battery.GetIntExtra(Android.OS.BatteryManager.ExtraLevel, -1);
-                    int scale = battery.GetIntExtra(Android.OS.BatteryManager.ExtraScale, -1);
+                    int level = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraLevel, -1);
+                    int scale = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraScale, -1);
                     if (level >= 0 && scale > 0)
                         return (int)((level / (float)scale) * 100);
                 }
@@ -74,4 +75,4 @@ namespace BatteryStatusDemo
             }
         }
     }
-}
+}

二进制
BatteryStatus/Platforms/Android/Resources/Drawable/AscentGame.ico


二进制
BatteryStatus/Platforms/Android/Resources/Drawable/Icon.png


+ 1 - 0
BatteryStatus/Platforms/Android/Resources/Drawable/icon.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-400h240v-240H360v240Z"/></svg>

+ 3 - 4
BatteryStatus/Platforms/DesktopGL/BatteryStatus.DesktopGL.csproj

@@ -4,14 +4,13 @@
     <OutputType>Exe</OutputType>
     <RootNamespace>BatteryStatus.DesktopGL</RootNamespace>
     <Nullable>enable</Nullable>
-    <AssemblyTitle>BatteryStatus.DesktopGL</AssemblyTitle>
+    <AssemblyName>BatteryStatus</AssemblyName>
+    <AssemblyTitle>BatteryStatus DesktopGL</AssemblyTitle>
     <Description>DesktopGL platform for BatteryStatus MonoGame sample.</Description>
     <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="..\..\Core\Game1.cs" Link="Game1.cs" />
-  </ItemGroup>
-  <ItemGroup>
+    <ProjectReference Include="..\..\Core\BatteryStatus.Core.csproj" />
     <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
   </ItemGroup>
   <ItemGroup>

+ 7 - 5
BatteryStatus/Platforms/DesktopGL/PowerStatus.cs

@@ -1,10 +1,12 @@
 
-namespace BatteryStatusDemo
+using BatteryStatus;
+
+namespace BatteryStatus.DesktopGL
 {
-    public static partial class PowerStatus
+    public class PowerStatus : IPowerStatus
     {
-        public static string BatteryChargeStatus => "N/A";
-        public static string PowerLineStatus => "N/A";
-        public static int BatteryLifePercent => 100;
+        public string BatteryChargeStatus => "N/A";
+        public string PowerLineStatus => "N/A";
+        public int BatteryLifePercent => 100;
     }
 }

+ 3 - 2
BatteryStatus/Platforms/DesktopGL/Program.cs

@@ -1,13 +1,14 @@
 using System;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.DesktopGL
 {
     public static class Program
     {
         [STAThread]
         static void Main()
         {
-            using (var game = new Game1())
+            var powerStatus = new PowerStatus();
+            using (var game = new BatteryStatusGame(powerStatus))
                 game.Run();
         }
     }

+ 2 - 3
BatteryStatus/Platforms/Windows/BatteryStatus.Windows.csproj

@@ -3,6 +3,7 @@
     <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>WinExe</OutputType>
     <RootNamespace>BatteryStatus.Windows</RootNamespace>
+    <AssemblyName>BatteryStatus</AssemblyName>
     <UseWindowsForms>true</UseWindowsForms>
     <Nullable>enable</Nullable>
     <AssemblyTitle>BatteryStatus.Windows</AssemblyTitle>
@@ -10,9 +11,7 @@
     <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="..\..\Core\Game1.cs" Link="Game1.cs" />
-  </ItemGroup>
-  <ItemGroup>
+    <ProjectReference Include="..\..\Core\BatteryStatus.Core.csproj" />
     <PackageReference Include="MonoGame.Framework.WindowsDX" Version="3.8.*" />
   </ItemGroup>
   <ItemGroup>

+ 6 - 5
BatteryStatus/Platforms/Windows/PowerStatus.cs

@@ -1,12 +1,13 @@
 
 using System.Windows.Forms;
+using BatteryStatus;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.Windows
 {
-    public static partial class PowerStatus
+    public class PowerStatus : IPowerStatus
     {
-        public static string BatteryChargeStatus => SystemInformation.PowerStatus.BatteryChargeStatus.ToString();
-        public static string PowerLineStatus => SystemInformation.PowerStatus.PowerLineStatus.ToString();
-        public static int BatteryLifePercent => (int)(SystemInformation.PowerStatus.BatteryLifePercent * 100);
+        public string BatteryChargeStatus => SystemInformation.PowerStatus.BatteryChargeStatus.ToString();
+        public string PowerLineStatus => SystemInformation.PowerStatus.PowerLineStatus.ToString();
+        public int BatteryLifePercent => (int)(SystemInformation.PowerStatus.BatteryLifePercent * 100);
     }
 }

+ 4 - 2
BatteryStatus/Platforms/Windows/Program.cs

@@ -1,13 +1,15 @@
 using System;
+using BatteryStatus;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.Windows
 {
     public static class Program
     {
         [STAThread]
         static void Main()
         {
-            using (var game = new Game1())
+            var powerStatus = new PowerStatus();
+            using (var game = new BatteryStatusGame(powerStatus))
                 game.Run();
         }
     }

+ 0 - 18
BatteryStatus/Platforms/iOS/AppDelegate.cs

@@ -1,18 +0,0 @@
-using Foundation;
-using UIKit;
-using Microsoft.Xna.Framework;
-
-namespace BatteryStatusDemo
-{
-    [Register("AppDelegate")]
-    public class AppDelegate : UIApplicationDelegate
-    {
-        Game1 game;
-        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
-        {
-            game = new Game1();
-            game.Run();
-            return true;
-        }
-    }
-}

+ 3 - 4
BatteryStatus/Platforms/iOS/BatteryStatus.iOS.csproj

@@ -3,15 +3,14 @@
     <TargetFramework>net8.0-ios</TargetFramework>
     <OutputType>Exe</OutputType>
     <RootNamespace>BatteryStatus.iOS</RootNamespace>
+    <AssemblyName>BatteryStatus</AssemblyName>
     <Nullable>enable</Nullable>
-    <AssemblyTitle>BatteryStatus.iOS</AssemblyTitle>
+    <AssemblyTitle>BatteryStatus iOS</AssemblyTitle>
     <Description>iOS platform for BatteryStatus MonoGame sample.</Description>
     <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="..\..\Core\Game1.cs" Link="Game1.cs" />
-  </ItemGroup>
-  <ItemGroup>
+    <ProjectReference Include="..\..\Core\BatteryStatus.Core.csproj" />
     <PackageReference Include="MonoGame.Framework.iOS" Version="3.8.*" />
   </ItemGroup>
   <ItemGroup>

+ 7 - 7
BatteryStatus/Platforms/iOS/PowerStatus.cs

@@ -1,16 +1,16 @@
-
+using BatteryStatus;
 using UIKit;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.iOS
 {
-    public static partial class PowerStatus
+    public class PowerStatus : IPowerStatus
     {
-        static PowerStatus()
+        public PowerStatus()
         {
             UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;
         }
 
-        public static string BatteryChargeStatus
+        public string BatteryChargeStatus
         {
             get
             {
@@ -29,7 +29,7 @@ namespace BatteryStatusDemo
             }
         }
 
-        public static string PowerLineStatus
+        public string PowerLineStatus
         {
             get
             {
@@ -42,7 +42,7 @@ namespace BatteryStatusDemo
             }
         }
 
-        public static int BatteryLifePercent
+        public int BatteryLifePercent
         {
             get
             {

+ 14 - 4
BatteryStatus/Platforms/iOS/Program.cs

@@ -1,13 +1,23 @@
+using Foundation;
 using UIKit;
 
-namespace BatteryStatusDemo
+namespace BatteryStatus.iOS
 {
-    public class Application
+    [Register("AppDelegate")]
+    public class AppDelegate : UIApplicationDelegate
     {
-        // This is the main entry point of the application.
+        BatteryStatusGame? game;
+        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
+        {
+            var powerStatus = new PowerStatus();
+            game = new BatteryStatusGame(powerStatus);
+            game.Run();
+            return true;
+        }
+
         static void Main(string[] args)
         {
             UIApplication.Main(args, null, typeof(AppDelegate));
         }
     }
-}
+}