private static void ForceDrawTrain(object _sender,
                                    RenderedWorldEventArgs e)
 {
     if (Game1.currentLocation is Railroad rr && rr.train.Value != null)
     {
         rr.train.Value.draw(e.SpriteBatch);
     }
 public void DrawHighlightedObjects(object sender, RenderedWorldEventArgs e)
 {
     foreach (var toDraw in highlights)
     {
         DrawObject(e.SpriteBatch, toDraw.Key, toDraw.Value);
     }
 }
Example #3
0
 private void RenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (TrackedMachines.ContainsKey(Game1.currentLocation))
     {
         foreach (Vector2 tile in TrackedMachines[Game1.currentLocation])
         {
             Object obj = Game1.currentLocation.getObjectAtTile((int) tile.X, (int) tile.Y);
             Color color = determineColor(obj);
             if (color != Color.White)
             {
                 float alpha = Math.Min(Math.Max(config.AlphaValue, 0), 1);
                 int x = (int) tile.X;
                 int y = (int) tile.Y;
                 Vector2 vector2 = obj.getScale() * 4f;
                 Vector2 local = Game1.GlobalToLocal(Game1.viewport,
                     new Vector2(x * 64, y * 64 - 64));
                 Rectangle destinationRectangle = new Rectangle(
                     (int) (local.X - vector2.X / 2.0) + (obj.shakeTimer > 0 ? Game1.random.Next(-1, 2) : 0),
                     (int) (local.Y - vector2.Y / 2.0) + (obj.shakeTimer > 0 ? Game1.random.Next(-1, 2) : 0),
                     (int) (64.0 + vector2.X), (int) (128.0 + vector2.Y / 2.0));
                 e.SpriteBatch.Draw(Game1.bigCraftableSpriteSheet, destinationRectangle,
                     new Rectangle?(Object.getSourceRectForBigCraftable(obj.showNextIndex.Value
                         ? obj.ParentSheetIndex + 1
                         : obj.ParentSheetIndex)), color * alpha, 0.0f, Vector2.Zero, SpriteEffects.None,
                     (float) (Math.Max(0.0f, ((y + 1) * 64 - 24) / 10000f) +
                              (obj.ParentSheetIndex == 105 ? 0.00350000010803342 : 0.0) +
                              x * 9.99999974737875E-06));
             }
         }
     }
 }
Example #4
0
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (Game1.currentLocation == null)
            {
                return;
            }

            /*
             * switch (ModEntry.Instance._state)
             * {
             *      case ModEntry.States.Path:
             *      {
             *              if (ModEntry.Instance._schedulePath.Path.Count > 0)
             *              {
             *                      this.DrawSchedulePath(e.SpriteBatch);
             *              }
             *      }
             *      break;
             * }
             */
            // Fade out background
            if (_xTranslateScale > 0f)
            {
                e.SpriteBatch.Draw(
                    texture: Game1.fadeToBlackRect,
                    destinationRectangle: Game1.graphics.GraphicsDevice.Viewport.GetTitleSafeArea(),
                    color: BackgroundColour * _xTranslateScale);
            }
        }
