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

@ -57,6 +57,7 @@
public bool TwitchEnabled { get; private set; }
/// <summary>
/// 客户端Token
/// </summary>
public Guid ClientToken { get; private set; }
@ -68,6 +69,10 @@
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,38 +60,88 @@
<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>

View File

@ -103,16 +103,26 @@ namespace CTZLauncher
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.)
Login.IsEnabled = false;
CTZAuthenticator auth = new CTZAuthenticator(username.Text, password.Text, "127.0.0.1", 2000);
if (auth.isLogin())
{
DoEvent();
MessageBox.Show("当前玩家已登录!");
Login.IsEnabled = true;
return;
}
if (!auth.Login())
{
MessageBox.Show("登录失败 账号不存在 或 密码错误 !");
Login.IsEnabled = true;
return;
}
else
{
SelServer.Visibility = System.Windows.Visibility.Visible;
return;
}
String result = http.responseBody;
Console.WriteLine("服务器返回结果" + result);
}
/// <summary>
/// 模仿C#的Application.Doevent函数。可以适当添加try catch 模块
@ -147,14 +157,13 @@ namespace CTZLauncher
launcher.Launch(option);
}
void launcher_GameLog(LaunchHandle arg1, string arg2)
void launcher_GameLog(LaunchHandle arg1, string log)
{
Console.WriteLine(arg2);
Console.WriteLine(log);
}
private void close_Click(object sender, RoutedEventArgs e)
{
this.Close();
}