7 #include "MainPage.xaml.h"
10 using namespace ShootingGame;
12 using namespace Platform;
13 using namespace Windows::ApplicationModel;
14 using namespace Windows::ApplicationModel::Activation;
15 using namespace Windows::ApplicationModel::Core;
16 using namespace Windows::UI::Core;
17 using namespace Windows::UI::Input;
18 using namespace Windows::UI::ViewManagement;
19 using namespace Windows::Foundation;
20 using namespace Windows::Foundation::Collections;
21 using namespace Windows::UI::Xaml;
22 using namespace Windows::UI::Xaml::Controls;
23 using namespace Windows::UI::Xaml::Controls::Primitives;
24 using namespace Windows::UI::Xaml::Data;
25 using namespace Windows::UI::Xaml::Input;
26 using namespace Windows::UI::Xaml::Interop;
27 using namespace Windows::UI::Xaml::Media;
28 using namespace Windows::UI::Xaml::Navigation;
29 using namespace Windows::UI::Xaml::Media::Animation;
30 using namespace Windows::Graphics::Display;
33 // The Split Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234228
36 /// Initializes the singleton application object. This is the first line of authored code
37 /// executed, and as such is the logical equivalent of main() or WinMain().
41 InitializeComponent();
42 Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending);
47 /// Invoked when the application is launched normally by the end user. Other entry points
48 /// will be used when the application is launched to open a specific file, to display
49 /// search results, and so forth.
51 /// <param name="args">Details about the launch request and process.</param>
52 void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs)
54 if (pArgs->PreviousExecutionState == ApplicationExecutionState::Terminated)
56 //TODO: Load state from previously suspended application
59 mainPage_ = ref new MainPage();
61 // Place the frame in the current Window and ensure that it is active
62 Window::Current->Content = mainPage_;
63 Window::Current->Activated += ref new WindowActivatedEventHandler(this, &App::OnWindowActivationChanged);
64 Window::Current->Activate();
66 gameMain_ = ref new GameMain();
67 gameMain_->Initialize(Window::Current->CoreWindow,mainPage_,DisplayProperties::LogicalDpi);
70 CompositionTarget::Rendering::add
71 (ref new EventHandler<Object^>(this, &App::OnRendering));
73 ApplicationView::GetForCurrentView()->ViewStateChanged +=
74 ref new TypedEventHandler<ApplicationView^, ApplicationViewStateChangedEventArgs^>(
76 &App::OnViewStateChanged
79 CoreApplication::Suspending += ref new EventHandler<SuspendingEventArgs^>(this, &App::OnSuspending);
80 CoreApplication::Resuming += ref new EventHandler<Object^>(this, &App::OnResuming);
83 DisplayProperties::LogicalDpiChanged +=
84 ref new DisplayPropertiesEventHandler(this, &App::OnLogicalDpiChanged);
86 CoreWindow^ window = Window::Current->CoreWindow;
87 window->SizeChanged +=
88 ref new TypedEventHandler<CoreWindow^, WindowSizeChangedEventArgs^>(this, &App::OnWindowSizeChanged);
90 window->PointerPressed +=
91 ref new TypedEventHandler<CoreWindow^, Windows::UI::Core::PointerEventArgs^>(this, &App::OnPointerPressed);
93 window->PointerReleased +=
94 ref new TypedEventHandler<CoreWindow^, Windows::UI::Core::PointerEventArgs^>(this, &App::OnPointerReleased);
96 window->PointerMoved +=
97 ref new TypedEventHandler<CoreWindow^, Windows::UI::Core::PointerEventArgs^>(this, &App::OnPointerMoved);
100 timer_ = ref new BasicTimer();
105 /// Invoked when application execution is being suspended. Application state is saved
106 /// without knowing whether the application will be terminated or resumed with the contents
107 /// of memory still intact.
109 /// <param name="sender">The source of the suspend request.</param>
110 /// <param name="e">Details about the suspend request.</param>
111 void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
113 //TODO: Save application state and stop any background activity
116 //----------------------------------------------------------------------
117 void App::OnRendering(
122 static bool first = true;
123 static float count = 1.0f;
124 static float elapsed = 1.0f / 60.0f;
125 static float framemax = -1.0f;
126 static float framemin = 1000000.0f;
127 static float delta = 1.0f / 60.0f;
130 framemax = max(framemax,timer_->Delta);
131 framemin = min(framemin,timer_->Delta);
132 mainPage_->UpdateFrameTime(timer_->Delta,framemax,framemin,delta / count);
137 delta += timer_->Delta;
138 if(count > 10000000.0f)
140 delta = delta / count;
144 mainPage_->UpdateProcessTime(elapsed);
145 gameMain_->Update(timer_->Total,timer_->Delta);
147 gameMain_->Present();
148 elapsed = timer_->Elapsed;
150 //--------------------------------------------------------------------------------------
151 void App::OnWindowSizeChanged(
152 _In_ CoreWindow^ sender,
153 _In_ WindowSizeChangedEventArgs^ args
156 gameMain_->UpdateForWindowSizeChange();
159 //--------------------------------------------------------------------------------------
160 void App::OnLogicalDpiChanged(
164 gameMain_->SetDpi(DisplayProperties::LogicalDpi);
166 //--------------------------------------------------------------------------------------
167 void App::OnWindowActivationChanged(
168 _In_ Platform::Object^ sender,
169 _In_ Windows::UI::Core::WindowActivatedEventArgs^ args
173 //--------------------------------------------------------------------------------------
174 void App::OnResuming(
175 _In_ Platform::Object^ sender,
176 _In_ Platform::Object^ args
180 //--------------------------------------------------------------------------------------
181 void App::OnViewStateChanged(
182 _In_ ApplicationView^ view,
183 _In_ ApplicationViewStateChangedEventArgs^ args
188 void App::OnPointerPressed(
189 _In_ Windows::UI::Core::CoreWindow^ sender,
190 _In_ Windows::UI::Core::PointerEventArgs^ args
195 void App::OnPointerReleased(
196 _In_ Windows::UI::Core::CoreWindow^ sender,
197 _In_ Windows::UI::Core::PointerEventArgs^ args
202 void App::OnPointerMoved(
203 _In_ Windows::UI::Core::CoreWindow^ sender,
204 _In_ Windows::UI::Core::PointerEventArgs^ args