Merge pull request #29 from MSREnable/master
Merging MSREnable fork back to parent
|
@ -131,7 +131,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
|
|
|
@ -181,7 +181,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -31,6 +31,16 @@ namespace Phrasor
|
|||
/// </summary>
|
||||
/// <param name="e">Details about the launch request and process.</param>
|
||||
protected override void OnLaunched(LaunchActivatedEventArgs e)
|
||||
{
|
||||
EnsureActive();
|
||||
}
|
||||
|
||||
protected override void OnActivated(IActivatedEventArgs args)
|
||||
{
|
||||
EnsureActive();
|
||||
}
|
||||
|
||||
public void EnsureActive()
|
||||
{
|
||||
Frame rootFrame = Window.Current.Content as Frame;
|
||||
|
||||
|
@ -43,27 +53,19 @@ namespace Phrasor
|
|||
|
||||
rootFrame.NavigationFailed += OnNavigationFailed;
|
||||
|
||||
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
|
||||
{
|
||||
//TODO: Load state from previously suspended application
|
||||
}
|
||||
|
||||
// Place the frame in the current Window
|
||||
Window.Current.Content = rootFrame;
|
||||
}
|
||||
|
||||
if (e.PrelaunchActivated == false)
|
||||
if (rootFrame.Content == null)
|
||||
{
|
||||
if (rootFrame.Content == null)
|
||||
{
|
||||
// When the navigation stack isn't restored navigate to the first page,
|
||||
// configuring the new page by passing required information as a navigation
|
||||
// parameter
|
||||
rootFrame.Navigate(typeof(MainPage), e.Arguments);
|
||||
}
|
||||
// Ensure the current window is active
|
||||
Window.Current.Activate();
|
||||
// When the navigation stack isn't restored navigate to the first page,
|
||||
// configuring the new page by passing required information as a navigation
|
||||
// parameter
|
||||
rootFrame.Navigate(typeof(MainPage), null);
|
||||
}
|
||||
// Ensure the current window is active
|
||||
Window.Current.Activate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -24,6 +24,13 @@
|
|||
</uap:DefaultTile>
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
</uap:VisualElements>
|
||||
<Extensions>
|
||||
<uap:Extension Category="windows.protocol">
|
||||
<uap:Protocol Name="ms-eyecontrolspeech">
|
||||
<uap:DisplayName>Phrasor</uap:DisplayName>
|
||||
</uap:Protocol>
|
||||
</uap:Extension>
|
||||
</Extensions>
|
||||
</Application>
|
||||
</Applications>
|
||||
<Capabilities>
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
|
|
|
@ -160,10 +160,10 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
|
||||
<Version>6.2.2</Version>
|
||||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="PeteBrown.Devices.Midi">
|
||||
<Version>0.90.8-beta</Version>
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
Двоичные данные
Games/Fifteen/Assets/Fifteen.png
До Ширина: | Высота: | Размер: 20 KiB |
Двоичные данные
Games/Fifteen/Assets/LargeTile.scale-100.png
До Ширина: | Высота: | Размер: 6.4 KiB После Ширина: | Высота: | Размер: 28 KiB |
Двоичные данные
Games/Fifteen/Assets/LargeTile.scale-125.png
До Ширина: | Высота: | Размер: 8.2 KiB После Ширина: | Высота: | Размер: 39 KiB |
Двоичные данные
Games/Fifteen/Assets/LargeTile.scale-150.png
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 48 KiB |
Двоичные данные
Games/Fifteen/Assets/LargeTile.scale-200.png
До Ширина: | Высота: | Размер: 17 KiB После Ширина: | Высота: | Размер: 70 KiB |
Двоичные данные
Games/Fifteen/Assets/LargeTile.scale-400.png
До Ширина: | Высота: | Размер: 45 KiB После Ширина: | Высота: | Размер: 157 KiB |
Двоичные данные
Games/Fifteen/Assets/SmallTile.scale-100.png
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 4.3 KiB |
Двоичные данные
Games/Fifteen/Assets/SmallTile.scale-125.png
До Ширина: | Высота: | Размер: 1.8 KiB После Ширина: | Высота: | Размер: 6.9 KiB |
Двоичные данные
Games/Fifteen/Assets/SmallTile.scale-150.png
До Ширина: | Высота: | Размер: 2.2 KiB После Ширина: | Высота: | Размер: 8.2 KiB |
Двоичные данные
Games/Fifteen/Assets/SmallTile.scale-200.png
До Ширина: | Высота: | Размер: 2.8 KiB После Ширина: | Высота: | Размер: 11 KiB |
Двоичные данные
Games/Fifteen/Assets/SmallTile.scale-400.png
До Ширина: | Высота: | Размер: 5.7 KiB После Ширина: | Высота: | Размер: 26 KiB |
После Ширина: | Высота: | Размер: 50 KiB |
Двоичные данные
Games/Fifteen/Assets/SplashScreen.scale-100.png
До Ширина: | Высота: | Размер: 7.1 KiB После Ширина: | Высота: | Размер: 24 KiB |
Двоичные данные
Games/Fifteen/Assets/SplashScreen.scale-125.png
До Ширина: | Высота: | Размер: 9.0 KiB После Ширина: | Высота: | Размер: 32 KiB |
Двоичные данные
Games/Fifteen/Assets/SplashScreen.scale-150.png
До Ширина: | Высота: | Размер: 12 KiB После Ширина: | Высота: | Размер: 41 KiB |
Двоичные данные
Games/Fifteen/Assets/SplashScreen.scale-200.png
До Ширина: | Высота: | Размер: 18 KiB После Ширина: | Высота: | Размер: 60 KiB |
Двоичные данные
Games/Fifteen/Assets/SplashScreen.scale-400.png
До Ширина: | Высота: | Размер: 42 KiB После Ширина: | Высота: | Размер: 160 KiB |
Двоичные данные
Games/Fifteen/Assets/Square150x150Logo.scale-100.png
До Ширина: | Высота: | Размер: 3.2 KiB После Ширина: | Высота: | Размер: 12 KiB |
Двоичные данные
Games/Fifteen/Assets/Square150x150Logo.scale-125.png
До Ширина: | Высота: | Размер: 3.9 KiB После Ширина: | Высота: | Размер: 16 KiB |
Двоичные данные
Games/Fifteen/Assets/Square150x150Logo.scale-150.png
До Ширина: | Высота: | Размер: 4.7 KiB После Ширина: | Высота: | Размер: 20 KiB |
Двоичные данные
Games/Fifteen/Assets/Square150x150Logo.scale-200.png
До Ширина: | Высота: | Размер: 6.4 KiB После Ширина: | Высота: | Размер: 27 KiB |
Двоичные данные
Games/Fifteen/Assets/Square150x150Logo.scale-400.png
До Ширина: | Высота: | Размер: 16 KiB После Ширина: | Высота: | Размер: 74 KiB |
До Ширина: | Высота: | Размер: 345 B После Ширина: | Высота: | Размер: 711 B |
До Ширина: | Высота: | Размер: 5.3 KiB После Ширина: | Высота: | Размер: 22 KiB |
До Ширина: | Высота: | Размер: 577 B После Ширина: | Высота: | Размер: 1.6 KiB |
До Ширина: | Высота: | Размер: 908 B После Ширина: | Высота: | Размер: 2.7 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.scale-100.png
До Ширина: | Высота: | Размер: 829 B После Ширина: | Высота: | Размер: 2.4 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.scale-125.png
До Ширина: | Высота: | Размер: 1.0 KiB После Ширина: | Высота: | Размер: 3.1 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.scale-150.png
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 4.0 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.scale-200.png
До Ширина: | Высота: | Размер: 1.8 KiB После Ширина: | Высота: | Размер: 22 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.scale-400.png
До Ширина: | Высота: | Размер: 3.8 KiB После Ширина: | Высота: | Размер: 15 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.targetsize-16.png
До Ширина: | Высота: | Размер: 345 B После Ширина: | Высота: | Размер: 711 B |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.targetsize-24.png
До Ширина: | Высота: | Размер: 455 B После Ширина: | Высота: | Размер: 1.1 KiB |
До Ширина: | Высота: | Размер: 1.2 KiB После Ширина: | Высота: | Размер: 1.1 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.targetsize-256.png
До Ширина: | Высота: | Размер: 5.3 KiB После Ширина: | Высота: | Размер: 22 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.targetsize-32.png
До Ширина: | Высота: | Размер: 577 B После Ширина: | Высота: | Размер: 1.6 KiB |
Двоичные данные
Games/Fifteen/Assets/Square44x44Logo.targetsize-48.png
До Ширина: | Высота: | Размер: 908 B После Ширина: | Высота: | Размер: 2.7 KiB |
Двоичные данные
Games/Fifteen/Assets/StoreLogo.scale-100.png
До Ширина: | Высота: | Размер: 947 B После Ширина: | Высота: | Размер: 2.8 KiB |
Двоичные данные
Games/Fifteen/Assets/StoreLogo.scale-125.png
До Ширина: | Высота: | Размер: 1.2 KiB После Ширина: | Высота: | Размер: 3.7 KiB |
Двоичные данные
Games/Fifteen/Assets/StoreLogo.scale-150.png
До Ширина: | Высота: | Размер: 1.5 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
Двоичные данные
Games/Fifteen/Assets/StoreLogo.scale-200.png
До Ширина: | Высота: | Размер: 2.1 KiB После Ширина: | Высота: | Размер: 7.8 KiB |
Двоичные данные
Games/Fifteen/Assets/StoreLogo.scale-400.png
До Ширина: | Высота: | Размер: 4.1 KiB После Ширина: | Высота: | Размер: 17 KiB |
Двоичные данные
Games/Fifteen/Assets/Wide310x150Logo.scale-100.png
До Ширина: | Высота: | Размер: 3.4 KiB После Ширина: | Высота: | Размер: 26 KiB |
Двоичные данные
Games/Fifteen/Assets/Wide310x150Logo.scale-125.png
До Ширина: | Высота: | Размер: 4.2 KiB После Ширина: | Высота: | Размер: 40 KiB |
Двоичные данные
Games/Fifteen/Assets/Wide310x150Logo.scale-150.png
До Ширина: | Высота: | Размер: 5.1 KiB После Ширина: | Высота: | Размер: 50 KiB |
Двоичные данные
Games/Fifteen/Assets/Wide310x150Logo.scale-200.png
До Ширина: | Высота: | Размер: 7.1 KiB После Ширина: | Высота: | Размер: 78 KiB |
Двоичные данные
Games/Fifteen/Assets/Wide310x150Logo.scale-400.png
До Ширина: | Высота: | Размер: 18 KiB После Ширина: | Высота: | Размер: 156 KiB |
|
@ -17,12 +17,12 @@
|
|||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>
|
||||
<PackageCertificateKeyFile>Fifteen_TemporaryKey.pfx</PackageCertificateKeyFile>
|
||||
<PackageCertificateKeyFile>Fifteen_StoreKey.pfx</PackageCertificateKeyFile>
|
||||
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
|
||||
<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<AppxBundlePlatforms>x64</AppxBundlePlatforms>
|
||||
<PackageCertificateThumbprint>95BEE126660C167D06E369C4A39512E604FC18C0</PackageCertificateThumbprint>
|
||||
<AppxBundlePlatforms>x86|x64|arm</AppxBundlePlatforms>
|
||||
<PackageCertificateThumbprint>3766E4FA342C6998F380D7503A4CE070DD51F1FD</PackageCertificateThumbprint>
|
||||
<AppInstallerUpdateFrequency>1</AppInstallerUpdateFrequency>
|
||||
<AppInstallerCheckForUpdateFrequency>OnApplicationRun</AppInstallerCheckForUpdateFrequency>
|
||||
</PropertyGroup>
|
||||
|
@ -114,10 +114,10 @@
|
|||
<AppxManifest Include="Package.appxmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</AppxManifest>
|
||||
<None Include="Fifteen_StoreKey.pfx" />
|
||||
<None Include="Fifteen_TemporaryKey.pfx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Assets\Fifteen.png" />
|
||||
<Content Include="Assets\LargeTile.scale-100.png" />
|
||||
<Content Include="Assets\LargeTile.scale-125.png" />
|
||||
<Content Include="Assets\LargeTile.scale-150.png" />
|
||||
|
@ -128,6 +128,7 @@
|
|||
<Content Include="Assets\SmallTile.scale-150.png" />
|
||||
<Content Include="Assets\SmallTile.scale-200.png" />
|
||||
<Content Include="Assets\SmallTile.scale-400.png" />
|
||||
<Content Include="Assets\Solved15.PNG" />
|
||||
<Content Include="Assets\SplashScreen.scale-100.png" />
|
||||
<Content Include="Assets\SplashScreen.scale-125.png" />
|
||||
<Content Include="Assets\SplashScreen.scale-150.png" />
|
||||
|
@ -158,6 +159,7 @@
|
|||
<Content Include="Assets\Wide310x150Logo.scale-125.png" />
|
||||
<Content Include="Assets\Wide310x150Logo.scale-150.png" />
|
||||
<Content Include="Assets\Wide310x150Logo.scale-400.png" />
|
||||
<None Include="Package.StoreAssociation.xml" />
|
||||
<Content Include="Properties\Default.rd.xml" />
|
||||
<Content Include="Assets\LockScreenLogo.scale-200.png" />
|
||||
<Content Include="Assets\SplashScreen.scale-200.png" />
|
||||
|
@ -185,7 +187,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
|
|
|
@ -11,43 +11,220 @@
|
|||
mc:Ignorable="d" FontFamily="Segoe UI">
|
||||
|
||||
<Page.Resources>
|
||||
|
||||
<Duration x:Key="DestructiveDwellDuration">00:00:01.0000000</Duration>
|
||||
<Style x:Key="ActionButtonStyle" TargetType="Button">
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
<Setter Property="Margin" Value="10" />
|
||||
<Setter Property="FontFamily" Value="Segoe UI"/>
|
||||
<Setter Property="FontSize" Value="42" />
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="ButtonStyle" TargetType="Button">
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
<Setter Property="Margin" Value="10" />
|
||||
<Setter Property="FontSize" Value="64" />
|
||||
</Style>
|
||||
</Page.Resources>
|
||||
<Setter Property="FontFamily" Value="Segoe UI"/>
|
||||
<Setter Property="FontSize" Value="42" />
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Grid x:Name="RootGrid" Background="Transparent">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="CommonStates">
|
||||
<VisualState x:Name="Normal">
|
||||
<Storyboard>
|
||||
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid" />
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="PointerOver">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumLowBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseHighBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>-->
|
||||
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid" />
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Pressed">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
|
||||
Storyboard.TargetProperty="Background">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseHighBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<PointerDownThemeAnimation Storyboard.TargetName="RootGrid" />
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Disabled">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
|
||||
Storyboard.TargetProperty="Background">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseLowBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
|
||||
Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledTransparentBrush}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Grid CornerRadius="10,10,10,10" Background="{TemplateBinding Background}" >
|
||||
<ContentPresenter x:Name="ContentPresenter"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
ContentTransitions="{TemplateBinding ContentTransitions}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
AutomationProperties.AccessibilityView="Raw">
|
||||
<TextBlock Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="{TemplateBinding FontFamily}" Margin="0,-4,0,0"/>
|
||||
</ContentPresenter>
|
||||
</Grid>
|
||||
|
||||
<Grid>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
|
||||
</Style>
|
||||
<SolidColorBrush x:Key="TileBackground" Color="#FF4D4D99"/>
|
||||
<SolidColorBrush x:Key="ToolBarButtonBackground" Color="#FF2292a6"/>
|
||||
</Page.Resources>
|
||||
<Page.Background>
|
||||
<LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1.2" MappingMode="RelativeToBoundingBox" SpreadMethod="Pad">
|
||||
<GradientStop Color="#c6ffff" Offset="0.8"/>
|
||||
<GradientStop Color="#FFc6beff" Offset="0.009"/>
|
||||
<GradientStop Color="White" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</Page.Background>
|
||||
|
||||
<Grid x:Name="RootGrid" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="3" Style="{StaticResource ButtonStyle}" Click="OnExit" Content="" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="36" Width="100" Height="100"/>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="3" Style="{StaticResource ButtonStyle}" Click="OnBack" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="36" Width="100" Height="100"/>
|
||||
<Grid Grid.Row="0" Margin="40,40,40,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel VerticalAlignment="Center" Orientation="Horizontal" Grid.ColumnSpan="2">
|
||||
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Margin="150,0,0,0" FontSize="36" FontWeight="SemiBold" Foreground="{StaticResource TileBackground}" FontFamily="Segoe UI">TILE SLIDE</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" FontSize="24" VerticalAlignment="Center" Margin="40,0,0,0" FontFamily="Segoe UI">Moves</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" x:Name="MoveCountTextBlock" FontSize="24" VerticalAlignment="Center" FontWeight="SemiBold" Margin="20,0,0,0" FontFamily="Segoe UI"></TextBlock>
|
||||
</StackPanel>
|
||||
<Button x:Name="PauseButton" Grid.Column="2" Style="{StaticResource ActionButtonStyle}" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="52" Width="100" Height="100" Click="OnPause" Background="{x:Null}" FontWeight="SemiBold" Margin="0,0,0,0" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Button.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
<ResourceDictionary x:Key="Dark">
|
||||
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="DarkGray"/>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="Light">
|
||||
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="DarkGray"/>
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Button.Resources>
|
||||
<Border x:Name="PauseButtonBorder" Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock x:Name="PauseButtonText" Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<Grid Grid.Row="1" x:Name="GameGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
<Button Grid.Column="2" Style="{StaticResource ActionButtonStyle}" Click="OnExit" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="52" Width="100" Height="100" gaze:GazeInput.DwellDuration="{StaticResource DestructiveDwellDuration}" Background="{x:Null}" FontWeight="SemiBold" Margin="0,0,0,0" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="ExtraBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="0" Style="{StaticResource ActionButtonStyle}" Click="OnBack" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="52" Width="100" Height="100" gaze:GazeInput.DwellDuration="{StaticResource DestructiveDwellDuration}" Margin="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" UseLayoutRounding="False" Padding="0,0,0,0" BorderBrush="{x:Null}" Background="{x:Null}" FocusVisualPrimaryBrush="Transparent">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="SemiBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid Grid.Row="1" x:Name="DialogGrid" Visibility="Collapsed">
|
||||
|
||||
<TextBlock x:Name="PlayAgainText" Grid.Row="1" HorizontalAlignment="Center" Foreground="{StaticResource ToolBarButtonBackground}" FontSize="24" FontWeight="SemiBold" VerticalAlignment="Top" Visibility="Collapsed" Margin="0,-3,0,0">
|
||||
Select <Run FontFamily="Segoe MDL2 Assets"></Run> to Play Again
|
||||
</TextBlock>
|
||||
|
||||
<Grid Grid.Row="1" Margin="40,30,40,40">
|
||||
<Rectangle Fill="#1926334D" RadiusX="10" RadiusY="10"></Rectangle>
|
||||
<Grid x:Name="GameGrid" Margin="10"/>
|
||||
</Grid>
|
||||
<Grid Grid.Row="0" Grid.RowSpan="2" x:Name="DialogGrid" Visibility="Collapsed" Background="#99FFFFFF" Margin="0,0,0,0" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="5*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1.5*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1.5*"/>
|
||||
<RowDefinition Height="5*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Border BorderBrush="{ThemeResource AppBarItemForegroundThemeBrush}" BorderThickness="1" Grid.Row="1" Grid.Column="1" Background="{ThemeResource AppBarBackgroundThemeBrush}">
|
||||
<Border BorderBrush="{ThemeResource AppBarItemForegroundThemeBrush}" BorderThickness="1" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Background="{StaticResource TileBackground}" Margin="150,0,150,0" CornerRadius="20,20,20,20">
|
||||
<Grid>
|
||||
<Button x:Name="DialogButton" Content="Close" HorizontalAlignment="Center" VerticalAlignment="Bottom" Width="80" Height="80" Margin="0,0,0,10" Click="DialogButton_Click"/>
|
||||
<TextBlock x:Name="DialogText" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Margin="10,10,0,0" FontSize="16"/>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Grid.Column="1" Style="{StaticResource ActionButtonStyle}" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="52" Width="100" Height="100" Background="{x:Null}" FontWeight="SemiBold" Margin="0,20,20,0" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Click="DismissButton" Visibility="Visible">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Stretch" Width="96">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" ></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<Button x:Name="DialogButton" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Width="300" Height="150" Margin="0,0,0,40" Click="DialogButton_Click" Foreground="White" FontSize="24" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Border Background="White" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="Play Again" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" Foreground="{StaticResource ToolBarButtonBackground}"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button x:Name="DialogButton2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Bottom" Width="300" Height="150" Margin="0,0,0,40" Click="DialogButton2_Click" Foreground="White" FontSize="24" Padding="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
|
||||
<Border Background="White" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="Change Puzzle Size" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" Foreground="{StaticResource ToolBarButtonBackground}"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<TextBlock x:Name="CongratsText" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Congratulations" VerticalAlignment="Top" Margin="0,50,0,0" FontSize="48" Foreground="White" FontWeight="SemiBold" Grid.ColumnSpan="2"/>
|
||||
<TextBlock x:Name="DialogText" HorizontalAlignment="Center" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" FontSize="30" Foreground="White" Margin="0,150,0,0" Grid.ColumnSpan="2"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
<Button x:Name="PlayAgainButton" Width="200" Height="150" Foreground="{x:Null}" FontSize="24" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Background="{x:Null}" Grid.RowSpan="2" HorizontalAlignment="Center" Visibility="Collapsed" Click="PlayAgainButton_Click">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="Play Again" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" Foreground="White"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Page>
|
||||
|
|
|
@ -11,27 +11,48 @@ using Windows.UI.Xaml.Navigation;
|
|||
using Windows.UI.Xaml.Hosting;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Composition;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Fifteen
|
||||
{
|
||||
public sealed partial class GamePage : Page
|
||||
{
|
||||
int _boardSize = 4;
|
||||
|
||||
int _boardSize = 4;
|
||||
|
||||
Button[,] _buttons;
|
||||
int _blankRow;
|
||||
int _blankCol;
|
||||
int _numMoves;
|
||||
bool _interactionPaused = false;
|
||||
|
||||
SolidColorBrush _solidTileBrush;
|
||||
SolidColorBrush _blankTileBrush = new SolidColorBrush(Colors.Transparent);
|
||||
SolidColorBrush _toolButtonBrush;
|
||||
SolidColorBrush _pausedButtonBrush = new SolidColorBrush(Colors.Black);
|
||||
|
||||
SolidColorBrush _solidTileBrush = new SolidColorBrush(Colors.Silver);
|
||||
SolidColorBrush _blankTileBrush = new SolidColorBrush(Colors.White);
|
||||
CompositionScopedBatch _slideBatchAnimation;
|
||||
|
||||
DispatcherTimer WaitForCompositionTimer;
|
||||
|
||||
bool _gameOver = false;
|
||||
|
||||
bool _animationActive = false;
|
||||
|
||||
public GamePage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_solidTileBrush = (SolidColorBrush)this.Resources["TileBackground"];
|
||||
_toolButtonBrush = (SolidColorBrush)this.Resources["ToolBarButtonBackground"];
|
||||
|
||||
WaitForCompositionTimer = new DispatcherTimer();
|
||||
WaitForCompositionTimer.Tick += WaitForCompositionTimer_Tick;
|
||||
WaitForCompositionTimer.Interval = TimeSpan.FromMilliseconds(50);
|
||||
|
||||
var sharedSettings = new ValueSet();
|
||||
GazeSettingsHelper.RetrieveSharedSettings(sharedSettings).Completed = new AsyncActionCompletedHandler((asyncInfo, asyncStatus) => {
|
||||
GazeSettingsHelper.RetrieveSharedSettings(sharedSettings).Completed = new AsyncActionCompletedHandler((asyncInfo, asyncStatus) =>
|
||||
{
|
||||
var gazePointer = GazeInput.GetGazePointer(this);
|
||||
gazePointer.LoadSettings(sharedSettings);
|
||||
});
|
||||
|
@ -39,20 +60,32 @@ namespace Fifteen
|
|||
Loaded += GamePage_Loaded;
|
||||
}
|
||||
|
||||
private void WaitForCompositionTimer_Tick(object sender, object e)
|
||||
{
|
||||
if (IsButtonCompositionReady())
|
||||
{
|
||||
Button blankBtn;
|
||||
while (IsSolved())
|
||||
{
|
||||
ResetBoard();
|
||||
}
|
||||
blankBtn = _buttons[_blankRow, _blankCol];
|
||||
blankBtn.Background = _blankTileBrush;
|
||||
blankBtn.Visibility = Visibility.Visible;
|
||||
MoveCountTextBlock.Text = "0";
|
||||
WaitForCompositionTimer.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void GamePage_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
InitializeButtonArray();
|
||||
while(IsSolved())
|
||||
{
|
||||
ResetBoard();
|
||||
}
|
||||
GazeInput.DwellFeedbackCompleteBrush = new SolidColorBrush(Colors.Transparent);
|
||||
Button blankBtn = _buttons[_blankRow, _blankCol];
|
||||
blankBtn.Background = _blankTileBrush;
|
||||
blankBtn.Visibility = Visibility.Visible;
|
||||
WaitForCompositionTimer.Start();
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
GazeInput.DwellFeedbackCompleteBrush = new SolidColorBrush(Colors.Transparent);
|
||||
}
|
||||
|
||||
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||||
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||||
{
|
||||
base.OnNavigatedTo(e);
|
||||
_boardSize = (int)e.Parameter;
|
||||
|
@ -60,6 +93,8 @@ namespace Fifteen
|
|||
|
||||
void InitializeButtonArray()
|
||||
{
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Disabled);
|
||||
|
||||
GameGrid.Children.Clear();
|
||||
GameGrid.RowDefinitions.Clear();
|
||||
GameGrid.ColumnDefinitions.Clear();
|
||||
|
@ -77,8 +112,17 @@ namespace Fifteen
|
|||
for (int col = 0; col < _boardSize; col++)
|
||||
{
|
||||
var button = new Button();
|
||||
button.Background = _solidTileBrush;
|
||||
button.Name = "button" + "_" + col + "_" + row;
|
||||
button.Content = ((row * _boardSize) + col + 1).ToString();
|
||||
if (!(row == _boardSize - 1 && col == _boardSize - 1))
|
||||
{
|
||||
button.Content = ((row * _boardSize) + col + 1).ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
button.Content = "";
|
||||
button.Background = _blankTileBrush;
|
||||
}
|
||||
button.Tag = (row * _boardSize) + col;
|
||||
button.Click += OnButtonClick;
|
||||
button.Style = Resources["ButtonStyle"] as Style;
|
||||
|
@ -96,6 +140,10 @@ namespace Fifteen
|
|||
|
||||
void ResetBoard()
|
||||
{
|
||||
PlayAgainText.Visibility = Visibility.Collapsed;
|
||||
_gameOver = false;
|
||||
_numMoves = 0;
|
||||
MoveCountTextBlock.Text = _numMoves.ToString();
|
||||
for (int i = 0; i < _boardSize; i++)
|
||||
{
|
||||
for (int j = 0; j < _boardSize; j++)
|
||||
|
@ -119,7 +167,7 @@ namespace Fifteen
|
|||
int col = _blankCol;
|
||||
if (changeRow)
|
||||
{
|
||||
row = decrement ? row - 1 : row + 1;
|
||||
row = decrement ? row - 1 : row + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -136,12 +184,29 @@ namespace Fifteen
|
|||
shuffleCount--;
|
||||
}
|
||||
}
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Enabled);
|
||||
}
|
||||
|
||||
private bool IsButtonCompositionReady()
|
||||
{
|
||||
for (int row = 0; row < _boardSize; row++)
|
||||
{
|
||||
for (int col = 0; col < _boardSize; col++)
|
||||
{
|
||||
var btnVisual = ElementCompositionPreview.GetElementVisual(_buttons[row, col]);
|
||||
if (btnVisual.Offset.X == 0 && btnVisual.Offset.Y == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SwapBlank(int row, int col)
|
||||
{
|
||||
//Prevent tile slides once puzzle is solved
|
||||
if (DialogGrid.Visibility == Visibility.Visible)
|
||||
if (DialogGrid.Visibility == Visibility.Visible || _gameOver)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -151,18 +216,30 @@ namespace Fifteen
|
|||
{
|
||||
return false;
|
||||
}
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.Transparent);
|
||||
|
||||
_animationActive = true;
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Disabled);
|
||||
//Slide button visual
|
||||
Button btn = _buttons[row, col];
|
||||
Button blankBtn = _buttons[_blankRow, _blankCol];
|
||||
|
||||
//Get Visuals for the selected button that is going to appear to slide and for the blank button
|
||||
var btnVisual = ElementCompositionPreview.GetElementVisual(btn);
|
||||
var btnVisual = ElementCompositionPreview.GetElementVisual(btn);
|
||||
var compositor = btnVisual.Compositor;
|
||||
var blankBtnVisual = ElementCompositionPreview.GetElementVisual(blankBtn);
|
||||
|
||||
var easing = compositor.CreateLinearEasingFunction();
|
||||
|
||||
if (_slideBatchAnimation != null)
|
||||
{
|
||||
_slideBatchAnimation.Completed -= SlideBatchAnimation_Completed;
|
||||
_slideBatchAnimation.Dispose();
|
||||
}
|
||||
|
||||
_slideBatchAnimation = compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
|
||||
_slideBatchAnimation.Completed += SlideBatchAnimation_Completed;
|
||||
|
||||
//Create an animation to first move the blank button with its updated contents to
|
||||
//instantly appear in the position position of the selected button
|
||||
//then slide that button back into its original position
|
||||
|
@ -170,9 +247,28 @@ namespace Fifteen
|
|||
slideAnimation.InsertKeyFrame(0f, btnVisual.Offset);
|
||||
slideAnimation.InsertKeyFrame(1f, blankBtnVisual.Offset, easing);
|
||||
slideAnimation.Duration = TimeSpan.FromMilliseconds(500);
|
||||
|
||||
//Apply the slide anitmation to the blank button
|
||||
|
||||
//Apply the slide animation to the blank button
|
||||
blankBtnVisual.StartAnimation(nameof(btnVisual.Offset), slideAnimation);
|
||||
|
||||
//Pulse after slide if sliding to correct position
|
||||
if (((_blankRow * _boardSize) + _blankCol + 1).ToString() == btn.Content.ToString())
|
||||
{
|
||||
var springSpeed = 50;
|
||||
|
||||
blankBtnVisual.CenterPoint = new System.Numerics.Vector3((float)blankBtn.ActualWidth / 2, (float)blankBtn.ActualHeight / 2, 0f);
|
||||
|
||||
var scaleAnimation = compositor.CreateSpringVector3Animation();
|
||||
scaleAnimation.InitialValue = new System.Numerics.Vector3(0.9f, 0.9f, 0f);
|
||||
scaleAnimation.FinalValue = new System.Numerics.Vector3(1.0f, 1.0f, 0f);
|
||||
scaleAnimation.DampingRatio = 0.4f;
|
||||
scaleAnimation.Period = TimeSpan.FromMilliseconds(springSpeed);
|
||||
scaleAnimation.DelayTime = TimeSpan.FromMilliseconds(500);
|
||||
|
||||
blankBtnVisual.StartAnimation(nameof(blankBtnVisual.Scale), scaleAnimation);
|
||||
}
|
||||
|
||||
_slideBatchAnimation.End();
|
||||
|
||||
//Swap content of the selected button with the blank button and clear the selected button
|
||||
_buttons[_blankRow, _blankCol].Content = _buttons[row, col].Content;
|
||||
|
@ -185,7 +281,7 @@ namespace Fifteen
|
|||
//Force selected button to the bottom and the blank button to the top
|
||||
Canvas.SetZIndex(btn, -_boardSize);
|
||||
Canvas.SetZIndex(blankBtn, 0);
|
||||
|
||||
|
||||
//Update the background colors of the two buttons to reflect their new condition
|
||||
btn.Background = _blankTileBrush;
|
||||
blankBtn.Background = _solidTileBrush;
|
||||
|
@ -195,14 +291,28 @@ namespace Fifteen
|
|||
blankBtn.Visibility = Visibility.Visible;
|
||||
|
||||
//Disable eye control for the new empty button so that there are no inappropriate dwell indicators
|
||||
GazeInput.SetInteraction(blankBtn, Interaction.Enabled);
|
||||
GazeInput.SetInteraction(blankBtn, Interaction.Inherited);
|
||||
GazeInput.SetInteraction(btn, Interaction.Disabled);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void SlideBatchAnimation_Completed(object sender, CompositionBatchCompletedEventArgs args)
|
||||
{
|
||||
CheckCompletionAsync();
|
||||
if (!_gameOver)
|
||||
{
|
||||
_animationActive = false;
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Enabled);
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnButtonClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (_animationActive) return;
|
||||
|
||||
var button = sender as Button;
|
||||
int cellNumber = int.Parse(button.Tag.ToString());
|
||||
int row = cellNumber / _boardSize;
|
||||
|
@ -211,42 +321,97 @@ namespace Fifteen
|
|||
if (SwapBlank(row, col))
|
||||
{
|
||||
_numMoves++;
|
||||
CheckCompletion();
|
||||
MoveCountTextBlock.Text = _numMoves.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
bool IsSolved()
|
||||
{
|
||||
int row=0;
|
||||
int col=0;
|
||||
for (int i = 0; i < _boardSize * _boardSize - 1; i++)
|
||||
{
|
||||
int row = i / _boardSize;
|
||||
int col = i % _boardSize;
|
||||
row = i / _boardSize;
|
||||
col = i % _boardSize;
|
||||
if (_buttons[row, col].Content.ToString() != (i + 1).ToString())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < _boardSize * _boardSize - 1; i++)
|
||||
{
|
||||
row = i / _boardSize;
|
||||
col = i % _boardSize;
|
||||
PulseButton(_buttons[row, col]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void CheckCompletion()
|
||||
void PulseButton(Button lastButton)
|
||||
{
|
||||
var btn1Visual = ElementCompositionPreview.GetElementVisual(lastButton);
|
||||
var compositor = btn1Visual.Compositor;
|
||||
var springSpeed = 50;
|
||||
|
||||
btn1Visual.CenterPoint = new System.Numerics.Vector3((float)lastButton.ActualWidth / 2, (float)lastButton.ActualHeight / 2, 0f);
|
||||
|
||||
var scaleAnimation = compositor.CreateSpringVector3Animation();
|
||||
scaleAnimation.InitialValue = new System.Numerics.Vector3(0.9f, 0.9f, 0f);
|
||||
scaleAnimation.FinalValue = new System.Numerics.Vector3(1.0f, 1.0f, 0f);
|
||||
scaleAnimation.DampingRatio = 0.4f;
|
||||
scaleAnimation.Period = TimeSpan.FromMilliseconds(springSpeed);
|
||||
|
||||
btn1Visual.StartAnimation(nameof(btn1Visual.Scale), scaleAnimation);
|
||||
}
|
||||
|
||||
async void CheckCompletionAsync()
|
||||
{
|
||||
if (!IsSolved())
|
||||
{
|
||||
return;
|
||||
}
|
||||
_gameOver = true;
|
||||
|
||||
string message = $"Congratulations!! You solved it in {_numMoves} moves";
|
||||
await Task.Delay(1000);
|
||||
|
||||
string message = $"You solved the puzzle in {_numMoves} moves!";
|
||||
DialogText.Text = message;
|
||||
DialogGrid.Visibility = Visibility.Visible;
|
||||
GazeInput.DwellFeedbackProgressBrush = _solidTileBrush;
|
||||
DialogGrid.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void DialogButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//ResetBoard();
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
DialogGrid.Visibility = Visibility.Collapsed;
|
||||
while (IsSolved())
|
||||
{
|
||||
ResetBoard();
|
||||
}
|
||||
}
|
||||
|
||||
private void DialogButton2_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
DialogGrid.Visibility = Visibility.Collapsed;
|
||||
Frame.Navigate(typeof(MainPage));
|
||||
}
|
||||
|
||||
private void DismissButton(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
DialogGrid.Visibility = Visibility.Collapsed;
|
||||
|
||||
Frame.Navigate(typeof(MainPage));
|
||||
//RootGrid.Children.Remove(PlayAgainButton);
|
||||
//Grid.SetColumn(PlayAgainButton, Grid.GetColumn(_buttons[_boardSize - 1, _boardSize - 1]));
|
||||
//Grid.SetRow(PlayAgainButton, Grid.GetRow(_buttons[_boardSize - 1, _boardSize - 1]));
|
||||
//PlayAgainButton.MaxWidth = _buttons[_boardSize - 1, _boardSize - 1].ActualWidth;
|
||||
//PlayAgainButton.MaxHeight = _buttons[_boardSize - 1, _boardSize - 1].ActualHeight;
|
||||
//GameGrid.Children.Add(PlayAgainButton);
|
||||
//PlayAgainButton.Visibility = Visibility.Visible;
|
||||
|
||||
PlayAgainText.Visibility = Visibility.Visible;
|
||||
OnPause(PauseButton, null);
|
||||
}
|
||||
|
||||
private void OnExit(object sender, RoutedEventArgs e)
|
||||
|
@ -255,8 +420,44 @@ namespace Fifteen
|
|||
}
|
||||
|
||||
private void OnBack(object sender, RoutedEventArgs e)
|
||||
{
|
||||
{
|
||||
Frame.Navigate(typeof(MainPage));
|
||||
}
|
||||
|
||||
private void OnPause(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Button button = sender as Button;
|
||||
|
||||
if (_interactionPaused)
|
||||
{
|
||||
PauseButtonText.Text = "\uE769";
|
||||
PauseButtonBorder.Background = _toolButtonBrush;
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Enabled);
|
||||
_interactionPaused = false;
|
||||
if (_gameOver)
|
||||
{
|
||||
ResetBoard();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PauseButtonText.Text = "\uE768";
|
||||
PauseButtonBorder.Background = _pausedButtonBrush;
|
||||
GazeInput.SetInteraction(GameGrid, Interaction.Disabled);
|
||||
_interactionPaused = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayAgainButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GameGrid.Children.Remove(PlayAgainButton);
|
||||
RootGrid.Children.Add(PlayAgainButton);
|
||||
PlayAgainButton.Visibility = Visibility.Collapsed;
|
||||
while (IsSolved())
|
||||
{
|
||||
ResetBoard();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,33 +9,426 @@
|
|||
gaze:GazeInput.Interaction="Enabled"
|
||||
gaze:GazeInput.IsCursorVisible="False"
|
||||
mc:Ignorable="d"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" FontFamily="Segoe UI">
|
||||
FontFamily="Segoe UI" >
|
||||
|
||||
<Page.Resources>
|
||||
<Duration x:Key="DestructiveDwellDuration">00:00:01.0000000</Duration>
|
||||
<Duration x:Key="RepeatDelayDuration">00:00:00.8000000</Duration>
|
||||
<Duration x:Key="RepeatDuration">00:00:00.8000000</Duration>
|
||||
<Style TargetType="Button">
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalAlignment" Value="Stretch" />
|
||||
<Setter Property="FontSize" Value="64" />
|
||||
<Setter Property="Margin" Value="50"/>
|
||||
</Style>
|
||||
<SolidColorBrush x:Key="TileBackground" Color="#FF4D4D99"/>
|
||||
<SolidColorBrush x:Key="ToolBarButtonBackground" Color="#FF2292a6"/>
|
||||
<x:Double x:Key="HelpTextFontSize">30</x:Double>
|
||||
</Page.Resources>
|
||||
<Page.Background>
|
||||
<LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1.2" MappingMode="RelativeToBoundingBox" SpreadMethod="Pad">
|
||||
<GradientStop Color="#c6ffff" Offset="0.8"/>
|
||||
<GradientStop Color="#FFc6beff" Offset="0.009"/>
|
||||
<GradientStop Color="White" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</Page.Background>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto" MinHeight="0"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="2*"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="40" />
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition Width="40"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.ColumnSpan="3" FontSize="48" HorizontalAlignment="Stretch" VerticalAlignment="Center" HorizontalTextAlignment="Center"> Select your game</TextBlock>
|
||||
<Button Grid.Row="1" Grid.Column="0" Tag="2" Click="OnBoardSizeSelected">3</Button>
|
||||
<Button Grid.Row="1" Grid.Column="1" Tag="3" Click="OnBoardSizeSelected">8</Button>
|
||||
<Button Grid.Row="1" Grid.Column="2" Tag="4" Click="OnBoardSizeSelected">15</Button>
|
||||
<Button Background="{x:Null}" Foreground="White" Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Bottom" Click="OnHowToPlayButton" FontSize="24" Height="100" FontWeight="SemiBold" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" FontFamily="Segoe UI" Grid.Column="1">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="10,10,10,10">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Padding="20,0,20,0" FontFamily="Segoe UI">
|
||||
How to Play
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<TextBlock x:Name="VersionTextBlock" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Row="1" Grid.Column="2" Padding="0,0,10,10" FontFamily="Segoe UI"></TextBlock>
|
||||
<Button Grid.Column="4" Click="OnExit" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="52" Width="100" Height="100" gaze:GazeInput.DwellDuration="{StaticResource DestructiveDwellDuration}" FontWeight="SemiBold" Margin="0,40,0,0" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Foreground="White" Grid.Row="0" Background="{x:Null}">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<!--<Button Grid.Column="2" Click="OnExit" Content="" HorizontalAlignment="Right" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="36" Width="100" Height="100" Margin="50,20,20,50" gaze:GazeInput.DwellDuration="00:00:01.5000000" />-->
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="4" HorizontalAlignment="Center">
|
||||
<Border Background="#FFE31386" FocusVisualPrimaryBrush="White" Margin="2,0,0,0" VerticalAlignment="Center" Padding="10,0,10,2" CornerRadius="5,5,5,5" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left">
|
||||
<TextBlock Foreground="White" FontWeight="SemiBold" FontSize="14">EYES FIRST</TextBlock>
|
||||
</Border>
|
||||
<TextBlock FontSize="72" VerticalAlignment="Top" HorizontalTextAlignment="Center" Foreground="{StaticResource TileBackground}" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" HorizontalAlignment="Left" Margin="0,-12,0,0">TILE SLIDE</TextBlock>
|
||||
</StackPanel>
|
||||
<TextBlock Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="4" FontSize="36" VerticalAlignment="Bottom" HorizontalTextAlignment="Center" Foreground="{StaticResource TileBackground}" Margin="0,0,0,20" FontFamily="Segoe UI">Select a puzzle size</TextBlock>
|
||||
<Grid Grid.Row="3" Grid.RowSpan="2" Grid.ColumnSpan="6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" MinHeight="0"/>
|
||||
<RowDefinition Height="Auto" MinHeight="0"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width=".2*" />
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width=".2*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width=".2*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="1" Tag="2" Click="OnBoardSizeSelected" Background="{x:Null}" Foreground="White" Margin="0,0,0,10" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="200" Height="200" FontFamily="Segoe UI">
|
||||
<Border Background="White" CornerRadius="10" Padding="5">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1"></Rectangle>
|
||||
<Rectangle Margin="2" RadiusX="2" RadiusY="2" Stroke="{StaticResource TileBackground}" Grid.Row="1" Grid.Column="1" StrokeThickness="2"/>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button Grid.Row="0" Grid.Column="3" Tag="3" Click="OnBoardSizeSelected" Background="{x:Null}" Foreground="White" Margin="0,0,0,10" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Width="200" Height="200">
|
||||
<Border Background="White" CornerRadius="10" Padding="5">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="0" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Margin="2" RadiusX="2" RadiusY="2" Stroke="{StaticResource TileBackground}" Grid.Row="2" Grid.Column="2" StrokeThickness="2"/>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button Grid.Row="0" Grid.Column="5" Tag="4" Click="OnBoardSizeSelected" Background="{x:Null}" Foreground="White" Margin="0,0,0,10" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="200" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Border Background="White" CornerRadius="10" Padding="5">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="0" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="3"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Margin="2" RadiusX="2" RadiusY="2" Stroke="{StaticResource TileBackground}" Grid.Row="3" Grid.Column="3" StrokeThickness="2"/>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button Grid.Row="0" Grid.Column="7" Tag="5" Click="OnBoardSizeSelected" Background="{x:Null}" Foreground="White" Margin="0,0,0,10" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="200" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Border Background="White" CornerRadius="10,10,10,10" Padding="5,5,5,5">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="0" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="3"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="4"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="4" Grid.Column="1"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="4" Grid.Column="2"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="4" Grid.Column="3"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Column="4"/>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="1" Grid.Column="4"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="2" Grid.Column="4"></Rectangle>
|
||||
<Rectangle Fill="{StaticResource TileBackground}" Margin="2" RadiusX="2" RadiusY="2" Grid.Row="3" Grid.Column="4"></Rectangle>
|
||||
|
||||
<Rectangle Margin="2" RadiusX="2" RadiusY="2" Stroke="{StaticResource TileBackground}" Grid.Row="14" Grid.Column="4" StrokeThickness="2"/>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" FontWeight="SemiBold" Margin="0,0,0,0">3 tiles</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" Grid.Row="1" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" FontWeight="SemiBold" Margin="0,0,0,0">8 tiles</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" Grid.Row="1" Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" FontWeight="SemiBold" Margin="0,0,0,0">15 tiles</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TileBackground}" Grid.Row="1" Grid.Column="7" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" FontWeight="SemiBold" Margin="0,0,0,0">24 tiles</TextBlock>
|
||||
</Grid>
|
||||
|
||||
|
||||
<TextBlock x:Name="VersionTextBlock" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Row="5" Grid.Column="4" Padding="0,0,40,20" FontFamily="Segoe UI" Grid.ColumnSpan="2"></TextBlock>
|
||||
<Grid Grid.Row="0" Grid.RowSpan="7" Grid.ColumnSpan="6" x:Name="HelpDialogGrid" Visibility="Collapsed" Background="#99FFFFFF" Margin="0,0,0,0" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="5*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="5*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Border BorderBrush="{ThemeResource AppBarItemForegroundThemeBrush}" BorderThickness="1" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Background="{StaticResource TileBackground}" CornerRadius="20,20,20,20" Margin="20,0,18,0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="5*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button x:Name="HelpNavRightButton" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20,10,20,10" Foreground="{StaticResource ToolBarButtonBackground}" FontSize="24" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Click="OnHelpNavRight" gaze:GazeInput.MaxDwellRepeatCount="5" gaze:GazeInput.RepeatDelayDuration="{StaticResource RepeatDelayDuration}" gaze:GazeInput.DwellRepeatDuration="{StaticResource RepeatDuration}">
|
||||
<Border Background="White" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" FontSize="72"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button x:Name="HelpNavLeftButton" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="{StaticResource ToolBarButtonBackground}" FontSize="24" Padding="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="20,10,20,10" Click="OnHelpNavLeft" IsEnabled="False" gaze:GazeInput.MaxDwellRepeatCount="5" gaze:GazeInput.RepeatDelayDuration="{StaticResource RepeatDelayDuration}" gaze:GazeInput.DwellRepeatDuration="{StaticResource RepeatDuration}">
|
||||
<Border Background="White" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" FontSize="72"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Grid x:Name="HelpScreen1" Grid.Column="1" Visibility="Visible" Margin="50,0,50,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150px"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Column="1" HorizontalAlignment="Center" TextWrapping="Wrap" Text="How to Play" VerticalAlignment="Center" FontSize="48" Foreground="White" FontFamily="Segoe UI"/>
|
||||
<TextBlock Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Eyes First - Tile Slide is a game with four puzzle boards of increasing difficulty.

You may choose from a 3, 8, 15 or 24 board, each with the corresponding number of sliding tiles plus one empty space." VerticalAlignment="Top" FontSize="{StaticResource HelpTextFontSize}" Foreground="White" Grid.Row="1"/>
|
||||
<TextBlock Text="1 of 5" Foreground="White" FontSize="24" HorizontalAlignment="Right" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<Grid x:Name="HelpScreen2" Grid.Column="1" Visibility="Collapsed" Margin="50,0,50,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150px"/>
|
||||
<RowDefinition Height="2*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" HorizontalAlignment="Center" TextWrapping="Wrap" Text="How to Play" VerticalAlignment="Center" FontSize="48" Foreground="White" FontFamily="Segoe UI" Grid.ColumnSpan="2"/>
|
||||
<TextBlock Text="2 of 5" Foreground="White" FontSize="24" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1"/>
|
||||
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="The goal of the game is to unscramble the puzzle board by getting all the tiles back in order." VerticalAlignment="Top" FontSize="{StaticResource HelpTextFontSize}" Foreground="White" Grid.RowSpan="2" Grid.Row="1"/>
|
||||
<Image Source="/Assets/Solved15.PNG" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="20,20,20,20" Grid.Column="1" Grid.RowSpan="2" Grid.Row="1"/>
|
||||
</Grid>
|
||||
<Grid x:Name="HelpScreen3" Grid.Column="1" Visibility="Collapsed" Margin="50,0,50,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150px"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" Text="How to Play" VerticalAlignment="Center" FontSize="48" Foreground="White" FontFamily="Segoe UI"/>
|
||||
<TextBlock Text="3 of 5" Foreground="White" FontSize="24" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1"/>
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Top" Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="20px"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Button HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="26" Width="50" Height="50" Background="{x:Null}" FontWeight="SemiBold" Margin="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Border x:Name="PauseButtonBorder" Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock x:Name="PauseButtonText" Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" Foreground="White"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,0,0,0" TextWrapping="Wrap" Grid.Column="1">The pause button allows you to pause the game and study the board by temporarily locking down all tiles.</TextBlock>
|
||||
|
||||
<Button HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="26" Width="50" Height="50" Background="{x:Null}" FontWeight="SemiBold" Margin="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Grid.Row="2">
|
||||
<Border Background="Black" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" Foreground="White"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,0,0,0" TextWrapping="Wrap" Grid.Column="8" Grid.Row="2" FontFamily="Segoe MDL2 Assets">Press play to resume the game.</TextBlock>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid x:Name="HelpScreen4" Grid.Column="1" Visibility="Collapsed" Margin="50,0,50,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150px"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" Text="How to Play" VerticalAlignment="Center" FontSize="48" Foreground="White" FontFamily="Segoe UI"/>
|
||||
<TextBlock Text="4 of 5" Foreground="White" FontSize="24" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1"/>
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Top" Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,0,0,19" TextWrapping="Wrap" Grid.ColumnSpan="2">The buttons below have longer dwell times so as to prevent the user from exiting or closing out of the game by mistake:</TextBlock>
|
||||
|
||||
<Button HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="26" Width="50" Height="50" Background="{x:Null}" FontWeight="SemiBold" Margin="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Grid.Row="1" gaze:GazeInput.DwellDuration="{StaticResource DestructiveDwellDuration}">
|
||||
<Border x:Name="ExitBorder" Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock x:Name="ExitButtonText" Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" Foreground="White"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,-5,0,0" TextWrapping="Wrap" Grid.Column="8" Grid.Row="1" FontFamily="Segoe MDL2 Assets"> exit game entirely</TextBlock>
|
||||
|
||||
<Button HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" FontSize="26" Width="50" Height="50" Background="{x:Null}" FontWeight="SemiBold" Margin="0,5,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Grid.Row="2" gaze:GazeInput.DwellDuration="{StaticResource DestructiveDwellDuration}">
|
||||
<Border Background="{StaticResource ToolBarButtonBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" FontFamily="Segoe MDL2 Assets" Foreground="White"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,-5,0,0" TextWrapping="Wrap" Grid.Column="8" Grid.Row="2" FontFamily="Segoe MDL2 Assets"> close game and return to home page</TextBlock>
|
||||
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
<Grid x:Name="HelpScreen5" Grid.Column="1" Visibility="Collapsed" Margin="50,0,50,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150px"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" Text="Privacy & Terms" VerticalAlignment="Center" FontSize="48" Foreground="White" FontFamily="Segoe UI"/>
|
||||
<TextBlock Text="5 of 5" Foreground="White" FontSize="24" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1"/>
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Top" Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Foreground="White" FontSize="{StaticResource HelpTextFontSize}" VerticalAlignment="Center" Margin="10,0,0,19" TextWrapping="Wrap" Grid.ColumnSpan="2"></TextBlock>
|
||||
|
||||
<HyperlinkButton x:Name="PrivacyHyperlink" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="1" Height="150" Width="150" Foreground="White" FontFamily="Segoe UI" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Click="PrivacyHyperlink_Click" Margin="50,0,0,0">
|
||||
<Border CornerRadius="5" Background="{StaticResource ToolBarButtonBackground}" BorderThickness="3,0,0,0">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Privacy & Cookies</TextBlock>
|
||||
</Border>
|
||||
</HyperlinkButton>
|
||||
|
||||
<HyperlinkButton x:Name="UseTermsHyperlink" VerticalAlignment="Center" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="1" Height="150" Width="150" Foreground="White" FontFamily="Segoe UI" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="0,0,50,0" Click="UseTermsHyperlink_Click">
|
||||
<Border CornerRadius="5" Background="{StaticResource ToolBarButtonBackground}">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI">Use Terms</TextBlock>
|
||||
</Border>
|
||||
</HyperlinkButton>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
<Button Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" FontFamily="Segoe MDL2 Assets" FontSize="52" Height="100" Background="{x:Null}" FontWeight="SemiBold" Margin="0,20,20,20" FocusVisualPrimaryBrush="Transparent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" Click="DismissButton">
|
||||
<Border Background="White" CornerRadius="5" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Stretch">
|
||||
<!--<TextBlock Text="" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold" ></TextBlock>-->
|
||||
<TextBlock Text="Back to game" Foreground="{StaticResource ToolBarButtonBackground}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI" FontWeight="SemiBold" FontSize="24" Padding="60,0,60,0" ></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Name="PrivacyViewGrid" Grid.RowSpan="6" Grid.ColumnSpan="6" Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.Background>
|
||||
<LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1.2" MappingMode="RelativeToBoundingBox" SpreadMethod="Pad">
|
||||
<GradientStop Color="#c6ffff" Offset="0.8"/>
|
||||
<GradientStop Color="#FFc6beff" Offset="0.009"/>
|
||||
<GradientStop Color="White" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</Grid.Background>
|
||||
|
||||
<Border Margin="50,50,50,230" BorderBrush="{StaticResource TileBackground}" BorderThickness="1,1,1,1" >
|
||||
<WebView x:Name="PrivacyWebView" NavigationCompleted="PrivacyWebView_NavigationCompleted"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock x:Name="WebViewLoadingText" Visibility="Collapsed" Text="Loading.." VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="24" Margin="0,0,0,200" Foreground="{StaticResource ToolBarButtonBackground}" FontFamily="Segoe UI" />
|
||||
<Button x:Name="PrivacyViewScrollUpButton" Width="150" Height="150" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="150,50,50,50" Click="PrivacyViewScrollUpButton_Click" Background="{x:Null}" Foreground="White" FontFamily="Segoe MDL2 Assets" gaze:GazeInput.MaxDwellRepeatCount="99" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Border CornerRadius="5" Background="{StaticResource ToolBarButtonBackground}">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<Button x:Name="PrivacyViewScrollDownButton" Width="150" Height="150" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="400,50,0,50" Click="PrivacyViewScrollDownButton_Click" Background="{x:Null}" Foreground="White" FontFamily="Segoe MDL2 Assets" gaze:GazeInput.MaxDwellRepeatCount="99" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0">
|
||||
<Border CornerRadius="5" Background="{StaticResource ToolBarButtonBackground}">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
<Button x:Name="PrivacyViewContinueButton" Width="300" Height="150" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0,50,150,50" Click="PrivacyViewContinueButton_Click" Foreground="White" FontSize="24" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0,0,0,0" BorderThickness="0" Background="{x:Null}" >
|
||||
<Border CornerRadius="5" Background="{StaticResource ToolBarButtonBackground}">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >Continue</TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</Page>
|
||||
|
|
|
@ -1,22 +1,31 @@
|
|||
using Microsoft.Toolkit.Uwp.Input.GazeInteraction;
|
||||
//Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license.
|
||||
//See LICENSE in the project root for license information.
|
||||
|
||||
using Microsoft.Toolkit.Uwp.Input.GazeInteraction;
|
||||
using Windows.ApplicationModel;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Core;
|
||||
using Windows.UI.ViewManagement;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Media;
|
||||
|
||||
namespace Fifteen
|
||||
{
|
||||
public sealed partial class MainPage : Page
|
||||
{
|
||||
SolidColorBrush _solidTileBrush;
|
||||
|
||||
public MainPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;
|
||||
|
||||
_solidTileBrush = (SolidColorBrush)this.Resources["TileBackground"];
|
||||
|
||||
VersionTextBlock.Text = GetAppVersion();
|
||||
|
||||
CoreWindow.GetForCurrentThread().KeyDown += new Windows.Foundation.TypedEventHandler<CoreWindow, KeyEventArgs>(delegate (CoreWindow sender, KeyEventArgs args) {
|
||||
|
@ -28,6 +37,9 @@ namespace Fifteen
|
|||
{
|
||||
GazeInput.LoadSettings(sharedSettings);
|
||||
});
|
||||
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
GazeInput.DwellFeedbackCompleteBrush = new SolidColorBrush(Colors.Transparent);
|
||||
}
|
||||
|
||||
private void OnBoardSizeSelected(object sender, RoutedEventArgs e)
|
||||
|
@ -45,5 +57,144 @@ namespace Fifteen
|
|||
|
||||
return string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision);
|
||||
}
|
||||
|
||||
private void OnExit(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Application.Current.Exit();
|
||||
}
|
||||
|
||||
private void OnHowToPlayButton(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = _solidTileBrush;
|
||||
|
||||
HelpScreen1.Visibility = Visibility.Visible;
|
||||
HelpScreen2.Visibility = Visibility.Collapsed;
|
||||
HelpScreen3.Visibility = Visibility.Collapsed;
|
||||
HelpScreen4.Visibility = Visibility.Collapsed;
|
||||
HelpScreen5.Visibility = Visibility.Collapsed;
|
||||
HelpNavLeftButton.IsEnabled = false;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
|
||||
HelpDialogGrid.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void OnHelpNavRight(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (HelpScreen1.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen1.Visibility = Visibility.Collapsed;
|
||||
HelpScreen2.Visibility = Visibility.Visible;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
}
|
||||
else if(HelpScreen2.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen2.Visibility = Visibility.Collapsed;
|
||||
HelpScreen3.Visibility = Visibility.Visible;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
}
|
||||
else if (HelpScreen3.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen3.Visibility = Visibility.Collapsed;
|
||||
HelpScreen4.Visibility = Visibility.Visible;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
}
|
||||
else if (HelpScreen4.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen4.Visibility = Visibility.Collapsed;
|
||||
HelpScreen5.Visibility = Visibility.Visible;
|
||||
HelpNavRightButton.IsEnabled = false;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
}
|
||||
else if (HelpScreen5.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpNavRightButton.IsEnabled = false;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHelpNavLeft(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (HelpScreen1.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpNavLeftButton.IsEnabled = false;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
}
|
||||
else if (HelpScreen2.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen2.Visibility = Visibility.Collapsed;
|
||||
HelpScreen1.Visibility = Visibility.Visible;
|
||||
HelpNavLeftButton.IsEnabled = false;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
}
|
||||
else if (HelpScreen3.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen3.Visibility = Visibility.Collapsed;
|
||||
HelpScreen2.Visibility = Visibility.Visible;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
}
|
||||
|
||||
else if (HelpScreen4.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen4.Visibility = Visibility.Collapsed;
|
||||
HelpScreen3.Visibility = Visibility.Visible;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
}
|
||||
|
||||
else if (HelpScreen5.Visibility == Visibility.Visible)
|
||||
{
|
||||
HelpScreen5.Visibility = Visibility.Collapsed;
|
||||
HelpScreen4.Visibility = Visibility.Visible;
|
||||
HelpNavLeftButton.IsEnabled = true;
|
||||
HelpNavRightButton.IsEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void DismissButton(object sender, RoutedEventArgs e)
|
||||
{
|
||||
HelpDialogGrid.Visibility = Visibility.Collapsed;
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.White);
|
||||
}
|
||||
|
||||
private async void PrivacyViewScrollUpButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
PrivacyWebView.InvokeScriptAsync("eval", new string[] { "window.scrollBy(0,-" + PrivacyWebView.ActualHeight / 2 + ") " });
|
||||
}
|
||||
|
||||
private void PrivacyViewScrollDownButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
PrivacyWebView.InvokeScriptAsync("eval", new string[] { "window.scrollBy(0," + PrivacyWebView.ActualHeight / 2 + ") " });
|
||||
}
|
||||
|
||||
private void PrivacyViewContinueButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
PrivacyViewGrid.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void PrivacyHyperlink_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.Transparent);
|
||||
WebViewLoadingText.Visibility = Visibility.Visible;
|
||||
PrivacyWebView.Navigate(new System.Uri("https://go.microsoft.com/fwlink/?LinkId=521839"));
|
||||
PrivacyViewGrid.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void UseTermsHyperlink_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = new SolidColorBrush(Colors.Transparent);
|
||||
WebViewLoadingText.Visibility = Visibility.Visible;
|
||||
PrivacyWebView.Navigate(new System.Uri("https://www.microsoft.com/en-us/servicesagreement/default.aspx"));
|
||||
PrivacyViewGrid.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void PrivacyWebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
|
||||
{
|
||||
GazeInput.DwellFeedbackProgressBrush = _solidTileBrush;
|
||||
WebViewLoadingText.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
|
||||
<Identity Name="27539d0b-3d64-431c-b1e3-f01927ed818a" Publisher="CN=harishsk" Version="1.0.10.0" />
|
||||
<mp:PhoneIdentity PhoneProductId="27539d0b-3d64-431c-b1e3-f01927ed818a" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||
<Identity Name="Microsoft.EyesFirst-TileSlide" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="1.0.38.0" />
|
||||
<mp:PhoneIdentity PhoneProductId="72a0614e-d756-4941-b5b5-9ecfb0d7cc92" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||
<Properties>
|
||||
<DisplayName>Fifteen</DisplayName>
|
||||
<PublisherDisplayName>harishsk</PublisherDisplayName>
|
||||
<DisplayName>Eyes First - Tile Slide</DisplayName>
|
||||
<PublisherDisplayName>Microsoft Research</PublisherDisplayName>
|
||||
<Logo>Assets\StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
<Dependencies>
|
||||
|
@ -15,14 +15,13 @@
|
|||
</Resources>
|
||||
<Applications>
|
||||
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="Fifteen.App">
|
||||
<uap:VisualElements DisplayName="Fifteen" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="Fifteen" BackgroundColor="transparent">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" ShortName="Fifteen" Square310x310Logo="Assets\LargeTile.png" Square71x71Logo="Assets\SmallTile.png">
|
||||
<uap:ShowNameOnTiles>
|
||||
<uap:ShowOn Tile="square150x150Logo" />
|
||||
<uap:ShowOn Tile="wide310x150Logo" />
|
||||
</uap:ShowNameOnTiles>
|
||||
<uap:VisualElements DisplayName="Eyes First - Tile Slide" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="Tile Slide" BackgroundColor="transparent">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square310x310Logo="Assets\LargeTile.png" Square71x71Logo="Assets\SmallTile.png">
|
||||
</uap:DefaultTile>
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" BackgroundColor="#C6CDFF" />
|
||||
<uap:InitialRotationPreference>
|
||||
<uap:Rotation Preference="landscape" />
|
||||
</uap:InitialRotationPreference>
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
|
|
@ -187,7 +187,7 @@
|
|||
<Version>6.1.9</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Input.GazeInteraction">
|
||||
<Version>5.0.0</Version>
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
|
|
Двоичные данные
Games/Memory/Assets/LargeTile.scale-100.png
До Ширина: | Высота: | Размер: 8.6 KiB После Ширина: | Высота: | Размер: 46 KiB |
Двоичные данные
Games/Memory/Assets/LargeTile.scale-125.png
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 68 KiB |
Двоичные данные
Games/Memory/Assets/LargeTile.scale-150.png
До Ширина: | Высота: | Размер: 15 KiB После Ширина: | Высота: | Размер: 88 KiB |
Двоичные данные
Games/Memory/Assets/LargeTile.scale-200.png
До Ширина: | Высота: | Размер: 23 KiB После Ширина: | Высота: | Размер: 141 KiB |
Двоичные данные
Games/Memory/Assets/LargeTile.scale-400.png
До Ширина: | Высота: | Размер: 65 KiB После Ширина: | Высота: | Размер: 84 KiB |
Двоичные данные
Games/Memory/Assets/SmallTile.scale-100.png
До Ширина: | Высота: | Размер: 1.7 KiB После Ширина: | Высота: | Размер: 4.3 KiB |
Двоичные данные
Games/Memory/Assets/SmallTile.scale-125.png
До Ширина: | Высота: | Размер: 2.1 KiB После Ширина: | Высота: | Размер: 6.1 KiB |
Двоичные данные
Games/Memory/Assets/SmallTile.scale-150.png
До Ширина: | Высота: | Размер: 2.7 KiB После Ширина: | Высота: | Размер: 9.6 KiB |
Двоичные данные
Games/Memory/Assets/SmallTile.scale-200.png
До Ширина: | Высота: | Размер: 3.6 KiB После Ширина: | Высота: | Размер: 14 KiB |
Двоичные данные
Games/Memory/Assets/SmallTile.scale-400.png
До Ширина: | Высота: | Размер: 7.7 KiB После Ширина: | Высота: | Размер: 42 KiB |
После Ширина: | Высота: | Размер: 59 KiB |
Двоичные данные
Games/Memory/Assets/SplashScreen.scale-100.png
До Ширина: | Высота: | Размер: 9.1 KiB После Ширина: | Высота: | Размер: 26 KiB |
Двоичные данные
Games/Memory/Assets/SplashScreen.scale-125.png
До Ширина: | Высота: | Размер: 12 KiB После Ширина: | Высота: | Размер: 36 KiB |
Двоичные данные
Games/Memory/Assets/SplashScreen.scale-150.png
До Ширина: | Высота: | Размер: 16 KiB После Ширина: | Высота: | Размер: 48 KiB |
Двоичные данные
Games/Memory/Assets/SplashScreen.scale-200.png
До Ширина: | Высота: | Размер: 25 KiB После Ширина: | Высота: | Размер: 73 KiB |
Двоичные данные
Games/Memory/Assets/SplashScreen.scale-400.png
До Ширина: | Высота: | Размер: 69 KiB После Ширина: | Высота: | Размер: 217 KiB |
Двоичные данные
Games/Memory/Assets/Square150x150Logo.scale-100.png
До Ширина: | Высота: | Размер: 3.8 KiB После Ширина: | Высота: | Размер: 16 KiB |
Двоичные данные
Games/Memory/Assets/Square150x150Logo.scale-125.png
До Ширина: | Высота: | Размер: 4.8 KiB После Ширина: | Высота: | Размер: 23 KiB |
Двоичные данные
Games/Memory/Assets/Square150x150Logo.scale-150.png
До Ширина: | Высота: | Размер: 5.9 KiB После Ширина: | Высота: | Размер: 29 KiB |
Двоичные данные
Games/Memory/Assets/Square150x150Logo.scale-200.png
До Ширина: | Высота: | Размер: 8.3 KiB После Ширина: | Высота: | Размер: 45 KiB |
Двоичные данные
Games/Memory/Assets/Square150x150Logo.scale-400.png
До Ширина: | Высота: | Размер: 22 KiB После Ширина: | Высота: | Размер: 137 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.scale-100.png
До Ширина: | Высота: | Размер: 972 B После Ширина: | Высота: | Размер: 2.3 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.scale-125.png
До Ширина: | Высота: | Размер: 1.2 KiB После Ширина: | Высота: | Размер: 3.2 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.scale-150.png
До Ширина: | Высота: | Размер: 1.5 KiB После Ширина: | Высота: | Размер: 4.0 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.scale-200.png
До Ширина: | Высота: | Размер: 2.1 KiB После Ширина: | Высота: | Размер: 6.0 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.scale-400.png
До Ширина: | Высота: | Размер: 4.5 KiB После Ширина: | Высота: | Размер: 20 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.targetsize-16.png
До Ширина: | Высота: | Размер: 379 B После Ширина: | Высота: | Размер: 700 B |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.targetsize-24.png
До Ширина: | Высота: | Размер: 507 B После Ширина: | Высота: | Размер: 1.1 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.targetsize-256.png
До Ширина: | Высота: | Размер: 6.8 KiB После Ширина: | Высота: | Размер: 35 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.targetsize-32.png
До Ширина: | Высота: | Размер: 630 B После Ширина: | Высота: | Размер: 1.5 KiB |
Двоичные данные
Games/Memory/Assets/Square44x44Logo.targetsize-48.png
До Ширина: | Высота: | Размер: 1.0 KiB После Ширина: | Высота: | Размер: 2.6 KiB |
Двоичные данные
Games/Memory/Assets/StoreLogo.scale-100.png
До Ширина: | Высота: | Размер: 1.1 KiB После Ширина: | Высота: | Размер: 2.8 KiB |
Двоичные данные
Games/Memory/Assets/StoreLogo.scale-125.png
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 3.8 KiB |
Двоичные данные
Games/Memory/Assets/StoreLogo.scale-150.png
До Ширина: | Высота: | Размер: 1.8 KiB После Ширина: | Высота: | Размер: 4.8 KiB |
Двоичные данные
Games/Memory/Assets/StoreLogo.scale-200.png
До Ширина: | Высота: | Размер: 2.5 KiB После Ширина: | Высота: | Размер: 8.7 KiB |
Двоичные данные
Games/Memory/Assets/StoreLogo.scale-400.png
До Ширина: | Высота: | Размер: 5.1 KiB После Ширина: | Высота: | Размер: 25 KiB |
Двоичные данные
Games/Memory/Assets/Wide310x150Logo.scale-100.png
До Ширина: | Высота: | Размер: 4.1 KiB После Ширина: | Высота: | Размер: 33 KiB |