Beispiel #1
0
    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;
    }
Beispiel #2
0
    /// <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);
            }
        }
    }
Beispiel #3
0
    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;
    }
Beispiel #4
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();
    }