Example #5
0
 private void OnRenderWorld(object sender, RenderedWorldEventArgs e)
 {
     if (Context.IsPlayerFree && this.Config.WigglyArms)
     {
         this.WigglyArmsRenderer.Render(e.SpriteBatch);
     }
 }
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!Context.IsWorldReady)
            {
                return;
            }

            if (Game1.currentLocation.IsOutdoors)
            {
                Conditions.DrawWeathers();
            }

            if (Game1.isRaining && Game1.currentLocation.IsOutdoors && (Game1.currentLocation is Summit) && !SummitRebornLoaded &&
                (!Game1.eventUp || Game1.currentLocation.isTileOnMap(new Vector2((float)(Game1.viewport.X / Game1.tileSize), (float)(Game1.viewport.Y / Game1.tileSize)))))
            {
                for (int index = 0; index < Game1.rainDrops.Length; ++index)
                {
                    Game1.spriteBatch.Draw(Game1.rainTexture, Game1.rainDrops[index].position, new Microsoft.Xna.Framework.Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.rainTexture, Game1.rainDrops[index].frame, -1, -1)), Color.White);
                }

                if (WeatherOpt.ShowSummitClouds)
                {
                    int num2 = -61 * GetPixelZoom();
                    while (num2 < Game1.viewport.Width + 61 * GetPixelZoom())
                    {
                        Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2((float)num2 + this.weatherX % (float)(61 * GetPixelZoom()), (float)(-Game1.tileSize / 2)), new Rectangle?(new Rectangle(643, 1142, 61, 53)), Color.DarkSlateGray * 1f, 0.0f, Vector2.Zero, (float)GetPixelZoom(), SpriteEffects.None, 1f);
                        num2 += 61 * GetPixelZoom();
                    }
                }
            }
        }
        public static void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (ModEntry.isUnderwater && SwimUtils.IsMapUnderwater(Game1.player.currentLocation.Name))
            {
                if ((ticksUnderwater % 100 / Math.Min(100, Config.BubbleMult)) - bubbleOffset == 0)
                {
                    Game1.playSound("tinyWhip");
                    ModEntry.bubbles.Add(new Vector2(Game1.player.position.X + Game1.random.Next(-24, 25), Game1.player.position.Y - 96));
                    if (ModEntry.bubbles.Count > 100)
                    {
                        ModEntry.bubbles = ModEntry.bubbles.Skip(1).ToList();
                    }
                    bubbleOffset = Game1.random.Next(30 / Math.Min(100, Config.BubbleMult));
                }

                for (int k = 0; k < ModEntry.bubbles.Count; k++)
                {
                    ModEntry.bubbles[k] = new Vector2(ModEntry.bubbles[k].X, ModEntry.bubbles[k].Y - 2);
                }

                foreach (Vector2 v in ModEntry.bubbles)
                {
                    e.SpriteBatch.Draw(bubbleTexture, v + new Vector2((float)Math.Sin(ticksUnderwater / 20f) * 10f - Game1.viewport.X, -Game1.viewport.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(132, 20, 8, 8)), new Color(1, 1, 1, 0.5f), 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.001f);
                }
                ticksUnderwater++;
            }
            else
            {
                ticksUnderwater = 0;
            }
        }
Example #8
0
 private void onRenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (tv != null)
     {
         tv.draw(e.SpriteBatch, 0, 0);
     }
 }
Example #9
0
 private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (highlightTilesMutex.WaitOne(0))
     {
         try {
             foreach (var tuple in highlightTiles)
             {
                 var point = tuple.Item2;
                 var tint  = tuple.Item1;
                 Game1.spriteBatch.Draw(
                     tileTexture,
                     Game1.GlobalToLocal(new Vector2(point.X * Game1.tileSize, point.Y * Game1.tileSize)),
                     null,
                     tint,
                     0.0f,
                     Vector2.Zero,
                     Game1.pixelZoom,
                     SpriteEffects.None,
                     0.01f);
             }
         } finally {
             highlightTilesMutex.ReleaseMutex();
         }
     }
 }
Example #10
0
        private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!QuestFrameworkMod.Instance.Config.ShowNpcQuestIndicators)
            {
                return;
            }

            if (!Context.IsWorldReady || this.ActiveIndicators.Count == 0)
            {
                return;
            }

            if (Game1.player?.currentLocation == null)
            {
                return;
            }

            foreach (NPC npc in Game1.player.currentLocation.characters)
            {
                if (!this.ShouldDrawIndicator(npc))
                {
                    continue;
                }

                float yOffset = 4f * (float)Math.Round(Math.Sin(Game1.currentGameTime.TotalGameTime.TotalMilliseconds / 250.0), 2);
                e.SpriteBatch.Draw(Game1.mouseCursors,
                                   Game1.GlobalToLocal(
                                       Game1.viewport, new Vector2(npc.Position.X + npc.Sprite.SpriteWidth * 2, npc.Position.Y + yOffset - 92)),
                                   new Rectangle(395, 497, 3, 8),
                                   Color.White, 0f,
                                   new Vector2(1f, 4f), 4f + Math.Max(0f, 0.25f - yOffset / 16f),
                                   SpriteEffects.None, 0.6f);
            }
        }
