mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 03:25:14 -04:00
Move code away from TexturePackExtractor into their logical classes.
This commit is contained in:
parent
723585661a
commit
ec050aaefc
@ -173,7 +173,7 @@ namespace ClassicalSharp {
|
|||||||
public Vector3 CurrentCameraPos;
|
public Vector3 CurrentCameraPos;
|
||||||
|
|
||||||
public Animations Animations;
|
public Animations Animations;
|
||||||
internal int CloudsTexId, RainTexId, SnowTexId, GuiTexId, GuiClassicTexId;
|
internal int CloudsTexId, GuiTexId, GuiClassicTexId;
|
||||||
internal bool screenshotRequested;
|
internal bool screenshotRequested;
|
||||||
internal EntryList AcceptedUrls = new EntryList( "acceptedurls.txt" );
|
internal EntryList AcceptedUrls = new EntryList( "acceptedurls.txt" );
|
||||||
internal EntryList DeniedUrls = new EntryList( "deniedurls.txt" );
|
internal EntryList DeniedUrls = new EntryList( "deniedurls.txt" );
|
||||||
|
@ -537,8 +537,6 @@ namespace ClassicalSharp {
|
|||||||
Graphics.Dispose();
|
Graphics.Dispose();
|
||||||
Drawer2D.DisposeInstance();
|
Drawer2D.DisposeInstance();
|
||||||
Graphics.DeleteTexture( ref CloudsTexId );
|
Graphics.DeleteTexture( ref CloudsTexId );
|
||||||
Graphics.DeleteTexture( ref RainTexId );
|
|
||||||
Graphics.DeleteTexture( ref SnowTexId );
|
|
||||||
Graphics.DeleteTexture( ref GuiTexId );
|
Graphics.DeleteTexture( ref GuiTexId );
|
||||||
Graphics.DeleteTexture( ref GuiClassicTexId );
|
Graphics.DeleteTexture( ref GuiClassicTexId );
|
||||||
foreach( WarningScreen screen in WarningOverlays )
|
foreach( WarningScreen screen in WarningOverlays )
|
||||||
@ -559,6 +557,26 @@ namespace ClassicalSharp {
|
|||||||
Inventory.CanPlace[block] && Inventory.CanDelete[block];
|
Inventory.CanPlace[block] && Inventory.CanDelete[block];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary> Reads a bitmap from the stream (converting it to 32 bits per pixel if necessary),
|
||||||
|
/// and updates the native texture for it. </summary>
|
||||||
|
public void UpdateTexture( ref int texId, byte[] data, bool setSkinType ) {
|
||||||
|
MemoryStream stream = new MemoryStream( data );
|
||||||
|
Graphics.DeleteTexture( ref texId );
|
||||||
|
|
||||||
|
using( Bitmap bmp = Platform.ReadBmp( stream ) ) {
|
||||||
|
if( setSkinType )
|
||||||
|
DefaultPlayerSkinType = Utils.GetSkinType( bmp );
|
||||||
|
|
||||||
|
if( !FastBitmap.CheckFormat( bmp.PixelFormat ) ) {
|
||||||
|
using( Bitmap bmp32 = Drawer2D.ConvertTo32Bpp( bmp ) )
|
||||||
|
texId = Graphics.CreateTexture( bmp32 );
|
||||||
|
} else {
|
||||||
|
texId = Graphics.CreateTexture( bmp );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Game( string username, string mppass, string skinServer,
|
public Game( string username, string mppass, string skinServer,
|
||||||
bool nullContext, int width, int height ) {
|
bool nullContext, int width, int height ) {
|
||||||
window = new DesktopWindow( this, username, nullContext, width, height );
|
window = new DesktopWindow( this, username, nullContext, width, height );
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using ClassicalSharp.Events;
|
||||||
using ClassicalSharp.GraphicsAPI;
|
using ClassicalSharp.GraphicsAPI;
|
||||||
|
|
||||||
namespace ClassicalSharp.Model {
|
namespace ClassicalSharp.Model {
|
||||||
@ -23,6 +24,7 @@ namespace ClassicalSharp.Model {
|
|||||||
model.CreateParts();
|
model.CreateParts();
|
||||||
cache["humanoid"] = model;
|
cache["humanoid"] = model;
|
||||||
cache["human"] = cache["humanoid"];
|
cache["human"] = cache["humanoid"];
|
||||||
|
game.Events.TextureChanged += TextureChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal int vb;
|
internal int vb;
|
||||||
@ -62,10 +64,11 @@ namespace ClassicalSharp.Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
foreach( var entry in cache ) {
|
foreach( var entry in cache )
|
||||||
entry.Value.Dispose();
|
entry.Value.Dispose();
|
||||||
}
|
|
||||||
api.DeleteDynamicVb( vb );
|
api.DeleteDynamicVb( vb );
|
||||||
|
game.Events.TextureChanged -= TextureChanged;
|
||||||
|
|
||||||
api.DeleteTexture( ref ChickenTexId );
|
api.DeleteTexture( ref ChickenTexId );
|
||||||
api.DeleteTexture( ref CreeperTexId );
|
api.DeleteTexture( ref CreeperTexId );
|
||||||
api.DeleteTexture( ref PigTexId );
|
api.DeleteTexture( ref PigTexId );
|
||||||
@ -76,5 +79,28 @@ namespace ClassicalSharp.Model {
|
|||||||
api.DeleteTexture( ref SheepFurTexId );
|
api.DeleteTexture( ref SheepFurTexId );
|
||||||
api.DeleteTexture( ref HumanoidTexId );
|
api.DeleteTexture( ref HumanoidTexId );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextureChanged( object sender, TextureEventArgs e ) {
|
||||||
|
switch( e.Name ) {
|
||||||
|
case "chicken.png":
|
||||||
|
game.UpdateTexture( ref ChickenTexId, e.Data, false ); break;
|
||||||
|
case "creeper.png":
|
||||||
|
game.UpdateTexture( ref CreeperTexId, e.Data, false ); break;
|
||||||
|
case "pig.png":
|
||||||
|
game.UpdateTexture( ref PigTexId, e.Data, false ); break;
|
||||||
|
case "sheep.png":
|
||||||
|
game.UpdateTexture( ref SheepTexId, e.Data, false ); break;
|
||||||
|
case "skeleton.png":
|
||||||
|
game.UpdateTexture( ref SkeletonTexId, e.Data, false ); break;
|
||||||
|
case "spider.png":
|
||||||
|
game.UpdateTexture( ref SpiderTexId, e.Data, false ); break;
|
||||||
|
case "zombie.png":
|
||||||
|
game.UpdateTexture( ref ZombieTexId, e.Data, false ); break;
|
||||||
|
case "sheep_fur.png":
|
||||||
|
game.UpdateTexture( ref SheepFurTexId, e.Data, false ); break;
|
||||||
|
case "char.png":
|
||||||
|
game.UpdateTexture( ref HumanoidTexId, e.Data, true ); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
|
// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
|
||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using ClassicalSharp.Events;
|
||||||
using ClassicalSharp.GraphicsAPI;
|
using ClassicalSharp.GraphicsAPI;
|
||||||
using ClassicalSharp.Map;
|
using ClassicalSharp.Map;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
@ -12,6 +14,7 @@ namespace ClassicalSharp.Renderers {
|
|||||||
World map;
|
World map;
|
||||||
IGraphicsApi graphics;
|
IGraphicsApi graphics;
|
||||||
BlockInfo info;
|
BlockInfo info;
|
||||||
|
public int RainTexId, SnowTexId;
|
||||||
|
|
||||||
public void Init( Game game ) {
|
public void Init( Game game ) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
@ -19,6 +22,7 @@ namespace ClassicalSharp.Renderers {
|
|||||||
graphics = game.Graphics;
|
graphics = game.Graphics;
|
||||||
info = game.BlockInfo;
|
info = game.BlockInfo;
|
||||||
weatherVb = graphics.CreateDynamicVb( VertexFormat.P3fT2fC4b, vertices.Length );
|
weatherVb = graphics.CreateDynamicVb( VertexFormat.P3fT2fC4b, vertices.Length );
|
||||||
|
game.Events.TextureChanged += TextureChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
int weatherVb;
|
int weatherVb;
|
||||||
@ -34,7 +38,7 @@ namespace ClassicalSharp.Renderers {
|
|||||||
if( weather == Weather.Sunny ) return;
|
if( weather == Weather.Sunny ) return;
|
||||||
if( heightmap == null ) InitHeightmap();
|
if( heightmap == null ) InitHeightmap();
|
||||||
|
|
||||||
graphics.BindTexture( weather == Weather.Rainy ? game.RainTexId : game.SnowTexId );
|
graphics.BindTexture( weather == Weather.Rainy ? RainTexId : SnowTexId );
|
||||||
Vector3 camPos = game.CurrentCameraPos;
|
Vector3 camPos = game.CurrentCameraPos;
|
||||||
Vector3I pos = Vector3I.Floor( camPos );
|
Vector3I pos = Vector3I.Floor( camPos );
|
||||||
bool moved = pos != lastPos;
|
bool moved = pos != lastPos;
|
||||||
@ -109,6 +113,21 @@ namespace ClassicalSharp.Renderers {
|
|||||||
oneY = length * width;
|
oneY = length * width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextureChanged( object sender, TextureEventArgs e ) {
|
||||||
|
if( e.Name == "snow.png" ) {
|
||||||
|
game.UpdateTexture( ref SnowTexId, e.Data, false );
|
||||||
|
} else if( e.Name == "rain.png" ) {
|
||||||
|
game.UpdateTexture( ref RainTexId, e.Data, false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose() {
|
||||||
|
game.Graphics.DeleteTexture( ref RainTexId );
|
||||||
|
game.Graphics.DeleteTexture( ref SnowTexId );
|
||||||
|
graphics.DeleteDynamicVb( weatherVb );
|
||||||
|
game.Events.TextureChanged -= TextureChanged;
|
||||||
|
}
|
||||||
|
|
||||||
void InitHeightmap() {
|
void InitHeightmap() {
|
||||||
heightmap = new short[map.Width * map.Length];
|
heightmap = new short[map.Width * map.Length];
|
||||||
for( int i = 0; i < heightmap.Length; i++ ) {
|
for( int i = 0; i < heightmap.Length; i++ ) {
|
||||||
@ -116,10 +135,6 @@ namespace ClassicalSharp.Renderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
|
||||||
graphics.DeleteDynamicVb( weatherVb );
|
|
||||||
}
|
|
||||||
|
|
||||||
float GetRainHeight( int x, int z ) {
|
float GetRainHeight( int x, int z ) {
|
||||||
if( x < 0 || z < 0 || x >= width || z >= length ) return map.EdgeHeight;
|
if( x < 0 || z < 0 || x >= width || z >= length ) return map.EdgeHeight;
|
||||||
int index = (x * length) + z;
|
int index = (x * length) + z;
|
||||||
|
@ -50,38 +50,16 @@ namespace ClassicalSharp.TexturePack {
|
|||||||
Bitmap atlas = Platform.ReadBmp( stream );
|
Bitmap atlas = Platform.ReadBmp( stream );
|
||||||
if( !game.ChangeTerrainAtlas( atlas ) ) atlas.Dispose();
|
if( !game.ChangeTerrainAtlas( atlas ) ) atlas.Dispose();
|
||||||
break;
|
break;
|
||||||
case "chicken.png":
|
|
||||||
UpdateTexture( ref cache.ChickenTexId, stream, false ); break;
|
|
||||||
case "creeper.png":
|
|
||||||
UpdateTexture( ref cache.CreeperTexId, stream, false ); break;
|
|
||||||
case "pig.png":
|
|
||||||
UpdateTexture( ref cache.PigTexId, stream, false ); break;
|
|
||||||
case "sheep.png":
|
|
||||||
UpdateTexture( ref cache.SheepTexId, stream, false ); break;
|
|
||||||
case "skeleton.png":
|
|
||||||
UpdateTexture( ref cache.SkeletonTexId, stream, false ); break;
|
|
||||||
case "spider.png":
|
|
||||||
UpdateTexture( ref cache.SpiderTexId, stream, false ); break;
|
|
||||||
case "zombie.png":
|
|
||||||
UpdateTexture( ref cache.ZombieTexId, stream, false ); break;
|
|
||||||
case "sheep_fur.png":
|
|
||||||
UpdateTexture( ref cache.SheepFurTexId, stream, false ); break;
|
|
||||||
case "char.png":
|
|
||||||
UpdateTexture( ref cache.HumanoidTexId, stream, true ); break;
|
|
||||||
case "clouds.png":
|
case "clouds.png":
|
||||||
case "cloud.png":
|
case "cloud.png":
|
||||||
UpdateTexture( ref game.CloudsTexId, stream, false ); break;
|
game.UpdateTexture( ref game.CloudsTexId, data, false ); break;
|
||||||
case "rain.png":
|
|
||||||
UpdateTexture( ref game.RainTexId, stream, false ); break;
|
|
||||||
case "snow.png":
|
|
||||||
UpdateTexture( ref game.SnowTexId, stream, false ); break;
|
|
||||||
case "gui.png":
|
case "gui.png":
|
||||||
UpdateTexture( ref game.GuiTexId, stream, false ); break;
|
game.UpdateTexture( ref game.GuiTexId, data, false ); break;
|
||||||
case "gui_classic.png":
|
case "gui_classic.png":
|
||||||
UpdateTexture( ref game.GuiClassicTexId, stream, false ); break;
|
game.UpdateTexture( ref game.GuiClassicTexId, data, false ); break;
|
||||||
case "particles.png":
|
case "particles.png":
|
||||||
UpdateTexture( ref game.ParticleManager.ParticlesTexId,
|
game.UpdateTexture( ref game.ParticleManager.ParticlesTexId,
|
||||||
stream, false ); break;
|
data, false ); break;
|
||||||
case "default.png":
|
case "default.png":
|
||||||
SetFontBitmap( game, stream ); break;
|
SetFontBitmap( game, stream ); break;
|
||||||
}
|
}
|
||||||
@ -95,22 +73,5 @@ namespace ClassicalSharp.TexturePack {
|
|||||||
game.Drawer2D.SetFontBitmap( bmp );
|
game.Drawer2D.SetFontBitmap( bmp );
|
||||||
game.Events.RaiseChatFontChanged();
|
game.Events.RaiseChatFontChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Reads a bitmap from the stream (converting it to 32 bits per pixel if necessary),
|
|
||||||
/// and updates the native texture for it. </summary>
|
|
||||||
public void UpdateTexture( ref int texId, Stream stream, bool setSkinType ) {
|
|
||||||
game.Graphics.DeleteTexture( ref texId );
|
|
||||||
using( Bitmap bmp = Platform.ReadBmp( stream ) ) {
|
|
||||||
if( setSkinType )
|
|
||||||
game.DefaultPlayerSkinType = Utils.GetSkinType( bmp );
|
|
||||||
|
|
||||||
if( !FastBitmap.CheckFormat( bmp.PixelFormat ) ) {
|
|
||||||
using( Bitmap bmp32 = game.Drawer2D.ConvertTo32Bpp( bmp ) )
|
|
||||||
texId = game.Graphics.CreateTexture( bmp32 );
|
|
||||||
} else {
|
|
||||||
texId = game.Graphics.CreateTexture( bmp );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user