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();
}