using System; using ClassicalSharp.GraphicsAPI; namespace ClassicalSharp.Renderers { public abstract class EnvRenderer : IDisposable { protected Map map; protected Game game; protected IGraphicsApi graphics; public virtual void Init() { graphics = game.Graphics; game.Events.OnNewMap += OnNewMap; game.Events.OnNewMapLoaded += OnNewMapLoaded; game.Events.EnvVariableChanged += EnvVariableChanged; } public virtual void OnNewMap( object sender, EventArgs e ) { } public virtual void OnNewMapLoaded( object sender, EventArgs e ) { } public virtual void Dispose() { game.Events.OnNewMap -= OnNewMap; game.Events.OnNewMapLoaded -= OnNewMapLoaded; game.Events.EnvVariableChanged -= EnvVariableChanged; } public abstract void Render( double deltaTime ); void EnvVariableChanged( object sender, EnvVariableEventArgs e ) { if( e.Var == EnvVariable.SkyColour ) { SkyColourChanged(); } else if( e.Var == EnvVariable.FogColour ) { FogColourChanged(); } else if( e.Var == EnvVariable.CloudsColour ) { CloudsColourChanged(); } } protected abstract void SkyColourChanged(); protected abstract void FogColourChanged(); protected abstract void CloudsColourChanged(); } }