Example #11
0
        /// <summary>Raised after the game world is drawn to the sprite patch, before it's rendered to the screen.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!Context.IsWorldReady)
            {
                return;
            }

            this.Config = this.Helper.ReadConfig <ModConfig>();
            var tint = this.Config.Tint;

            var location     = Game1.currentLocation;
            var visibleTiles = this.GetVisibleTiles();

            foreach (var tile in visibleTiles)
            {
                HoeDirt dirt = GetDirt(location, tile);
                if (dirt?.crop == null)
                {
                    continue;
                }
                var crop    = dirt.crop;
                var watered = dirt.state.Value == HoeDirt.watered;

                if (watered)
                {
                    continue;
                }

                var color = new Color(0, 0, 0, tint);
                crop.draw(e.SpriteBatch, tile, color, 0);
            }
        }
Example #12
0
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (Game1.currentLocation == null)
            {
                return;
            }

            var highlightableObjects = Game1.currentLocation.objects.Values.Where(o =>
                                                                                  ((Config.HighlightJars && (o as StardewValley.Object).parentSheetIndex == 15) ||
                                                                                   (Config.HighlightKegs && (o as StardewValley.Object).parentSheetIndex == 12) ||
                                                                                   (Config.HighlightCasks && (o as StardewValley.Object).parentSheetIndex == 163)) &&
                                                                                  o.minutesUntilReady <= 0 && !o.readyForHarvest
                                                                                  ).ToList();

            foreach (var highlightableObject in highlightableObjects)
            {
                Vector2   local = Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(highlightableObject.TileLocation.X * 64), (float)(Math.Abs(highlightableObject.TileLocation.Y * 64 - 64))));
                Rectangle destinationRectangle = new Rectangle((int)local.X, (int)local.Y - 32, 64, 64);

                switch (Config.HighlightType)
                {
                case "Highlight":
                    e.SpriteBatch.Draw(Game1.bigCraftableSpriteSheet, new Vector2(local.X + 32, local.Y + 32), new Rectangle?(StardewValley.Object.getSourceRectForBigCraftable((int)(NetFieldBase <int, NetInt>)highlightableObject.parentSheetIndex)), Color.Red * 0.50f, 0.0f, new Vector2(8f, 8f), 4f, SpriteEffects.None, (float)((highlightableObject.TileLocation.Y - 1) * 64) / 10000f);
                    break;

                case "Bubble":
                default:
                    e.SpriteBatch.Draw(Game1.emoteSpriteSheet, destinationRectangle, new Rectangle(exclamationEmote * 16 % Game1.emoteSpriteSheet.Width, exclamationEmote * 16 / Game1.emoteSpriteSheet.Width * 16, 16, 16), Color.White * 0.95f, 0.0f, Vector2.Zero, SpriteEffects.None, (float)((highlightableObject.TileLocation.Y - 1) * 64) / 10000f);
                    break;
                }
            }
        }
Example #13
0
        private void OnWorldRendered(object sender, RenderedWorldEventArgs e)
        {
            if (Game1.eventUp || this._currentLocationBoardTriggers?.Value == null)
            {
                return;
            }

            foreach (var boardTrigger in this._currentLocationBoardTriggers.Value)
            {
                if (!ShouldShowIndicator(boardTrigger))
                {
                    continue;
                }

                float yOffset = 4f * (float)Math.Round(Math.Sin(Game1.currentGameTime.TotalGameTime.TotalMilliseconds / 250.0), 2);
                e.SpriteBatch.Draw(Game1.mouseCursors,
                                   Game1.GlobalToLocal(
                                       Game1.viewport,
                                       new Vector2(
                                           x: boardTrigger.Tile.X * 64 + 8 + boardTrigger.IndicatorOffset.X,
                                           y: (boardTrigger.Tile.Y * 64) + yOffset - 32 + boardTrigger.IndicatorOffset.Y)),
                                   new Rectangle(395, 497, 3, 8),
                                   Color.White, 0f,
                                   new Vector2(1f, 4f), 4f + Math.Max(0f, 0.25f - yOffset / 16f),
                                   SpriteEffects.None, 1f);
            }
        }
