Merge pull request #29 from MSREnable/master

Merging MSREnable fork back to parent
This commit is contained in:
harishsk 2019-04-08 16:17:13 -07:00 коммит произвёл GitHub
Родитель 158d2d384c 87b5f7b9c3
Коммит c59a2cab6e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
120 изменённых файлов: 2994 добавлений и 353 удалений

Просмотреть файл

@ -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)' &lt; '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)' &lt; '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)' &lt; '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

Двоичные данные
Games/Fifteen/Assets/Solved15.PNG Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.2 KiB

После

Ширина:  |  Высота:  |  Размер: 12 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.9 KiB

После

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.7 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 6.4 KiB

После

Ширина:  |  Высота:  |  Размер: 27 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 16 KiB

После

Ширина:  |  Высота:  |  Размер: 74 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 345 B

После

Ширина:  |  Высота:  |  Размер: 711 B

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 5.3 KiB

После

Ширина:  |  Высота:  |  Размер: 22 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 577 B

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 908 B

После

Ширина:  |  Высота:  |  Размер: 2.7 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 829 B

После

Ширина:  |  Высота:  |  Размер: 2.4 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.0 KiB

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.3 KiB

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.8 KiB

После

Ширина:  |  Высота:  |  Размер: 22 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.8 KiB

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 345 B

После

Ширина:  |  Высота:  |  Размер: 711 B

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 455 B

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 5.3 KiB

После

Ширина:  |  Высота:  |  Размер: 22 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 577 B

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 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

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.4 KiB

После

Ширина:  |  Высота:  |  Размер: 26 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.2 KiB

После

Ширина:  |  Высота:  |  Размер: 40 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 5.1 KiB

После

Ширина:  |  Высота:  |  Размер: 50 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 7.1 KiB

После

Ширина:  |  Высота:  |  Размер: 78 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 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)' &lt; '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="&#xe8bb;" 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="&#xe72b;" 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="&#xE769;" 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="&#xe8bb;" 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="&#xe72b;" 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">&#xE768;</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="&#xe8bb;" 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="&#xe8bb;" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="SemiBold"></TextBlock>
</Border>
</Button>
<!--<Button Grid.Column="2" Click="OnExit" Content="&#xe8bb;" 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="&#xe76c;" 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="&#xe76b;" 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.&#x0d;&#x0d;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="&#xE769;" 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="&#xE768;" 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="&#xE8bb;" 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="&#xe72b;" 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 &amp; 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 &amp; 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="&#xe8bb;" 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" >&#xe971;</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" >&#xe972;</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)' &lt; '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

Двоичные данные
Games/Memory/Assets/Solved16Card.PNG Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.8 KiB

После

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.8 KiB

После

Ширина:  |  Высота:  |  Размер: 23 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 5.9 KiB

После

Ширина:  |  Высота:  |  Размер: 29 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.3 KiB

После

Ширина:  |  Высота:  |  Размер: 45 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 22 KiB

После

Ширина:  |  Высота:  |  Размер: 137 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 972 B

После

Ширина:  |  Высота:  |  Размер: 2.3 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 3.2 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 2.1 KiB

После

Ширина:  |  Высота:  |  Размер: 6.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.5 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 379 B

После

Ширина:  |  Высота:  |  Размер: 700 B

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 507 B

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 6.8 KiB

После

Ширина:  |  Высота:  |  Размер: 35 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 630 B

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 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

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.1 KiB

После

Ширина:  |  Высота:  |  Размер: 33 KiB

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше