From 8b73b0a7132c3b78c3ca1c3014e2960dfc6ba8b4 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 29 Dec 2015 16:24:54 +1100 Subject: [PATCH] Minor code cleanup, separate event classes. --- ClassicalSharp/2D/Screens/HudScreen.cs | 2 +- ClassicalSharp/2D/Screens/LoadingMapScreen.cs | 4 +- .../2D/Screens/Menu/GenLevelScreen.cs | 20 --- .../2D/Screens/Menu/LoadLevelScreen.cs | 2 +- .../2D/Widgets/ExtPlayerListWidget.cs | 12 +- .../2D/Widgets/NormalPlayerListWidget.cs | 8 +- ClassicalSharp/ClassicalSharp.csproj | 5 +- ClassicalSharp/Entities/LocalPlayer.cs | 2 +- ClassicalSharp/Events/EntityEvents.cs | 36 +++++ ClassicalSharp/Events/Events.cs | 63 ++++++++ ClassicalSharp/Events/MapEvents.cs | 53 +++++++ ClassicalSharp/Game/Events.cs | 146 ------------------ ClassicalSharp/Game/Game.Properties.cs | 2 + ClassicalSharp/Game/Game.cs | 9 +- ClassicalSharp/Map/Map.cs | 14 +- ClassicalSharp/Network/Enums.cs | 14 +- .../Network/NetworkProcessor.CPE.cs | 8 +- .../Network/NetworkProcessor.Original.cs | 12 +- ClassicalSharp/Network/NetworkProcessor.cs | 6 +- ClassicalSharp/Rendering/EnvRenderer.cs | 12 +- .../Rendering/MapBordersRenderer.cs | 12 +- ClassicalSharp/Rendering/MapRenderer.cs | 14 +- ClassicalSharp/Rendering/WeatherRenderer.cs | 8 +- ClassicalSharp/Selections/SelectionManager.cs | 4 +- ClassicalSharp/Singleplayer/Physics.cs | 4 +- ClassicalSharp/Singleplayer/Server.cs | 2 +- 26 files changed, 231 insertions(+), 243 deletions(-) create mode 100644 ClassicalSharp/Events/EntityEvents.cs create mode 100644 ClassicalSharp/Events/Events.cs create mode 100644 ClassicalSharp/Events/MapEvents.cs delete mode 100644 ClassicalSharp/Game/Events.cs diff --git a/ClassicalSharp/2D/Screens/HudScreen.cs b/ClassicalSharp/2D/Screens/HudScreen.cs index cb0ec5bf2..9bbcf0441 100644 --- a/ClassicalSharp/2D/Screens/HudScreen.cs +++ b/ClassicalSharp/2D/Screens/HudScreen.cs @@ -91,7 +91,7 @@ namespace ClassicalSharp { chat.Init(); hotbar = new BlockHotbarWidget( game ); hotbar.Init(); - game.Events.OnNewMap += OnNewMap; + game.MapEvents.OnNewMap += OnNewMap; } void OnNewMap( object sender, EventArgs e ) { diff --git a/ClassicalSharp/2D/Screens/LoadingMapScreen.cs b/ClassicalSharp/2D/Screens/LoadingMapScreen.cs index bf931942c..c2a34b027 100644 --- a/ClassicalSharp/2D/Screens/LoadingMapScreen.cs +++ b/ClassicalSharp/2D/Screens/LoadingMapScreen.cs @@ -44,7 +44,7 @@ namespace ClassicalSharp { progressBoxTexture = drawer.Make2DTexture( bmp, size, (int)progX, (int)progY ); } } - game.Events.MapLoading += MapLoading; + game.MapEvents.MapLoading += MapLoading; } public void SetTitle( string title ) { @@ -72,7 +72,7 @@ namespace ClassicalSharp { messageWidget.Dispose(); titleWidget.Dispose(); graphicsApi.DeleteTexture( ref progressBoxTexture ); - game.Events.MapLoading -= MapLoading; + game.MapEvents.MapLoading -= MapLoading; } public override void OnResize( int oldWidth, int oldHeight, int width, int height ) { diff --git a/ClassicalSharp/2D/Screens/Menu/GenLevelScreen.cs b/ClassicalSharp/2D/Screens/Menu/GenLevelScreen.cs index 2571c73be..f20e918cb 100644 --- a/ClassicalSharp/2D/Screens/Menu/GenLevelScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/GenLevelScreen.cs @@ -25,11 +25,6 @@ namespace ClassicalSharp { for( int i = 0; i < labels.Length; i++ ) labels[i].Render( delta ); graphicsApi.Texturing = false; - - if( textPath != null ) { - SaveMap( textPath ); - textPath = null; - } } public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) { @@ -147,20 +142,5 @@ namespace ClassicalSharp { return 0; return text == "" ? 0 : Int32.Parse( text ); } - - string textPath; - void SaveMap( string path ) { - path = Path.Combine( Program.AppDirectory, path ); - try { - using( FileStream fs = new FileStream( path, FileMode.CreateNew, FileAccess.Write ) ) { - IMapFileFormat map = new MapCw(); - map.Save( fs, game ); - } - } catch( Exception ex ) { - ErrorHandler.LogError( "saving map", ex ); - return; - } - game.SetNewScreen( new PauseScreen( game ) ); - } } } \ No newline at end of file diff --git a/ClassicalSharp/2D/Screens/Menu/LoadLevelScreen.cs b/ClassicalSharp/2D/Screens/Menu/LoadLevelScreen.cs index 14c60f684..052e99d9b 100644 --- a/ClassicalSharp/2D/Screens/Menu/LoadLevelScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/LoadLevelScreen.cs @@ -51,7 +51,7 @@ namespace ClassicalSharp { byte[] blocks = mapFile.Load( fs, game, out width, out height, out length ); game.Map.SetData( blocks, width, height, length ); - game.Events.RaiseOnNewMapLoaded(); + game.MapEvents.RaiseOnNewMapLoaded(); LocalPlayer p = game.LocalPlayer; LocationUpdate update = LocationUpdate.MakePos( p.SpawnPoint, false ); diff --git a/ClassicalSharp/2D/Widgets/ExtPlayerListWidget.cs b/ClassicalSharp/2D/Widgets/ExtPlayerListWidget.cs index 6cf75daaf..705aa12c1 100644 --- a/ClassicalSharp/2D/Widgets/ExtPlayerListWidget.cs +++ b/ClassicalSharp/2D/Widgets/ExtPlayerListWidget.cs @@ -53,16 +53,16 @@ namespace ClassicalSharp { Font titleFont; public override void Init() { base.Init(); - game.Events.CpeListInfoAdded += PlayerListInfoAdded; - game.Events.CpeListInfoRemoved += PlayerListInfoRemoved; - game.Events.CpeListInfoChanged += PlayerListInfoChanged; + game.EntityEvents.CpeListInfoAdded += PlayerListInfoAdded; + game.EntityEvents.CpeListInfoRemoved += PlayerListInfoRemoved; + game.EntityEvents.CpeListInfoChanged += PlayerListInfoChanged; } public override void Dispose() { base.Dispose(); - game.Events.CpeListInfoAdded -= PlayerListInfoAdded; - game.Events.CpeListInfoChanged -= PlayerListInfoChanged; - game.Events.CpeListInfoRemoved -= PlayerListInfoRemoved; + game.EntityEvents.CpeListInfoAdded -= PlayerListInfoAdded; + game.EntityEvents.CpeListInfoChanged -= PlayerListInfoChanged; + game.EntityEvents.CpeListInfoRemoved -= PlayerListInfoRemoved; titleFont.Dispose(); } diff --git a/ClassicalSharp/2D/Widgets/NormalPlayerListWidget.cs b/ClassicalSharp/2D/Widgets/NormalPlayerListWidget.cs index 4b6512d6a..d4b77adf9 100644 --- a/ClassicalSharp/2D/Widgets/NormalPlayerListWidget.cs +++ b/ClassicalSharp/2D/Widgets/NormalPlayerListWidget.cs @@ -24,14 +24,14 @@ namespace ClassicalSharp { public override void Init() { base.Init(); - game.Events.EntityAdded += PlayerSpawned; - game.Events.EntityRemoved += PlayerDespawned; + game.EntityEvents.EntityAdded += PlayerSpawned; + game.EntityEvents.EntityRemoved += PlayerDespawned; } public override void Dispose() { base.Dispose(); - game.Events.EntityAdded -= PlayerSpawned; - game.Events.EntityRemoved -= PlayerDespawned; + game.EntityEvents.EntityAdded -= PlayerSpawned; + game.EntityEvents.EntityRemoved -= PlayerDespawned; } void PlayerSpawned( object sender, IdEventArgs e ) { diff --git a/ClassicalSharp/ClassicalSharp.csproj b/ClassicalSharp/ClassicalSharp.csproj index 8d4ba54c2..57b0500ba 100644 --- a/ClassicalSharp/ClassicalSharp.csproj +++ b/ClassicalSharp/ClassicalSharp.csproj @@ -152,6 +152,9 @@ + + + @@ -168,7 +171,6 @@ - @@ -281,6 +283,7 @@ + diff --git a/ClassicalSharp/Entities/LocalPlayer.cs b/ClassicalSharp/Entities/LocalPlayer.cs index d243ef19b..956d95726 100644 --- a/ClassicalSharp/Entities/LocalPlayer.cs +++ b/ClassicalSharp/Entities/LocalPlayer.cs @@ -216,7 +216,7 @@ namespace ClassicalSharp { if( UserType == 0x64 ) ParseFlag( b => SetAllHacks( b ), joined, "ophax" ); CheckHacksConsistency(); - game.Events.RaiseHackPermissionmsChanged(); + game.Events.RaiseHackPermissionsChanged(); } void SetAllHacks( bool allowed ) { diff --git a/ClassicalSharp/Events/EntityEvents.cs b/ClassicalSharp/Events/EntityEvents.cs new file mode 100644 index 000000000..85d05d0fb --- /dev/null +++ b/ClassicalSharp/Events/EntityEvents.cs @@ -0,0 +1,36 @@ +using System; + +namespace ClassicalSharp { + + /// Contains events related to the spawning/despawning of entities, + /// and the creation/removal of CPE player list entries. + public sealed class EntityEvents : Events { + + IdEventArgs idArgs = new IdEventArgs(); + + /// Raised when an entity is spawned in the current world. + public event EventHandler EntityAdded; + internal void RaiseEntityAdded( byte id ) { idArgs.Id = id; Raise( EntityAdded, idArgs ); } + + /// Raised when an entity is despawned from the current world. + public event EventHandler EntityRemoved; + internal void RaiseEntityRemoved( byte id ) { idArgs.Id = id; Raise( EntityRemoved, idArgs ); } + + /// Raised when a new CPE player list entry is created. + public event EventHandler CpeListInfoAdded; + internal void RaiseCpeListInfoAdded( byte id ) { idArgs.Id = id; Raise( CpeListInfoAdded, idArgs ); } + + /// Raised when a CPE player list entry is modified. + public event EventHandler CpeListInfoChanged; + internal void RaiseCpeListInfoChanged( byte id ) { idArgs.Id = id; Raise( CpeListInfoChanged, idArgs ); } + + /// Raised when a CPE player list entry is removed. + public event EventHandler CpeListInfoRemoved; + internal void RaiseCpeListInfoRemoved( byte id ) { idArgs.Id = id; Raise( CpeListInfoRemoved, idArgs ); } + } + + public sealed class IdEventArgs : EventArgs { + + public byte Id; + } +} diff --git a/ClassicalSharp/Events/Events.cs b/ClassicalSharp/Events/Events.cs new file mode 100644 index 000000000..c1d2ed3a8 --- /dev/null +++ b/ClassicalSharp/Events/Events.cs @@ -0,0 +1,63 @@ +using System; + +namespace ClassicalSharp { + + public class Events { + + /// Raised when the terrain atlas ("terrain.png") is changed. + public event EventHandler TerrainAtlasChanged; + internal void RaiseTerrainAtlasChanged() { Raise( TerrainAtlasChanged ); } + + /// Raised when the user changed their view/fog distance. + public event EventHandler ViewDistanceChanged; + internal void RaiseViewDistanceChanged() { Raise( ViewDistanceChanged ); } + + /// Raised when the held block is changed by the user or by CPE. + public event EventHandler HeldBlockChanged; + internal void RaiseHeldBlockChanged() { Raise( HeldBlockChanged ); } + + /// Raised when the block permissions(can place or delete a block) for the player change. + public event EventHandler BlockPermissionsChanged; + internal void RaiseBlockPermissionsChanged() { Raise( BlockPermissionsChanged ); } + + /// Raised when a block definition is changed. + public event EventHandler BlockDefinitionChanged; + internal void RaiseBlockDefinitionChanged() { Raise( BlockDefinitionChanged ); } + + /// Raised when the server or a client-side command sends a message. + public event EventHandler ChatReceived; + internal void RaiseChatReceived( string text, CpeMessage type ) { + chatArgs.Type = type; chatArgs.Text = text; Raise( ChatReceived, chatArgs ); } + + /// Raised when the user changes chat font to arial or back to bitmapped font, + /// also raised when the bitmapped font changes. + public event EventHandler ChatFontChanged; + internal void RaiseChatFontChanged() { Raise( ChatFontChanged ); } + + + /// Raised when the hack permissions of the player changes. + public event EventHandler HackPermissionsChanged; + internal void RaiseHackPermissionsChanged() { Raise( HackPermissionsChanged ); } + + ChatEventArgs chatArgs = new ChatEventArgs(); + protected void Raise( EventHandler handler ) { + if( handler != null ) + handler( this, EventArgs.Empty ); + } + + protected void Raise( EventHandler handler, T args ) where T : EventArgs { + if( handler != null ) + handler( this, args ); + } + } + + public sealed class ChatEventArgs : EventArgs { + + /// Where this chat message should appear on the screen. + public CpeMessage Type; + + /// Raw text of the message (including colour codes), + /// with code page 437 indices converted to their unicode representations. + public string Text; + } +} diff --git a/ClassicalSharp/Events/MapEvents.cs b/ClassicalSharp/Events/MapEvents.cs new file mode 100644 index 000000000..1c101e619 --- /dev/null +++ b/ClassicalSharp/Events/MapEvents.cs @@ -0,0 +1,53 @@ +using System; + +namespace ClassicalSharp { + + public class MapEvents : Events { + + /// Raised when the player joins and begins loading a new map. + public event EventHandler OnNewMap; + internal void RaiseOnNewMap() { Raise( OnNewMap ); } + + /// Raised when a portion of the map is read and decompressed, or generated. + public event EventHandler MapLoading; + internal void RaiseMapLoading( byte progress ) { loadingArgs.Progress = progress; Raise( MapLoading, loadingArgs ); } + + /// Raised when new map has finished loading and the player can now interact with it. + public event EventHandler OnNewMapLoaded; + internal void RaiseOnNewMapLoaded() { Raise( OnNewMapLoaded ); } + + /// Raised when an environment variable of the map is changed by the user, CPE, or WoM config. + public event EventHandler EnvVariableChanged; + internal void RaiseEnvVariableChanged( EnvVar envVar ) { envArgs.Var = envVar; Raise( EnvVariableChanged, envArgs ); } + + MapLoadingEventArgs loadingArgs = new MapLoadingEventArgs(); + EnvVarEventArgs envArgs = new EnvVarEventArgs(); + } + + public sealed class MapLoadingEventArgs : EventArgs { + + /// Percentage of the map that has been fully decompressed, or generated. + public int Progress; + } + + public sealed class EnvVarEventArgs : EventArgs { + + /// Map environment variable that was changed. + public EnvVar Var; + } + + public enum EnvVar { + SidesBlock, + EdgeBlock, + EdgeLevel, + CloudsLevel, + CloudsSpeed, + Weather, + + SkyColour, + CloudsColour, + FogColour, + SunlightColour, + ShadowlightColour, + } +} diff --git a/ClassicalSharp/Game/Events.cs b/ClassicalSharp/Game/Events.cs deleted file mode 100644 index 5a8a9f4e0..000000000 --- a/ClassicalSharp/Game/Events.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; - -namespace ClassicalSharp { - - public sealed class Events { - - /// Raised when an entity is spawned in the current world. - public event EventHandler EntityAdded; - internal void RaiseEntityAdded( byte id ) { idArgs.Id = id; Raise( EntityAdded, idArgs ); } - - /// Raised when an entity is despawned from the current world. - public event EventHandler EntityRemoved; - internal void RaiseEntityRemoved( byte id ) { idArgs.Id = id; Raise( EntityRemoved, idArgs ); } - - /// Raised when a new CPE player list entry is created. - public event EventHandler CpeListInfoAdded; - internal void RaiseCpeListInfoAdded( byte id ) { idArgs.Id = id; Raise( CpeListInfoAdded, idArgs ); } - - /// Raised when a CPE player list entry is modified. - public event EventHandler CpeListInfoChanged; - internal void RaiseCpeListInfoChanged( byte id ) { idArgs.Id = id; Raise( CpeListInfoChanged, idArgs ); } - - /// Raised when a CPE player list entry is removed. - public event EventHandler CpeListInfoRemoved; - internal void RaiseCpeListInfoRemoved( byte id ) { idArgs.Id = id; Raise( CpeListInfoRemoved, idArgs ); } - - - /// Raised when the client joins and begins loading a new map. - public event EventHandler OnNewMap; - internal void RaiseOnNewMap() { Raise( OnNewMap ); } - - /// Raised when a portion of the map is read and decompressed by the client. - public event EventHandler MapLoading; - internal void RaiseMapLoading( byte progress ) { loadingArgs.Progress = progress; Raise( MapLoading, loadingArgs ); } - - /// Raised when the client has finished loading a new map and can now interact with it. - public event EventHandler OnNewMapLoaded; - internal void RaiseOnNewMapLoaded() { Raise( OnNewMapLoaded ); } - - - /// Raised when the terrain atlas ("terrain.png") is changed. - public event EventHandler TerrainAtlasChanged; - internal void RaiseTerrainAtlasChanged() { Raise( TerrainAtlasChanged ); } - - /// Raised when an environment variable is changed by the user, CPE, or WoM config. - public event EventHandler EnvVariableChanged; - internal void RaiseEnvVariableChanged( EnvVar envVar ) { envArgs.Var = envVar; Raise( EnvVariableChanged, envArgs ); } - - /// Raised when the user changed their view/fog distance. - public event EventHandler ViewDistanceChanged; - internal void RaiseViewDistanceChanged() { Raise( ViewDistanceChanged ); } - - /// Raised when the held block is changed by the user or by CPE. - public event EventHandler HeldBlockChanged; - internal void RaiseHeldBlockChanged() { Raise( HeldBlockChanged ); } - - /// Raised when the client's block permissions(can place or delete a block) change. - public event EventHandler BlockPermissionsChanged; - internal void RaiseBlockPermissionsChanged() { Raise( BlockPermissionsChanged ); } - - /// Raised when the a block definition is changed. - public event EventHandler BlockDefinitionChanged; - internal void RaiseBlockDefinitionChanged() { Raise( BlockDefinitionChanged ); } - - /// Raised when the server or a client-side command sends a message. - public event EventHandler ChatReceived; - internal void RaiseChatReceived( string text, CpeMessage type ) { - chatArgs.Type = type; chatArgs.Text = text; Raise( ChatReceived, chatArgs ); } - - /// Raised when the user changes chat font to arial or back to bitmapped font, - /// also raised when the bitmapped font changes. - public event EventHandler ChatFontChanged; - internal void RaiseChatFontChanged() { Raise( ChatFontChanged ); } - - - /// Raised when the hack permissions of the player changes. - public event EventHandler HackPermissionsChanged; - internal void RaiseHackPermissionmsChanged() { Raise( HackPermissionsChanged ); } - - // Cache event instances so we don't create needless new objects. - IdEventArgs idArgs = new IdEventArgs(); - MapLoadingEventArgs loadingArgs = new MapLoadingEventArgs(); - EnvVarEventArgs envArgs = new EnvVarEventArgs(); - ChatEventArgs chatArgs = new ChatEventArgs(); - - void Raise( EventHandler handler ) { - if( handler != null ) { - handler( this, EventArgs.Empty ); - } - } - - void Raise( EventHandler handler, T args ) where T : EventArgs { - if( handler != null ) { - handler( this, args ); - } - } - } - - public sealed class IdEventArgs : EventArgs { - - public byte Id; - } - - public sealed class ChatEventArgs : EventArgs { - - /// Where this chat message should appear on the screen. - public CpeMessage Type; - - /// Raw text of the message (including colour codes), - /// with code page 437 indices converted to their unicode representations. - public string Text; - } - - public sealed class MapLoadingEventArgs : EventArgs { - - /// Percentage of the map that has been fully decompressed by the client. - public int Progress; - } - - public sealed class EnvVarEventArgs : EventArgs { - - /// Map environment variable that was changed. - public EnvVar Var; - } - - public enum EnvVar { - SidesBlock, - EdgeBlock, - EdgeLevel, - CloudsLevel, - CloudsSpeed, - Weather, - - SkyColour, - CloudsColour, - FogColour, - SunlightColour, - ShadowlightColour, - } - - public enum Weather { - Sunny, - Rainy, - Snowy, - } -} diff --git a/ClassicalSharp/Game/Game.Properties.cs b/ClassicalSharp/Game/Game.Properties.cs index db877b089..09406964e 100644 --- a/ClassicalSharp/Game/Game.Properties.cs +++ b/ClassicalSharp/Game/Game.Properties.cs @@ -73,6 +73,8 @@ namespace ClassicalSharp { FpsScreen fpsScreen; internal HudScreen hudScreen; public Events Events = new Events(); + public EntityEvents EntityEvents = new EntityEvents(); + public MapEvents MapEvents = new MapEvents(); public InputHandler InputHandler; public ChatLog Chat; public BlockHandRenderer BlockHandRenderer; diff --git a/ClassicalSharp/Game/Game.cs b/ClassicalSharp/Game/Game.cs index 9d8683d2d..0bf7d48ff 100644 --- a/ClassicalSharp/Game/Game.cs +++ b/ClassicalSharp/Game/Game.cs @@ -224,15 +224,14 @@ namespace ClassicalSharp { const int ticksFrequency = 20; const double ticksPeriod = 1.0 / ticksFrequency; const double imageCheckPeriod = 30.0; - const double cameraPeriod = 1.0 / 120, audioPeriod = 1.0 / 40; + const double cameraPeriod = 1.0 / 120; double ticksAccumulator, imageCheckAccumulator, - cameraAccumulator, audioAccumulator; + cameraAccumulator; void CheckScheduledTasks( double time ) { imageCheckAccumulator += time; ticksAccumulator += time; cameraAccumulator += time; - audioAccumulator += time; if( imageCheckAccumulator > imageCheckPeriod ) { imageCheckAccumulator -= imageCheckPeriod; @@ -255,10 +254,6 @@ namespace ClassicalSharp { Camera.Tick( cameraPeriod ); cameraAccumulator -= cameraPeriod; } - while( audioAccumulator >= audioPeriod ) { - AudioPlayer.Tick( audioPeriod ); - audioAccumulator -= audioPeriod; - } if( ticksThisFrame > ticksFrequency / 3 ) Utils.LogDebug( "Falling behind (did {0} ticks this frame)", ticksThisFrame ); diff --git a/ClassicalSharp/Map/Map.cs b/ClassicalSharp/Map/Map.cs index 30c97b18d..b3e3610c3 100644 --- a/ClassicalSharp/Map/Map.cs +++ b/ClassicalSharp/Map/Map.cs @@ -89,7 +89,7 @@ namespace ClassicalSharp { FogCol = DefaultFogColour; CloudsCol = DefaultCloudsColour; Weather = Weather.Sunny; - game.Events.RaiseOnNewMap(); + game.MapEvents.RaiseOnNewMap(); } void ResetLight() { @@ -110,7 +110,7 @@ namespace ClassicalSharp { block = Block.Bedrock; } SidesBlock = block; - game.Events.RaiseEnvVariableChanged( EnvVar.SidesBlock ); + game.MapEvents.RaiseEnvVariableChanged( EnvVar.SidesBlock ); } /// Sets the edge block to the given block, and raises the @@ -122,7 +122,7 @@ namespace ClassicalSharp { block = Block.StillWater; } EdgeBlock = block; - game.Events.RaiseEnvVariableChanged( EnvVar.EdgeBlock ); + game.MapEvents.RaiseEnvVariableChanged( EnvVar.EdgeBlock ); } /// Sets the height of the clouds in world space, and raises the @@ -157,7 +157,7 @@ namespace ClassicalSharp { Set( col, ref Sunlight, EnvVar.SunlightColour ); FastColour.GetShaded( Sunlight, ref SunlightXSide, ref SunlightZSide, ref SunlightYBottom ); - game.Events.RaiseEnvVariableChanged( EnvVar.SunlightColour ); + game.MapEvents.RaiseEnvVariableChanged( EnvVar.SunlightColour ); } /// Sets the current shadowlight colour, and raises the @@ -168,7 +168,7 @@ namespace ClassicalSharp { Set( col, ref Shadowlight, EnvVar.ShadowlightColour ); FastColour.GetShaded( Shadowlight, ref ShadowlightXSide, ref ShadowlightZSide, ref ShadowlightYBottom ); - game.Events.RaiseEnvVariableChanged( EnvVar.ShadowlightColour ); + game.MapEvents.RaiseEnvVariableChanged( EnvVar.ShadowlightColour ); } /// Sets the current weather, and raises the @@ -176,13 +176,13 @@ namespace ClassicalSharp { public void SetWeather( Weather weather ) { if( weather == Weather ) return; Weather = weather; - game.Events.RaiseEnvVariableChanged( EnvVar.Weather ); + game.MapEvents.RaiseEnvVariableChanged( EnvVar.Weather ); } void Set( T value, ref T target, EnvVar var ) where T : IEquatable { if( value.Equals( target ) ) return; target = value; - game.Events.RaiseEnvVariableChanged( var ); + game.MapEvents.RaiseEnvVariableChanged( var ); } /// Updates the underlying block array, heightmap, and dimensions of this map. diff --git a/ClassicalSharp/Network/Enums.cs b/ClassicalSharp/Network/Enums.cs index e3f8e4be7..4f2202730 100644 --- a/ClassicalSharp/Network/Enums.cs +++ b/ClassicalSharp/Network/Enums.cs @@ -57,11 +57,13 @@ namespace ClassicalSharp { } public enum CpeBlockFace { - XMax, - XMin, - YMax, - YMin, - ZMax, - ZMin, + XMax, XMin, YMax, + YMin, ZMax, ZMin, + } + + public enum Weather { + Sunny, + Rainy, + Snowy, } } diff --git a/ClassicalSharp/Network/NetworkProcessor.CPE.cs b/ClassicalSharp/Network/NetworkProcessor.CPE.cs index ebdb70845..8d03079e9 100644 --- a/ClassicalSharp/Network/NetworkProcessor.CPE.cs +++ b/ClassicalSharp/Network/NetworkProcessor.CPE.cs @@ -190,10 +190,10 @@ namespace ClassicalSharp { // Only redraw the CPE player list info if something changed. if( info.PlayerName != oldInfo.PlayerName || info.ListName != oldInfo.ListName || info.GroupName != oldInfo.GroupName || info.GroupRank != oldInfo.GroupRank ) { - game.Events.RaiseCpeListInfoChanged( (byte)nameId ); + game.EntityEvents.RaiseCpeListInfoChanged( (byte)nameId ); } } else { - game.Events.RaiseCpeListInfoAdded( (byte)nameId ); + game.EntityEvents.RaiseCpeListInfoAdded( (byte)nameId ); } } @@ -213,7 +213,7 @@ namespace ClassicalSharp { nameId += 256; if( nameId >= 0 && nameId <= 255 ) { - game.Events.RaiseCpeListInfoRemoved( (byte)nameId ); + game.EntityEvents.RaiseCpeListInfoRemoved( (byte)nameId ); game.CpePlayersList[nameId] = null; } } @@ -370,7 +370,7 @@ namespace ClassicalSharp { float jumpHeight = reader.ReadInt16() / 32f; if( jumpHeight < 0 ) jumpHeight = 1.4f; p.CalculateJumpVelocity( jumpHeight ); - game.Events.RaiseHackPermissionmsChanged(); + game.Events.RaiseHackPermissionsChanged(); } void HandleCpeExtAddEntity2() { diff --git a/ClassicalSharp/Network/NetworkProcessor.Original.cs b/ClassicalSharp/Network/NetworkProcessor.Original.cs index 0c4f9956c..a9f248ef4 100644 --- a/ClassicalSharp/Network/NetworkProcessor.Original.cs +++ b/ClassicalSharp/Network/NetworkProcessor.Original.cs @@ -141,7 +141,7 @@ namespace ClassicalSharp { reader.Remove( 1024 ); byte progress = reader.ReadUInt8(); - game.Events.RaiseMapLoading( progress ); + game.MapEvents.RaiseMapLoading( progress ); } void HandleLevelFinalise() { @@ -158,7 +158,7 @@ namespace ClassicalSharp { double loadingMs = ( DateTime.UtcNow - receiveStart ).TotalMilliseconds; Utils.LogDebug( "map loading took:" + loadingMs ); game.Map.SetData( map, mapWidth, mapHeight, mapLength ); - game.Events.RaiseOnNewMapLoaded(); + game.MapEvents.RaiseOnNewMapLoaded(); map = null; gzipStream.Dispose(); @@ -267,12 +267,12 @@ namespace ClassicalSharp { if( entityId != 0xFF ) { Player oldPlayer = game.Players[entityId]; if( oldPlayer != null ) { - game.Events.RaiseEntityRemoved( entityId ); + game.EntityEvents.RaiseEntityRemoved( entityId ); oldPlayer.Despawn(); } game.Players[entityId] = new NetPlayer( displayName, skinName, game, entityId ); string identifier = game.Players[entityId].SkinIdentifier; - game.Events.RaiseEntityAdded( entityId ); + game.EntityEvents.RaiseEntityAdded( entityId ); game.AsyncDownloader.DownloadSkin( identifier, skinName ); } else { game.LocalPlayer.SkinName = skinName; @@ -291,13 +291,13 @@ namespace ClassicalSharp { if( player == null ) return; if( entityId != 0xFF ) { - game.Events.RaiseEntityRemoved( entityId ); + game.EntityEvents.RaiseEntityRemoved( entityId ); player.Despawn(); game.Players[entityId] = null; } // See comment about LegendCraft in HandleAddEntity if( needRemoveNames != null && needRemoveNames[entityId] ) { - game.Events.RaiseCpeListInfoRemoved( entityId ); + game.EntityEvents.RaiseCpeListInfoRemoved( entityId ); game.CpePlayersList[entityId] = null; needRemoveNames[entityId] = false; } diff --git a/ClassicalSharp/Network/NetworkProcessor.cs b/ClassicalSharp/Network/NetworkProcessor.cs index 22678c8d5..7b3f114f7 100644 --- a/ClassicalSharp/Network/NetworkProcessor.cs +++ b/ClassicalSharp/Network/NetworkProcessor.cs @@ -46,7 +46,7 @@ namespace ClassicalSharp { Disconnected = false; receivedFirstPosition = false; lastPacket = DateTime.UtcNow; - game.Events.OnNewMap += OnNewMap; + game.MapEvents.OnNewMap += OnNewMap; MakeLoginPacket( game.Username, game.Mppass ); SendPacket(); @@ -54,7 +54,7 @@ namespace ClassicalSharp { } public override void Dispose() { - game.Events.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMap -= OnNewMap; socket.Close(); Disconnected = true; } @@ -217,7 +217,7 @@ namespace ClassicalSharp { // wipe all existing entity states for( int i = 0; i < 256; i++ ) { if( game.CpePlayersList[i] != null ) { - game.Events.RaiseCpeListInfoRemoved( (byte)i ); + game.EntityEvents.RaiseCpeListInfoRemoved( (byte)i ); game.CpePlayersList[i] = null; } RemoveEntity( (byte)i ); diff --git a/ClassicalSharp/Rendering/EnvRenderer.cs b/ClassicalSharp/Rendering/EnvRenderer.cs index fa2e4cf77..e599bd832 100644 --- a/ClassicalSharp/Rendering/EnvRenderer.cs +++ b/ClassicalSharp/Rendering/EnvRenderer.cs @@ -11,9 +11,9 @@ namespace ClassicalSharp.Renderers { public virtual void Init() { graphics = game.Graphics; - game.Events.OnNewMap += OnNewMap; - game.Events.OnNewMapLoaded += OnNewMapLoaded; - game.Events.EnvVariableChanged += EnvVariableChanged; + game.MapEvents.OnNewMap += OnNewMap; + game.MapEvents.OnNewMapLoaded += OnNewMapLoaded; + game.MapEvents.EnvVariableChanged += EnvVariableChanged; } public virtual void OnNewMap( object sender, EventArgs e ) { @@ -23,9 +23,9 @@ namespace ClassicalSharp.Renderers { } public virtual void Dispose() { - game.Events.OnNewMap -= OnNewMap; - game.Events.OnNewMapLoaded -= OnNewMapLoaded; - game.Events.EnvVariableChanged -= EnvVariableChanged; + game.MapEvents.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMapLoaded -= OnNewMapLoaded; + game.MapEvents.EnvVariableChanged -= EnvVariableChanged; } public abstract void Render( double deltaTime ); diff --git a/ClassicalSharp/Rendering/MapBordersRenderer.cs b/ClassicalSharp/Rendering/MapBordersRenderer.cs index 83dd964f9..147b1a3fd 100644 --- a/ClassicalSharp/Rendering/MapBordersRenderer.cs +++ b/ClassicalSharp/Rendering/MapBordersRenderer.cs @@ -29,9 +29,9 @@ namespace ClassicalSharp { } public void Init() { - game.Events.OnNewMap += OnNewMap; - game.Events.OnNewMapLoaded += OnNewMapLoaded; - game.Events.EnvVariableChanged += EnvVariableChanged; + game.MapEvents.OnNewMap += OnNewMap; + game.MapEvents.OnNewMapLoaded += OnNewMapLoaded; + game.MapEvents.EnvVariableChanged += EnvVariableChanged; game.Events.ViewDistanceChanged += ResetSidesAndEdges; game.Events.TerrainAtlasChanged += ResetTextures; @@ -68,9 +68,9 @@ namespace ClassicalSharp { } public void Dispose() { - game.Events.OnNewMap -= OnNewMap; - game.Events.OnNewMapLoaded -= OnNewMapLoaded; - game.Events.EnvVariableChanged -= EnvVariableChanged; + game.MapEvents.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMapLoaded -= OnNewMapLoaded; + game.MapEvents.EnvVariableChanged -= EnvVariableChanged; game.Events.ViewDistanceChanged -= ResetSidesAndEdges; game.Events.TerrainAtlasChanged -= ResetTextures; diff --git a/ClassicalSharp/Rendering/MapRenderer.cs b/ClassicalSharp/Rendering/MapRenderer.cs index 0c63d3b0e..8880379cc 100644 --- a/ClassicalSharp/Rendering/MapRenderer.cs +++ b/ClassicalSharp/Rendering/MapRenderer.cs @@ -48,9 +48,9 @@ namespace ClassicalSharp { info = game.BlockInfo; game.Events.TerrainAtlasChanged += TerrainAtlasChanged; - game.Events.OnNewMap += OnNewMap; - game.Events.OnNewMapLoaded += OnNewMapLoaded; - game.Events.EnvVariableChanged += EnvVariableChanged; + game.MapEvents.OnNewMap += OnNewMap; + game.MapEvents.OnNewMapLoaded += OnNewMapLoaded; + game.MapEvents.EnvVariableChanged += EnvVariableChanged; game.Events.BlockDefinitionChanged += BlockDefinitionChanged; } @@ -59,10 +59,10 @@ namespace ClassicalSharp { chunks = null; unsortedChunks = null; game.Events.TerrainAtlasChanged -= TerrainAtlasChanged; - game.Events.OnNewMap -= OnNewMap; - game.Events.OnNewMapLoaded -= OnNewMapLoaded; - game.Events.EnvVariableChanged -= EnvVariableChanged; - game.Events.BlockDefinitionChanged -= BlockDefinitionChanged; + game.MapEvents.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMapLoaded -= OnNewMapLoaded; + game.MapEvents.EnvVariableChanged -= EnvVariableChanged; + game.MapEvents.BlockDefinitionChanged -= BlockDefinitionChanged; builder.Dispose(); } diff --git a/ClassicalSharp/Rendering/WeatherRenderer.cs b/ClassicalSharp/Rendering/WeatherRenderer.cs index 8f0b31680..053453ef5 100644 --- a/ClassicalSharp/Rendering/WeatherRenderer.cs +++ b/ClassicalSharp/Rendering/WeatherRenderer.cs @@ -111,13 +111,13 @@ namespace ClassicalSharp { } public void Init() { - game.Events.OnNewMap += OnNewMap; - game.Events.OnNewMapLoaded += OnNewMapLoaded; + game.MapEvents.OnNewMap += OnNewMap; + game.MapEvents.OnNewMapLoaded += OnNewMapLoaded; } public void Dispose() { - game.Events.OnNewMap -= OnNewMap; - game.Events.OnNewMapLoaded -= OnNewMapLoaded; + game.MapEvents.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMapLoaded -= OnNewMapLoaded; graphics.DeleteDynamicVb( weatherVb ); } diff --git a/ClassicalSharp/Selections/SelectionManager.cs b/ClassicalSharp/Selections/SelectionManager.cs index 95bd8f755..a545ffd13 100644 --- a/ClassicalSharp/Selections/SelectionManager.cs +++ b/ClassicalSharp/Selections/SelectionManager.cs @@ -15,7 +15,7 @@ namespace ClassicalSharp.Selections { public SelectionManager( Game window ) { game = window; Graphics = window.Graphics; - window.Events.OnNewMap += OnNewMap; + window.MapEvents.OnNewMap += OnNewMap; } List selections = new List( 256 ); @@ -69,7 +69,7 @@ namespace ClassicalSharp.Selections { public void Dispose() { OnNewMap( null, null ); - game.Events.OnNewMap -= OnNewMap; + game.MapEvents.OnNewMap -= OnNewMap; if( lineVb > 0 ) { Graphics.DeleteDynamicVb( vb ); Graphics.DeleteDynamicVb( lineVb ); diff --git a/ClassicalSharp/Singleplayer/Physics.cs b/ClassicalSharp/Singleplayer/Physics.cs index e40e9d0cb..00b0ae37f 100644 --- a/ClassicalSharp/Singleplayer/Physics.cs +++ b/ClassicalSharp/Singleplayer/Physics.cs @@ -26,7 +26,7 @@ namespace ClassicalSharp.Singleplayer { this.game = game; map = game.Map; info = game.BlockInfo; - game.Events.OnNewMapLoaded += ResetMap; + game.MapEvents.OnNewMapLoaded += ResetMap; enabled = Options.GetBool( OptionsKey.SingleplayerPhysics, true ); } @@ -107,7 +107,7 @@ namespace ClassicalSharp.Singleplayer { } public void Dispose() { - game.Events.OnNewMapLoaded -= ResetMap; + game.MapEvents.OnNewMapLoaded -= ResetMap; } #region General diff --git a/ClassicalSharp/Singleplayer/Server.cs b/ClassicalSharp/Singleplayer/Server.cs index 03cd582f4..f05eac4fe 100644 --- a/ClassicalSharp/Singleplayer/Server.cs +++ b/ClassicalSharp/Singleplayer/Server.cs @@ -89,7 +89,7 @@ namespace ClassicalSharp.Singleplayer { generator.Height, generator.Length ); generatedMap = null; - game.Events.RaiseOnNewMapLoaded(); + game.MapEvents.RaiseOnNewMapLoaded(); ResetPlayerPosition(); }