1
0
mirror of https://e.coding.net/circlecloud/CTZLauncher.git synced 2024-11-14 00:48:48 +00:00

修改为双界面 优化登录流程...

This commit is contained in:
j502647092 2015-08-03 20:44:34 +08:00
parent 648a227970
commit cb5b7ffd22
8 changed files with 301 additions and 304 deletions

View File

@ -17,7 +17,7 @@
public class YggdrasilLogin : IAuthenticator
{
/// <summary>
/// 新建正版验证器
/// 新建正版验证器
/// </summary>
/// <param name="email">电子邮件地址</param>
/// <param name="password">密码</param>
@ -32,7 +32,7 @@
}
/// <summary>
/// 新建正版验证器(随机的新ClientToken)
/// 新建正版验证器(随机的新ClientToken)
/// </summary>
/// <param name="email">电子邮件地址</param>
/// <param name="password">密码</param>
@ -42,32 +42,37 @@
}
/// <summary>
/// 电子邮件地址
/// 电子邮件地址
/// </summary>
public string Email { get; private set; }
/// <summary>
/// 密码
/// 密码
/// </summary>
public string Password { get; private set; }
/// <summary>
/// 是否启用Twitch
/// 是否启用Twitch
/// </summary>
public bool TwitchEnabled { get; private set; }
/// <summary>
/// 客户端Token
/// </summary>
public Guid ClientToken { get; private set; }
/// <summary>
/// 返回Yggdrasil验证器类型
/// 返回Yggdrasil验证器类型
/// </summary>
public string Type
{
get { return "KMCCC.Yggdrasil"; }
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public AuthenticationInfo Do()
{
var client = new YggdrasilClient(ClientToken);

View File

@ -1,49 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Threading;
using CityCraft;
namespace CTZLauncher.CTZAuth
{
class CTZAuth : ICTZAuth
{
HttpHelper http = new HttpHelper();
string address;
int port;
CTZAuth(string address,int port = 25565)
{
this.address = address;
this.port = port;
}
public bool isRegister(string username)
{
return getResult(address + ":" + port + "/isregister?username=" + username);
}
public bool Register(string username, string password)
{
return getResult(address + ":" + port + "/register?username=" + username + "&password=" + password);
}
public bool isLogin(string username)
{
return getResult(address + ":" + port + "/islogin?username=" + username);
}
public bool Login(string username, string password)
{
return getResult(address + ":" + port + "/login?username=" + username + "&password=" + password);
}
public bool getResult(string url)
{
string result = http.Send(HttpMethod.GET, url);
if (result == "true")
return true;
return false;
}
}
}

View File

@ -1,19 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CTZLauncher.CTZAuth
{
interface ICTZAuth
{
bool isRegister(string username);
bool Register(string username, string password);
bool isLogin(string username);
bool Login(string username, string password);
}
}

View File

@ -74,8 +74,7 @@
<Compile Include="Authentication\OfflineAuthenticator.cs" />
<Compile Include="Authentication\WarpedAuhenticator.cs" />
<Compile Include="Authentication\Yggdrasil.cs" />
<Compile Include="CTZAuth\CTZAuth.cs" />
<Compile Include="CTZAuth\ICTZAuth.cs" />
<Compile Include="Authentication\CTZAuthenticator.cs" />
<Compile Include="HttpHelper.cs" />
<Compile Include="Launcher\LaunchArguments.cs" />
<Compile Include="Launcher\LauncherCore.cs" />

View File

@ -63,6 +63,10 @@ namespace CityCraft
/// <returns>请求返回的Stream</returns>
public string Send(HttpMethod method, string url, bool Async = false)
{
if (string.IsNullOrEmpty(url))
{
return string.Empty;
}
readyState = HttpReadyState.;
ParseURL(url);
args.Method = method;
@ -142,6 +146,10 @@ namespace CityCraft
address = nohttpurl.Substring(0, iIndex);
args.Url = nohttpurl.Substring(iIndex);
}
else
{
args.Url = "/";
}
iIndex = nohttpurl.IndexOf(@":");
if (iIndex > 0)
{
@ -204,6 +212,7 @@ namespace CityCraft
{
string responseHeader = responseStr.Substring(0, splitindex);
string responseBody = responseStr.Substring(splitindex + 4);
//Console.WriteLine(responseHeader);
if (responseHeader.StartsWith("HTTP/1.1 400"))
{
Status = 400;
@ -377,6 +386,7 @@ namespace CityCraft
}
string header = bulider.ToString();
//Console.WriteLine(header);
return Encoding.Default.GetBytes(header);
}
#endregion

View File

@ -32,7 +32,7 @@
args.MainClass = options.Version.MainClass;
args.MaxMemory = options.MaxMemory;
args.MinMemory = options.MinMemory;
args.NativePath = GameRootPath + options.Version.Id + @"\\" + options.Version.Id + @"-natives";
args.NativePath = GameRootPath + @"\versions\" + options.Version.Id + @"\" + options.Version.Id + @"-natives";
foreach (var native in options.Version.Natives)
{
var exp = ZipTools.UnzipFile(this.GetNativePath(native), args.NativePath, native.Options);
@ -58,7 +58,7 @@
args.Tokens.Add("auth_session", authentication.AccessToken.GoString());
args.Tokens.Add("auth_player_name", authentication.DisplayName);
args.Tokens.Add("version_name", options.Version.Id);
args.Tokens.Add("game_directory", ".");
args.Tokens.Add("game_directory", GameRootPath + @"\versions\" + options.Version.Id + @"\");
args.Tokens.Add("game_assets", "assets");
args.Tokens.Add("assets_root", "assets");
args.Tokens.Add("assets_index_name", options.Version.Assets);

View File

@ -36,14 +36,6 @@
</ControlTemplate>
</Window.Resources>
<Grid Name="outline" Background="#FF3299CC" Height="600" Width="800" VerticalAlignment="Top" MouseLeftButtonDown="outline_MouseLeftButtonDown">
<Grid Margin="20,0" Background="#FF3299CC" Height="60" VerticalAlignment="Top" >
<Label x:Name="barl1" Content="论坛" HorizontalAlignment="Left" Margin="245,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl2" Content="资源下载" HorizontalAlignment="Left" Margin="350,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl3" Content="新手指南" HorizontalAlignment="Left" Margin="455,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl4" Content="赞助我们" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Image HorizontalAlignment="Left" Height="50" Margin="15,5,0,0" VerticalAlignment="Top" Width="50" Source="ico.ico" RenderTransformOrigin="0.56,0.24"/>
<Label Content="魔方" HorizontalAlignment="Left" Height="50" Margin="90,5,0,0" VerticalAlignment="Top" Width="74" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="STXingkai" Foreground="White" FontSize="35" />
</Grid>
<Grid Margin="20,60,20,20" Background="White">
<Grid Height="269" VerticalAlignment="Top">
<Grid Margin="20,20,0,0" HorizontalAlignment="Left" Width="400" >
@ -53,14 +45,14 @@
<Grid>
<Grid Margin="10,10,10,0" Height="174" VerticalAlignment="Top">
<Label Content="————— XX XX 帐 号 —————" VerticalAlignment="Top" Margin="10,0" HorizontalContentAlignment="Center" FontSize="15"/>
<TextBox Name="username" Template="{StaticResource CornerTextBox}" Height="34" TextWrapping="Wrap" Text="" VerticalAlignment="Top" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,30,30,0" />
<TextBox x:Name="username" Template="{StaticResource CornerTextBox}" Height="34" TextWrapping="Wrap" Text="" VerticalAlignment="Top" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,30,30,0" />
<Label Content="————— XX XX 密 码 —————" VerticalAlignment="Top" Margin="10,69,10,0" HorizontalContentAlignment="Center" FontSize="15"/>
<TextBox Name="password" Template="{StaticResource CornerTextBox}" TextWrapping="Wrap" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,104,30,0" Height="34" VerticalAlignment="Top" />
<TextBox x:Name="password" Template="{StaticResource CornerTextBox}" TextWrapping="Wrap" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,104,30,0" Height="34" VerticalAlignment="Top" />
<Button Margin="217,106,33,0" Template="{StaticResource CornerButton}" Height="30" Content="?" VerticalAlignment="Top" />
</Grid>
<Grid Margin="10,0,10,10" Height="50" VerticalAlignment="Bottom">
<Button Name="Login" Margin="30,10,160,10" Template="{StaticResource CornerButton}" BorderBrush="#FF3299CC" Content="登录" Click="Login_Click"/>
<Button Name="register" Margin="160,10,30,10" Template="{StaticResource CornerButton}" BorderBrush="#FF3299CC" Content="注册" Click="register_Click" />
<Button x:Name="Login" Margin="30,10,160,10" Template="{StaticResource CornerButton}" BorderBrush="#FF3299CC" Content="登录" Click="Login_Click"/>
<Button x:Name="register" Margin="160,10,30,10" Template="{StaticResource CornerButton}" BorderBrush="#FF3299CC" Content="注册" Click="register_Click" />
</Grid>
</Grid>
</Grid>
@ -68,41 +60,91 @@
<Grid Height="246" VerticalAlignment="Bottom">
<Grid Margin="20,20,0,20" HorizontalAlignment="Left" Width="391" >
<TabControl Background="White" BorderThickness="0">
<TabItem Header="动态" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="20" >
<ListBox BorderThickness="0" FontSize="20">
<ListBoxItem Content="动态" Height="30" />
<ListBoxItem Content="动态" Height="30" />
<ListBoxItem Content="动态" Height="30" />
<ListBoxItem Content="动态" Height="30" />
<ListBoxItem Content="动态" Height="30" />
<ListBoxItem Content="动态" Height="30" />
<TabItem Header="动态" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="15" >
<ListBox BorderThickness="0" FontSize="15">
<ListBoxItem Content="动态" />
<ListBoxItem Content="动态" />
<ListBoxItem Content="动态" />
<ListBoxItem Content="动态" />
<ListBoxItem Content="动态" />
<ListBoxItem Content="动态" />
</ListBox>
</TabItem>
<TabItem Header="新闻" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="20" >
<ListBox BorderThickness="0" FontSize="20">
<ListBoxItem Content="新闻" Height="30" />
<ListBoxItem Content="新闻" Height="30" />
<ListBoxItem Content="新闻" Height="30" />
<ListBoxItem Content="新闻" Height="30" />
<ListBoxItem Content="新闻" Height="30" />
<TabItem Header="新闻" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="15" >
<ListBox BorderThickness="0" FontSize="15">
<ListBoxItem Content="新闻" />
<ListBoxItem Content="新闻" />
<ListBoxItem Content="新闻" />
<ListBoxItem Content="新闻" />
<ListBoxItem Content="新闻" />
</ListBox>
</TabItem>
<TabItem Header="公告" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="20" />
<TabItem Header="活动" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="20" />
<TabItem Header="公告" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="15" />
<TabItem Header="活动" Background="White" BorderThickness="0" Margin="0" Height="30" FontSize="15" />
</TabControl>
</Grid>
<Grid Margin="0,20,20,20" HorizontalAlignment="Right" Width="300" Grid.ShowGridLines="True">
<Label Margin="10,15,0,0" Content="最大内存" VerticalAlignment="Top" Height="30" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<TextBox Name="maxmem" Template="{StaticResource CornerTextBox}" Text="" Height="30" Width="174" TextWrapping="Wrap" Margin="0,15,10,161" FontSize="20" TextChanged="maxmem_TextChanged" HorizontalAlignment="Right" />
<ComboBox Name="javacombo" Height="30" Width="174" FontSize="15" Margin="0,50,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Grid Margin="0,20,20,20" HorizontalAlignment="Right" Width="300" ShowGridLines="True">
<!--<Label Margin="10,15,0,0" Content="最大内存" VerticalAlignment="Top" Height="30" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<TextBox x:Name="maxmem" Template="{StaticResource CornerTextBox}" Text="" Height="30" Width="174" TextWrapping="Wrap" Margin="0,15,10,161" FontSize="20" TextChanged="maxmem_TextChanged" HorizontalAlignment="Right" />
<ComboBox x:Name="javacombo" Height="30" Width="174" FontSize="15" Margin="0,50,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Label Margin="10,50,0,126" Content="JAVA版本" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<ComboBox Name="gamecombo" Height="30" Width="174" FontSize="15" Margin="0,85,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<ComboBox x:Name="gamecombo" Height="30" Width="174" FontSize="15" Margin="0,85,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Label Margin="10,85,0,91" Content="游戏版本" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<Button Name="StartGame" BorderBrush="#FF3299CC" Content="启动游戏" Template="{StaticResource CornerButton}" HorizontalAlignment="Right" Margin="0,0,10,10" Width="100" Height="46" VerticalAlignment="Bottom" FontSize="16" Click="StartGame_Click"/>
<Button x:Name="SelServer" BorderBrush="#FF3299CC" Content="选择服务器" Template="{StaticResource CornerButton}" Margin="34,0,0,16" Height="40" Width="100" FontSize="13" Click="StartGame_Click" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<Button x:Name="StartGame" BorderBrush="#FF3299CC" Content="启动游戏" Template="{StaticResource CornerButton}" HorizontalAlignment="Right" Margin="0,0,10,10" Width="100" Height="46" VerticalAlignment="Bottom" FontSize="16" Click="StartGame_Click" IsEnabled="False"/>
<Button x:Name="SelServer" BorderBrush="#FF3299CC" Content="选择服务器" Template="{StaticResource CornerButton}" Margin="20,0,0,10" Height="40" Width="100" FontSize="13" Click="StartGame_Click" VerticalAlignment="Bottom" HorizontalAlignment="Left" IsEnabled="False"/>-->
</Grid>
</Grid>
</Grid>
<Grid Margin="20,0" Background="#FF3299CC" Height="60" VerticalAlignment="Top" >
<Label x:Name="barl1" Content="论坛" HorizontalAlignment="Left" Margin="245,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl2" Content="资源下载" HorizontalAlignment="Left" Margin="350,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl3" Content="新手指南" HorizontalAlignment="Left" Margin="455,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Label x:Name="barl4" Content="赞助我们" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="100" Height="30" FontSize="15" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" MouseDown="barclick_MouseDown"/>
<Image HorizontalAlignment="Left" Height="50" Margin="15,5,0,0" VerticalAlignment="Top" Width="50" Source="ico.ico" RenderTransformOrigin="0.56,0.24"/>
<Label Content="魔方" HorizontalAlignment="Left" Height="50" Margin="90,5,0,0" VerticalAlignment="Top" Width="74" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="STXingkai" Foreground="White" FontSize="35" />
</Grid>
<Grid Margin="20,60,20,20" Background="White" Name="SelServer" Visibility="Hidden">
<!--Visibility="Hidden"-->
<Grid HorizontalAlignment="Left" Width="400" Margin="20,20,0,20">
<Grid Height="80" VerticalAlignment="Top" Margin="0,0,0,0">
<Label Content="选择大区" Margin="155,20" FontSize="20" VerticalAlignment="Center" VerticalContentAlignment="Center"/>
</Grid>
<Grid Height="100" VerticalAlignment="Top" Margin="0,85,0,0">
</Grid>
<Grid Height="285" VerticalAlignment="Top" Margin="10,185,10,0">
<Grid Height="50" VerticalAlignment="Top" Margin="10,0,10,0">
<Label Content="选择服务器" Margin="125,8" FontSize="20" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<Grid Height="235" VerticalAlignment="Top" Margin="10,50,10,0">
</Grid>
</Grid>
</Grid>
<Grid HorizontalAlignment="Right" Width="300" Margin="0,20,20,20">
<Grid Height="269" VerticalAlignment="Top">
<Grid Height="40" VerticalAlignment="Top" Margin="10,10,10,0">
<Label Content="服务器介绍" Margin="85,2" FontSize="20" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<Grid Height="200" VerticalAlignment="Bottom" Margin="10,0,10,10">
</Grid>
</Grid>
<Grid HorizontalAlignment="Right" Width="300" ShowGridLines="True" Height="206" VerticalAlignment="Bottom">
<Label Margin="10,15,0,0" Content="最大内存" VerticalAlignment="Top" Height="30" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<TextBox x:Name="maxmem" Template="{StaticResource CornerTextBox}" Text="" Height="30" Width="174" TextWrapping="Wrap" Margin="0,15,10,161" FontSize="20" TextChanged="maxmem_TextChanged" HorizontalAlignment="Right" />
<ComboBox x:Name="javacombo" Height="30" Width="174" FontSize="15" Margin="0,50,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Label Margin="10,50,0,126" Content="JAVA版本" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<ComboBox x:Name="gamecombo" Height="30" Width="174" FontSize="15" Margin="0,85,10,0" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Label Margin="10,85,0,91" Content="游戏版本" FontSize="17" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="Black" HorizontalAlignment="Left" Width="100"/>
<Button x:Name="StartGame" BorderBrush="#FF3299CC" Content="启动游戏" Template="{StaticResource CornerButton}" Margin="10,0,10,10" Height="64" VerticalAlignment="Bottom" FontSize="16" Click="StartGame_Click" IsEnabled="False"/>
</Grid>
</Grid>
</Grid>
<Button Template="{StaticResource CornerButton}" Width="30" HorizontalAlignment="Right" Content="r" Background="#FFE05A5A" Height="30" VerticalAlignment="Top" FontFamily="Webdings" Click="close_Click" Margin="0,0,0,0" />
</Grid>
</Window>

View File

@ -1,190 +1,199 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using KMCCC.Authentication;
using KMCCC.Launcher;
using KMCCC.Tools;
using KMCCC.Modules;
using KMCCC.Modules.JVersion;
using CityCraft;
using System.IO;
using System.Windows.Threading;
namespace CTZLauncher
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
LauncherCore launcher = null;
public MainWindow()
{
InitializeComponent();
}
private void Window_Initialized(object sender, EventArgs e)
{
if (Directory.Exists(".minecraft"))
{
launcher = LauncherCore.Create(".minecraft");
launcher.GameLog += launcher_GameLog;
}
else
{
Directory.CreateDirectory(".minecraft");
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
foreach (var item in SystemTools.FindJava())
{
javacombo.Items.Add(item);
}
if (!javacombo.Items.IsEmpty)
javacombo.SelectedIndex = 0;
foreach (var item in launcher.GetVersions())
{
gamecombo.Items.Add(item.Id);
}
if (!gamecombo.Items.IsEmpty)
gamecombo.SelectedIndex = 0;
maxmem.Text = "2048";
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
}
private void barclick_MouseDown(object sender, MouseButtonEventArgs e)
{
Label bar = (Label)sender;
MessageBox.Show(bar.Name);
switch (bar.Name.Substring(4))
{
case "l1":
break;
case "l2":
break;
case "l3":
break;
case "l4":
break;
case "r1":
break;
case "r2":
break;
case "r3":
break;
case "r4":
break;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
IAuthenticator auth = new YggdrasilLogin("jtb1@163.com", "jtb325325", false);
AuthenticationInfo result = auth.Do();
MessageBox.Show(result.UUID.ToString());
}
private void Login_Click(object sender, RoutedEventArgs e)
{
HttpHelper http = new HttpHelper();
http.Send(HttpMethod.GET, "http://127.0.0.1:2000/isregistered?username=" + username.Text);
while (http.readyState != HttpReadyState.)
{
DoEvent();
}
String result = http.responseBody;
Console.WriteLine("服务器返回结果" + result);
}
/// <summary>
/// 模仿C#的Application.Doevent函数。可以适当添加try catch 模块
/// </summary>
public void DoEvent()
{
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrame), frame);
Dispatcher.PushFrame(frame);
}
public object ExitFrame(object f)
{
((DispatcherFrame)f).Continue = false;
return null;
}
private void outline_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
this.DragMove();
}
private void StartGame_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine("StartGame");
LaunchOptions option = new LaunchOptions();
option.Mode = LaunchMode.MCLauncher;
option.MaxMemory = int.Parse(maxmem.Text);
option.Authenticator = new OfflineAuthenticator(username.Text); // offline
option.Version = launcher.GetVersion(gamecombo.Text);
launcher.JavaPath = javacombo.Text;
launcher.Launch(option);
}
void launcher_GameLog(LaunchHandle arg1, string arg2)
{
Console.WriteLine(arg2);
}
private void close_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void maxmem_TextChanged(object sender, TextChangedEventArgs e)
{
//屏蔽中文输入和非法字符粘贴输入
TextBox textBox = sender as TextBox;
TextChange[] change = new TextChange[e.Changes.Count];
e.Changes.CopyTo(change, 0);
int offset = change[0].Offset;
if (change[0].AddedLength > 0)
{
double num = 0;
if (!Double.TryParse(textBox.Text, out num))
{
textBox.Text = textBox.Text.Remove(offset, change[0].AddedLength);
textBox.Select(offset, 0);
}
}
}
private void register_Click(object sender, RoutedEventArgs e)
{
if (username.Text.Length == 0 || password.Text.Length == 0)
{
MessageBox.Show("请输入账号密码!");
return;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using KMCCC.Authentication;
using KMCCC.Launcher;
using KMCCC.Tools;
using KMCCC.Modules;
using KMCCC.Modules.JVersion;
using CityCraft;
using System.IO;
using System.Windows.Threading;
namespace CTZLauncher
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
LauncherCore launcher = null;
public MainWindow()
{
InitializeComponent();
}
private void Window_Initialized(object sender, EventArgs e)
{
if (Directory.Exists(".minecraft"))
{
launcher = LauncherCore.Create(".minecraft");
launcher.GameLog += launcher_GameLog;
}
else
{
Directory.CreateDirectory(".minecraft");
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
foreach (var item in SystemTools.FindJava())
{
javacombo.Items.Add(item);
}
if (!javacombo.Items.IsEmpty)
javacombo.SelectedIndex = 0;
foreach (var item in launcher.GetVersions())
{
gamecombo.Items.Add(item.Id);
}
if (!gamecombo.Items.IsEmpty)
gamecombo.SelectedIndex = 0;
maxmem.Text = "2048";
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
}
private void barclick_MouseDown(object sender, MouseButtonEventArgs e)
{
Label bar = (Label)sender;
MessageBox.Show(bar.Name);
switch (bar.Name.Substring(4))
{
case "l1":
break;
case "l2":
break;
case "l3":
break;
case "l4":
break;
case "r1":
break;
case "r2":
break;
case "r3":
break;
case "r4":
break;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
IAuthenticator auth = new YggdrasilLogin("jtb1@163.com", "jtb325325", false);
AuthenticationInfo result = auth.Do();
MessageBox.Show(result.UUID.ToString());
}
private void Login_Click(object sender, RoutedEventArgs e)
{
Login.IsEnabled = false;
CTZAuthenticator auth = new CTZAuthenticator(username.Text, password.Text, "127.0.0.1", 2000);
if (auth.isLogin())
{
MessageBox.Show("当前玩家已登录!");
Login.IsEnabled = true;
return;
}
if (!auth.Login())
{
MessageBox.Show("登录失败 账号不存在 或 密码错误 !");
Login.IsEnabled = true;
return;
}
else
{
SelServer.Visibility = System.Windows.Visibility.Visible;
return;
}
}
/// <summary>
/// 模仿C#的Application.Doevent函数。可以适当添加try catch 模块
/// </summary>
public void DoEvent()
{
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrame), frame);
Dispatcher.PushFrame(frame);
}
public object ExitFrame(object f)
{
((DispatcherFrame)f).Continue = false;
return null;
}
private void outline_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
this.DragMove();
}
private void StartGame_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine("StartGame");
LaunchOptions option = new LaunchOptions();
option.Mode = LaunchMode.MCLauncher;
option.MaxMemory = int.Parse(maxmem.Text);
option.Authenticator = new OfflineAuthenticator(username.Text); // offline
option.Version = launcher.GetVersion(gamecombo.Text);
launcher.JavaPath = javacombo.Text;
launcher.Launch(option);
}
void launcher_GameLog(LaunchHandle arg1, string log)
{
Console.WriteLine(log);
}
private void close_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void maxmem_TextChanged(object sender, TextChangedEventArgs e)
{
//屏蔽中文输入和非法字符粘贴输入
TextBox textBox = sender as TextBox;
TextChange[] change = new TextChange[e.Changes.Count];
e.Changes.CopyTo(change, 0);
int offset = change[0].Offset;
if (change[0].AddedLength > 0)
{
double num = 0;
if (!Double.TryParse(textBox.Text, out num))
{
textBox.Text = textBox.Text.Remove(offset, change[0].AddedLength);
textBox.Select(offset, 0);
}
}
}
private void register_Click(object sender, RoutedEventArgs e)
{
if (username.Text.Length == 0 || password.Text.Length == 0)
{
MessageBox.Show("请输入账号密码!");
return;
}
}
}
}