Example #14
0
 private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (!Context.IsWorldReady)
     {
         return;
     }
     if (_ladderStones.Count > 0)
     {
         foreach (var obj in _ladderStones)
         {
             var rect = obj.BoundingBox;
             rect.Offset(-Game1.viewport.X, -Game1.viewport.Y);
             var rectColor = (_config.HighlightUsesStoneTint ? obj.Tint : _config.HighlightRectangleRGBA) * Convert.ToSingle(_config.HighlightAlpha);
             if (_config.HighlightTypes.Contains(HighlightType.Rectangle))
             {
                 DrawRectangle(rect, rectColor);
             }
             var imageColor = (_config.HighlightUsesStoneTint ? obj.Tint : Color.Black) * Convert.ToSingle(_config.HighlightAlpha);
             if (_config.HighlightTypes.Contains(HighlightType.Image))
             {
                 DrawImage(rect, imageColor, obj.SpriteIndex, obj.Flipped);
             }
             if (_config.HighlightTypes.Contains(HighlightType.Sprite))
             {
                 DrawSprite(rect, imageColor, obj.SpriteIndex, obj.Flipped);
             }
         }
     }
 }
Example #15
0
 /// <summary>Raised after the game world is drawn to the sprite patch, before it's rendered to the screen. Content drawn to the sprite batch at this point will be drawn over the world, but under any active menu, HUD elements, or cursor.</summary>
 /// <param name="sender">The event sender.</param>
 /// <param name="e">The event arguments.</param>
 private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (!Context.IsWorldReady)
     {
         return;
     }
     this.displayManager.Draw(e.SpriteBatch);
 }
Example #16
0
        /// <inheritdoc cref="IDisplayEvents.RenderedWorld"/>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event data.</param>
        private void OnRenderedWorld(object?sender, RenderedWorldEventArgs e)
        {
            if (Context.ScreenId != this.ScreenId)
            {
                return;
            }

            this.DrawWorld(e.SpriteBatch);
        }
        public static void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!Config.EnableMod || !ModEntry.modActive)
            {
                return;
            }

            if (Game1.activeClickableMenu != null)
            {
                ModEntry.modActive = false;
                return;
            }

            Vector2 mouseTile    = Game1.currentCursorTile;
            Vector2 mouseTilePos = mouseTile * Game1.tileSize - new Vector2(Game1.viewport.X, Game1.viewport.Y);

            if (ModEntry.copiedTileLoc.X > -1)
            {
                foreach (var kvp in ModEntry.currentTileDict)
                {
                    int   offset     = kvp.Key.Equals("Front") ? (16 * Game1.pixelZoom) : 0;
                    float layerDepth = (ModEntry.copiedTileLoc.Y * (16 * Game1.pixelZoom) + 16 * Game1.pixelZoom + offset) / 10000f;
                    Tile  tile       = kvp.Value;
                    if (tile == null)
                    {
                        continue;
                    }

                    var       xRect           = tile.TileSheet.GetTileImageBounds(tile.TileIndex);
                    Rectangle sourceRectangle = new Rectangle(xRect.X, xRect.Y, xRect.Width, xRect.Height);

                    Texture2D texture2D = null;
                    try
                    {
                        Helper.Reflection.GetField <Dictionary <TileSheet, Texture2D> >(Game1.mapDisplayDevice, "m_tileSheetTextures", true)?.GetValue()?.TryGetValue(tile.TileSheet, out texture2D);
                    }
                    catch
                    {
                        Helper.Reflection.GetField <Dictionary <TileSheet, Texture2D> >(Game1.mapDisplayDevice, "m_tileSheetTextures2", false)?.GetValue()?.TryGetValue(tile.TileSheet, out texture2D);
                    }
                    if (texture2D != null)
                    {
                        e.SpriteBatch.Draw(texture2D, mouseTilePos, sourceRectangle, Color.White, 0f, Vector2.Zero, Layer.zoom, SpriteEffects.None, layerDepth);
                    }
                }
                e.SpriteBatch.Draw(ModEntry.copiedTexture, mouseTilePos, Color.White);
            }
            else if (MapActions.MapHasTile(mouseTile))
            {
                e.SpriteBatch.Draw(ModEntry.existsTexture, mouseTilePos, Color.White);
            }
            else
            {
                e.SpriteBatch.Draw(ModEntry.activeTexture, mouseTilePos, Color.White);
            }
        }
