Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,70 @@ csharp_prefer_braces = false:suggestion
csharp_new_line_before_open_brace = true
csharp_new_line_before_else = false
csharp_new_line_before_catch = false
csharp_indent_labels = one_less_than_current
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent

[*.{cs,vb}]
#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =

# Naming styles

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
end_of_line = crlf
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
14 changes: 8 additions & 6 deletions PrismaticTools/Framework/AssetEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewValley;
using StardewValley.GameData.Objects;

namespace PrismaticTools.Framework {
public class AssetEditor {
Expand All @@ -27,12 +29,12 @@ public void OnAssetRequested(AssetRequestedEventArgs e) {
}

// new item data
else if (e.NameWithoutLocale.IsEquivalentTo("Data/ObjectInformation")) {
else if (e.NameWithoutLocale.IsEquivalentTo("Data/Objects")) {
e.Edit(asset => {
var data = asset.AsDictionary<int, string>().Data;
var data = asset.AsDictionary<string, ObjectData>().Data;

data.Add(PrismaticBarItem.INDEX, $"{this.barName}/{PrismaticBarItem.PRICE}/{PrismaticBarItem.EDIBILITY}/{PrismaticBarItem.TYPE} {PrismaticBarItem.CATEGORY}/{this.barName}/{this.barDesc}");
data.Add(PrismaticSprinklerItem.INDEX, $"{this.sprinklerName}/{PrismaticSprinklerItem.PRICE}/{PrismaticSprinklerItem.EDIBILITY}/{PrismaticSprinklerItem.TYPE} {PrismaticSprinklerItem.CATEGORY}/{this.sprinklerName}/{this.sprinklerDesc}");
data.Add(PrismaticBarItem.INDEX.ToString(), new ObjectData { Name = this.barName, DisplayName = this.barName, Description = this.barDesc, Price = PrismaticBarItem.PRICE, Type = PrismaticBarItem.TYPE, Category = PrismaticBarItem.CATEGORY, Edibility = PrismaticBarItem.EDIBILITY, SpriteIndex = PrismaticBarItem.INDEX });
data.Add(PrismaticSprinklerItem.INDEX.ToString(), new ObjectData { Name = this.sprinklerName, DisplayName = this.sprinklerName, Description = this.sprinklerDesc, Price = PrismaticSprinklerItem.PRICE, Type = PrismaticSprinklerItem.TYPE, Category = PrismaticSprinklerItem.CATEGORY, Edibility = PrismaticSprinklerItem.EDIBILITY, SpriteIndex = PrismaticSprinklerItem.INDEX });
});
}

Expand All @@ -47,9 +49,9 @@ public void OnAssetRequested(AssetRequestedEventArgs e) {
newDict.Add(key, data[key]);
if (key.Equals("Iridium Sprinkler")) {
if (asset.Locale != "en")
newDict.Add("Prismatic Sprinkler", $"{PrismaticBarItem.INDEX} 2 787 2/Home/{PrismaticSprinklerItem.INDEX}/false/Farming {PrismaticSprinklerItem.CRAFTING_LEVEL}/{this.sprinklerName}");
newDict.Add("Prismatic Sprinkler", $"{PrismaticBarItem.INDEX.ToString()} 2 787 2/Home/{PrismaticSprinklerItem.INDEX.ToString()}/false/Farming {PrismaticSprinklerItem.CRAFTING_LEVEL}/{this.sprinklerName}");
else
newDict.Add("Prismatic Sprinkler", $"{PrismaticBarItem.INDEX} 2 787 2/Home/{PrismaticSprinklerItem.INDEX}/false/Farming {PrismaticSprinklerItem.CRAFTING_LEVEL}");
newDict.Add("Prismatic Sprinkler", $"{PrismaticBarItem.INDEX.ToString()} 2 787 2/Home/{PrismaticSprinklerItem.INDEX.ToString()}/false/Farming {PrismaticSprinklerItem.CRAFTING_LEVEL}");
}
}

Expand Down
59 changes: 0 additions & 59 deletions PrismaticTools/Framework/Blacksmith.cs

This file was deleted.

2 changes: 2 additions & 0 deletions PrismaticTools/Framework/PrismaticItems.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace PrismaticTools.Framework {
public class PrismaticSprinklerItem {
public const int INDEX = 1113;
public const string ID = "(O)1113";
public const int PRICE = 2000;
public const int EDIBILITY = -300;
public const string TYPE = "Crafting";
Expand All @@ -12,6 +13,7 @@ public class PrismaticSprinklerItem {

public class PrismaticBarItem : Object {
public const int INDEX = 1112;
public const string ID = "(O)1112";
public const int PRICE = 2500;
public const string TYPE = "Basic";
public const int CATEGORY = metalResources;
Expand Down
71 changes: 39 additions & 32 deletions PrismaticTools/Framework/PrismaticPatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,22 @@ internal static class PrismaticPatches {
/****
** Furnace patches
****/
public static void Farmer_GetTallyOfObject(ref int __result, int index, bool bigCraftable) {
if (index == 382 && !bigCraftable && __result <= 0)
__result = 666666;
}

public static bool Object_PerformObjectDropInAction(ref SObject __instance, ref bool __result, ref Item dropInItem, bool probe, Farmer who) {
if (!(dropInItem is SObject object1))
return false;

if (object1.ParentSheetIndex != 74)
if (object1.ParentSheetIndex != Object.prismaticShardIndex)
return true;

if (__instance.name.Equals("Furnace")) {
if (who.IsLocalPlayer && who.getTallyOfObject(382, false) == 666666) {
if (who.IsLocalPlayer && who.Items.CountId(Object.coalQID) <= 0) {
if (!probe && who.IsLocalPlayer)
Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Object.cs.12772"));
return false;
}
if (__instance.heldObject.Value == null && !probe) {
__instance.heldObject.Value = new SObject(PrismaticBarItem.INDEX, 5);
__instance.heldObject.Value = new SObject(PrismaticBarItem.INDEX.ToString(), 5);
__instance.MinutesUntilReady = 2400;
who.currentLocation.playSound("furnace");
__instance.initializeLightSource(__instance.TileLocation);
Expand All @@ -46,7 +42,7 @@ public static bool Object_PerformObjectDropInAction(ref SObject __instance, ref
alphaFade = 0.005f
});
for (int index = who.Items.Count - 1; index >= 0; --index) {
if (who.Items[index] is SObject obj && obj.ParentSheetIndex == 382) {
if (who.Items[index] is SObject obj && obj.ParentSheetIndex == Object.coal) {
--who.Items[index].Stack;
if (who.Items[index].Stack <= 0) {
who.Items[index] = null;
Expand All @@ -59,9 +55,9 @@ public static bool Object_PerformObjectDropInAction(ref SObject __instance, ref
__result = object1.Stack <= 0;
return false;
}
if (__instance.heldObject.Value == null & probe) {
if (object1.ParentSheetIndex == 74) {
__instance.heldObject.Value = new SObject();
if (__instance.heldObject.Value == null && probe) {
if (object1.ParentSheetIndex == Object.prismaticShardIndex) {
//__instance.heldObject.Value = new SObject(); // Ends up spawning a -1 Object
__result = true;
return false;
}
Expand Down Expand Up @@ -110,22 +106,17 @@ public static bool Farm_AddCrows(ref Farm __instance) {
return false;
}

public static void After_Object_IsSprinkler(ref SObject __instance, ref bool __result) {
if (__instance.ParentSheetIndex == PrismaticSprinklerItem.INDEX)
__result = true;
}

public static void After_Object_GetBaseRadiusForSprinkler(ref SObject __instance, ref int __result) {
if (__instance.ParentSheetIndex == PrismaticSprinklerItem.INDEX)
__result = ModEntry.Config.SprinklerRange;
}

public static bool Object_UpdatingWhenCurrentLocation(ref SObject __instance, GameTime time, GameLocation environment) {
public static bool Object_UpdatingWhenCurrentLocation(ref SObject __instance, GameTime time) {
var obj = __instance;

// enable sprinkler scarecrow/light
if (obj.ParentSheetIndex == PrismaticSprinklerItem.INDEX)
TryEnablePrismaticSprinkler(environment, obj.TileLocation, obj);
TryEnablePrismaticSprinkler(__instance.Location, obj.TileLocation, obj);

return true;
}
Expand All @@ -144,13 +135,13 @@ public static bool Object_OnPlacing(ref SObject __instance, GameLocation locatio
** Tool patches
****/
public static void Tree_PerformToolAction(ref Tree __instance, Tool t, int explosion) {
if (t is Axe axe && axe.UpgradeLevel == 5 && explosion <= 0 && ModEntry.ModHelper.Reflection.GetField<NetFloat>(__instance, "health").GetValue() > -99f) {
if (t is Axe axe && axe.UpgradeLevel == 5 && explosion <= 0 && ModEntry.ModHelper.Reflection.GetField<NetFloat>(__instance, "health").GetValue().Value > -99f) {
__instance.health.Value = 0.0f;
}
}

public static void FruitTree_PerformToolAction(ref FruitTree __instance, Tool t, int explosion) {
if (t is Axe axe && axe.UpgradeLevel == 5 && explosion <= 0 && ModEntry.ModHelper.Reflection.GetField<NetFloat>(__instance, "health").GetValue() > -99f) {
if (t is Axe axe && axe.UpgradeLevel == 5 && explosion <= 0 && ModEntry.ModHelper.Reflection.GetField<NetFloat>(__instance, "health").GetValue().Value > -99f) {
__instance.health.Value = 0.0f;
}
}
Expand All @@ -165,7 +156,7 @@ public static void Pickaxe_DoFunction(ref Pickaxe __instance, GameLocation locat
}
}

public static void ResourceClump_PerformToolAction(ref ResourceClump __instance, Tool t, int damage, Vector2 tileLocation, GameLocation location) {
public static void ResourceClump_PerformToolAction(ref ResourceClump __instance, Tool t, int damage, Vector2 tileLocation) {
if (t is Axe && t.UpgradeLevel == 5 && (__instance.parentSheetIndex.Value == 600 || __instance.parentSheetIndex.Value == 602)) {
__instance.health.Value = 0;
}
Expand Down Expand Up @@ -195,30 +186,46 @@ public static void Tool_TilesAffected_Postfix(ref List<Vector2> __result, Vector
}
}

public static bool Tool_Name(Tool __instance, ref string __result) {
public static bool Axe_MigrateLegacyItemId(Axe __instance) {
if (__instance.UpgradeLevel == 5) {
__instance.ItemId = "PrismaticAxe";
return false;
}
return true;
}

switch (__instance.BaseName) {
case "Axe": __result = ModEntry.ModHelper.Translation.Get("prismaticAxe"); break;
case "Pickaxe": __result = ModEntry.ModHelper.Translation.Get("prismaticPickaxe"); break;
case "Watering Can": __result = ModEntry.ModHelper.Translation.Get("prismaticWatercan"); break;
case "Hoe": __result = ModEntry.ModHelper.Translation.Get("prismaticHoe"); break;
}
//__result = "Prismatic " + __instance.BaseName;
//__result = ModEntry.ModHelper.Translation.Get("prismatic.prefix") + " " + Game1.content.LoadString("Strings\\StringsFromCSFiles:Axe.cs.1");
public static bool WateringCan_MigrateLegacyItemId(WateringCan __instance) {
if (__instance.UpgradeLevel == 5) {
__instance.ItemId = "PrismaticWateringCan";
return false;
}
return true;
}

public static bool Tool_DisplayName(Tool __instance, ref string __result) {
public static bool Pickaxe_MigrateLegacyItemId(Pickaxe __instance) {
if (__instance.UpgradeLevel == 5) {
__result = __instance.Name;
__instance.ItemId = "PrismaticPickaxe";
return false;
}
return true;
}

public static bool Hoe_MigrateLegacyItemId(Hoe __instance) {
if (__instance.UpgradeLevel == 5) {
__instance.ItemId = "PrismaticHoe";
return false;
}
return true;
}

public static void Tool_Update(Tool __instance, Farmer who) {
// The watering can naturally pushes the upward facing to a blank sqaure. The next after
// the prismatic up spirte is the fishing pole. Instead we should reset to the beginning and go backward
// by one to use that blank area.
if (__instance is WateringCan && who.FacingDirection == 0) {
__instance.CurrentParentTileIndex = __instance.InitialParentTileIndex - 1;
}
}

/*********
** Private methods
Expand Down
Loading