示例#1
0
    /// <summary>
    /// Raised when save is loaded.
    /// </summary>
    /// <param name="sender">Unknown, used by SMAPI.</param>
    /// <param name="e">Parameters.</param>
    /// <remarks>Used to load in this mod's data models.</remarks>
    private void SaveLoaded(object?sender, SaveLoadedEventArgs e)
    {
        this.Monitor.DebugLog("Event SaveLoaded raised");
        DialogueManager.Load(Game1.player.UniqueMultiplayerID);
        MultiplayerHelpers.AssertMultiplayerVersions(this.Helper.Multiplayer, this.ModManifest, this.Monitor, this.Helper.Translation);

        if (Context.IsSplitScreen && Context.ScreenId != 0)
        {
            return;
        }
        this.migrator = new(this.ModManifest, this.Helper, this.Monitor);
        this.migrator.ReadVersionInfo();

        this.Helper.Events.GameLoop.Saved += this.WriteMigrationData;
        RecentSOManager.Load();
    }
示例#2
0
    /// <summary>
    /// Raised right before the game is saved.
    /// </summary>
    /// <param name="sender">Unknown, used by SMAPI.</param>
    /// <param name="e">Event arguments.</param>
    /// <remarks>Used to handle day-end events.</remarks>
    private void Saving(object?sender, SavingEventArgs e)
    {
        this.Monitor.DebugLog("Event Saving raised");

        DialogueManager.Save(); // Save dialogue
        DialogueManager.ClearDelayedDialogue();

        if (Context.IsSplitScreen && Context.ScreenId != 0)
        {// Some properties only make sense for a single player to handle in splitscreen.
            return;
        }

        TagManager.ResetRandom();
        StatsManager.ClearProperties(); // clear property cache, repopulate at next use
        RecentSOManager.GrabNewRecentlyCompletedOrders();
        RecentSOManager.DayUpdate(Game1.stats.daysPlayed);
        RecentSOManager.Save();
    }
示例#3
0
 /// <summary>
 /// Raised every second.
 /// </summary>
 /// <param name="sender">Unknown, used by SMAPI.</param>
 /// <param name="e">OneSecondUpdate params.</param>
 /// <remarks>Currently handles: grabbing new recently completed special orders.</remarks>
 private void OneSecondUpdateTicking(object?sender, OneSecondUpdateTickingEventArgs e)
 {
     RecentSOManager.GrabNewRecentlyCompletedOrders();
 }
示例#4
0
    /// <inheritdoc/>
    public override bool UpdateContext()
    {
        List <string>?recentCompletedSO = RecentSOManager.GetKeys(7u)?.OrderBy(a => a)?.ToList();

        return(this.UpdateCache(recentCompletedSO));
    }