Example #18
0
        /// <summary>Raised after the base world has been drawn before HUD elements.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event data.</param>
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            // ignore if player hasn't loaded a save yet
            if (!Context.IsWorldReady)
            {
                return;
            }

            animationCancelHelper?.Draw(e.SpriteBatch);
        }
Example #19
0
        /// <summary>
        ///     The event called after the game draws the world to the screen.
        /// </summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            // Ignore if player hasn't loaded a save yet.
            if (!Context.IsWorldReady)
            {
                return;
            }

            this.pathFindingManager.DrawPathTarget(Game1.spriteBatch);
        }
        public void DrawTick(object sender, RenderedWorldEventArgs e)
        {
            bool inCave = Game1.currentLocation is MineShaft || Game1.currentLocation is FarmCave;

            if (_showMessage)
            {
                //DrawTextBox(5, inCave ? 100 : 5, Game1.smallFont, fishName);
                DrawTextBox(5, (Game1.viewport.Height - 200), Game1.dialogueFont, _fishingMsg);
            }
        }
Example #21
0
        /// <summary>The event called after the game draws the world to the screen.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            // Ignore if player hasn't loaded a save yet.
            if (!Context.IsWorldReady)
            {
                return;
            }

            ClickToMoveManager.DrawClickToMoveTarget(Game1.spriteBatch);
        }
Example #22
0
 private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
 {
     if (!Config.EnableMod || !Config.ShowWateredTilesLabelOnGrid || !utilityGridAPI.ShowingWaterGrid() || !wateringTileDict.ContainsKey(Game1.currentLocation.Name))
     {
         return;
     }
     foreach (var tile in wateringTileDict[Game1.currentLocation.Name])
     {
         e.SpriteBatch.Draw(dropTexture, Game1.GlobalToLocal(Game1.viewport, tile * 64), Color.White);
     }
 }
        private void UpdateCurrentMap(object o, RenderedWorldEventArgs world)
        {
            string newMap = Game1.player.currentLocation.Name;

            if (newMap == String.Empty)
            {
                newMap = "Unnamed Map";
            }

            _currentMapName = newMap;
        }
Example #24
0
 private void OnRenderedWorld(object o, RenderedWorldEventArgs e)
 {
     foreach (Farmer f in Game1.currentLocation.farmers)
     {
         if (f.isWearingRing(M.Config.Index))
         {
             Point center = f.GetBoundingBox().Center;
             e.SpriteBatch.Draw(EffectTexture, new Rectangle(center.X - M.Config.Range - Game1.viewport.X, center.Y - M.Config.Range - Game1.viewport.Y, M.Config.Range * 2, M.Config.Range * 2), Color.White);
         }
     }
 }
Example #25
0
        /// <summary>Raised after drawing the world to the sprite batch, but before it's rendered to the screen.
        /// This method draws the fence display life overlay and tooltip.
        /// </summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private void Display_OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (MyHelper.Input.IsDown(Config.FenceLifeKeybind))
            {
                GameLocation location = Game1.currentLocation;
                if (location != null)
                {
                    Vector2 view = new Vector2(Game1.viewport.X, Game1.viewport.Y);
                    Vector2 tile = new Vector2(0, 0);

                    StardewValley.Object obj;

                    Rectangle visibleArea = GetVisibleAreaInTiles(1);
                    for (int x = visibleArea.X; x < visibleArea.X + visibleArea.Width; x++)
                    {
                        tile.X = x;
                        for (int y = visibleArea.Y; y < visibleArea.Y + visibleArea.Height; y++)
                        {
                            tile.Y = y;
                            if (location.Objects.TryGetValue(tile, out obj) && (obj is StardewValley.Fence fence1))
                            {
                                Color color    = Color.Green;
                                int   daysLeft = (int)(fence1.health.Value * 1440f / 60 / 24);
                                if (daysLeft <= 28)
                                {
                                    color = Color.Red;
                                }
                                else if (daysLeft <= 56)
                                {
                                    color = Color.Yellow;
                                }

                                Vector2 pixelPosition = tile * Game1.tileSize - view;
                                e.SpriteBatch.Draw(Texture,
                                                   new Rectangle((int)pixelPosition.X, (int)pixelPosition.Y, Game1.tileSize, Game1.tileSize),
                                                   color * 0.3f);
                            }
                        }
                    }

                    tile = Game1.currentCursorTile;
                    if (location.Objects.TryGetValue(tile, out obj) && (obj is StardewValley.Fence fence2))
                    {
                        int daysLeft = (int)(fence2.health.Value * 1440f / 60 / 24);

                        IClickableMenu.drawHoverText(e.SpriteBatch,
                                                     MyHelper.Translation.Get("hover.tooltip", new { daysLeft = daysLeft.ToString() }),
                                                     Game1.smallFont,
                                                     0, 0);
                    }
                }
            }
        }
