private void OnSaveLoaded(object?sender, SaveLoadedEventArgs e) { MultiplayerHelpers.AssertMultiplayerVersions(this.Helper.Multiplayer, this.ModManifest, this.Monitor, this.Helper.Translation); this.migrator = new(this.ModManifest, this.Helper, this.Monitor); this.migrator.ReadVersionInfo(); this.Helper.Events.GameLoop.Saved += this.WriteMigrationData; }
/// <inheritdoc /> public void AnimateFertilizer(StardewValley.Object obj, GameLocation loc, Vector2 tile) { if (obj.ParentSheetIndex == ModEntry.FishFoodID || obj.ParentSheetIndex == ModEntry.DeluxeFishFoodID || obj.ParentSheetIndex == ModEntry.DomesticatedFishFoodID) { Vector2 placementtile = (tile * 64f) + new Vector2(32f, 32f); if (obj.ParentSheetIndex == ModEntry.DomesticatedFishFoodID && Game1.currentLocation is BuildableGameLocation buildable) { foreach (Building b in buildable.buildings) { if (b is FishPond pond && b.occupiesTile(tile)) { placementtile = pond.GetCenterTile() * 64f; break; } } } Game1.playSound("throwDownITem"); float deltaY = -140f; float gravity = 0.0025f; float velocity = -0.08f - MathF.Sqrt(2 * 60f * gravity); float time = (MathF.Sqrt((velocity * velocity) - (gravity * deltaY * 2f)) / gravity) - (velocity / gravity); Multiplayer mp = MultiplayerHelpers.GetMultiplayer(); mp.broadcastSprites( Game1.currentLocation, new TemporaryAnimatedSprite( textureName: Game1.objectSpriteSheetName, sourceRect: Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, obj.ParentSheetIndex, 16, 16), position: placementtile + new Vector2(0, deltaY), flipped: false, alphaFade: 0f, color: Color.White) { scale = Game1.pixelZoom, layerDepth = 1f, totalNumberOfLoops = 1, interval = time, acceleration = new Vector2(0f, gravity), motion = new Vector2(0f, velocity), timeBasedMotion = true, }); GameLocationUtils.DrawWaterSplash(Game1.currentLocation, placementtile, mp, (int)time); DelayedAction.playSoundAfterDelay("waterSlosh", (int)time, Game1.player.currentLocation); if (obj.ParentSheetIndex != ModEntry.DomesticatedFishFoodID) { DelayedAction.functionAfterDelay( () => Game1.currentLocation.waterColor.Value = ModEntry.Config.WaterOverlayColor, (int)time); } } }
private void OnSaveLoaded(object?sender, SaveLoadedEventArgs e) { MultiplayerHelpers.AssertMultiplayerVersions(this.Helper.Multiplayer, Globals.Manifest, Globals.ModMonitor, this.Helper.Translation); if (Context.IsSplitScreen && Context.ScreenId != 0) { return; } this.migrator = new(this.ModManifest, this.Helper, this.Monitor); this.migrator.ReadVersionInfo(); Globals.LoadDataFromSave(); this.Helper.Events.GameLoop.Saved += this.WriteMigrationData; }
/// <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(); }