<Window x:Class="Orpius.Sokoban.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:Orpius.Sokoban.Controls;assembly="
xmlns:Sokoban="clr-namespace:Orpius.Sokoban;assembly=Orpius.Sokoban"
Title="Alien Sokoban" Height="600" Width="800" MinWidth="650" MinHeight="400" KeyDown="Window_KeyDown" FontFamily="Tahoma" Icon="Images/AppIcon.png"
Loaded="Window_Loaded" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<Window.Resources>
<!-- Game instance used throughout. -->
<Sokoban:Game x:Key="sokobanGame"/>
<!-- Displays the Treasre or Actor icon. -->
<Style x:Key="CellContentStyle" TargetType="{x:Type Rectangle}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell contains the Actor. -->
<Condition Binding="{Binding Path=CellContents.Name}" Value="Actor" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="{StaticResource PlayerCellContentBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell contains a treasure. -->
<Condition Binding="{Binding Path=CellContents.Name}" Value="Treasure" />
</MultiDataTrigger.Conditions>
<Setter Property="Width" Value="20"/>
<Setter Property="Height" Value="20"/>
<Setter Property="Fill" Value="{StaticResource TreasureCellContentBrush}"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
<!-- Displays the appropriate cell type. -->
<Style x:Key="CellStyle" TargetType="{x:Type Rectangle}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell is a wall. -->
<Condition Binding="{Binding Path=Name}" Value="Wall" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="{StaticResource WallCellBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell is a floor cell. -->
<Condition Binding="{Binding Path=Name}" Value="Floor" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="{StaticResource FloorCellBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell is an outer empty space cell. -->
<Condition Binding="{Binding Path=Name}" Value="Space" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="Transparent"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell is a goal. -->
<Condition Binding="{Binding Path=Name}" Value="Goal" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="{StaticResource GoalCellContentBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- If the cell is a goal with a treasure in it. -->
<Condition Binding="{Binding Path=Name}" Value="Goal" />
<Condition Binding="{Binding Path=CellContents.Name}" Value="Treasure" />
</MultiDataTrigger.Conditions>
<Setter Property="Fill" Value="{StaticResource GoalActiveCellContentBrush}"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
<!-- All cells are styled here. -->
<Style x:Key="Cell" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<!-- The cell, -->
<Rectangle Width="40" Height="40" Style="{DynamicResource CellStyle}" />
<!-- and its content. -->
<Rectangle Style="{DynamicResource CellContentStyle}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Audio clips. -->
<Style x:Key="AudioClip" TargetType="{x:Type MediaElement}">
<Setter Property="Width" Value="0"/>
<Setter Property="Height" Value="0"/>
<Setter Property="LoadedBehavior" Value="Manual"/>
<Setter Property="UnloadedBehavior" Value="Stop"/>
</Style>
<!-- Center labels. -->
<Style x:Key="CenterLabels" TargetType="{x:Type Label}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontSize" Value="20"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Window.Resources>
<Grid>
<!-- Background. -->
<Viewbox Margin="0,20,0,0" Stretch="UniformToFill">
<Controls:BackgroundControl Opacity=".1" />
</Viewbox>
<!-- Content. -->
<DockPanel Margin="8,8,12,12">
<Grid x:Name="grid_Main">
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="50" />
<RowDefinition Height="5" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#919292" CornerRadius="20" BorderThickness="5">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC6C6C6" Offset="1"/>
<GradientStop Color="#FF919191" Offset="0.513"/>
<GradientStop Color="#FFCACACA" Offset="0"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<Rectangle Stroke="{x:Null}" Margin="10,10,10,0" RadiusX="18" RadiusY="18" Opacity="0.385" Height="40" VerticalAlignment="Top">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFECECEC" Offset="0"/>
<GradientStop Color="#62FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<!--<Rectangle Fill="{StaticResource BannerBrush}" Height="80" Width="500">
</Rectangle>-->
<Viewbox Margin="0,5,0,5">
<Controls:Banner />
</Viewbox>
<Border Grid.Row="1" BorderBrush="#FFFFE63E" CornerRadius="10,10,10,10" BorderThickness="2,2,2,2" Margin="0,5,0,0">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,-1.389" StartPoint="0.5,2.389" SpreadMethod="Pad">
<GradientStop Color="#FFFF9900" Offset="1"/>
<GradientStop Color="#FFFF9900" Offset="0.58"/>
<GradientStop Color="#FFFFFFFF" Offset="0"/>
</LinearGradientBrush>
</Border.Background>
<Grid DataContext="{StaticResource sokobanGame}">
<Rectangle Stroke="{x:Null}" Margin="5,3,5,18" RadiusX="10" RadiusY="10" Opacity="0.41">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFECECEC" Offset="0"/>
<GradientStop Color="#FFFFFFFF" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<StackPanel Height="40" x:Name="stackPanel1" Margin="15,0,5,0" VerticalAlignment="Center" HorizontalAlignment="Stretch" Width="Auto" Orientation="Horizontal">
<Label VerticalAlignment="Center" FontSize="15" Foreground="White" Content="Level Code:"/>
<TextBox Height="21" x:Name="textBox_LevelCode" Width="60" MaxLength="5" AcceptsReturn="True" VerticalAlignment="Center" HorizontalContentAlignment="Center" KeyUp="textBox_LevelCode_KeyUp" GotFocus="textBox_LevelCode_GotFocus" LostFocus="textBox_LevelCode_LostFocus" IsTabStop="False" FontSize="14" />
</StackPanel>
<StackPanel Margin="0,0,10,0" VerticalAlignment="Center" HorizontalAlignment="Center" Width="Auto" Orientation="Horizontal">
<Label Style="{StaticResource CenterLabels}" Content="Level"/>
<Label x:Name="label_LevelNumber" Style="{StaticResource CenterLabels}" Content="0"/>
<Label Style="{StaticResource CenterLabels}" Content=":"/>
<Label x:Name="label_Moves" Style="{StaticResource CenterLabels}" Content="{Binding Path=Level.Actor.MoveCount}"/>
<Label Style="{StaticResource CenterLabels}" Content="Moves"/>
</StackPanel>
<StackPanel Margin="0,0,20,0" VerticalAlignment="Center" HorizontalAlignment="Right" Width="Auto" Orientation="Horizontal">
<Button Height="23" x:Name="button_RestartLevel" Width="100" Click="button_RestartLevel_Click" IsTabStop="False" Focusable="False" Content="Restart Level" Foreground="White" BorderBrush="White">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF9AFF95" Offset="0.21"/>
<GradientStop Color="#FF5DD757" Offset="0.589"/>
<GradientStop Color="#FF99FF93" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</StackPanel>
</Grid>
</Border>
<Border Grid.Row="3" Padding="20" BorderBrush="#919292" CornerRadius="12" BorderThickness="0" Background="Transparent">
<Viewbox Stretch="Uniform">
<Grid x:Name="grid_Game"/>
</Viewbox>
</Border>
<Controls:FeedbackControl Grid.Row="3" x:Name="FeedbackControl1" Margin="10,10,10,10" Click="FeedbackControl1_Click"/>
<Border x:Name="Border_PressAnyKey" Visibility="Hidden" Grid.Row="3" BorderBrush="#919292" CornerRadius="8" BorderThickness="0" Margin="10,10,10,10" VerticalAlignment="Top" Height="50">
<Border.Background>
<SolidColorBrush Color="#A0EBE5" Opacity=".1"/>
</Border.Background>
<Label Content="Press any key to continue." FontSize="30" />
</Border>
</Grid>
</DockPanel>
<!-- Audio clips. -->
<!--
<MediaElement Name="mediaElement_Intro" Source="../../Audio/Intro.wav" Style="{StaticResource AudioClip}"/>
<MediaElement Name="mediaElement_TreasurePush" Source="../../Audio/TreasurePush.wav" Style="{StaticResource AudioClip}"/>
<MediaElement Name="mediaElement_DingDong" Source="../../Audio/DingDong.wav" Style="{StaticResource AudioClip}"/>
<MediaElement Name="mediaElement_Footstep" Source="../../Audio/Footstep.wav" Style="{StaticResource AudioClip}"/>
<MediaElement Name="MediaElement_LevelComplete" Source="../../Audio/Movement_from_NEO_Sounds.mp3" Style="{StaticResource AudioClip}"/>
<MediaElement Name="MediaElement_GameComplete" Source="../../Audio/DullClapping.mp3" Style="{StaticResource AudioClip}"/>-->
<MediaElement x:Name="mediaElement_Intro" Source="../../Audio/Intro.wav" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
<MediaElement x:Name="mediaElement_TreasurePush" Source="../../Audio/TreasurePush.wav" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
<MediaElement x:Name="mediaElement_DingDong" Source="../../Audio/DingDong.wav" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
<MediaElement x:Name="mediaElement_Footstep" Source="../../Audio/Footstep.wav" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
<MediaElement x:Name="MediaElement_LevelComplete" Source="../../Audio/Movement_from_NEO_Sounds.mp3" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
<MediaElement x:Name="MediaElement_GameComplete" Source="../../Audio/DullClapping.mp3" Width="0" Height="0" LoadedBehavior="Manual" UnloadedBehavior="Stop" />
</Grid>
</Window>