Skip to content
Closed
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
72 changes: 72 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# topmost editorconfig
root: true

##########
## General formatting
## documentation: http://editorconfig.org
##########
[*]
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[*.{csproj,nuspec,targets}]
indent_size = 2

[*.csproj]
insert_final_newline = false

##########
## C# formatting
## documentation: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
##########
[*.cs]

#sort 'system' usings first
dotnet_sort_system_directives_first = true

# use 'this.' qualifier
dotnet_style_qualification_for_field = true:error
dotnet_style_qualification_for_property = true:error
dotnet_style_qualification_for_method = true:error
dotnet_style_qualification_for_event = true:error

# use language keywords (like int) instead of type (like Int32)
dotnet_style_predefined_type_for_locals_parameters_members = true:error
dotnet_style_predefined_type_for_member_access = true:error

# don't use 'var' for language keywords
csharp_style_var_for_built_in_types = false:error

# suggest modern C# features where simpler
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion

# prefer method block bodies
csharp_style_expression_bodied_methods = false:suggestion
csharp_style_expression_bodied_constructors = false:suggestion

# prefer property expression bodies
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion

# prefer inline out variables
csharp_style_inlined_variable_declaration = true:warning

# avoid superfluous braces
csharp_prefer_braces = false:suggestion

# set block newline conventions
csharp_new_line_before_open_brace = true
csharp_new_line_before_else = false
csharp_new_line_before_catch = false
12 changes: 10 additions & 2 deletions PrismaticTools.sln
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2026
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.202
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrismaticTools", "PrismaticTools\PrismaticTools.csproj", "{C24166EE-9341-4760-86B3-F89B326F3FC0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7EF5E22B-2A2D-4B4A-9903-6B118B874F64}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
LICENSE = LICENSE
README.md = README.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down
3 changes: 3 additions & 0 deletions PrismaticTools.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeThisQualifier/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String></wpf:ResourceDictionary>
Binary file removed PrismaticTools/0Harmony.dll
Binary file not shown.
31 changes: 15 additions & 16 deletions PrismaticTools/Framework/AssetEditor.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using Microsoft.Xna.Framework;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewValley;
using System.Collections.Generic;

