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();
|
||||
}
|
||||
// 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)
|
||||
|
@ -12,6 +12,7 @@ using TrueCraft.Core.Logic;
|
||||
using TrueCraft.API.Entities;
|
||||
using TrueCraft.API;
|
||||
using System.ComponentModel;
|
||||
using TrueCraft.Core;
|
||||
|
||||
namespace TrueCraft.Client
|
||||
{
|
||||
@ -25,6 +26,7 @@ namespace TrueCraft.Client
|
||||
public event EventHandler<ChunkEventArgs> ChunkUnloaded;
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
public TrueCraftUser User { get; set; }
|
||||
public ReadOnlyWorld World { get; private set; }
|
||||
public PhysicsEngine Physics { get; set; }
|
||||
public bool LoggedIn { get; internal set; }
|
||||
@ -36,8 +38,9 @@ namespace TrueCraft.Client
|
||||
private Thread NetworkWorker { get; set; }
|
||||
private readonly PacketHandler[] PacketHandlers;
|
||||
|
||||
public MultiplayerClient()
|
||||
public MultiplayerClient(TrueCraftUser user)
|
||||
{
|
||||
User = user;
|
||||
Client = new TcpClient();
|
||||
PacketQueue = new BlockingCollection<IPacket>(new ConcurrentQueue<IPacket>());
|
||||
PacketReader = new PacketReader();
|
||||
@ -81,7 +84,7 @@ namespace TrueCraft.Client
|
||||
Stream = new MinecraftStream(new BufferedStream(Client.GetStream()));
|
||||
NetworkWorker.Start();
|
||||
Physics.AddEntity(this);
|
||||
QueuePacket(new HandshakePacket("TestUser")); // TODO: Get username from somewhere else
|
||||
QueuePacket(new HandshakePacket(User.Username));
|
||||
}
|
||||
|
||||
private void DoNetwork()
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System.Net;
|
||||
using System.Linq;
|
||||
using System.Net.Sockets;
|
||||
using TrueCraft.Core;
|
||||
|
||||
namespace TrueCraft.Client
|
||||
{
|
||||
@ -10,7 +11,8 @@ namespace TrueCraft.Client
|
||||
[STAThread]
|
||||
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]));
|
||||
game.Run();
|
||||
client.Disconnect();
|
||||
|
@ -26,10 +26,10 @@
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
<Commandlineparameters>play.truecraft.io</Commandlineparameters>
|
||||
<Commandlineparameters>play.truecraft.io SirCmpwn</Commandlineparameters>
|
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||
<StartAction>Project</StartAction>
|
||||
<Optimize>false</Optimize>
|
||||
<Optimize>False</Optimize>
|
||||
<DefineConstants>$(DefineConstants);WINDOWS</DefineConstants>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
|
@ -311,6 +311,7 @@
|
||||
<Compile Include="Logic\Blocks\UprightSignBlock.cs" />
|
||||
<Compile Include="TerrainGen\Decorators\LiquidDecorator.cs" />
|
||||
<Compile Include="Logic\BlockRepository.cs" />
|
||||
<Compile Include="TrueCraftUser.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<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 WebView WebView { get; set; }
|
||||
public VBox LoginContainer { get; set; }
|
||||
public TextEntry UsernameText { get; set; }
|
||||
public PasswordEntry PasswordText { get; set; }
|
||||
public TextEntry ServerIPText { get; set; }
|
||||
public Button LogInButton { get; set; }
|
||||
public Button RegisterButton { get; set; }
|
||||
public ImageView TrueCraftLogoImage { get; set; }
|
||||
|
||||
public LauncherWindow()
|
||||
{
|
||||
this.Title = "TrueCraft Launcher";
|
||||
this.Width = 1024;
|
||||
this.Width = 1200;
|
||||
this.Height = 576;
|
||||
|
||||
MainContainer = new HBox();
|
||||
WebScrollView = new ScrollView();
|
||||
WebView = new WebView("http://truecraft.io");
|
||||
WebView = new WebView("http://truecraft.io/updates");
|
||||
LoginContainer = new VBox();
|
||||
UsernameText = new TextEntry();
|
||||
PasswordText = new PasswordEntry();
|
||||
ServerIPText = new TextEntry();
|
||||
LogInButton = new Button("Log In");
|
||||
RegisterButton = new Button("Register");
|
||||
TrueCraftLogoImage = new ImageView(Image.FromFile("Content/truecraft-logo.png"));
|
||||
|
||||
LoginContainer.MinWidth = 250;
|
||||
ServerIPText.PlaceholderText = "Server address";
|
||||
UsernameText.PlaceholderText = "Username";
|
||||
PasswordText.PlaceholderText = "Password";
|
||||
RegisterButton.Clicked += (sender, e) => WebView.Url = "http://truecraft.io/register";
|
||||
LogInButton.Clicked += HandleLogInClicked;
|
||||
|
||||
LoginContainer.PackStart(TrueCraftLogoImage);
|
||||
LoginContainer.PackEnd(RegisterButton);
|
||||
LoginContainer.PackEnd(LogInButton);
|
||||
LoginContainer.PackEnd(ServerIPText);
|
||||
LoginContainer.PackEnd(PasswordText);
|
||||
LoginContainer.PackEnd(UsernameText);
|
||||
WebScrollView.Content = WebView;
|
||||
MainContainer.PackStart(WebScrollView, true);
|
||||
MainContainer.PackEnd(LoginContainer);
|
||||
@ -45,11 +57,17 @@ namespace TrueCraft.Launcher
|
||||
|
||||
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();
|
||||
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
|
||||
process.StartInfo = new ProcessStartInfo("TrueCraft.Client.exe", ServerIPText.Text);
|
||||
process.StartInfo = new ProcessStartInfo("TrueCraft.Client.exe", ServerIPText.Text + " " + UsernameText.Text);
|
||||
process.EnableRaisingEvents = true;
|
||||
process.Exited += (s, a) => Application.Invoke(ClientExited);
|
||||
process.Start();
|
||||
|
Reference in New Issue
Block a user