Flesh out launcher some more
The client now uses the username you provide during login in the launcher. Of note is that the actual login flow is not implemented - there is no authentication.
This commit is contained in:
parent
71ec7a7399
commit
5086565c41
@ -37,7 +37,7 @@ namespace TrueCraft.Client.Handlers
|
|||||||
Process.GetCurrentProcess().Kill();
|
Process.GetCurrentProcess().Kill();
|
||||||
}
|
}
|
||||||
// TODO: Authentication
|
// TODO: Authentication
|
||||||
client.QueuePacket(new LoginRequestPacket(PacketReader.Version, "TestUser"));
|
client.QueuePacket(new LoginRequestPacket(PacketReader.Version, client.User.Username));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void HandleLoginResponse(IPacket _packet, MultiplayerClient client)
|
public static void HandleLoginResponse(IPacket _packet, MultiplayerClient client)
|
||||||
|
@ -12,6 +12,7 @@ using TrueCraft.Core.Logic;
|
|||||||
using TrueCraft.API.Entities;
|
using TrueCraft.API.Entities;
|
||||||
using TrueCraft.API;
|
using TrueCraft.API;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using TrueCraft.Core;
|
||||||
|
|
||||||
namespace TrueCraft.Client
|
namespace TrueCraft.Client
|
||||||
{
|
{
|
||||||
@ -25,6 +26,7 @@ namespace TrueCraft.Client
|
|||||||
public event EventHandler<ChunkEventArgs> ChunkUnloaded;
|
public event EventHandler<ChunkEventArgs> ChunkUnloaded;
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
|
public TrueCraftUser User { get; set; }
|
||||||
public ReadOnlyWorld World { get; private set; }
|
public ReadOnlyWorld World { get; private set; }
|
||||||
public PhysicsEngine Physics { get; set; }
|
public PhysicsEngine Physics { get; set; }
|
||||||
public bool LoggedIn { get; internal set; }
|
public bool LoggedIn { get; internal set; }
|
||||||
@ -36,8 +38,9 @@ namespace TrueCraft.Client
|
|||||||
private Thread NetworkWorker { get; set; }
|
private Thread NetworkWorker { get; set; }
|
||||||
private readonly PacketHandler[] PacketHandlers;
|
private readonly PacketHandler[] PacketHandlers;
|
||||||
|
|
||||||
public MultiplayerClient()
|
public MultiplayerClient(TrueCraftUser user)
|
||||||
{
|
{
|
||||||
|
User = user;
|
||||||
Client = new TcpClient();
|
Client = new TcpClient();
|
||||||
PacketQueue = new BlockingCollection<IPacket>(new ConcurrentQueue<IPacket>());
|
PacketQueue = new BlockingCollection<IPacket>(new ConcurrentQueue<IPacket>());
|
||||||
PacketReader = new PacketReader();
|
PacketReader = new PacketReader();
|
||||||
@ -81,7 +84,7 @@ namespace TrueCraft.Client
|
|||||||
Stream = new MinecraftStream(new BufferedStream(Client.GetStream()));
|
Stream = new MinecraftStream(new BufferedStream(Client.GetStream()));
|
||||||
NetworkWorker.Start();
|
NetworkWorker.Start();
|
||||||
Physics.AddEntity(this);
|
Physics.AddEntity(this);
|
||||||
QueuePacket(new HandshakePacket("TestUser")); // TODO: Get username from somewhere else
|
QueuePacket(new HandshakePacket(User.Username));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DoNetwork()
|
private void DoNetwork()
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using TrueCraft.Core;
|
||||||
|
|
||||||
namespace TrueCraft.Client
|
namespace TrueCraft.Client
|
||||||
{
|
{
|
||||||
@ -10,7 +11,8 @@ namespace TrueCraft.Client
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
var client = new MultiplayerClient();
|
var user = new TrueCraftUser { Username = args[1] };
|
||||||
|
var client = new MultiplayerClient(user);
|
||||||
var game = new TrueCraftGame(client, ParseEndPoint(args[0]));
|
var game = new TrueCraftGame(client, ParseEndPoint(args[0]));
|
||||||
game.Run();
|
game.Run();
|
||||||
client.Disconnect();
|
client.Disconnect();
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<ConsolePause>false</ConsolePause>
|
<ConsolePause>false</ConsolePause>
|
||||||
<Commandlineparameters>play.truecraft.io</Commandlineparameters>
|
<Commandlineparameters>play.truecraft.io SirCmpwn</Commandlineparameters>
|
||||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||||
<StartAction>Project</StartAction>
|
<StartAction>Project</StartAction>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>False</Optimize>
|
||||||
<DefineConstants>$(DefineConstants);WINDOWS</DefineConstants>
|
<DefineConstants>$(DefineConstants);WINDOWS</DefineConstants>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -311,6 +311,7 @@
|
|||||||
<Compile Include="Logic\Blocks\UprightSignBlock.cs" />
|
<Compile Include="Logic\Blocks\UprightSignBlock.cs" />
|
||||||
<Compile Include="TerrainGen\Decorators\LiquidDecorator.cs" />
|
<Compile Include="TerrainGen\Decorators\LiquidDecorator.cs" />
|
||||||
<Compile Include="Logic\BlockRepository.cs" />
|
<Compile Include="Logic\BlockRepository.cs" />
|
||||||
|
<Compile Include="TrueCraftUser.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
9
TrueCraft.Core/TrueCraftUser.cs
Normal file
9
TrueCraft.Core/TrueCraftUser.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace TrueCraft.Core
|
||||||
|
{
|
||||||
|
public class TrueCraftUser
|
||||||
|
{
|
||||||
|
public string Username { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -11,31 +11,43 @@ namespace TrueCraft.Launcher
|
|||||||
public ScrollView WebScrollView { get; set; }
|
public ScrollView WebScrollView { get; set; }
|
||||||
public WebView WebView { get; set; }
|
public WebView WebView { get; set; }
|
||||||
public VBox LoginContainer { get; set; }
|
public VBox LoginContainer { get; set; }
|
||||||
|
public TextEntry UsernameText { get; set; }
|
||||||
|
public PasswordEntry PasswordText { get; set; }
|
||||||
public TextEntry ServerIPText { get; set; }
|
public TextEntry ServerIPText { get; set; }
|
||||||
public Button LogInButton { get; set; }
|
public Button LogInButton { get; set; }
|
||||||
|
public Button RegisterButton { get; set; }
|
||||||
public ImageView TrueCraftLogoImage { get; set; }
|
public ImageView TrueCraftLogoImage { get; set; }
|
||||||
|
|
||||||
public LauncherWindow()
|
public LauncherWindow()
|
||||||
{
|
{
|
||||||
this.Title = "TrueCraft Launcher";
|
this.Title = "TrueCraft Launcher";
|
||||||
this.Width = 1024;
|
this.Width = 1200;
|
||||||
this.Height = 576;
|
this.Height = 576;
|
||||||
|
|
||||||
MainContainer = new HBox();
|
MainContainer = new HBox();
|
||||||
WebScrollView = new ScrollView();
|
WebScrollView = new ScrollView();
|
||||||
WebView = new WebView("http://truecraft.io");
|
WebView = new WebView("http://truecraft.io/updates");
|
||||||
LoginContainer = new VBox();
|
LoginContainer = new VBox();
|
||||||
|
UsernameText = new TextEntry();
|
||||||
|
PasswordText = new PasswordEntry();
|
||||||
ServerIPText = new TextEntry();
|
ServerIPText = new TextEntry();
|
||||||
LogInButton = new Button("Log In");
|
LogInButton = new Button("Log In");
|
||||||
|
RegisterButton = new Button("Register");
|
||||||
TrueCraftLogoImage = new ImageView(Image.FromFile("Content/truecraft-logo.png"));
|
TrueCraftLogoImage = new ImageView(Image.FromFile("Content/truecraft-logo.png"));
|
||||||
|
|
||||||
LoginContainer.MinWidth = 250;
|
LoginContainer.MinWidth = 250;
|
||||||
ServerIPText.PlaceholderText = "Server address";
|
ServerIPText.PlaceholderText = "Server address";
|
||||||
|
UsernameText.PlaceholderText = "Username";
|
||||||
|
PasswordText.PlaceholderText = "Password";
|
||||||
|
RegisterButton.Clicked += (sender, e) => WebView.Url = "http://truecraft.io/register";
|
||||||
LogInButton.Clicked += HandleLogInClicked;
|
LogInButton.Clicked += HandleLogInClicked;
|
||||||
|
|
||||||
LoginContainer.PackStart(TrueCraftLogoImage);
|
LoginContainer.PackStart(TrueCraftLogoImage);
|
||||||
|
LoginContainer.PackEnd(RegisterButton);
|
||||||
LoginContainer.PackEnd(LogInButton);
|
LoginContainer.PackEnd(LogInButton);
|
||||||
LoginContainer.PackEnd(ServerIPText);
|
LoginContainer.PackEnd(ServerIPText);
|
||||||
|
LoginContainer.PackEnd(PasswordText);
|
||||||
|
LoginContainer.PackEnd(UsernameText);
|
||||||
WebScrollView.Content = WebView;
|
WebScrollView.Content = WebView;
|
||||||
MainContainer.PackStart(WebScrollView, true);
|
MainContainer.PackStart(WebScrollView, true);
|
||||||
MainContainer.PackEnd(LoginContainer);
|
MainContainer.PackEnd(LoginContainer);
|
||||||
@ -45,11 +57,17 @@ namespace TrueCraft.Launcher
|
|||||||
|
|
||||||
void HandleLogInClicked(object sender, EventArgs e)
|
void HandleLogInClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(ServerIPText.Text) ||
|
||||||
|
string.IsNullOrEmpty(UsernameText.Text))
|
||||||
|
{
|
||||||
|
MessageDialog.ShowError("Username and server IP are required (for now)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
var process = new Process();
|
var process = new Process();
|
||||||
if (RuntimeInfo.IsMono)
|
if (RuntimeInfo.IsMono)
|
||||||
process.StartInfo = new ProcessStartInfo("mono", "TrueCraft.Client.exe " + ServerIPText.Text);
|
process.StartInfo = new ProcessStartInfo("mono", "TrueCraft.Client.exe " + ServerIPText.Text + " " + UsernameText.Text);
|
||||||
else
|
else
|
||||||
process.StartInfo = new ProcessStartInfo("TrueCraft.Client.exe", ServerIPText.Text);
|
process.StartInfo = new ProcessStartInfo("TrueCraft.Client.exe", ServerIPText.Text + " " + UsernameText.Text);
|
||||||
process.EnableRaisingEvents = true;
|
process.EnableRaisingEvents = true;
|
||||||
process.Exited += (s, a) => Application.Invoke(ClientExited);
|
process.Exited += (s, a) => Application.Invoke(ClientExited);
|
||||||
process.Start();
|
process.Start();
|
||||||
|
Reference in New Issue
Block a user