namespace PrismaticTools.Framework {
public class AssetEditor : IAssetEditor {

private string barName = ModEntry.ModHelper.Translation.Get("prismaticBar.name");
private string barDesc = ModEntry.ModHelper.Translation.Get("prismaticBar.description");
private string sprinklerName = ModEntry.ModHelper.Translation.Get("prismaticSprinkler.name");
private string sprinklerDesc = ModEntry.ModHelper.Translation.Get("prismaticSprinkler.description");
private readonly string barName = ModEntry.ModHelper.Translation.Get("prismaticBar.name");
private readonly string barDesc = ModEntry.ModHelper.Translation.Get("prismaticBar.description");
private readonly string sprinklerName = ModEntry.ModHelper.Translation.Get("prismaticSprinkler.name");
private readonly string sprinklerDesc = ModEntry.ModHelper.Translation.Get("prismaticSprinkler.description");

public bool CanEdit<T>(IAssetInfo asset) {
bool canEdit =
Expand All @@ -24,16 +23,16 @@ public bool CanEdit<T>(IAssetInfo asset) {
public void Edit<T>(IAssetData asset) {

if (asset.AssetNameEquals("Maps/springobjects")) {
Texture2D bar = ModEntry.ModHelper.Content.Load<Texture2D>("Assets/prismaticBar.png", ContentSource.ModFolder);
Texture2D sprinkler = ModEntry.ModHelper.Content.Load<Texture2D>("Assets/prismaticSprinkler.png", ContentSource.ModFolder);
Texture2D bar = ModEntry.ModHelper.Content.Load<Texture2D>("Assets/prismaticBar.png");
Texture2D sprinkler = ModEntry.ModHelper.Content.Load<Texture2D>("Assets/prismaticSprinkler.png");
Texture2D old = asset.AsImage().Data;
asset.ReplaceWith(new Texture2D(Game1.graphics.GraphicsDevice, old.Width, System.Math.Max(old.Height, 1200 / 24 * 16)));
asset.AsImage().PatchImage(old);
asset.AsImage().PatchImage(bar, targetArea: Rektangle(PrismaticBarItem.INDEX));
asset.AsImage().PatchImage(sprinkler, targetArea: Rektangle(PrismaticSprinklerItem.INDEX));
asset.AsImage().PatchImage(bar, targetArea: this.GetRectangle(PrismaticBarItem.INDEX));
asset.AsImage().PatchImage(sprinkler, targetArea: this.GetRectangle(PrismaticSprinklerItem.INDEX));
} else if (asset.AssetNameEquals("Data/ObjectInformation")) {
asset.AsDictionary<int, string>().Data.Add(PrismaticBarItem.INDEX, $"{barName}/{PrismaticBarItem.PRICE}/{PrismaticBarItem.EDIBILITY}/{PrismaticBarItem.TYPE} {PrismaticBarItem.CATEGORY}/{barName}/{barDesc}");
asset.AsDictionary<int, string>().Data.Add(PrismaticSprinklerItem.INDEX, $"{sprinklerName}/{PrismaticSprinklerItem.PRICE}/{PrismaticSprinklerItem.EDIBILITY}/{PrismaticSprinklerItem.TYPE} {PrismaticSprinklerItem.CATEGORY}/{sprinklerName}/{sprinklerDesc}");
asset.AsDictionary<int, string>().Data.Add(PrismaticBarItem.INDEX, $"{this.barName}/{PrismaticBarItem.PRICE}/{PrismaticBarItem.EDIBILITY}/{PrismaticBarItem.TYPE} {PrismaticBarItem.CATEGORY}/{this.barName}/{this.barDesc}");
asset.AsDictionary<int, string>().Data.Add(PrismaticSprinklerItem.INDEX, $"{this.sprinklerName}/{PrismaticSprinklerItem.PRICE}/{PrismaticSprinklerItem.EDIBILITY}/{PrismaticSprinklerItem.TYPE} {PrismaticSprinklerItem.CATEGORY}/{this.sprinklerName}/{this.sprinklerDesc}");
} else if (asset.AssetNameEquals("Data/CraftingRecipes")) {
IAssetDataForDictionary<string, string> oldDict = asset.AsDictionary<string, string>();
Dictionary<string, string> newDict = new Dictionary<string, string>();
Expand All @@ -42,7 +41,7 @@ public void Edit<T>(IAssetData asset) {
newDict.Add(key, oldDict.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}/{sprinklerName}");
newDict.Add("Prismatic Sprinkler", $"{PrismaticBarItem.INDEX} 2 787 2/Home/{PrismaticSprinklerItem.INDEX}/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}");
}
Expand All @@ -52,12 +51,12 @@ public void Edit<T>(IAssetData asset) {
asset.AsDictionary<string, string>().Data.Add(key, newDict[key]);
}
} else if (asset.AssetNameEquals("TileSheets\\tools")) {
asset.AsImage().PatchImage(ModEntry.toolsTexture, null, null, PatchMode.Overlay);
asset.AsImage().PatchImage(ModEntry.ToolsTexture, null, null, PatchMode.Overlay);

}
}

public Rectangle Rektangle(int id) {
public Rectangle GetRectangle(int id) {
int x = (id % 24) * 16;
int y = (id / 24) * 16;
return new Rectangle(x, y, 16, 16);
Expand Down
29 changes: 14 additions & 15 deletions PrismaticTools/Framework/Blacksmith.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
using Microsoft.Xna.Framework.Graphics;
using System.Collections.Generic;
using StardewModdingAPI.Events;
using StardewValley;
using StardewValley.Menus;
using StardewValley.Tools;
using System.Collections.Generic;

namespace PrismaticTools.Framework {
class BlacksmithInitializer {

private static int UpgradeCost = ModEntry.Config.PrismaticToolCost;
private static int NumBars = 3;
internal class BlacksmithInitializer {
private static readonly int UpgradeCost = ModEntry.Config.PrismaticToolCost;

public static void Init() {
MenuEvents.MenuChanged += MenuEvents_MenuChanged1;
public static void Init(IModEvents events) {
events.Display.MenuChanged += OnMenuChanged;
}

private static void MenuEvents_MenuChanged1(object sender, EventArgsClickableMenuChanged e) {
if (!(e.NewMenu is ShopMenu)) {
/// <summary>Raised after a game menu is opened, closed, or replaced.</summary>
/// <param name="sender">The event sender.</param>
/// <param name="e">The event arguments.</param>
private static void OnMenuChanged(object sender, MenuChangedEventArgs e) {
if (!(e.NewMenu is ShopMenu menu)) {
return;
}
ShopMenu menu = e.NewMenu as ShopMenu;
List<int> categories = ModEntry.ModHelper.Reflection.GetField<List<int>>(menu, "categoriesToSellHere").GetValue();
if (!categories.Contains(Object.GemCategory) || !categories.Contains(Object.mineralsCategory) || !categories.Contains(Object.metalResources)) {
return;
Expand All @@ -38,22 +37,22 @@ private static void MenuEvents_MenuChanged1(object sender, EventArgsClickableMen
if (toolFromName1 != null && toolFromName1.UpgradeLevel == 4) {
tool = new Axe { UpgradeLevel = 5 };
forSale.Add(tool);
stock.Add(tool, new int[3] { UpgradeCost, 1, PrismaticBarItem.INDEX });
stock.Add(tool, new[] { UpgradeCost, 1, PrismaticBarItem.INDEX });
}
if (toolFromName2 != null && toolFromName2.UpgradeLevel == 4) {
tool = new WateringCan { UpgradeLevel = 5 };
forSale.Add(tool);
stock.Add(tool, new int[3] { UpgradeCost, 1, PrismaticBarItem.INDEX });
stock.Add(tool, new[] { UpgradeCost, 1, PrismaticBarItem.INDEX });
}
if (toolFromName3 != null && toolFromName3.UpgradeLevel == 4) {
tool = new Pickaxe { UpgradeLevel = 5 };
forSale.Add(tool);
stock.Add(tool, new int[3] { UpgradeCost, 1, PrismaticBarItem.INDEX });
stock.Add(tool, new[] { UpgradeCost, 1, PrismaticBarItem.INDEX });
}
if (toolFromName4 != null && toolFromName4.UpgradeLevel == 4) {
tool = new Hoe { UpgradeLevel = 5 };
forSale.Add(tool);
stock.Add(tool, new int[3] { UpgradeCost, 1, PrismaticBarItem.INDEX });
stock.Add(tool, new[] { UpgradeCost, 1, PrismaticBarItem.INDEX });
}
}
}
Expand Down
75 changes: 0 additions & 75 deletions PrismaticTools/Framework/Furnace.cs

This file was deleted.

7 changes: 3 additions & 4 deletions PrismaticTools/Framework/PrismaticAPI.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Microsoft.Xna.Framework;
using System.Collections.Generic;
using Microsoft.Xna.Framework;

namespace PrismaticTools.Framework {
public class PrismaticAPI {
Expand All @@ -9,10 +9,9 @@ public class PrismaticAPI {
public bool ArePrismaticSprinklersScarecrows { get; } = ModEntry.Config.UseSprinklersAsScarecrows;

public IEnumerable<Vector2> GetSprinklerCoverage(Vector2 origin) {
for (int x = -SprinklerRange; x <= SprinklerRange; x++) {
for (int y = -SprinklerRange; y <= SprinklerRange; y++) {
for (int x = -this.SprinklerRange; x <= this.SprinklerRange; x++) {
for (int y = -this.SprinklerRange; y <= this.SprinklerRange; y++)
yield return new Vector2(x, y) + origin;
}
}
}
}
Expand Down
7 changes: 2 additions & 5 deletions PrismaticTools/Framework/PrismaticItems.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using StardewValley;
using StardewValley;

namespace PrismaticTools.Framework {

public class PrismaticSprinklerItem {
public class PrismaticSprinklerItem {
public const int INDEX = 1113;
public const int OLD_INDEX = 813;
public const string NAME = "Prismatic Sprinkler";
public const int PRICE = 2000;
public const int EDIBILITY = -300;
Expand All @@ -16,7 +14,6 @@ public class PrismaticSprinklerItem {

public class PrismaticBarItem : Object {
public const int INDEX = 1112;
public const int OLD_INDEX = 812;
public const string NAME = "Prismatic Bar";
public const string DESCRIPTION = "A mystical ingot forged from legend itself.";
public const int PRICE = 2500;
Expand Down
Loading