Now load terrain.png from current texture pack

This commit is contained in:
William Moorehouse 2015-06-16 21:58:55 -04:00 committed by Drew DeVault
parent ef5c6b7861
commit b799809d74
5 changed files with 55 additions and 5 deletions

View File

@ -11,6 +11,9 @@ namespace TrueCraft.Client
[STAThread] [STAThread]
public static void Main(string[] args) public static void Main(string[] args)
{ {
UserSettings.Local = new UserSettings();
UserSettings.Local.Load();
var user = new TrueCraftUser { Username = args[1] }; var user = new TrueCraftUser { Username = args[1] };
var client = new MultiplayerClient(user); var client = new MultiplayerClient(user);
var game = new TrueCraftGame(client, ParseEndPoint(args[0])); var game = new TrueCraftGame(client, ParseEndPoint(args[0]));

View File

@ -0,0 +1,37 @@
using Microsoft.Xna.Framework.Graphics;
using System;
using TrueCraft.Core;
using Ionic.Zip;
namespace TrueCraft.Client.Rendering
{
public static class TexturePackExtensions
{
/// <summary>
///
/// </summary>
/// <param name="instance"></param>
/// <param name="entryName"></param>
/// <returns></returns>
public static Texture2D GetTexture(this TexturePack instance, GraphicsDevice graphicsDevice, string entryName)
{
ZipEntry entry = null;
foreach (var item in instance.Archive.Entries)
{
if (item.FileName == entryName)
{
entry = item;
break;
}
}
if (entry == null)
return null;
Texture2D texture = null;
using (var reader = entry.OpenReader())
texture = Texture2D.FromStream(graphicsDevice, reader);
return texture;
}
}
}

View File

@ -70,6 +70,10 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Ionic.Zip.Reduced, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\lib\Ionic.Zip.Reduced.dll</HintPath>
</Reference>
<Reference Include="OpenTK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL"> <Reference Include="OpenTK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
<HintPath>..\packages\MonoGame.Framework.Linux.3.4.0.459\lib\net40\OpenTK.dll</HintPath> <HintPath>..\packages\MonoGame.Framework.Linux.3.4.0.459\lib\net40\OpenTK.dll</HintPath>
<Private>True</Private> <Private>True</Private>
@ -109,6 +113,7 @@
<Compile Include="Rendering\Font.cs" /> <Compile Include="Rendering\Font.cs" />
<Compile Include="Rendering\FontRenderer.cs" /> <Compile Include="Rendering\FontRenderer.cs" />
<Compile Include="Rendering\FontStyle.cs" /> <Compile Include="Rendering\FontStyle.cs" />
<Compile Include="Rendering\TexturePackExtensions.cs" />
<Compile Include="TrueCraftGame.cs" /> <Compile Include="TrueCraftGame.cs" />
<Compile Include="MultiplayerClient.cs" /> <Compile Include="MultiplayerClient.cs" />
<Compile Include="Handlers\PacketHandlers.cs" /> <Compile Include="Handlers\PacketHandlers.cs" />

View File

@ -14,6 +14,7 @@ using TrueCraft.Core.Networking.Packets;
using TrueCraft.API.World; using TrueCraft.API.World;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using TrueCraft.Client.Input; using TrueCraft.Client.Input;
using TrueCraft.Core;
namespace TrueCraft.Client namespace TrueCraft.Client
{ {
@ -41,6 +42,7 @@ namespace TrueCraft.Client
private MouseComponent MouseComponent { get; set; } private MouseComponent MouseComponent { get; set; }
private GameTime GameTime { get; set; } private GameTime GameTime { get; set; }
private Microsoft.Xna.Framework.Vector3 Delta { get; set; } private Microsoft.Xna.Framework.Vector3 Delta { get; set; }
private TexturePack TexturePack { get; set; }
private BasicEffect OpaqueEffect, TransparentEffect; private BasicEffect OpaqueEffect, TransparentEffect;
@ -124,6 +126,7 @@ namespace TrueCraft.Client
protected override void LoadContent() protected override void LoadContent()
{ {
TexturePack = new TexturePack(UserSettings.Local.SelectedTexturePack);
DejaVu = new FontRenderer( DejaVu = new FontRenderer(
new Font(Content, "Fonts/DejaVu", FontStyle.Regular), new Font(Content, "Fonts/DejaVu", FontStyle.Regular),
new Font(Content, "Fonts/DejaVu", FontStyle.Bold), new Font(Content, "Fonts/DejaVu", FontStyle.Bold),
@ -138,7 +141,7 @@ namespace TrueCraft.Client
OpaqueEffect.DirectionalLight1.SpecularColor = Color.Black.ToVector3(); OpaqueEffect.DirectionalLight1.SpecularColor = Color.Black.ToVector3();
OpaqueEffect.DirectionalLight2.SpecularColor = Color.Black.ToVector3(); OpaqueEffect.DirectionalLight2.SpecularColor = Color.Black.ToVector3();
OpaqueEffect.TextureEnabled = true; OpaqueEffect.TextureEnabled = true;
OpaqueEffect.Texture = Texture2D.FromStream(GraphicsDevice, File.OpenRead("Content/terrain.png")); OpaqueEffect.Texture = TexturePack.GetTexture(GraphicsDevice, "terrain.png");
OpaqueEffect.FogEnabled = true; OpaqueEffect.FogEnabled = true;
OpaqueEffect.FogStart = 512f; OpaqueEffect.FogStart = 512f;
OpaqueEffect.FogEnd = 1000f; OpaqueEffect.FogEnd = 1000f;
@ -146,7 +149,7 @@ namespace TrueCraft.Client
TransparentEffect = new BasicEffect(GraphicsDevice); TransparentEffect = new BasicEffect(GraphicsDevice);
TransparentEffect.TextureEnabled = true; TransparentEffect.TextureEnabled = true;
TransparentEffect.Texture = Texture2D.FromStream(GraphicsDevice, File.OpenRead("Content/terrain.png")); TransparentEffect.Texture = TexturePack.GetTexture(GraphicsDevice, "terrain.png");
base.LoadContent(); base.LoadContent();
} }
@ -250,7 +253,7 @@ namespace TrueCraft.Client
Client.Yaw += look.X; Client.Yaw += look.X;
Client.Pitch += look.Y; Client.Pitch += look.Y;
Client.Yaw %= 360; Client.Yaw %= 360;
Client.Pitch = MathHelper.Clamp(Client.Pitch, -89.9f, 89.9f); Client.Pitch = Microsoft.Xna.Framework.MathHelper.Clamp(Client.Pitch, -89.9f, 89.9f);
if (look != Vector2.Zero) if (look != Vector2.Zero)
UpdateCamera(); UpdateCamera();
@ -312,7 +315,7 @@ namespace TrueCraft.Client
if (Delta != Microsoft.Xna.Framework.Vector3.Zero) if (Delta != Microsoft.Xna.Framework.Vector3.Zero)
{ {
var lookAt = Microsoft.Xna.Framework.Vector3.Transform( var lookAt = Microsoft.Xna.Framework.Vector3.Transform(
Delta, Matrix.CreateRotationY(MathHelper.ToRadians(Client.Yaw))); Delta, Matrix.CreateRotationY(Microsoft.Xna.Framework.MathHelper.ToRadians(Client.Yaw)));
Client.Position += new TrueCraft.API.Vector3(lookAt.X, lookAt.Y, lookAt.Z) Client.Position += new TrueCraft.API.Vector3(lookAt.X, lookAt.Y, lookAt.Z)
* (gameTime.ElapsedGameTime.TotalSeconds * 4.3717); * (gameTime.ElapsedGameTime.TotalSeconds * 4.3717);

View File

@ -60,12 +60,14 @@ namespace TrueCraft.Launcher.Views
{ {
var texturePack = _texturePacks[TexturePackListView.SelectedRow]; var texturePack = _texturePacks[TexturePackListView.SelectedRow];
if (_lastTexturePack != texturePack) if (_lastTexturePack != texturePack)
{
UserSettings.Local.SelectedTexturePack = texturePack.Path; UserSettings.Local.SelectedTexturePack = texturePack.Path;
UserSettings.Local.Save();
}
}; };
OpenFolderButton.Clicked += (sender, e) => OpenFolderButton.Clicked += (sender, e) =>
{ {
// TODO: Implement cross-platform logic here.
var dir = new DirectoryInfo(TexturePack.TexturePackPath); var dir = new DirectoryInfo(TexturePack.TexturePackPath);
Process.Start(dir.FullName); Process.Start(dir.FullName);
}; };