Add AutoLobby tab
This commit is contained in:
parent
91b5de363b
commit
e94e2ed8e2
|
@ -2,6 +2,7 @@
|
|||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:GTAOnlineCasinoHelper"
|
||||
xmlns:system="clr-namespace:System;assembly=mscorlib"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
|
@ -0,0 +1,39 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace GTAOnlineCasinoHelper.Extensions
|
||||
{
|
||||
public static class ImageExtension
|
||||
{
|
||||
|
||||
[DllImport("gdi32.dll")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
internal static extern bool DeleteObject(IntPtr value);
|
||||
|
||||
public static BitmapSource GetBitmapSource(this Image image)
|
||||
{
|
||||
Bitmap bitmap = new Bitmap(image);
|
||||
IntPtr bmpPt = bitmap.GetHbitmap();
|
||||
BitmapSource bitmapSource =
|
||||
System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
|
||||
bmpPt,
|
||||
IntPtr.Zero,
|
||||
Int32Rect.Empty,
|
||||
BitmapSizeOptions.FromEmptyOptions());
|
||||
|
||||
//freeze bitmapSource and clear memory to avoid memory leaks
|
||||
bitmapSource.Freeze();
|
||||
DeleteObject(bmpPt);
|
||||
|
||||
return bitmapSource;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -37,6 +37,9 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Assets\GTA5.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ControlzEx, Version=4.0.0.0, Culture=neutral, PublicKeyToken=69f1c32f803d307e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ControlzEx.4.0.1\lib\net45\ControlzEx.dll</HintPath>
|
||||
|
@ -60,6 +63,7 @@
|
|||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
|
@ -78,11 +82,12 @@
|
|||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Extensions\ImageExtension.cs" />
|
||||
<Compile Include="Views\Settings\ThemeView.xaml.cs">
|
||||
<DependentUpon>ThemeView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\TestTwo.xaml.cs">
|
||||
<DependentUpon>TestTwo.xaml</DependentUpon>
|
||||
<Compile Include="Views\AutoLobby.xaml.cs">
|
||||
<DependentUpon>AutoLobby.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\LuckyWheel.xaml.cs">
|
||||
<DependentUpon>LuckyWheel.xaml</DependentUpon>
|
||||
|
@ -105,7 +110,7 @@
|
|||
<Page Include="Views\Settings\ThemeView.xaml">
|
||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\TestTwo.xaml">
|
||||
<Page Include="Views\AutoLobby.xaml">
|
||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
|
@ -144,6 +149,12 @@
|
|||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Assets\GTA5.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Assets\GTA5.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Fody.4.2.1\build\Fody.targets" Condition="Exists('..\packages\Fody.4.2.1\build\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
|
|
|
@ -37,6 +37,13 @@
|
|||
<Views:LuckyWheel />
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
<TabItem Header="AutoLobby">
|
||||
<ScrollViewer Margin="2"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<Views:AutoLobby />
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
<!--<TabItem Header="TestTwo">
|
||||
<ScrollViewer Margin="2"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using GTAOnlineCasinoHelper.Windows;
|
||||
using GTAOnlineCasinoHelper.Extensions;
|
||||
using GTAOnlineCasinoHelper.Windows;
|
||||
using MahApps.Metro;
|
||||
using MahApps.Metro.Controls;
|
||||
using MahApps.Metro.Controls.Dialogs;
|
||||
|
@ -33,6 +34,7 @@ namespace GTAOnlineCasinoHelper
|
|||
{
|
||||
Instance = this;
|
||||
InitializeComponent();
|
||||
this.Icon = Properties.Resources.GTA5.GetBitmapSource();
|
||||
LoadTheme();
|
||||
}
|
||||
|
||||
|
@ -51,7 +53,7 @@ namespace GTAOnlineCasinoHelper
|
|||
ThemeManager.ChangeTheme(Application.Current, baseColor, colorScheme);
|
||||
}
|
||||
|
||||
private async void ButtonSettings_Click(object sender, RoutedEventArgs e)
|
||||
private void ButtonSettings_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
new SettingsWindow().Show();
|
||||
//await this.ShowMessageAsync("Not implemented yet", "Settings has not been implemented yet");
|
||||
|
|
|
@ -51,5 +51,5 @@ using System.Windows;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("1.1.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.0")]
|
||||
|
|
|
@ -59,5 +59,15 @@ namespace GTAOnlineCasinoHelper.Properties {
|
|||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap GTA5 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("GTA5", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,4 +117,80 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="GTA5" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
eup/AFpYttV3+saAAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<UserControl x:Class="GTAOnlineCasinoHelper.Views.AutoLobby"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
|
||||
xmlns:GTAOnlineCasinoHelper="clr-namespace:GTAOnlineCasinoHelper">
|
||||
|
||||
<UserControl.Resources>
|
||||
<Thickness x:Key="ControlMargin">5</Thickness>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center">
|
||||
<Button x:Name="Button_AutoLobby"
|
||||
Margin="5"
|
||||
Content="Auto Solo Lobby"
|
||||
Click="Button_AutoLobby_Click"/>
|
||||
<Button x:Name="Button_Suspend"
|
||||
Margin="5"
|
||||
Content="Suspend"
|
||||
Click="Button_Suspend_Click"/>
|
||||
<Button x:Name="Button_Resume"
|
||||
Margin="5"
|
||||
Content="Resume"
|
||||
Click="Button_Resume_Click"/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Center">
|
||||
<TextBlock x:Name="TextBlock_Status"
|
||||
TextAlignment="Center"
|
||||
Margin="5"
|
||||
FontSize="32" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="2"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom">
|
||||
<CheckBox x:Name="CheckBox_OverrideProcessName"
|
||||
Margin="5"
|
||||
Content="Override Process Name"
|
||||
IsChecked="False"
|
||||
Checked="CheckBox_OverrideProcessName_Checked"
|
||||
Unchecked="CheckBox_OverrideProcessName_Unchecked" />
|
||||
<TextBox x:Name="TextBox_ProcessName"
|
||||
Margin="5"
|
||||
Visibility="Collapsed"/>
|
||||
<CheckBox x:Name="CheckBox_OverrideTimeout"
|
||||
Margin="5"
|
||||
Content="Override Timeout"
|
||||
IsChecked="False"
|
||||
Checked="CheckBox_OverrideTimeout_Checked"
|
||||
Unchecked="CheckBox_OverrideTimeout_Unchecked" />
|
||||
<TextBox x:Name="TextBox_TimeoutSeconds"
|
||||
Margin="5"
|
||||
Visibility="Collapsed"/>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
|
||||
</UserControl>
|
||||
<!--<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="GTAOnlineCasinoHelper.Views.LuckyWheel">
|
||||
<ContentView.Content>
|
||||
<StackLayout>
|
||||
<Label Text="Hello Xamarin.Forms!" />
|
||||
</StackLayout>
|
||||
</ContentView.Content>
|
||||
</ContentView>-->
|
|
@ -0,0 +1,249 @@
|
|||
using MahApps.Metro.Controls;
|
||||
using MahApps.Metro.Controls.Dialogs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace GTAOnlineCasinoHelper.Views
|
||||
{
|
||||
|
||||
public partial class AutoLobby : UserControl
|
||||
{
|
||||
|
||||
[Flags]
|
||||
public enum ThreadAccess : int
|
||||
{
|
||||
TERMINATE = (0x0001),
|
||||
SUSPEND_RESUME = (0x0002),
|
||||
GET_CONTEXT = (0x0008),
|
||||
SET_CONTEXT = (0x0010),
|
||||
SET_INFORMATION = (0x0020),
|
||||
QUERY_INFORMATION = (0x0040),
|
||||
SET_THREAD_TOKEN = (0x0080),
|
||||
IMPERSONATE = (0x0100),
|
||||
DIRECT_IMPERSONATION = (0x0200)
|
||||
}
|
||||
|
||||
[DllImport("kernel32.dll")]
|
||||
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
|
||||
[DllImport("kernel32.dll")]
|
||||
static extern uint SuspendThread(IntPtr hThread);
|
||||
[DllImport("kernel32.dll")]
|
||||
static extern int ResumeThread(IntPtr hThread);
|
||||
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
static extern bool CloseHandle(IntPtr handle);
|
||||
|
||||
private const int SECONDS = 8;
|
||||
private const int TIMER_INTERVAL = 50;
|
||||
private const string PROCESS_NAME = "GTA5";
|
||||
|
||||
private int Seconds
|
||||
{
|
||||
get
|
||||
{
|
||||
if (CheckBox_OverrideTimeout.IsChecked.HasValue && CheckBox_OverrideTimeout.IsChecked.Value && int.TryParse(TextBox_TimeoutSeconds.Text, out int seconds))
|
||||
{
|
||||
return seconds;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SECONDS;
|
||||
}
|
||||
}
|
||||
}
|
||||
private string ProcessName
|
||||
{
|
||||
get
|
||||
{
|
||||
return (CheckBox_OverrideProcessName.IsChecked.HasValue && CheckBox_OverrideProcessName.IsChecked.Value) ? TextBox_ProcessName.Text : PROCESS_NAME;
|
||||
}
|
||||
}
|
||||
private bool IsSuspended
|
||||
{
|
||||
get
|
||||
{
|
||||
return suspendedProcesses != null && suspendedProcesses.Length > 0;
|
||||
}
|
||||
}
|
||||
private Process[] suspendedProcesses = new Process[0];
|
||||
private Timer timer;
|
||||
private DateTimeOffset timestamp = DateTimeOffset.MinValue;
|
||||
|
||||
public AutoLobby()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
this.TextBox_ProcessName.Text = PROCESS_NAME;
|
||||
this.TextBox_TimeoutSeconds.Text = SECONDS.ToString();
|
||||
this.timer = new Timer(Timer_Tick, this, Timeout.Infinite, TIMER_INTERVAL);
|
||||
}
|
||||
|
||||
private double GetMilliseconds()
|
||||
{
|
||||
return DateTime.Now.ToUniversalTime().Subtract(
|
||||
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
||||
).TotalMilliseconds;
|
||||
}
|
||||
|
||||
private void Timer_Tick(object state)
|
||||
{
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
if (!IsSuspended)
|
||||
{
|
||||
TextBlock_Status.Text = "";
|
||||
this.timer.Change(Timeout.Infinite, 50);
|
||||
}
|
||||
TimeSpan timeSpan = timestamp - DateTimeOffset.Now;
|
||||
if (timeSpan.TotalMilliseconds < 0)
|
||||
{
|
||||
ResumeGTA();
|
||||
TextBlock_Status.Text = "";
|
||||
return;
|
||||
}
|
||||
TextBlock_Status.Text = $"{timeSpan.TotalSeconds.ToString("F3")}s";
|
||||
});
|
||||
}
|
||||
|
||||
private void CheckBox_OverrideProcessName_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBox_ProcessName.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void CheckBox_OverrideProcessName_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBox_ProcessName.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void CheckBox_OverrideTimeout_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBox_TimeoutSeconds.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void CheckBox_OverrideTimeout_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
TextBox_TimeoutSeconds.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private async void Button_AutoLobby_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (IsSuspended)
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("GTA V is already suspended", $"GTA V ({ProcessName}.exe) is already suspended");
|
||||
return;
|
||||
}
|
||||
if (!SuspendGTA())
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("GTA V is not running", $"GTA V ({ProcessName}.exe) is not running");
|
||||
return;
|
||||
}
|
||||
timestamp = DateTimeOffset.Now + new TimeSpan(0, 0, Seconds);
|
||||
TextBlock_Status.Text = $"{Seconds}.000s";
|
||||
timer.Change(TIMER_INTERVAL, TIMER_INTERVAL);
|
||||
}
|
||||
|
||||
private async void Button_Suspend_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (IsSuspended)
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("GTA V is already suspended", $"GTA V ({ProcessName}.exe) is already suspended");
|
||||
return;
|
||||
}
|
||||
SuspendGTA();
|
||||
TextBlock_Status.Text = "Suspended";
|
||||
}
|
||||
|
||||
private async void Button_Resume_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!IsSuspended)
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("GTA V is not suspended", $"GTA V ({ProcessName}.exe) is not suspended");
|
||||
return;
|
||||
}
|
||||
ResumeGTA();
|
||||
TextBlock_Status.Text = "";
|
||||
}
|
||||
|
||||
private static void SuspendProcess(int pid)
|
||||
{
|
||||
var process = Process.GetProcessById(pid);
|
||||
|
||||
if (process.ProcessName == string.Empty)
|
||||
return;
|
||||
|
||||
foreach (ProcessThread pT in process.Threads)
|
||||
{
|
||||
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
|
||||
|
||||
if (pOpenThread == IntPtr.Zero)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
SuspendThread(pOpenThread);
|
||||
|
||||
CloseHandle(pOpenThread);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ResumeProcess(int pid)
|
||||
{
|
||||
var process = Process.GetProcessById(pid);
|
||||
|
||||
if (process.ProcessName == string.Empty)
|
||||
return;
|
||||
|
||||
foreach (ProcessThread pT in process.Threads)
|
||||
{
|
||||
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
|
||||
|
||||
if (pOpenThread == IntPtr.Zero)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var suspendCount = 0;
|
||||
do
|
||||
{
|
||||
suspendCount = ResumeThread(pOpenThread);
|
||||
} while (suspendCount > 0);
|
||||
|
||||
CloseHandle(pOpenThread);
|
||||
}
|
||||
}
|
||||
|
||||
private bool SuspendGTA()
|
||||
{
|
||||
suspendedProcesses = Process.GetProcessesByName(ProcessName);
|
||||
if (suspendedProcesses.Length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
foreach (Process process in suspendedProcesses)
|
||||
{
|
||||
SuspendProcess(process.Id);
|
||||
}
|
||||
//labelState.Text = "Suspended";
|
||||
return true;
|
||||
}
|
||||
|
||||
private void ResumeGTA()
|
||||
{
|
||||
timer.Change(Timeout.Infinite, TIMER_INTERVAL);
|
||||
foreach (var process in suspendedProcesses)
|
||||
{
|
||||
ResumeProcess(process.Id);
|
||||
}
|
||||
suspendedProcesses = new Process[0];
|
||||
TextBlock_Status.Text = "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
xmlns:GTAOnlineCasinoHelper="clr-namespace:GTAOnlineCasinoHelper">
|
||||
|
||||
<UserControl.Resources>
|
||||
<Thickness x:Key="ControlMargin">0 5 0 0</Thickness>
|
||||
<Thickness x:Key="ControlMargin">5</Thickness>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid>
|
||||
|
@ -20,46 +20,40 @@
|
|||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center">
|
||||
<CheckBox x:Name="CheckBox_UseTextBoxTimeStamp"
|
||||
Content="Use Custom TimeStamp"
|
||||
Margin="5"
|
||||
Content="Use Custom Timestamp"
|
||||
IsChecked="False"
|
||||
Checked="CheckBox_UseTextBoxTimeStamp_Checked"
|
||||
Unchecked="CheckBox_UseTextBoxTimeStamp_Unchecked" />
|
||||
<TextBox x:Name="TextBox_TimeStamp"
|
||||
Margin="5"
|
||||
Visibility="Collapsed"/>
|
||||
<Button Content="Add TimeStamp"
|
||||
<Button Margin="5"
|
||||
Content="Add Timestamp"
|
||||
Click="Button_AddTimeStamp"/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Center">
|
||||
<TextBlock x:Name="TextBlock_TimeStampTextBlock"
|
||||
Margin="5"
|
||||
TextAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Grid.Column="1"
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center">
|
||||
<TextBlock Text="Lucky Wheel Countdown" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="1"
|
||||
Grid.Row="1"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Text="Lucky Wheel Countdown"
|
||||
Margin="5" />
|
||||
<TextBlock x:Name="TextBlock_TimerTextBlock"
|
||||
Margin="5"
|
||||
TextAlignment="Center"
|
||||
Text="Text"
|
||||
FontSize="32"/>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
</Grid>
|
||||
|
||||
</UserControl>
|
||||
|
|
|
@ -78,7 +78,7 @@ namespace GTAOnlineCasinoHelper.Views
|
|||
else
|
||||
{
|
||||
now = DateTimeOffset.Now;
|
||||
DateTimeOffset then = AddHours(now, 24);
|
||||
DateTimeOffset then = AddHours(TimeStamp, 24);
|
||||
if (then > now)
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("Lucky Wheel not ready yet", "You can't spin the wheel yet, to override this add a custom timestamp");
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||
|
||||
<UserControl.Resources>
|
||||
<Thickness x:Key="ControlMargin">0 5 0 0</Thickness>
|
||||
<Thickness x:Key="ControlMargin">5</Thickness>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid>
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<UserControl x:Class="GTAOnlineCasinoHelper.Views.TestTwo"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
|
||||
xmlns:GTAOnlineCasinoHelper="clr-namespace:GTAOnlineCasinoHelper">
|
||||
|
||||
<UserControl.Resources>
|
||||
<Thickness x:Key="ControlMargin">0 5 0 0</Thickness>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center">
|
||||
<Button Content="Test button"
|
||||
Click="Button_Click"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</UserControl>
|
||||
<!--<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="GTAOnlineCasinoHelper.Views.LuckyWheel">
|
||||
<ContentView.Content>
|
||||
<StackLayout>
|
||||
<Label Text="Hello Xamarin.Forms!" />
|
||||
</StackLayout>
|
||||
</ContentView.Content>
|
||||
</ContentView>-->
|
|
@ -1,28 +0,0 @@
|
|||
using MahApps.Metro.Controls;
|
||||
using MahApps.Metro.Controls.Dialogs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace GTAOnlineCasinoHelper.Views
|
||||
{
|
||||
|
||||
public partial class TestTwo : UserControl
|
||||
{
|
||||
|
||||
public TestTwo()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
private async void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
await MainWindow.Instance.ShowMessageAsync("Test", "This is a test");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue