diff options
author | Zoryn Aaron <zoryn4163@gmail.com> | 2016-02-28 22:16:32 -0500 |
---|---|---|
committer | Zoryn Aaron <zoryn4163@gmail.com> | 2016-02-28 22:16:32 -0500 |
commit | 524dc9e002d86e81c1e38827a2303cc83b71eba7 (patch) | |
tree | e0b3762f89b1485ef54bdf05dac9b95fa02493a6 /StardewModdingAPI | |
parent | bade4554d075d5dc2b1d9f81764dbb9bf361ddb3 (diff) | |
download | SMAPI-524dc9e002d86e81c1e38827a2303cc83b71eba7.tar.gz SMAPI-524dc9e002d86e81c1e38827a2303cc83b71eba7.tar.bz2 SMAPI-524dc9e002d86e81c1e38827a2303cc83b71eba7.zip |
expose some private fields for modding
Diffstat (limited to 'StardewModdingAPI')
-rw-r--r-- | StardewModdingAPI/Extensions.cs | 4 | ||||
-rw-r--r-- | StardewModdingAPI/Inheritance/Menus/SBobberBar.cs | 33 | ||||
-rw-r--r-- | StardewModdingAPI/Inheritance/Minigames/SMinigameBase.cs | 38 | ||||
-rw-r--r-- | StardewModdingAPI/Inheritance/SGame.cs (renamed from StardewModdingAPI/SGame.cs) | 11 | ||||
-rw-r--r-- | StardewModdingAPI/Program.cs | 18 | ||||
-rw-r--r-- | StardewModdingAPI/StardewModdingAPI.csproj | 5 |
6 files changed, 105 insertions, 4 deletions
diff --git a/StardewModdingAPI/Extensions.cs b/StardewModdingAPI/Extensions.cs index 0078ebe9..b960f027 100644 --- a/StardewModdingAPI/Extensions.cs +++ b/StardewModdingAPI/Extensions.cs @@ -22,9 +22,9 @@ namespace StardewModdingAPI return new Color(Random.Next(0, 255), Random.Next(0, 255), Random.Next(0, 255)); } - public static string ToSingular(this IEnumerable<Object> enumerable) + public static string ToSingular(this IEnumerable<Object> enumerable, string split = ", ") { - string result = string.Join(", ", enumerable); + string result = string.Join(split, enumerable); return result; } diff --git a/StardewModdingAPI/Inheritance/Menus/SBobberBar.cs b/StardewModdingAPI/Inheritance/Menus/SBobberBar.cs new file mode 100644 index 00000000..9e5f6865 --- /dev/null +++ b/StardewModdingAPI/Inheritance/Menus/SBobberBar.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using StardewValley.Menus; + +namespace StardewModdingAPI.Inheritance.Menus +{ + public class SBobberBar : BobberBar + { + public static FieldInfo[] PrivateFields { get { return GetPrivateFields(); } } + + /// <summary> + /// DO NOT CONSTRUCT THIS CLASS + /// This class ONLY provides functionality to access the base BobberBar class fields. + /// </summary> + /// <param name="whichFish"></param> + /// <param name="fishSize"></param> + /// <param name="treasure"></param> + /// <param name="bobber"></param> + public SBobberBar(int whichFish, float fishSize, bool treasure, int bobber) : base(whichFish, fishSize, treasure, bobber) + { + + } + + public static FieldInfo[] GetPrivateFields() + { + return typeof (BobberBar).GetFields(BindingFlags.Instance | BindingFlags.NonPublic); + } + } +} diff --git a/StardewModdingAPI/Inheritance/Minigames/SMinigameBase.cs b/StardewModdingAPI/Inheritance/Minigames/SMinigameBase.cs new file mode 100644 index 00000000..5ce29d8d --- /dev/null +++ b/StardewModdingAPI/Inheritance/Minigames/SMinigameBase.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; + +namespace StardewModdingAPI.Inheritance.Minigames +{ + abstract class SMinigameBase : StardewValley.Minigames.IMinigame + { + public abstract bool tick(GameTime time); + + public abstract void receiveLeftClick(int x, int y, bool playSound = true); + + public abstract void leftClickHeld(int x, int y); + + public abstract void receiveRightClick(int x, int y, bool playSound = true); + + public abstract void releaseLeftClick(int x, int y); + + public abstract void releaseRightClick(int x, int y); + + public abstract void receiveKeyPress(Keys k); + + public abstract void receiveKeyRelease(Keys k); + + public abstract void draw(SpriteBatch b); + + public abstract void changeScreenSize(); + + public abstract void unload(); + + public abstract void receiveEventPoke(int data); + } +} diff --git a/StardewModdingAPI/SGame.cs b/StardewModdingAPI/Inheritance/SGame.cs index 6af7689a..61a0f390 100644 --- a/StardewModdingAPI/SGame.cs +++ b/StardewModdingAPI/Inheritance/SGame.cs @@ -1,17 +1,26 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; using StardewValley; +using StardewValley.Minigames; -namespace StardewModdingAPI +namespace StardewModdingAPI.Inheritance { public class SGame : Game1 { + public static FieldInfo[] StaticFields { get { return Thing(); } } + + public static FieldInfo[] Thing() + { + return typeof(Game1).GetFields(); + } + public KeyboardState KStateNow { get; private set; } public KeyboardState KStatePrior { get; private set; } diff --git a/StardewModdingAPI/Program.cs b/StardewModdingAPI/Program.cs index 52ea76e8..846050ed 100644 --- a/StardewModdingAPI/Program.cs +++ b/StardewModdingAPI/Program.cs @@ -11,6 +11,7 @@ using System.Windows.Forms; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; +using StardewModdingAPI.Inheritance; using StardewValley; using StardewValley.Menus; using StardewValley.Minigames; @@ -44,6 +45,8 @@ namespace StardewModdingAPI { Console.Title = "Stardew Modding API Console"; + AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); + if (File.Exists(ModPath)) File.Delete(ModPath); if (!Directory.Exists(ModPath)) @@ -62,6 +65,8 @@ namespace StardewModdingAPI LogInfo("Starting SDV..."); gameThread.Start(); + SGame.Thing(); + while (!ready) { @@ -184,7 +189,20 @@ namespace StardewModdingAPI StardewForm.Invoke(a); } + public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) + { + string dllName = args.Name.Contains(',') ? args.Name.Substring(0, args.Name.IndexOf(',')) : args.Name.Replace(".dll", ""); + + dllName = dllName.Replace(".", "_"); + if (dllName.EndsWith("_resources")) return null; + + System.Resources.ResourceManager rm = new System.Resources.ResourceManager(typeof(Program).Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly()); + + byte[] bytes = (byte[])rm.GetObject(dllName); + + return System.Reflection.Assembly.Load(bytes); + } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/StardewModdingAPI/StardewModdingAPI.csproj b/StardewModdingAPI/StardewModdingAPI.csproj index 39e659bf..a6815f26 100644 --- a/StardewModdingAPI/StardewModdingAPI.csproj +++ b/StardewModdingAPI/StardewModdingAPI.csproj @@ -54,6 +54,7 @@ <Reference Include="Stardew Valley, Version=1.0.5900.38427, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Stardew Valley.exe</HintPath> + <EmbedInteropTypes>False</EmbedInteropTypes> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> @@ -68,11 +69,13 @@ <Compile Include="Command.cs" /> <Compile Include="Events.cs" /> <Compile Include="Extensions.cs" /> + <Compile Include="Inheritance\Menus\SBobberBar.cs" /> + <Compile Include="Inheritance\Minigames\SMinigameBase.cs" /> <Compile Include="Mod.cs" /> <Compile Include="ModItem.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="SGame.cs" /> + <Compile Include="Inheritance\SGame.cs" /> </ItemGroup> <ItemGroup> <None Include="App.config" /> |