Skip to content

Commit

Permalink
Updates
Browse files Browse the repository at this point in the history
- DNT now updated to take into affect Moon Manifest
- Happy Fish Jump to accommodate a issue with duplicate keys
- SN moving to GMCM 1.8
  • Loading branch information
Sakorona committed Jan 11, 2022
1 parent 1f3f5b5 commit 7648d7b
Show file tree
Hide file tree
Showing 14 changed files with 222 additions and 63 deletions.
4 changes: 4 additions & 0 deletions DynamicNightTime/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
## Changelog

### 1.3.9
- No longer runs DNT in areas installed by SpaceChase0's Moon Misadventures Mod

### 1.3.8
- Island set to 30 degrees south (or north) of the valley. This difference is customizable
- Fixes 1.5 issue introduced by parallax calculations assuming only sunset changes on the hour
Expand Down
5 changes: 5 additions & 0 deletions DynamicNightTime/Patches/GameClockPatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ class GameClockPatch
{
public static void Postfix()
{
//moon mod compatiblity - do not run DNT in Moon Areas.
if (Game1.currentLocation.Name.Contains("Moon"))
return;


SDVTime sunriseSTime = DynamicNightTime.GetSunrise();
//sunriseSTime.AddTime(-10);
int sunriseTime = sunriseSTime.ReturnIntTime();
Expand Down
2 changes: 1 addition & 1 deletion DynamicNightTime/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Name": "Dynamic Night Time",
"Author": "Sakorona",
"Version": "1.3.8",
"Version": "1.3.9",
"Description": "Dynamic Night Time",
"UniqueID": "knakamura.dynamicnighttime",
"EntryDll": "DynamicNightTime.dll",
Expand Down
5 changes: 4 additions & 1 deletion HappyFishJump/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Ver 1.1.13
#Ver 1.1.14
- Fixes bug with entries being accidentally added twice

# Ver 1.1.13
- Code fixed, now working with SDV 1.5.6

# Ver 1.1.2
Expand Down
2 changes: 1 addition & 1 deletion HappyFishJump/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Name": "Happy Fish Jump",
"Author": "Sakorona",
"Version": "1.1.13",
"Version": "1.1.14-beta.1",
"Description": "Fish will periodically jump while you're around the farm",
"UniqueID": "KoihimeNakamura.HappyFishJump",
"EntryDll": "HappyFishJump.dll",
Expand Down
2 changes: 1 addition & 1 deletion StardewNotification/GeneralNotification.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public static void CheckForSpringOnions(ITranslationHelper Trans)
count++;
}

if (count > 0 && StardewNotification.Config.ShowSpringOnionCount)
if (count > 0)
{
Util.ShowMessage(Trans.Get("springOnion", new { count}));
}
Expand Down
28 changes: 0 additions & 28 deletions StardewNotification/Integrations/GenericModConfigMenuAPI.cs

This file was deleted.

177 changes: 177 additions & 0 deletions StardewNotification/Integrations/IGenericModConfigMenuAPI.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewModdingAPI.Utilities;
using StardewValley;
using System;

namespace StardewNotification.Integrations
{
/// <summary>The API which lets other mods add a config UI through Generic Mod Config Menu.</summary>
public interface IGenericModConfigMenuApi
{
/*********
** Methods
*********/
/****
** Must be called first
****/
/// <summary>Register a mod whose config can be edited through the UI.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="reset">Reset the mod's config to its default values.</param>
/// <param name="save">Save the mod's current config to the <c>config.json</c> file.</param>
/// <param name="titleScreenOnly">Whether the options can only be edited from the title screen.</param>
/// <remarks>Each mod can only be registered once, unless it's deleted via <see cref="Unregister"/> before calling this again.</remarks>
void Register(IManifest mod, Action reset, Action save, bool titleScreenOnly = false);


/****
** Basic options
****/
/// <summary>Add a section title at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="text">The title text shown in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the title, or <c>null</c> to disable the tooltip.</param>
void AddSectionTitle(IManifest mod, Func<string> text, Func<string> tooltip = null);

/// <summary>Add a paragraph of text at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="text">The paragraph text to display.</param>
void AddParagraph(IManifest mod, Func<string> text);

/// <summary>Add an image at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="texture">The image texture to display.</param>
/// <param name="texturePixelArea">The pixel area within the texture to display, or <c>null</c> to show the entire image.</param>
/// <param name="scale">The zoom factor to apply to the image.</param>
void AddImage(IManifest mod, Func<Texture2D> texture, Rectangle? texturePixelArea = null, int scale = Game1.pixelZoom);

/// <summary>Add a boolean option at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddBoolOption(IManifest mod, Func<bool> getValue, Action<bool> setValue, Func<string> name, Func<string> tooltip = null, string fieldId = null);

/// <summary>Add an integer option at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="min">The minimum allowed value, or <c>null</c> to allow any.</param>
/// <param name="max">The maximum allowed value, or <c>null</c> to allow any.</param>
/// <param name="interval">The interval of values that can be selected.</param>
/// <param name="formatValue">Get the display text to show for a value, or <c>null</c> to show the number as-is.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddNumberOption(IManifest mod, Func<int> getValue, Action<int> setValue, Func<string> name, Func<string> tooltip = null, int? min = null, int? max = null, int? interval = null, Func<int, string> formatValue = null, string fieldId = null);

/// <summary>Add a float option at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="min">The minimum allowed value, or <c>null</c> to allow any.</param>
/// <param name="max">The maximum allowed value, or <c>null</c> to allow any.</param>
/// <param name="interval">The interval of values that can be selected.</param>
/// <param name="formatValue">Get the display text to show for a value, or <c>null</c> to show the number as-is.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddNumberOption(IManifest mod, Func<float> getValue, Action<float> setValue, Func<string> name, Func<string> tooltip = null, float? min = null, float? max = null, float? interval = null, Func<float, string> formatValue = null, string fieldId = null);

/// <summary>Add a string option at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="allowedValues">The values that can be selected, or <c>null</c> to allow any.</param>
/// <param name="formatAllowedValue">Get the display text to show for a value from <paramref name="allowedValues"/>, or <c>null</c> to show the values as-is.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddTextOption(IManifest mod, Func<string> getValue, Action<string> setValue, Func<string> name, Func<string> tooltip = null, string[] allowedValues = null, Func<string, string> formatAllowedValue = null, string fieldId = null);

/// <summary>Add a key binding at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddKeybind(IManifest mod, Func<SButton> getValue, Action<SButton> setValue, Func<string> name, Func<string> tooltip = null, string fieldId = null);

/// <summary>Add a key binding list at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="getValue">Get the current value from the mod config.</param>
/// <param name="setValue">Set a new value in the mod config.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
void AddKeybindList(IManifest mod, Func<KeybindList> getValue, Action<KeybindList> setValue, Func<string> name, Func<string> tooltip = null, string fieldId = null);


/****
** Multi-page management
****/
/// <summary>Start a new page in the mod's config UI, or switch to that page if it already exists. All options registered after this will be part of that page.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="pageId">The unique page ID.</param>
/// <param name="pageTitle">The page title shown in its UI, or <c>null</c> to show the <paramref name="pageId"/> value.</param>
/// <remarks>You must also call <see cref="AddPageLink"/> to make the page accessible. This is only needed to set up a multi-page config UI. If you don't call this method, all options will be part of the mod's main config UI instead.</remarks>
void AddPage(IManifest mod, string pageId, Func<string> pageTitle = null);

/// <summary>Add a link to a page added via <see cref="AddPage"/> at the current position in the form.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="pageId">The unique ID of the page to open when the link is clicked.</param>
/// <param name="text">The link text shown in the form.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the link, or <c>null</c> to disable the tooltip.</param>
void AddPageLink(IManifest mod, string pageId, Func<string> text, Func<string> tooltip = null);


/****
** Advanced
****/
/// <summary>Add an option at the current position in the form using custom rendering logic.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="name">The label text to show in the form.</param>
/// <param name="draw">Draw the option in the config UI. This is called with the sprite batch being rendered and the pixel position at which to start drawing.</param>
/// <param name="tooltip">The tooltip text shown when the cursor hovers on the field, or <c>null</c> to disable the tooltip.</param>
/// <param name="beforeMenuOpened">A callback raised just before the menu containing this option is opened.</param>
/// <param name="beforeSave">A callback raised before the form's current values are saved to the config (i.e. before the <c>save</c> callback passed to <see cref="Register"/>).</param>
/// <param name="afterSave">A callback raised after the form's current values are saved to the config (i.e. after the <c>save</c> callback passed to <see cref="Register"/>).</param>
/// <param name="beforeReset">A callback raised before the form is reset to its default values (i.e. before the <c>reset</c> callback passed to <see cref="Register"/>).</param>
/// <param name="afterReset">A callback raised after the form is reset to its default values (i.e. after the <c>reset</c> callback passed to <see cref="Register"/>).</param>
/// <param name="beforeMenuClosed">A callback raised just before the menu containing this option is closed.</param>
/// <param name="height">The pixel height to allocate for the option in the form, or <c>null</c> for a standard input-sized option. This is called and cached each time the form is opened.</param>
/// <param name="fieldId">The unique field ID for use with <see cref="OnFieldChanged"/>, or <c>null</c> to auto-generate a randomized ID.</param>
/// <remarks>The custom logic represented by the callback parameters is responsible for managing its own state if needed. For example, you can store state in a static field or use closures to use a state variable.</remarks>
void AddComplexOption(IManifest mod, Func<string> name, Action<SpriteBatch, Vector2> draw, Func<string> tooltip = null, Action beforeMenuOpened = null, Action beforeSave = null, Action afterSave = null, Action beforeReset = null, Action afterReset = null, Action beforeMenuClosed = null, Func<int> height = null, string fieldId = null);

/// <summary>Set whether the options registered after this point can only be edited from the title screen.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="titleScreenOnly">Whether the options can only be edited from the title screen.</param>
/// <remarks>This lets you have different values per-field. Most mods should just set it once in <see cref="Register"/>.</remarks>
void SetTitleScreenOnlyForNextOptions(IManifest mod, bool titleScreenOnly);

/// <summary>Register a method to notify when any option registered by this mod is edited through the config UI.</summary>
/// <param name="mod">The mod's manifest.</param>
/// <param name="onChange">The method to call with the option's unique field ID and new value.</param>
/// <remarks>Options use a randomized ID by default; you'll likely want to specify the <c>fieldId</c> argument when adding options if you use this.</remarks>
void OnFieldChanged(IManifest mod, Action<string, object> onChange);

/// <summary>Open the config UI for a specific mod.</summary>
/// <param name="mod">The mod's manifest.</param>
void OpenModMenu(IManifest mod);

/// <summary>Get the currently-displayed mod config menu, if any.</summary>
/// <param name="mod">The manifest of the mod whose config menu is being shown, or <c>null</c> if not applicable.</param>
/// <param name="page">The page ID being shown for the current config menu, or <c>null</c> if not applicable. This may be <c>null</c> even if a mod config menu is shown (e.g. because the mod doesn't have pages).</param>
/// <returns>Returns whether a mod config menu is being shown.</returns>
bool TryGetCurrentMenu(out IManifest mod, out string page);

/// <summary>Remove a mod from the config UI and delete all its options and pages.</summary>
/// <param name="mod">The mod's manifest.</param>
void Unregister(IManifest mod);
}
}
Loading

0 comments on commit 7648d7b

Please sign in to comment.