Changes

Jump to navigation Jump to search
remove {{SMAPI upcoming|4.0.0}}
Line 17: Line 17:  
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
/// <summary>The main entry point for the mod.</summary>
 
/// <summary>The main entry point for the mod.</summary>
public class ModEntry : Mod
+
internal sealed class ModEntry : Mod
 
{
 
{
 
     /**********
 
     /**********
Line 33: Line 33:  
     /// <param name="sender">The event sender.</param>
 
     /// <param name="sender">The event sender.</param>
 
     /// <param name="e">The event arguments.</param>
 
     /// <param name="e">The event arguments.</param>
     private void OnDayStarted(object sender, DayStartedEventArgs e)
+
     private void OnDayStarted(object? sender, DayStartedEventArgs e)
 
     {
 
     {
       this.Monitor.Log("A new day dawns!");
+
       this.Monitor.Log("A new day dawns!", LogLevel.Info);
 
     }
 
     }
 
}
 
}
Line 41: Line 41:     
Tip: you don't need to memorise the method arguments. In Visual Studio, type <code>helper.Events.GameLoop.SaveLoaded +=</code> and press {{key|TAB}} to auto-create a method. (There doesn't seem to be an equivalent feature in MonoDevelop.)
 
Tip: you don't need to memorise the method arguments. In Visual Studio, type <code>helper.Events.GameLoop.SaveLoaded +=</code> and press {{key|TAB}} to auto-create a method. (There doesn't seem to be an equivalent feature in MonoDevelop.)
 +
 +
<samp>sender</samp> is part of the C# event pattern, and is unused by SMAPI.
    
===How do events fit into the game?===
 
===How do events fit into the game?===
Line 279: Line 281:  
  |arg type 2 = <samp>Point</samp>
 
  |arg type 2 = <samp>Point</samp>
 
  |arg desc 2 = The new window width (<samp>e.NewSize.X</samp>) and height (<samp>e.NewSize.Y</samp>).
 
  |arg desc 2 = The new window width (<samp>e.NewSize.X</samp>) and height (<samp>e.NewSize.Y</samp>).
 +
}}
 +
{{/event
 +
|group = Display
 +
|name  = RenderingStep
 +
|desc  = ''(Specialized)'' Raised before the game draws a specific step in the rendering cycle. This gives more granular control over render logic, but is more vulnerable to changes in game updates. Consider using one of the other render events if possible.
 +
 +
|arg name 1 = <samp>e.SpriteBatch</samp>
 +
|arg type 1 = <samp>SpriteBatch</samp>
 +
|arg desc 1 = The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.
 +
 +
|arg name 2 = <samp>e.Step</samp>
 +
|arg type 2 = <samp>RenderSteps</samp>
 +
|arg desc 2 = The step being rendered in the draw cycle.
 +
}}
 +
{{/event
 +
|group = Display
 +
|name  = RenderedStep
 +
|desc  = ''(Specialized)'' Raised after the game draws a specific step in the rendering cycle.  This gives more granular control over render logic, but is more vulnerable to changes in game updates. Consider using one of the other render events if possible.
 +
 +
|arg name 1 = <samp>e.SpriteBatch</samp>
 +
|arg type 1 = <samp>SpriteBatch</samp>
 +
|arg desc 1 = The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.
 +
 +
|arg name 2 = <samp>e.Step</samp>
 +
|arg type 2 = <samp>RenderSteps</samp>
 +
|arg desc 2 = The step being rendered in the draw cycle.
 
}}
 
}}
 
|}
 
|}
Line 868: Line 896:  
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
/// <summary>The main entry point for the mod.</summary>
 
/// <summary>The main entry point for the mod.</summary>
public class ModEntry : Mod
+
internal sealed class ModEntry : Mod
 
{
 
{
 
     /*********
 
     /*********
Line 911: Line 939:  
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
/// <summary>The main entry point for the mod.</summary>
 
/// <summary>The main entry point for the mod.</summary>
public class ModEntry : Mod
+
internal sealed class ModEntry : Mod
 
{
 
{
 
     /*********
 
     /*********
translators
8,446

edits

Navigation menu