Example #26
0
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (this.weapon != null && this.weaponSwingCooldown > this.SwingThreshold)
            {
                int frames       = this.weapon.type.Value == 3 ? 4 : 7;
                int duration     = this.CooldownTimeout - this.SwingThreshold;
                int tick         = Math.Abs(this.weaponSwingCooldown - this.CooldownTimeout);
                int currentFrame = this.CurrentFrame(tick, duration, frames);

                Helper.DrawDuringUse(currentFrame, this.follower.FacingDirection, e.SpriteBatch, this.follower.getLocalPosition(Game1.viewport), this.follower, MeleeWeapon.getSourceRect(this.weapon.InitialParentTileIndex), this.weapon.type.Value, this.weapon.isOnSpecial);
            }
        }
        private void Display_RenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!Context.IsWorldReady)
            {
                return;
            }

            if (Game1.currentLocation.IsOutdoors)
            {
                OurFog.DrawWeather();
                OurBlizzard.DrawWeather();
            }
        }
Example #28
0
        /// <summary>The event called after the game draws the world to the screen.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!this.IsEnabled)
            {
                return;
            }

            // render debug radius
            if (this.Config.HighlightRadius && Context.IsWorldReady && Game1.activeClickableMenu == null && this.TractorManager?.IsCurrentPlayerRiding == true)
            {
                this.TractorManager.DrawRadius(Game1.spriteBatch);
            }
        }
Example #29
0
        internal static void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            if (!Context.IsWorldReady || Game1.mine == null || !(Game1.player.CurrentTool is StardewValley.Tools.Pickaxe))
            {
                return;
            }

            foreach (var item in LadderStones)
            {
                Rectangle rect = new Rectangle((int)(item.X * Game1.tileSize - Game1.viewport.X),
                                               (int)(item.Y * Game1.tileSize - Game1.viewport.Y), Game1.tileSize, Game1.tileSize);
                DrawRectangle(rect, Color.Coral);
            }
        }
Example #30
0
        private static void OnRenderedWorld(object sender, RenderedWorldEventArgs e)
        {
            Farmer player = Game1.player;

            if (!FishingEnding || player.CurrentTool == null || !(player.CurrentTool is FishingRod rod))
            {
                return;
            }

            if (Practicing)
            {
                FishingEnding = false;
                Practicing    = false;

                Bobber.scale   = 0.0f;
                Bobber.fadeOut = false;

                Game1.player.completelyStopAnimatingOrDoingAction();
                Game1.exitActiveMenu();
            }
            else if (rod.fishCaught) // fish, seaweed, trash
            {
                CatchInfo.RedrawFishQualitySize(e.SpriteBatch, rod);
            }
            else if (!player.UsingTool) // including missed fish
            {
                FishingEnding = false;
                if (Config.DisableFishingAdjust)
                {
                    return;
                }

                // apply lasting bait/tackle : Only once per catch.
                if (rod.attachments[0] != null && rod.attachments[0].Stack <rod.attachments[0].maximumStackSize() &&
                                                                            Game1.random.NextDouble()> LossRatio(Config.LastingBait))
                {
                    rod.attachments[0].Stack++;
                }

                if (rod.attachments[1] != null && rod.attachments[1].uses.Value > 0 &&
                    Game1.random.NextDouble() > LossRatio(Config.LastingTackle))
                {
                    rod.attachments[1].uses.Value--;
                    rod.attachments[1].scale.Y = ((float)rod.attachments[1].uses.Value) / FishingRod.maxTackleUses;
                }
            }

            Bobber = null;
        }