Skip to content

Commit

Permalink
Finish A Quality Mod
Browse files Browse the repository at this point in the history
  • Loading branch information
spacechase0 committed Nov 11, 2022
1 parent bed0ea2 commit 60037e3
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 9 deletions.
59 changes: 51 additions & 8 deletions AQualityMod/Mod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@

namespace AQualityMod
{
public interface IApi
{
public bool IsPoorQuality(StardewValley.Object obj);
public bool IsWonderfulQuality(StardewValley.Object obj);
public void MakePoorQuality(StardewValley.Object obj);
public void MakeWonderfulQuality(StardewValley.Object obj);
}

public class Mod : StardewModdingAPI.Mod
{
public static Mod instance;
Expand All @@ -28,16 +36,46 @@ public override void Entry(IModHelper helper)
var harmony = new Harmony(ModManifest.UniqueID);
harmony.PatchAll();
}

public override object GetApi(IModInfo mod)
{
return new Api();
}
}

public class Api : IApi
{
public bool IsPoorQuality(StardewValley.Object obj)
{
return obj.Quality == -2;
}

public bool IsWonderfulQuality(StardewValley.Object obj)
{
return obj.Quality == 6;
}

public void MakePoorQuality(StardewValley.Object obj)
{
obj.Quality = -2;
}

public void MakeWonderfulQuality(StardewValley.Object obj)
{
obj.Quality = 6;
}
}

[HarmonyPatch(typeof(Cask), nameof(Cask.performObjectDropInAction))]
public static class CaskObjectDropInPatch
{
public static IEnumerable<CodeInstruction> Transpile(ILGenerator gen, MethodBase original, IEnumerable<CodeInstruction> insns)
public static IEnumerable<CodeInstruction> Transpiler(ILGenerator gen, MethodBase original, IEnumerable<CodeInstruction> insns)
{
Log.Debug("meth:" + original);
List<CodeInstruction> ret = new();
foreach (var insn in insns)
{
Log.Debug("insn:" + insn);
if (insn.opcode == OpCodes.Ldc_I4_4)
{
insn.opcode = OpCodes.Ldc_I4_6;
Expand All @@ -51,7 +89,7 @@ public static IEnumerable<CodeInstruction> Transpile(ILGenerator gen, MethodBase
[HarmonyPatch(typeof(Cask), nameof(Cask.checkForMaturity))]
public static class CaskCheckMaturityPatch
{
public static IEnumerable<CodeInstruction> Transpile(ILGenerator gen, MethodBase original, IEnumerable<CodeInstruction> insns)
public static IEnumerable<CodeInstruction> Transpiler(ILGenerator gen, MethodBase original, IEnumerable<CodeInstruction> insns)
{
List<CodeInstruction> ret = new();
foreach (var insn in insns)
Expand All @@ -72,6 +110,11 @@ public static class CaskDaysForQualityPatch
public static bool Prefix(int quality, ref float __result)
{
if (quality == 6)
{
__result = 0;
return false;
}
if (quality == 4)
{
__result = 14;
return false;
Expand All @@ -91,14 +134,14 @@ public static class CaskNextQualityPatch
{
public static bool Prefix(int quality, ref int __result)
{
if (quality == 6)
if (quality == 4)
{
__result = 28; // Should this be 14 to match the pattern of vanilla?
__result = 6;
return false;
}
if (quality == -2)
{
__result = 70;
__result = 0;
return false;
}

Expand Down Expand Up @@ -159,7 +202,7 @@ public static class CaskDrawQualityPatch
{
public static void Postfix(Cask __instance, SpriteBatch spriteBatch, int x, int y, float alpha)
{
if (__instance.heldObject.Value != null && (int)__instance.heldObject.Value.quality > 0)
if (__instance.heldObject.Value != null && (int)__instance.heldObject.Value.quality != 0)
{
if (__instance.heldObject.Value.Quality != 6 && __instance.heldObject.Value.Quality != -2)
return;
Expand All @@ -169,8 +212,8 @@ public static void Postfix(Cask __instance, SpriteBatch spriteBatch, int x, int
Vector2 position = Game1.GlobalToLocal(Game1.viewport, new Vector2(x * 64, y * 64 - 64));
Rectangle destination = new Rectangle((int)(position.X + 32f - 8f - scaleFactor.X / 2f) + ((__instance.shakeTimer > 0) ? Game1.random.Next(-1, 2) : 0), (int)(position.Y + 64f + 8f - scaleFactor.Y / 2f) + ((__instance.shakeTimer > 0) ? Game1.random.Next(-1, 2) : 0), (int)(16f + scaleFactor.X), (int)(16f + scaleFactor.Y / 2f));
Microsoft.Xna.Framework.Rectangle quality_rect = new(0, 0, 8, 8);
Texture2D quality_sheet = __instance.Quality == 10 ? Mod.wonderfulTex : Mod.poorTex;
spriteBatch.Draw(quality_sheet, destination, quality_rect, Color.White * 0.95f, 0f, Vector2.Zero, SpriteEffects.None, (float)((y + 1) * 64) / 10000f);
Texture2D quality_sheet = __instance.heldObject.Value.Quality == 6 ? Mod.wonderfulTex : Mod.poorTex;
spriteBatch.Draw(quality_sheet, destination, quality_rect, Color.White * 0.95f, 0f, Vector2.Zero, SpriteEffects.None, (float)((y + 1) * 64 + 1) / 10000f);
}
}
}
Expand Down
1 change: 0 additions & 1 deletion Spacechase0.Stardew.sln
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,6 @@ Global
{7AA1C02E-9099-4C1A-B8AF-AC1966B337E5} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{104FCF4D-7776-4C16-94CE-EDE8209D6D9F} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{EF733B78-4F0A-46D4-8529-923EEBBFA4DA} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{1E295971-F8E9-45D6-BDF5-DE76675753FA} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{3D194335-89D4-4B5F-82FD-4E326EB2E8BB} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{D99B6186-A545-4CD1-B422-3C8F6B575E37} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
{AA841829-B357-403E-B185-C57DB2C97A52} = {8FEFBE16-BBBC-4EA0-829E-E5DCF15F0DFA}
Expand Down

0 comments on commit 60037e3

Please sign in to comment.