Added Function Key based speed settings for conducting user experiments
This commit is contained in:
Родитель
fe41a78aff
Коммит
31b92656c8
|
@ -155,7 +155,7 @@
|
|||
<Rectangle Grid.Row="1" Grid.Column="2" Width="180"/>
|
||||
|
||||
|
||||
<GridView x:Name="GameBoardBackGroundGrid" ItemsSource="{x:Bind Path=Board.Cells, Mode=OneWay}" FontFamily="Segoe UI" Grid.Row="1" Grid.Column="1" Padding="0,0,0,0" FocusVisualPrimaryThickness="0,0,0,0" FocusVisualMargin="0,0,0,-1" FocusVisualSecondaryThickness="0,0,0,0" >
|
||||
<GridView x:Name="GameBoardBackGroundGrid" ItemsSource="{x:Bind Path=Board.Cells, Mode=OneWay}" FontFamily="Segoe UI" Grid.Row="1" Grid.Column="1" Padding="0,0,0,0" FocusVisualPrimaryThickness="0,0,0,0" FocusVisualMargin="0,0,0,-1" FocusVisualSecondaryThickness="0,0,0,0" AllowFocusOnInteraction="False" >
|
||||
<GridView.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="4" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
|
@ -171,7 +171,7 @@
|
|||
</ItemsControl.ItemTemplate>
|
||||
</GridView>
|
||||
|
||||
<GridView x:Name="GameBoardGrid" x:FieldModifier="public" ItemsSource="{x:Bind Path=Board.Cells, Mode=OneWay}" Grid.Row="1" Grid.Column="1" SizeChanged="GameBoardGrid_SizeChanged" FontFamily="Segoe UI" Padding="0,0,0,0" ScrollViewer.VerticalScrollBarVisibility="Disabled" FocusVisualMargin="0,0,0,0" FocusVisualPrimaryThickness="0,0,0,0" FocusVisualSecondaryThickness="0,0,0,0">
|
||||
<GridView x:Name="GameBoardGrid" x:FieldModifier="public" ItemsSource="{x:Bind Path=Board.Cells, Mode=OneWay}" Grid.Row="1" Grid.Column="1" SizeChanged="GameBoardGrid_SizeChanged" FontFamily="Segoe UI" Padding="0,0,0,0" ScrollViewer.VerticalScrollBarVisibility="Disabled" FocusVisualMargin="0,0,0,0" FocusVisualPrimaryThickness="0,0,0,0" FocusVisualSecondaryThickness="0,0,0,0" AllowFocusOnInteraction="False">
|
||||
<GridView.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="10" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
|
@ -216,22 +216,22 @@
|
|||
|
||||
<Rectangle Width="{x:Bind GameBoardGrid.ActualWidth}" Height="{x:Bind GameBoardGrid.ActualHeight}" Grid.Row="1" Grid.Column="1"></Rectangle>
|
||||
|
||||
<Button x:Name="UpButton" Grid.Row="0" Grid.Column="1" Style="{StaticResource ButtonStyle}" Click="OnUpClick" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Foreground="{StaticResource TileForeground}" Width="{x:Bind Board.CellSpace, Mode=OneWay}" Background="{x:Null}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" >
|
||||
<Button x:Name="UpButton" Grid.Row="0" Grid.Column="1" Style="{StaticResource ButtonStyle}" Click="OnUpClick" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Foreground="{StaticResource TileForeground}" Width="{x:Bind Board.CellSpace, Mode=OneWay}" Background="{x:Null}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" gaze:GazeInput.DwellDuration="{x:Bind Board.SlideDwellSpeed, Mode=OneWay}">
|
||||
<Border Background="{StaticResource TileBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="ExtraBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button x:Name="DownButton" Grid.Row="2" Grid.Column="1" Style="{StaticResource ButtonStyle}" Click="OnDownClick" HorizontalAlignment="Stretch" VerticalAlignment="Top" Foreground="{StaticResource TileForeground}" Width="{x:Bind Board.CellSpace, Mode=OneWay}" Background="{x:Null}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
|
||||
<Button x:Name="DownButton" Grid.Row="2" Grid.Column="1" Style="{StaticResource ButtonStyle}" Click="OnDownClick" HorizontalAlignment="Stretch" VerticalAlignment="Top" Foreground="{StaticResource TileForeground}" Width="{x:Bind Board.CellSpace, Mode=OneWay}" Background="{x:Null}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" gaze:GazeInput.DwellDuration="{x:Bind Board.SlideDwellSpeed, Mode=OneWay}">
|
||||
<Border Background="{StaticResource TileBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="ExtraBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button x:Name="LeftButton" Grid.Row="1" Grid.Column="0" Style="{StaticResource ButtonStyle}" Click="OnLeftClick" HorizontalAlignment="Right" VerticalAlignment="Stretch" Background="{x:Null}" Foreground="{StaticResource TileForeground}" Height="{x:Bind Board.CellSpace, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
|
||||
<Button x:Name="LeftButton" Grid.Row="1" Grid.Column="0" Style="{StaticResource ButtonStyle}" Click="OnLeftClick" HorizontalAlignment="Right" VerticalAlignment="Stretch" Background="{x:Null}" Foreground="{StaticResource TileForeground}" Height="{x:Bind Board.CellSpace, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" gaze:GazeInput.DwellDuration="{x:Bind Board.SlideDwellSpeed, Mode=OneWay}">
|
||||
<Border Background="{StaticResource TileBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="ExtraBold"></TextBlock>
|
||||
</Border>
|
||||
</Button>
|
||||
<Button x:Name="RightButton" Grid.Row="1" Grid.Column="2" Style="{StaticResource ButtonStyle}" Click="OnRightClick" HorizontalAlignment="Left" VerticalAlignment="Stretch" Background="{x:Null}" Foreground="{StaticResource TileForeground}" Height="{x:Bind Board.CellSpace, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
|
||||
<Button x:Name="RightButton" Grid.Row="1" Grid.Column="2" Style="{StaticResource ButtonStyle}" Click="OnRightClick" HorizontalAlignment="Left" VerticalAlignment="Stretch" Background="{x:Null}" Foreground="{StaticResource TileForeground}" Height="{x:Bind Board.CellSpace, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" gaze:GazeInput.DwellDuration="{x:Bind Board.SlideDwellSpeed, Mode=OneWay}">
|
||||
<Border Background="{StaticResource TileBackground}" CornerRadius="5" HorizontalAlignment="Stretch">
|
||||
<TextBlock Text="" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe MDL2 Assets" FontWeight="ExtraBold"></TextBlock>
|
||||
</Border>
|
||||
|
|
|
@ -191,8 +191,9 @@ namespace TwoZeroFourEight
|
|||
|
||||
public class Board : NotificationBase
|
||||
{
|
||||
private int _SlideSpeed = 200;
|
||||
private int _AddSpeed = 500;
|
||||
private BoardSpeed _boardSpeed = BoardSpeed.Slow;
|
||||
private int _SlideSpeed = 200;
|
||||
private int _AddSpeed = 500;
|
||||
private int _SpawnSpeed = 25;
|
||||
private int _maxCells;
|
||||
private Random _random = new Random();
|
||||
|
@ -265,6 +266,49 @@ namespace TwoZeroFourEight
|
|||
}
|
||||
}
|
||||
|
||||
private TimeSpan _slideDwellSpeed = TimeSpan.FromMilliseconds(100);
|
||||
public TimeSpan SlideDwellSpeed
|
||||
{
|
||||
get { return _slideDwellSpeed; }
|
||||
set
|
||||
{
|
||||
SetField<TimeSpan>(ref _slideDwellSpeed, value, "SlideDwellSpeed");
|
||||
}
|
||||
}
|
||||
|
||||
public enum BoardSpeed
|
||||
{
|
||||
Slow,
|
||||
Fast
|
||||
}
|
||||
|
||||
public void SetBoardSpeed(BoardSpeed speed)
|
||||
{
|
||||
_boardSpeed = speed;
|
||||
|
||||
switch (_boardSpeed)
|
||||
{
|
||||
case BoardSpeed.Slow:
|
||||
_SlideSpeed = 200;
|
||||
_AddSpeed = 500;
|
||||
_SpawnSpeed = 25;
|
||||
break;
|
||||
|
||||
case BoardSpeed.Fast:
|
||||
_SlideSpeed = 100;
|
||||
_AddSpeed = 100;
|
||||
_SpawnSpeed = 25;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
_SlideSpeed = 200;
|
||||
_AddSpeed = 500;
|
||||
_SpawnSpeed = 25;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateCellSizes()
|
||||
{
|
||||
double borderSpace = _boardSize * 4; // cells get default margin of 4
|
||||
|
@ -412,8 +456,8 @@ namespace TwoZeroFourEight
|
|||
var scaleAnimation = compositor.CreateSpringVector3Animation();
|
||||
scaleAnimation.InitialValue = new System.Numerics.Vector3(0.5f, 0.5f, 0f);
|
||||
scaleAnimation.FinalValue = new System.Numerics.Vector3(1.0f, 1.0f, 0f);
|
||||
|
||||
scaleAnimation.DampingRatio = 0.09f;
|
||||
|
||||
scaleAnimation.DampingRatio = 0.6f;
|
||||
scaleAnimation.Period = TimeSpan.FromMilliseconds(_SpawnSpeed);
|
||||
|
||||
newCellVisual.StartAnimation(nameof(newCellVisual.Scale), scaleAnimation);
|
||||
|
@ -457,8 +501,8 @@ namespace TwoZeroFourEight
|
|||
var slideToCellVisual = ElementCompositionPreview.GetElementVisual(Buttons[cur]);
|
||||
var compositor = slideToCellVisual.Compositor;
|
||||
var slideFromCellVisual = ElementCompositionPreview.GetElementVisual(Buttons[j]);
|
||||
|
||||
var easing = compositor.CreateLinearEasingFunction();
|
||||
|
||||
CubicBezierEasingFunction easing = compositor.CreateCubicBezierEasingFunction(new Vector2(.86f, 0.0f), new Vector2(.07f, 1.00f));
|
||||
|
||||
///slideAnimation
|
||||
///
|
||||
|
@ -523,15 +567,15 @@ namespace TwoZeroFourEight
|
|||
|
||||
var answerTextVisual = ElementCompositionPreview.GetElementVisual(answerText as FrameworkElement);
|
||||
var cellTextVisual = ElementCompositionPreview.GetElementVisual(cellText as FrameworkElement);
|
||||
|
||||
var easing = compositor.CreateLinearEasingFunction();
|
||||
|
||||
CubicBezierEasingFunction easing = compositor.CreateCubicBezierEasingFunction(new Vector2(.86f, 0.0f), new Vector2(.07f, 1.00f));
|
||||
|
||||
///Scale the ToCell to breifly be twice the size and then back down to regular size
|
||||
///
|
||||
slideToCellVisual.CenterPoint = new System.Numerics.Vector3(slideToCellVisual.Size.X / 2, slideToCellVisual.Size.Y / 2, 0f);
|
||||
var scaleUpAnimation = compositor.CreateVector3KeyFrameAnimation();
|
||||
var scaleUpAnimation = compositor.CreateVector3KeyFrameAnimation();
|
||||
scaleUpAnimation.InsertKeyFrame(0f, new System.Numerics.Vector3(1.0f, 1.0f, 0f), easing);
|
||||
scaleUpAnimation.InsertKeyFrame(0.5f, new System.Numerics.Vector3(1.5f, 1.5f, 0f), easing);
|
||||
scaleUpAnimation.InsertKeyFrame(0.5f, new System.Numerics.Vector3(1.2f, 1.2f, 0f), easing);
|
||||
scaleUpAnimation.InsertKeyFrame(1f, new System.Numerics.Vector3(1.0f, 1.0f, 0f), easing);
|
||||
scaleUpAnimation.Duration = TimeSpan.FromMilliseconds(_AddSpeed);
|
||||
|
||||
|
@ -567,17 +611,23 @@ namespace TwoZeroFourEight
|
|||
_slideBatchAnimation.Suspend();
|
||||
_addAdjacentBatchAnimation.Suspend();
|
||||
slideToCellVisual.StartAnimation(nameof(slideToCellVisual.Scale), scaleUpAnimation);
|
||||
answerTextVisual.StartAnimation(nameof(answerTextVisual.Opacity), showAnswerAnimation);
|
||||
answerTextVisual.StartAnimation(nameof(answerTextVisual.Scale), scaleAnswerAnimation);
|
||||
cellTextVisual.StartAnimation(nameof(cellTextVisual.Opacity), showCellTextAnimation);
|
||||
if (_boardSpeed == BoardSpeed.Slow)
|
||||
{
|
||||
answerTextVisual.StartAnimation(nameof(answerTextVisual.Opacity), showAnswerAnimation);
|
||||
answerTextVisual.StartAnimation(nameof(answerTextVisual.Scale), scaleAnswerAnimation);
|
||||
cellTextVisual.StartAnimation(nameof(cellTextVisual.Opacity), showCellTextAnimation);
|
||||
}
|
||||
_addAdjacentBatchAnimation.Resume();
|
||||
_slideBatchAnimation.Resume();
|
||||
|
||||
Canvas.SetZIndex(Buttons[cur], GetHighestButtonIndex() + 1);
|
||||
|
||||
Cells[cur].AnswerString = Cells[cur].IntVal.ToString() + " + " + Cells[cur + delta].IntVal.ToString();
|
||||
if (_boardSpeed == BoardSpeed.Slow)
|
||||
{
|
||||
Cells[cur].AnswerString = Cells[cur].IntVal.ToString() + " + " + Cells[cur + delta].IntVal.ToString();
|
||||
}
|
||||
|
||||
Cells[cur].IntVal += Cells[cur + delta].IntVal;
|
||||
Cells[cur].IntVal += Cells[cur + delta].IntVal;
|
||||
|
||||
doubledVal = Cells[cur].IntVal;
|
||||
if (totalBonus > -1)
|
||||
|
@ -793,7 +843,7 @@ namespace TwoZeroFourEight
|
|||
public Board Board;
|
||||
|
||||
private SolidColorBrush _solidTileForegroundBrush;
|
||||
private SolidColorBrush _solidTileBrush;
|
||||
private SolidColorBrush _solidTileBrush;
|
||||
|
||||
public MainPage()
|
||||
{
|
||||
|
@ -814,8 +864,8 @@ namespace TwoZeroFourEight
|
|||
GazeSettingsHelper.RetrieveSharedSettings(sharedSettings).Completed = new AsyncActionCompletedHandler((asyncInfo, asyncStatus) =>
|
||||
{
|
||||
GazeInput.LoadSettings(sharedSettings);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void OnNewGame(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
@ -848,17 +898,40 @@ namespace TwoZeroFourEight
|
|||
switch (e.Key)
|
||||
{
|
||||
case VirtualKey.Up:
|
||||
Board.SlideUp();
|
||||
Board.SlideUp();
|
||||
break;
|
||||
case VirtualKey.Down:
|
||||
Board.SlideDown();
|
||||
Board.SlideDown();
|
||||
break;
|
||||
case VirtualKey.Left:
|
||||
Board.SlideLeft();
|
||||
Board.SlideLeft();
|
||||
break;
|
||||
case VirtualKey.Right:
|
||||
Board.SlideRight();
|
||||
Board.SlideRight();
|
||||
break;
|
||||
|
||||
case VirtualKey.F1:
|
||||
Board.SetBoardSpeed(Board.BoardSpeed.Slow);
|
||||
break;
|
||||
|
||||
case VirtualKey.F2:
|
||||
Board.SetBoardSpeed(Board.BoardSpeed.Fast);
|
||||
break;
|
||||
|
||||
case VirtualKey.F3:
|
||||
int newSpeed = Board.SlideDwellSpeed.Milliseconds - 100;
|
||||
if (newSpeed < 100) newSpeed = 100;
|
||||
Board.SlideDwellSpeed = TimeSpan.FromMilliseconds(newSpeed);
|
||||
break;
|
||||
|
||||
case VirtualKey.F4:
|
||||
Board.SlideDwellSpeed = TimeSpan.FromMilliseconds(800);
|
||||
break;
|
||||
|
||||
case VirtualKey.F5:
|
||||
Board.SlideDwellSpeed = TimeSpan.FromMilliseconds(Board.SlideDwellSpeed.Milliseconds + 100);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?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="4e21ae5c-147f-4626-b664-0dddb7bcfbab" Publisher="CN=harishsk" Version="1.0.19.0" />
|
||||
<Identity Name="4e21ae5c-147f-4626-b664-0dddb7bcfbab" Publisher="CN=harishsk" Version="1.0.21.0" />
|
||||
<mp:PhoneIdentity PhoneProductId="4e21ae5c-147f-4626-b664-0dddb7bcfbab" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||
<Properties>
|
||||
<DisplayName>2048</DisplayName>
|
||||
|
|
Загрузка…
Ссылка в новой задаче