├── .editorconfig
├── .gitattributes
├── .gitignore
├── AdvancedLocationLoader
├── Actions.cs
├── AdvancedLocationLoader.csproj
├── AdvancedLocationLoader.csproj.DotSettings
├── ConditionalResolver.cs
├── Configs
│ ├── Compound.cs
│ ├── ContentPackData.cs
│ ├── LoaderVersionConfig.cs
│ ├── LocationConfig1_2.cs
│ ├── LocationConfig_1_1.cs
│ ├── ShopConfig.cs
│ └── Subclasses
│ │ ├── Conditional.cs
│ │ ├── Location.cs
│ │ ├── MapFileLink.cs
│ │ ├── Override.cs
│ │ ├── Property.cs
│ │ ├── Redirect.cs
│ │ ├── ShopItem.cs
│ │ ├── TeleporterDestination.cs
│ │ ├── TeleporterList.cs
│ │ ├── Tile.cs
│ │ ├── TileInfo.cs
│ │ ├── Tilesheet.cs
│ │ └── Warp.cs
├── ContentPackExtensions.cs
├── Locations
│ ├── DecoratableLocation.cs
│ ├── Desert.cs
│ ├── Greenhouse.cs
│ └── Sewer.cs
├── Menus
│ └── CarpenterMenu.cs
├── ModEntry.cs
├── Processing
│ ├── ConfigReader.cs
│ └── Patcher.cs
├── Processors.cs
├── README.md
├── RELEASE-NOTES.md
├── StructuredBinaryFile.cs
├── TeleportationResolver.cs
├── docs
│ ├── actions.md
│ └── manifest.md
├── i18n
│ ├── de.json
│ └── default.json
└── manifest.json
├── AdvancedLocationLoader2
├── ALLModEntry.cs
├── AdvancedLocationLoader2.csproj
└── Structure
│ └── Version1
│ ├── ContentPack.cs
│ ├── Location.cs
│ ├── MapFileLink.cs
│ ├── Patch.cs
│ ├── Shop.cs
│ ├── ShopItem.cs
│ ├── TileEdit.cs
│ ├── Tilesheet.cs
│ └── Warp.cs
├── CustomBooks
├── Book.cs
├── Bookshelf.cs
├── CustomBooks.csproj
├── Menu
│ ├── BookMenu.cs
│ ├── ConfigPage.cs
│ ├── ImagePage.cs
│ ├── InsertPage.cs
│ ├── Page.cs
│ ├── SystemPage.cs
│ ├── TextPage.cs
│ └── TitlePage.cs
├── ModEntry.cs
├── assets
│ ├── abook.png
│ ├── binding.png
│ ├── book.png
│ ├── brush.png
│ ├── delete.png
│ ├── edit.png
│ ├── icon.png
│ ├── pages.png
│ └── quil.png
└── manifest.json
├── CustomPaths
├── CustomPath.cs
├── CustomPathConfig.cs
├── CustomPathInfo.cs
├── CustomPathObject.cs
├── CustomPaths.csproj
├── CustomPathsMod.cs
├── README.md
├── RELEASE-NOTES.md
└── manifest.json
├── DialogueFramework
├── DialogueEventArgs.cs
├── DialogueFramework.csproj
├── DialogueFrameworkMod.cs
├── IModApi.cs
├── ModApi.cs
└── Patcher.cs
├── DiffPatcherV1R0P0
├── Properties
│ └── AssemblyInfo.cs
├── TDiffPatcher.cs
├── TDiffPatcherV1R0P0.csproj
└── packages.config
├── DynamicDungeons
├── ATile.cs
├── ActionInfo.cs
├── BookMenu.cs
├── DungeonBuilder.cs
├── DynamicDungeon.cs
├── DynamicDungeons.csproj
├── DynamicDungeonsAPI.cs
├── DynamicDungeonsSavefile.cs
├── ITile.cs
├── ImagePage.cs
├── LootHandler.cs
├── ModEntry.cs
├── PTile.cs
├── Page.cs
├── PathFinder.cs
├── PaymentPage.cs
├── STile.cs
├── TextPage.cs
├── Tiles
│ ├── AnimatedTile.cs
│ ├── PropertyTile.cs
│ ├── StaticTile.cs
│ └── Tile.cs
├── TitlePage.cs
├── assets
│ ├── DynamicDungeonsEntrance.tbin
│ ├── book.png
│ ├── book
│ │ ├── doodle1.png
│ │ ├── doodle2.png
│ │ └── doodle3.png
│ ├── credits.txt
│ ├── door.png
│ ├── dungeon.png
│ ├── entrance.png
│ ├── sheet_boulder.png
│ ├── sheet_cavein.png
│ ├── sheet_dwarfvendor.png
│ ├── sheet_info.png
│ ├── sheet_stalagmite1.png
│ ├── sheet_stalagmite2.png
│ ├── sheet_statue.png
│ ├── sheet_tracks.png
│ ├── sheet_walls.png
│ ├── unused
│ │ ├── DoorSpriteSheet.png
│ │ ├── door_anim.png
│ │ ├── door_anim2.png
│ │ ├── door_wall.png
│ │ ├── merged.xcf
│ │ ├── probably_old_robot_thingy.png
│ │ ├── pufferchick.png
│ │ ├── robot_head_animation.png
│ │ ├── sheet_info.xcf
│ │ ├── sheet_light.png
│ │ └── sheet_walls2.png
│ └── zDynamicDungeonsEntrance_tiles.png
├── i18n
│ └── default.json
└── manifest.json
├── EntoaroxUtilities
├── Assets
│ ├── Boots.json
│ ├── Clothing.json
│ ├── Craftable.json
│ ├── Floor.json
│ ├── Furniture.json
│ ├── Hat.json
│ ├── Object.json
│ ├── Ring.json
│ ├── Wallpaper.json
│ └── Weapon.json
├── EUGlobals.cs
├── EntoaroxUtilities.csproj
├── IEntoUtilsApi.cs
├── Internals
│ ├── Api
│ │ ├── Data.cs
│ │ ├── EntoUtilsApi.cs
│ │ ├── ICustomFarmingApi.cs
│ │ ├── IJsonAssetsApi.cs
│ │ ├── IPrismaticToolsApi.cs
│ │ ├── TypeHandlers.cs
│ │ └── TypeResolvers.cs
│ ├── AssetHandlers
│ │ └── HelperSheetLoader.cs
│ ├── EntoUtilsMod.cs
│ └── Helpers
│ │ └── ModApi.cs
├── Properties
│ └── AssemblyInfo.cs
├── Tools
│ ├── LogBuffer.cs
│ └── Timer.cs
├── UI
│ ├── Abstract
│ │ ├── AbstractComponent.cs
│ │ ├── AbstractComponentCollection.cs
│ │ ├── AbstractComponentMenu.cs
│ │ ├── AbstractInteractiveComponent.cs
│ │ ├── AbstractUpdatingComponent.cs
│ │ └── AbstractUpdatingInteractiveComponent.cs
│ └── Interfaces
│ │ ├── IComponent.cs
│ │ ├── IComponentCollection.cs
│ │ ├── IComponentContainer.cs
│ │ ├── IComponentMenu.cs
│ │ ├── IInteractiveComponent.cs
│ │ └── IUpdatingComponent.cs
├── changelog.txt
├── manifest.json
└── packages.config
├── ExtendedMinecart
├── ExtendedMinecart.csproj
├── ModConfig.cs
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
├── i18n
│ ├── default.json
│ └── pt.json
└── manifest.json
├── FasterPaths
├── FasterPaths.csproj
├── ModConfig.cs
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
└── manifest.json
├── Framework
├── API
│ └── DecorationApi.cs
├── Advanced
│ ├── PolyTuple.cs
│ ├── PolyTupleHelper.cs
│ └── TupleSyntax.cs
├── ApiWrappers
│ └── IJsonAssetsAPI.cs
├── Config
│ ├── ConfigAttribute.cs
│ ├── ConfigCustomAttribute.cs
│ ├── ConfigDropdownAttribute.cs
│ ├── ConfigMinMaxAttribute.cs
│ └── ConfigSliderAttribute.cs
├── Core
│ ├── AssetHandlers
│ │ ├── DeferredAssetHandler.cs
│ │ ├── DeferredAssetInfo.cs
│ │ ├── DeferredTypeHandler.cs
│ │ ├── DictionaryInjector.cs
│ │ ├── TextureInjector.cs
│ │ ├── TextureInjectorInfo.cs
│ │ └── XnbLoader.cs
│ ├── ConditionHelper.cs
│ ├── ConditionsHelper.cs
│ ├── EntoaroxFrameworkMod.cs
│ ├── Injection
│ │ ├── Crop_newDay.cs
│ │ ├── HoeDirt_canPlantThisSeedHere.cs
│ │ └── HookedLocationBuilder.cs
│ ├── InterModHelper.cs
│ ├── Message.cs
│ ├── MessageHelper.cs
│ ├── ModConfig.cs
│ ├── PlayerHelper.cs
│ ├── PlayerModifierHelper.cs
│ ├── PlayerModifierList.cs
│ ├── Serialization
│ │ ├── CustomContractResolver.cs
│ │ ├── InstanceState.cs
│ │ ├── Placeholder.cs
│ │ └── RectangleConverter.cs
│ └── Utilities
│ │ ├── DictionaryAssetInfo.cs
│ │ ├── DictionaryWrapper.cs
│ │ ├── Events.cs
│ │ ├── Globals.cs
│ │ └── TextureHelper.cs
├── CustomObject.cs
├── Delegates.cs
├── EntoaroxFramework.csproj
├── EntoaroxFramework.csproj.DotSettings
├── EntoaroxFrameworkAPI.cs
├── Events
│ ├── EventArgsActionTriggered.cs
│ ├── EventArgsActiveItemChanged.cs
│ ├── EventArgsArguments.cs
│ ├── EventArgsEditable.cs
│ ├── EventArgsReturnable.cs
│ ├── ItemEvents.cs
│ └── MoreEvents.cs
├── Experimental
│ ├── ListExtensions.cs
│ ├── PathFinder.cs
│ └── PathNode.cs
├── Extensions
│ ├── PointExtensions.cs
│ └── StringExtensions.cs
├── GameLocationExtensions.cs
├── IAugmentedLocation.cs
├── IConditionHelper.cs
├── IContentHandler.cs
├── IContentHelperExtensions.cs
├── ICustomItem.cs
├── IDeserializationHandler.cs
├── IHookedLocation.cs
├── IInterModHelper.cs
├── IMessageHelper.cs
├── IModHelperExtensions.cs
├── IMonitorExtensions.cs
├── IPlayerHelper.cs
├── IPlayerModifierHelper.cs
├── Indev
│ ├── CustomAdditionAttribute.cs
│ ├── IProfession.cs
│ ├── ISkill.cs
│ ├── ISkillHelper.cs
│ ├── PlayerSkillInfo.cs
│ ├── RecipeComponent.cs
│ ├── SkillData.cs
│ ├── SkillHelper.cs
│ ├── VanillaProfession.cs
│ └── VanillaSkill.cs
├── Interface
│ ├── Base
│ │ ├── BaseClickableComponent.cs
│ │ ├── BaseComponent.cs
│ │ ├── BaseComponentCollection.cs
│ │ ├── BaseComponentContainer.cs
│ │ ├── BaseDynamicComponent.cs
│ │ ├── BaseInputComponent.cs
│ │ └── BaseItemslotComponent.cs
│ ├── Containers
│ │ ├── GenericComponentCollection.cs
│ │ └── ScrollableComponentCollection.cs
│ ├── Interfaces
│ │ ├── IComponent.cs
│ │ ├── IComponentCollection.cs
│ │ ├── IComponentContainer.cs
│ │ ├── IControllerComponent.cs
│ │ ├── IDynamicComponent.cs
│ │ ├── IFloatComponent.cs
│ │ ├── IHotkeyComponent.cs
│ │ ├── IInputComponent.cs
│ │ ├── IItemContainer.cs
│ │ └── IVisibilityObserver.cs
│ ├── Misc
│ │ ├── InterfaceMenu.cs
│ │ ├── KeyboardResolver.cs
│ │ ├── Strings.cs
│ │ └── Utilities.cs
│ └── Static
│ │ ├── GradientComponent.cs
│ │ ├── TextComponent.cs
│ │ └── TextureComponent.cs
├── PlayerModifier.cs
├── README.md
├── RELEASE-NOTES.md
├── StackableShopObject.cs
├── UI
│ ├── Base
│ │ ├── BaseFormComponent.cs
│ │ ├── BaseInteractiveMenuComponent.cs
│ │ ├── BaseKeyboardFormComponent.cs
│ │ └── BaseMenuComponent.cs
│ ├── Containers
│ │ ├── BookComponent.cs
│ │ ├── ClickableCollectionComponent.cs
│ │ ├── FormCollectionComponent.cs
│ │ ├── GenericCollectionComponent.cs
│ │ ├── ScrollableCollectionComponent.cs
│ │ └── TablistComponent.cs
│ ├── Form
│ │ ├── ButtonFormComponent.cs
│ │ ├── CheckboxFormComponent.cs
│ │ ├── DropdownFormComponent.cs
│ │ ├── PlusMinusFormComponent.cs
│ │ ├── SliderFormComponent.cs
│ │ └── TextboxFormComponent.cs
│ ├── FrameworkMenu.cs
│ ├── Generic
│ │ ├── AnimatedComponent.cs
│ │ ├── ClickableAnimatedComponent.cs
│ │ ├── ClickableHeartsComponent.cs
│ │ ├── ClickableTextComponent.cs
│ │ ├── ClickableTextureComponent.cs
│ │ ├── ColoredRectangleComponent.cs
│ │ ├── FrameComponent.cs
│ │ ├── HeartsComponent.cs
│ │ ├── LabelComponent.cs
│ │ ├── ProgressbarComponent.cs
│ │ ├── TextComponent.cs
│ │ └── TextureComponent.cs
│ ├── Interfaces
│ │ ├── IComponentCollection.cs
│ │ ├── IComponentContainer.cs
│ │ ├── IIinteractiveMenuComponent.cs
│ │ ├── IKeyboardComponent.cs
│ │ └── IMenuComponent.cs
│ ├── KeyboardInputResolver.cs
│ ├── KeyboardSubscriberProxy.cs
│ ├── OverlayMenu.cs
│ └── Wrapper
│ │ ├── ClickableCancelComponent.cs
│ │ ├── ClickableConfirmComponent.cs
│ │ ├── ClickableObjectComponent.cs
│ │ └── ObjectComponent.cs
├── assets
│ └── placeholder.png
├── docs
│ ├── Changelog.txt
│ └── conditions.md
└── manifest.json
├── FurnitureAnywhere
├── AnywhereFurniture.cs
├── FurnitureAnywhere.csproj
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
└── manifest.json
├── LanguagePatcher
├── App.config
├── LanguagePatcher.csproj
└── Program.cs
├── MagicJunimoPet
├── Abilities
│ ├── FeedAbility.cs
│ ├── MagicalAbility.cs
│ └── PetAbility.cs
├── Ability.cs
├── Behaviour.cs
├── Behaviours
│ └── FollowBehaviour.cs
├── ColorScale.cs
├── IActiveAbility.cs
├── IRankedAbility.cs
├── IRestrictedAbility.cs
├── ISkinAbility.cs
├── ITickingAbility.cs
├── MJPModEntry.cs
├── MagicJunimo.cs
├── MagicJunimoPet.csproj
├── PetState.cs
├── Renderer.cs
├── SmartPet.cs
├── assets
│ └── junimo.png
├── i18n
│ ├── default.json
│ └── ko.json
└── manifest.json
├── MoreAnimals
├── AdoptQuestion.cs
├── Framework
│ ├── AnimalSkin.cs
│ └── ModApi.cs
├── ModConfig.cs
├── ModEntry.cs
├── MoreAnimals.csproj
├── README.md
├── RELEASE-NOTES.md
├── assets
│ ├── box.png
│ ├── credits.txt
│ └── skins
│ │ ├── BabyDuck.png
│ │ ├── cat_1.png
│ │ ├── cat_2.png
│ │ ├── cat_3.png
│ │ ├── cat_4.png
│ │ ├── cat_5.png
│ │ ├── cat_6.png
│ │ ├── cat_7.png
│ │ ├── cat_8.png
│ │ ├── cat_9.png
│ │ ├── dog_1.png
│ │ ├── dog_2.png
│ │ ├── dog_3.png
│ │ ├── dog_4.png
│ │ ├── dog_5.png
│ │ ├── dog_6.png
│ │ ├── dog_7.png
│ │ ├── dog_8.png
│ │ └── dog_9.png
├── i18n
│ ├── default.json
│ ├── es.json
│ ├── fr.json
│ ├── it.json
│ ├── ko.json
│ ├── pt.json
│ └── zh.json
└── manifest.json
├── PlayGround
├── CustomBathhouse.cs
├── DistanceCalculator.cs
├── EF 2.1
│ ├── IProfession.cs
│ ├── ISkill.cs
│ ├── ISkillHelper.cs
│ ├── RecipeComponent.cs
│ ├── SkillData.cs
│ ├── SkillHelper.cs
│ ├── VanillaProfession.cs
│ └── VanillaSkill.cs
├── ModWrapper.cs
├── PlayGround.csproj
├── WrapperTest
│ ├── IWrapper.cs
│ └── WrapperBuilder.cs
└── manifest.json
├── README.md
├── SeasonalImmersion
├── ContentMode.cs
├── ContentPack
│ ├── fall
│ │ ├── Barn.png
│ │ ├── Big Barn.png
│ │ ├── Big Coop.png
│ │ ├── Coop.png
│ │ ├── Deluxe Barn.png
│ │ ├── Deluxe Coop.png
│ │ ├── Earth Obelisk.png
│ │ ├── Gold Clock.png
│ │ ├── Mill.png
│ │ ├── Shed.png
│ │ ├── Silo.png
│ │ ├── Slime Hutch.png
│ │ ├── Stable.png
│ │ ├── Water Obelisk.png
│ │ ├── Well.png
│ │ └── houses.png
│ ├── manifest.json
│ ├── spring
│ │ ├── Barn.png
│ │ ├── Big Barn.png
│ │ ├── Big Coop.png
│ │ ├── Coop.png
│ │ ├── Deluxe Barn.png
│ │ ├── Deluxe Coop.png
│ │ ├── Earth Obelisk.png
│ │ ├── Gold Clock.png
│ │ ├── Mill.png
│ │ ├── Shed.png
│ │ ├── Silo.png
│ │ ├── Slime Hutch.png
│ │ ├── Stable.png
│ │ ├── Water Obelisk.png
│ │ ├── Well.png
│ │ └── houses.png
│ ├── summer
│ │ ├── Barn.png
│ │ ├── Big Barn.png
│ │ ├── Big Coop.png
│ │ ├── Coop.png
│ │ ├── Deluxe Barn.png
│ │ ├── Deluxe Coop.png
│ │ ├── Earth Obelisk.png
│ │ ├── Gold Clock.png
│ │ ├── Mill.png
│ │ ├── Shed.png
│ │ ├── Silo.png
│ │ ├── Slime Hutch.png
│ │ ├── Stable.png
│ │ ├── Water Obelisk.png
│ │ ├── Well.png
│ │ └── houses.png
│ └── winter
│ │ ├── Barn.png
│ │ ├── Big Barn.png
│ │ ├── Big Coop.png
│ │ ├── Coop.png
│ │ ├── Deluxe Barn.png
│ │ ├── Deluxe Coop.png
│ │ ├── Earth Obelisk.png
│ │ ├── Gold Clock.png
│ │ ├── Mill.png
│ │ ├── Shed.png
│ │ ├── Silo.png
│ │ ├── Slime Hutch.png
│ │ ├── Stable.png
│ │ ├── Water Obelisk.png
│ │ ├── Well.png
│ │ └── houses.png
├── ContentPackManifest.cs
├── Ionic.Zip.dll
├── ModConfig.cs
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
├── SeasonalImmersion.csproj
├── SeasonalTextureLoader.cs
└── manifest.json
├── ShopExpander
├── ModConfig.cs
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
├── Reference.cs
├── SObject.cs
├── ShopExpander.csproj
└── manifest.json
├── SitForStaminaMod
├── Config.cs
├── Properties
│ └── AssemblyInfo.cs
├── SitForStaminaMod.cs
├── SitForStaminaMod.csproj
├── manifest.json
└── packages.config
├── StardewModdingAPI.psess
├── StardewModdingAPI1.psess
├── StardewModdingAPI191113(1).vspx
├── StardewModdingAPI191113(2).vspx
├── StardewModdingAPI191113.vspx
├── StardewModdingAPI191207.vspx
├── StardewModdingAPI2.psess
├── StardewModdingAPI200220.vspx
├── StardewMods.sln
├── StardewMods.sln.DotSettings
├── TDiffMaker
├── App.config
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
├── TDiffMaker.csproj
└── packages.config
├── XnbLoader
├── ModConfig.cs
├── ModEntry.cs
├── README.md
├── RELEASE-NOTES.md
├── XnbLoader.csproj
└── manifest.json
└── common.targets
/.gitattributes:
--------------------------------------------------------------------------------
1 | # always normalise line endings
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # user-specific files
2 | *.suo
3 | *.user
4 | *.userosscache
5 | *.sln.docstates
6 |
7 | # build results
8 | [Dd]ebug/
9 | [Rr]elease/
10 | [Bb]in/
11 | [Oo]bj/
12 |
13 | # Visual Studio cache/options
14 | .vs/
15 |
16 | # ReSharper
17 | _ReSharper*/
18 | *.[Rr]e[Ss]harper
19 | *.DotSettings.user
20 |
21 | # NuGet packages
22 | *.nupkg
23 | **/packages/*
24 | *.nuget.props
25 | *.nuget.targets
26 |
27 | # release zips
28 | _releases/
--------------------------------------------------------------------------------
/AdvancedLocationLoader/AdvancedLocationLoader.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AdvancedLocationLoader
5 | Entoarox.AdvancedLocationLoader
6 | 1.5.0
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/AdvancedLocationLoader.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/ContentPackData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StardewModdingAPI;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | /// The loaded data for a content pack.
7 | internal class ContentPackData
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | public IContentPack ContentPack { get; set; }
13 | public IList Locations { get; set; } = new List();
14 | public IList Overrides { get; set; } = new List();
15 | public IList Redirects { get; set; } = new List();
16 | public IList Tilesheets { get; set; } = new List();
17 | public IList Tiles { get; set; } = new List();
18 | public IList Properties { get; set; } = new List();
19 | public IList Warps { get; set; } = new List();
20 | public IList Conditionals { get; set; } = new List();
21 | public IList Teleporters { get; set; } = new List();
22 | public IList Shops { get; set; } = new List();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/LoaderVersionConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | /// A minimal config used to read the loader version.
4 | internal class LoaderVersionConfig
5 | {
6 | /*********
7 | ** Accessors
8 | *********/
9 | /// The loader version.
10 | public string LoaderVersion { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/LocationConfig1_2.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.AdvancedLocationLoader.Configs
4 | {
5 | internal class LocationConfig
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | /// The secondary location configs to read. This is ignored on a secondary location config.
11 | public IList Includes { get; set; } = new List();
12 |
13 | public IList Locations { get; set; } = new List();
14 | public IList Overrides { get; set; } = new List();
15 | public IList Redirects { get; set; } = new List();
16 | public IList Tilesheets { get; set; } = new List();
17 | public IList Tiles { get; set; } = new List();
18 | public IList Properties { get; set; } = new List();
19 | public IList Warps { get; set; } = new List();
20 | public IList Conditionals { get; set; } = new List();
21 | public IList Teleporters { get; set; } = new List();
22 | public IList Shops { get; set; } = new List();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/LocationConfig_1_1.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.AdvancedLocationLoader.Configs
4 | {
5 | internal class LocationConfig_1_1
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public IList> Locations { get; set; }
11 | public IList> Overrides { get; set; }
12 | public IDictionary>> Minecarts { get; set; }
13 | public IList> Tilesheets { get; set; }
14 | public IList> Tiles { get; set; }
15 | public IList> Properties { get; set; }
16 | public IList> Warps { get; set; }
17 | public IDictionary> Conditions { get; set; }
18 | public IList Shops { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/ShopConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using Newtonsoft.Json;
4 |
5 | namespace Entoarox.AdvancedLocationLoader.Configs
6 | {
7 | internal class ShopConfig
8 | {
9 | #pragma warning disable CS0649
10 | /*********
11 | ** Accessors
12 | *********/
13 | [JsonIgnore]
14 | public string Name;
15 |
16 | [JsonIgnore]
17 | public Texture2D PortraitTexture;
18 |
19 | public int ParserVersion;
20 | public string Portrait;
21 | public string Owner;
22 | public List Messages;
23 | public List Items;
24 | #pragma warning restore CS0649
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Conditional.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Newtonsoft.Json;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | internal class Conditional
7 | {
8 | #pragma warning disable CS0649
9 | /*********
10 | ** Accessors
11 | *********/
12 | public int Amount;
13 | public int Item;
14 | public string Name;
15 | public string Question;
16 |
17 | [DefaultValue(null)]
18 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
19 | public string Success;
20 | #pragma warning restore CS0649
21 |
22 |
23 | /*********
24 | ** Public methods
25 | *********/
26 | public override string ToString()
27 | {
28 | return $"Conditional({this.Name}[{this.Item}{':'}{this.Amount}] = `{this.Question}`)";
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Location.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Newtonsoft.Json;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | internal class Location : MapFileLink
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | [DefaultValue(false)]
12 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
13 | public bool Farmable;
14 |
15 | [DefaultValue(false)]
16 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
17 | public bool Outdoor;
18 |
19 | [DefaultValue("Default")]
20 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
21 | public string Type;
22 |
23 |
24 | /*********
25 | ** Public methods
26 | *********/
27 | public override string ToString()
28 | {
29 | return $"Location({this.MapName},{this.FileName}){{Outdoor={this.Outdoor},Farmable={this.Farmable},Type={this.Type}}}";
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/MapFileLink.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal abstract class MapFileLink
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public string FileName;
9 | public string MapName;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Override.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal class Override : MapFileLink
4 | {
5 | /*********
6 | ** Public methods
7 | *********/
8 | public override string ToString()
9 | {
10 | return $"Override({this.MapName},{this.FileName})";
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Property.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal class Property : TileInfo
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public string Key;
9 | public string LayerId;
10 | public string Value;
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public override string ToString()
17 | {
18 | return $"Property({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} => `{this.Key}` = {this.Value}{')'}";
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Redirect.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal class Redirect
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | #pragma warning disable CS0649
9 | public string FromFile;
10 | public string ToFile;
11 | #pragma warning restore CS0649
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public override string ToString()
18 | {
19 | return $"Redirect({this.FromFile} => {this.ToFile}{')'}";
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/ShopItem.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Newtonsoft.Json;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | internal class ShopItem
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | #pragma warning disable CS0649
12 | [DefaultValue(false)]
13 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
14 | public bool BigCraftable;
15 |
16 | public string Conditions;
17 | public int Id;
18 | public int? Price;
19 |
20 | [DefaultValue(1)]
21 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
22 | public int Stack;
23 |
24 | [DefaultValue(int.MaxValue)]
25 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
26 | public int Stock;
27 | #pragma warning restore CS0649
28 |
29 | /*********
30 | ** Public methods
31 | *********/
32 | public override string ToString()
33 | {
34 | return $"ShopItem({this.Id}:{(this.BigCraftable ? "craftable" : "object")}){{Price={this.Price},Stack={this.Stack},Stock={this.Stock},Conditions={this.Conditions}}}";
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/TeleporterDestination.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Newtonsoft.Json;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | internal class TeleporterDestination
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | [DefaultValue(0)]
12 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
13 | public int Direction;
14 |
15 | public string ItemText;
16 | public string MapName;
17 | public int TileX;
18 | public int TileY;
19 |
20 |
21 | /*********
22 | ** Public methods
23 | *********/
24 | public override bool Equals(object a)
25 | {
26 | if (a is TeleporterDestination b)
27 | return b.MapName == this.MapName && b.TileX == this.TileX && b.TileY == this.TileY;
28 |
29 | return false;
30 | }
31 |
32 | public override int GetHashCode()
33 | {
34 | return base.GetHashCode();
35 | }
36 |
37 | public override string ToString()
38 | {
39 | return $"{this.MapName}@[{this.TileX},{this.TileY}]:{this.Direction}";
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/TeleporterList.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.AdvancedLocationLoader.Configs
4 | {
5 | internal class TeleporterList
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | #pragma warning disable CS0649
11 | public List Destinations;
12 | #pragma warning restore CS0649
13 |
14 | public string ListName;
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public override string ToString()
21 | {
22 | return $"TeleporterList({this.ListName}) => {{{string.Join(",", this.Destinations)}{'}'}";
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Tile.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal class Tile : TileInfo
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public int? Interval;
9 | public string LayerId;
10 | public string SheetId;
11 | public int? TileIndex;
12 | public int[] TileIndexes;
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public override string ToString()
19 | {
20 | if (this.TileIndex != null)
21 | if (this.SheetId != null)
22 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.SheetId}:{this.TileIndex}`)";
23 | else
24 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.TileIndex}`)";
25 | if (this.SheetId != null)
26 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.SheetId}:{string.Join(",", this.TileIndexes)}`)";
27 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{string.Join(",", this.TileIndexes)}`)";
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/TileInfo.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Newtonsoft.Json;
3 |
4 | namespace Entoarox.AdvancedLocationLoader.Configs
5 | {
6 | internal abstract class TileInfo
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | #pragma warning disable CS0649
12 | public string Conditions;
13 | public string MapName;
14 |
15 | [DefaultValue(false)]
16 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
17 | public bool Optional;
18 |
19 | public int TileX;
20 | public int TileY;
21 | #pragma warning restore CS0649
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Tilesheet.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using Newtonsoft.Json;
4 |
5 | namespace Entoarox.AdvancedLocationLoader.Configs
6 | {
7 | internal class Tilesheet : MapFileLink
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | public Dictionary Properties = new Dictionary();
13 |
14 | [DefaultValue(false)]
15 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
16 | public bool Seasonal;
17 |
18 | public string SheetId;
19 |
20 |
21 | /*********
22 | ** Public methods
23 | *********/
24 | public override string ToString()
25 | {
26 | return $"Tilesheet({this.MapName}:{this.SheetId},{this.FileName ?? "null"}){{Seasonal={this.Seasonal}}}";
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Configs/Subclasses/Warp.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.AdvancedLocationLoader.Configs
2 | {
3 | internal class Warp : TileInfo
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public string TargetName;
9 | public int TargetX;
10 | public int TargetY;
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public override string ToString()
17 | {
18 | return $"Warp({this.MapName}@[{this.TileX}{','}{this.TileY}] => {this.TargetName}@[{this.TargetX}{','}{this.TargetY}])";
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/ContentPackExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using StardewModdingAPI;
4 |
5 | namespace Entoarox.AdvancedLocationLoader
6 | {
7 | internal static class ContentPackExtensions
8 | {
9 | /*********
10 | ** Public methods
11 | *********/
12 | public static string GetRelativePath(this IContentPack contentPack, string fromAbsolutePath, string toLocalPath)
13 | {
14 | Uri fromUri = new Uri(fromAbsolutePath + Path.DirectorySeparatorChar);
15 | Uri toUri = new Uri(Path.Combine(contentPack.DirectoryPath, toLocalPath));
16 | if (fromUri.Scheme != toUri.Scheme)
17 | throw new InvalidOperationException($"Unable to make path relative to the DLL: {Path.Combine(contentPack.DirectoryPath, toLocalPath)}");
18 | return Uri.UnescapeDataString(fromUri.MakeRelativeUri(toUri).ToString());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Locations/Greenhouse.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics.CodeAnalysis;
2 | using System.Xml.Serialization;
3 | using StardewValley;
4 |
5 | namespace Entoarox.AdvancedLocationLoader.Locations
6 | {
7 | [XmlType("ALLGreenhouse")]
8 | public class Greenhouse : GameLocation
9 | {
10 | /*********
11 | ** Public methods
12 | *********/
13 | public Greenhouse() { }
14 |
15 | public Greenhouse(string mapPath, string name)
16 | : base(mapPath, name) { }
17 |
18 | [SuppressMessage("SMAPI", "AvoidNetField", Justification = "The Name field doesn't have a setter, so we need to do it through the net field value.")]
19 | public override void DayUpdate(int dayOfMonth)
20 | {
21 | string realName = this.Name;
22 | this.name.Value = "Greenhouse";
23 | base.DayUpdate(dayOfMonth);
24 | this.name.Value = realName;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/Locations/Sewer.cs:
--------------------------------------------------------------------------------
1 | using System.Xml.Serialization;
2 |
3 | namespace Entoarox.AdvancedLocationLoader.Locations
4 | {
5 | [XmlType("ALLSewer")]
6 | public class Sewer : StardewValley.Locations.Sewer
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public Sewer() { }
12 |
13 | public Sewer(string mapPath, string name)
14 | : base(mapPath, name) { }
15 |
16 |
17 | /*********
18 | ** Protected methods
19 | *********/
20 | protected override void resetLocalState()
21 | {
22 | base.resetLocalState();
23 | this.characters.Clear();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/i18n/de.json:
--------------------------------------------------------------------------------
1 | {
2 | "sparkle": "Trotz des Funkeln, welches du gesehen hast,sieht es so aus als wäre nicht da.",
3 | "gold": "Gold",
4 | "yesCost": "Ja, das kostet {{amount}} {{itemName}}",
5 | "no": "Nein",
6 | "notEnough": "Du hast nicht genug {{itemName}} dafür.",
7 | "cancel": "Abbruch",
8 | "teleporter": "Wähle einen Zielort:"
9 | }
10 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/i18n/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "sparkle": "Despite the sparkle you saw, there doesn't seem to be anything here.",
3 | "gold": "Gold",
4 | "yesCost": "Yes, costs {{amount}} {{itemName}}",
5 | "no": "No",
6 | "notEnough": "You don't have enough {{itemName}} for this.",
7 | "cancel": "Cancel",
8 | "teleporter": "Choose a destination:"
9 | }
10 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Advanced Location Loader",
3 | "Author": "Entoarox",
4 | "Version": "1.5.1",
5 | "Description": "Get your content into stardew without replacing any xnb files.",
6 | "UniqueID": "Entoarox.AdvancedLocationLoader",
7 | "EntryDll": "AdvancedLocationLoader.dll",
8 | "MinimumApiVersion": "2.9.3",
9 | "UpdateKeys": [ "Nexus:2270" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/ALLModEntry.cs:
--------------------------------------------------------------------------------
1 | using StardewModdingAPI;
2 | using StardewModdingAPI.Events;
3 |
4 | namespace Entoarox.AdvancedLocationLoader2
5 | {
6 | /// The mod entry class.
7 | public class ALLModEntry : Mod
8 | {
9 | /*********
10 | ** Public methods
11 | *********/
12 | /// The mod entry point, called after the mod is first loaded.
13 | /// Provides simplified APIs for writing mods.
14 | public override void Entry(IModHelper helper)
15 | {
16 | helper.Events.GameLoop.GameLaunched += this.OnGameLaunched;
17 | }
18 |
19 |
20 | /*********
21 | ** Private methods
22 | *********/
23 | /// Raised after the game is launched, right before the first update tick. This happens once per game session (unrelated to loading saves). All mods are loaded and initialised at this point, so this is a good time to set up mod integrations.
24 | /// The event sender.
25 | /// The event data.
26 | private void OnGameLaunched(object sender, GameLaunchedEventArgs e)
27 | {
28 | this.LoadContent();
29 | }
30 |
31 | private void LoadContent()
32 | {
33 | foreach (var pack in this.Helper.ContentPacks.GetOwned())
34 | {
35 |
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/AdvancedLocationLoader2.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | AdvancedLocationLoader2
5 | Entoarox.AdvancedLocationLoader2
6 | 1.5.0
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/ContentPack.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class ContentPack
10 | {
11 | #pragma warning disable CS0649
12 | public int Version;
13 | public string[] Includes=new string[0];
14 | public MapFileLink[] Locations = new MapFileLink[0];
15 | public MapFileLink[] Tilesheets = new MapFileLink[0];
16 | public Warp[] Warps = new Warp[0];
17 | public Patch[] Patches = new Patch[0];
18 | public TileEdit[] TileEdits = new TileEdit[0];
19 | public Shop[] Shops = new Shop[0];
20 | #pragma warning restore CS0649
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/Location.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class Location : MapFileLink
10 | {
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/MapFileLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class MapFileLink
10 | {
11 | #pragma warning disable CS0649
12 | public string Conditions;
13 | public string FilePath;
14 | public string MapName;
15 | #pragma warning restore CS0649
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/Patch.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class Patch : MapFileLink
10 | {
11 | #pragma warning disable CS0649
12 | public int X;
13 | public int Y;
14 | public bool Destructive=true;
15 | public bool Full = true;
16 | #pragma warning restore CS0649
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/Shop.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class Shop
10 | {
11 | #pragma warning disable CS0649
12 | public string ShopId;
13 | public string[] ShopMessages;
14 | public int RestockDelay=0;
15 | public ShopItem[] Items=new ShopItem[0];
16 | #pragma warning restore CS0649
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/ShopItem.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class ShopItem
10 | {
11 | #pragma warning disable CS0649
12 | #pragma warning disable CS0169
13 | string ItemName;
14 | int Price;
15 | int Stock=int.MaxValue;
16 | string Conditions;
17 | #pragma warning restore CS0649
18 | #pragma warning restore CS0169
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/TileEdit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class TileEdit
10 | {
11 | #pragma warning disable CS0649
12 | public string MapName;
13 | public int X;
14 | public int Y;
15 | public string Layer;
16 | public string TileSheet;
17 | public int? TileIndex;
18 | public Dictionary Properties;
19 | public string Conditions;
20 | #pragma warning restore CS0649
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/Tilesheet.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class Tilesheet : MapFileLink
10 | {
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/AdvancedLocationLoader2/Structure/Version1/Warp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1
8 | {
9 | class Warp
10 | {
11 | #pragma warning disable CS0649
12 | public string MapName;
13 | public int FromX;
14 | public int FromY;
15 | public string TargetName;
16 | public string TargetX;
17 | public string TargetY;
18 | #pragma warning restore CS0649
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/CustomBooks/CustomBooks.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CustomBooks
5 | Entoarox.CustomBooks
6 | 0.1.0
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/CustomBooks/Menu/InsertPage.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.CustomBooks.Menu
6 | {
7 | internal class InsertPage : SystemPage
8 | {
9 | /*********
10 | ** Public methods
11 | *********/
12 | public InsertPage(BookMenu menu) { }
13 |
14 | public override void Draw(SpriteBatch batch, Rectangle region)
15 | {
16 | Utility.drawTextWithShadow(batch, "Add Page", Game1.dialogueFont, new Vector2(region.X, region.Y + 16), Game1.textColor, 1);
17 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 100, region.Width, "Add Title Page");
18 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 172, region.Width, "Add Text Page");
19 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 244, region.Width, "Add Image Page");
20 | }
21 |
22 | public override Bookshelf.Book.Page Serialize()
23 | {
24 | return null;
25 | }
26 |
27 | public override void Click(Rectangle region, int x, int y) { }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/CustomBooks/Menu/Page.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.CustomBooks.Menu
5 | {
6 | internal abstract class Page
7 | {
8 | public bool Editable = false;
9 | public abstract void Draw(SpriteBatch batch, Rectangle region);
10 | public abstract Bookshelf.Book.Page Serialize();
11 | public abstract void Click(Rectangle region, int x, int y);
12 | public abstract void Release(Rectangle region, int x, int y);
13 | public abstract void Hover(Rectangle region, int x, int y);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/CustomBooks/Menu/TextPage.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.CustomBooks.Menu
6 | {
7 | internal class TextPage : Page
8 | {
9 | /*********
10 | ** Fields
11 | *********/
12 | private readonly string Text;
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public TextPage(string text)
19 | {
20 | this.Text = text;
21 | }
22 |
23 | public override void Draw(SpriteBatch batch, Rectangle region)
24 | {
25 | string text = Game1.parseText(this.Text, Game1.smallFont, region.Width);
26 | Utility.drawTextWithShadow(batch, text, Game1.smallFont, new Vector2(region.X, region.Y), Game1.textColor);
27 | }
28 |
29 | public override Bookshelf.Book.Page Serialize()
30 | {
31 | Bookshelf.Book.Page page = new Bookshelf.Book.Page
32 | {
33 | Type = Bookshelf.Book.PageType.Text,
34 | Content = this.Text
35 | };
36 | return page;
37 | }
38 |
39 | public override void Click(Rectangle region, int x, int y) { }
40 |
41 | public override void Release(Rectangle region, int x, int y) { }
42 |
43 | public override void Hover(Rectangle region, int x, int y) { }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/CustomBooks/assets/abook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/abook.png
--------------------------------------------------------------------------------
/CustomBooks/assets/binding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/binding.png
--------------------------------------------------------------------------------
/CustomBooks/assets/book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/book.png
--------------------------------------------------------------------------------
/CustomBooks/assets/brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/brush.png
--------------------------------------------------------------------------------
/CustomBooks/assets/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/delete.png
--------------------------------------------------------------------------------
/CustomBooks/assets/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/edit.png
--------------------------------------------------------------------------------
/CustomBooks/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/icon.png
--------------------------------------------------------------------------------
/CustomBooks/assets/pages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/pages.png
--------------------------------------------------------------------------------
/CustomBooks/assets/quil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/quil.png
--------------------------------------------------------------------------------
/CustomBooks/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Custom Books",
3 | "Author": "Entoarox",
4 | "Version": "0.1.0",
5 | "Description": "Custom books that the player can fill up as they want!",
6 | "UniqueID": "Entoarox.CustomBooks",
7 | "EntryDll": "CustomBooks.dll",
8 | "MinimumApiVersion": "2.8-beta",
9 | "UpdateKeys": []
10 | }
11 |
--------------------------------------------------------------------------------
/CustomPaths/CustomPathConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.CustomPaths
2 | {
3 | internal class CustomPathConfig
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public int Alternatives = 0;
9 | public string File = "";
10 | public string Name = "";
11 | public int Price = 0;
12 | public string Requirements = null;
13 | public string Salesman = "";
14 | public bool Seasonal = false;
15 | public int SpeedBoost = 0;
16 | public bool Animated = false;
17 | public int[] Frames = new int[0];
18 | public int MillisPerFrame = 200;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/CustomPaths/CustomPaths.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CustomPaths
5 | Entoarox.CustomPaths
6 | 1.1.2
7 | net452
8 | default
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/CustomPaths/README.md:
--------------------------------------------------------------------------------
1 | **Custom Paths** lets players add new path types to the game by installing content packs.
2 |
3 | ## Install
4 | 1. [Install the latest version of SMAPI](https://smapi.io).
5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2272).
7 | 4. Run the game using SMAPI.
8 |
9 | ## Compatibility
10 | * For Stardew Valley 1.3.30 or later.
11 | * Compatible with Linux, Mac, or Windows.
12 | * No known mod conflicts.
13 |
14 | ## Documentation for modders
15 | See an [example content pack](http://cdn.kvdk.net/files/CustomPathsExampleCP.zip) you can start
16 | from to create your own.
17 |
18 | ## See also
19 | * [Release notes](RELEASE-NOTES.md)
20 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2272)
21 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-custompaths.142022/)
22 |
--------------------------------------------------------------------------------
/CustomPaths/RELEASE-NOTES.md:
--------------------------------------------------------------------------------
1 | ## Release notes
2 | ## 1.1.3
3 | Not yet released. (Thanks to Pathoschild!)
4 |
5 | * Updated for Stardew Valley 1.3.
6 | * Fixed Linux/Mac compatibility.
7 | * Removed custom update checks; replaced by standard SMAPI update alerts.
8 | * Refactored internally.
9 |
10 | ## 1.1.2
11 | Released 23 March 2018.
12 |
13 | * Tweaked tooltip for speed-boosting paths.
14 | * Fixed path pieces near the top of the screen disappearing when partially outside the viewport.
15 |
16 | ## 1.1.1
17 | Released 22 March 2018.
18 |
19 | * Fixed speed boosts not getting applied.
20 |
21 | ## 1.1
22 | Released 22 March 2018.
23 |
24 | * Added support for path speed boosts in `paths.json`. Paths with a speed boost will show the boost in their description.
25 | * Optimised performance:
26 | * overhauled path connection logic;
27 | * textures are now only updated as needed;
28 | * implemented some JavasSript-inspired black magic so that initializing the connection & texture information has no negative impact on the draw loop.
29 | * Fixed paths using weed description.
30 |
31 | ## 1.0
32 | Released 22 March 2018.
33 |
--------------------------------------------------------------------------------
/CustomPaths/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Custom Paths",
3 | "Author": "Entoarox",
4 | "Version": "1.2.4",
5 | "Description": "Enables adding custom paths to the game using Content Packs!",
6 | "UniqueID": "Entoarox.CustomPaths",
7 | "EntryDll": "CustomPaths.dll",
8 | "MinimumApiVersion": "2.11.2",
9 | "UpdateKeys": [ "Nexus:2272" ],
10 | "Dependencies": [
11 | {
12 | "UniqueID": "Entoarox.EntoaroxFramework",
13 | "MinimumVersion": "2.4.2"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/DialogueFramework/DialogueEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using StardewValley;
8 |
9 | namespace DialogueFramework
10 | {
11 | public class DialogueEventArgs : EventArgs
12 | {
13 | private readonly List Responses;
14 | internal DialogueEventArgs(List responses)
15 | {
16 | this.Responses = responses;
17 | }
18 |
19 | public void AddResponse(Response response)
20 | {
21 | this.Responses.Add(response);
22 | }
23 |
24 | public void ReplaceResponse(string responseKey, Response response)
25 | {
26 | this.Responses[this.Responses.FindIndex(a => a.responseKey.Equals(responseKey))] = response;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/DialogueFramework/DialogueFramework.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DialogueFramework
5 | DialogueFramework
6 | 1.0.0
7 | net452
8 |
9 | true
10 |
11 | 7.3
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/DialogueFramework/DialogueFrameworkMod.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using StardewModdingAPI;
8 |
9 | namespace DialogueFramework
10 | {
11 | /// The mod entry class.
12 | public class DialogueFrameworkMod : Mod
13 | {
14 | internal static ModApi Api;
15 |
16 | /// The mod entry point, called after the mod is first loaded.
17 | /// Provides simplified APIs for writing mods.
18 | public override void Entry(IModHelper helper)
19 | {
20 | Api = new ModApi();
21 | }
22 |
23 | /// Get an API that other mods can access. This is always called after .
24 | public override object GetApi()
25 | {
26 | return Api;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/DialogueFramework/IModApi.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using StardewValley;
8 |
9 | namespace DialogueFramework
10 | {
11 | interface IModApi
12 | {
13 | event EventHandler ChoiceDialogueOpened;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/DialogueFramework/ModApi.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using StardewValley;
8 |
9 | namespace DialogueFramework
10 | {
11 | public class ModApi : IModApi
12 | {
13 | public event EventHandler ChoiceDialogueOpened;
14 |
15 | internal void FireChoiceDialogueOpened(List responses)
16 | {
17 | ChoiceDialogueOpened?.Invoke(this, new DialogueEventArgs(responses));
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DialogueFramework/Patcher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Reflection;
7 |
8 | using StardewValley;
9 |
10 | using Harmony;
11 |
12 | namespace DialogueFramework
13 | {
14 | [HarmonyPatch]
15 | class Patch1
16 | {
17 | internal static MethodInfo TargetMethod()
18 | {
19 | return AccessTools.Method(Type.GetType("StardewValley.Game1, Stardew Valley") ?? Type.GetType("StardewValley.Game1, StardewValley"), "isCollidingPosition", new[] { typeof(string), typeof(List) });
20 | }
21 |
22 | internal static void Prefix(string dialogue, List choices)
23 | {
24 | DialogueFrameworkMod.Api.FireChoiceDialogueOpened(choices);
25 | }
26 | }
27 | [HarmonyPatch]
28 | class Patch2
29 | {
30 | internal static MethodInfo TargetMethod()
31 | {
32 | return AccessTools.Method(Type.GetType("StardewValley.Game1, Stardew Valley") ?? Type.GetType("StardewValley.Game1, StardewValley"), "isCollidingPosition", new[] { typeof(string), typeof(List), typeof(int) });
33 | }
34 |
35 | internal static void Prefix(string dialogue, List choices)
36 | {
37 | DialogueFrameworkMod.Api.FireChoiceDialogueOpened(choices);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/DiffPatcherV1R0P0/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/DynamicDungeons/ATile.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using xTile.Layers;
3 | using xTile.Tiles;
4 |
5 | namespace Entoarox.DynamicDungeons
6 | {
7 | internal struct ATile : ITile
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | public int X { get; set; }
13 | public int Y { get; set; }
14 | public Layer Layer { get; set; }
15 | public STile[] Frames;
16 | public int Interval;
17 |
18 |
19 | /*********
20 | ** Public methods
21 | *********/
22 | public ATile(int x, int y, Layer layer, STile[] frames, int interval)
23 | {
24 | this.X = x;
25 | this.Y = y;
26 | this.Layer = layer;
27 | this.Frames = frames;
28 | this.Interval = interval;
29 | }
30 |
31 | public Tile Get()
32 | {
33 | return new AnimatedTile(this.Layer, this.Frames.Select(tile => (StaticTile)tile.Get()).ToArray(), this.Interval);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/DynamicDungeons/ActionInfo.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using StardewValley;
3 |
4 | namespace Entoarox.DynamicDungeons
5 | {
6 | internal class ActionInfo
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public Farmer Player { get; }
12 | public string Action { get; }
13 | public string[] Arguments { get; }
14 | public Vector2 Position { get; }
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public ActionInfo(Farmer player, string action, string[] arguments, Vector2 position)
21 | {
22 | this.Player = player;
23 | this.Action = action;
24 | this.Arguments = arguments;
25 | this.Position = position;
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/DynamicDungeons/DynamicDungeons.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DynamicDungeons
5 | Entoarox.DynamicDungeons
6 | 0.1.16
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/DynamicDungeons/DynamicDungeonsAPI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StardewValley;
3 | using SObject = StardewValley.Object;
4 |
5 | namespace Entoarox.DynamicDungeons
6 | {
7 | internal class DynamicDungeonsAPI
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | public double CurrentDifficulty => ModEntry.Location?.Difficulty ?? 0;
13 | public int CurrentFloorLevel => ModEntry.Location?.Floor ?? 0;
14 | public bool InDungeon => Game1.currentLocation != null && Game1.currentLocation is DynamicDungeon;
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public void RegisterLootEntry(string table, double dropChance, SObject itemLoot)
21 | {
22 | if (!LootHandler.LootTables.ContainsKey(table))
23 | LootHandler.LootTables.Add(table, new LootHandler());
24 | LootHandler.LootTables[table].Add(dropChance, itemLoot);
25 | }
26 |
27 | public void RegisterLootEntry(string table, double dropChance, Func itemLootCallback)
28 | {
29 | if (!LootHandler.LootTables.ContainsKey(table))
30 | LootHandler.LootTables.Add(table, new LootHandler());
31 | LootHandler.LootTables[table].Add(dropChance, itemLootCallback);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/DynamicDungeons/DynamicDungeonsSavefile.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StardewValley.Objects;
3 |
4 | namespace Entoarox.DynamicDungeons
5 | {
6 | internal class DynamicDungeonsSavefile
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public Dictionary LoreFound = new Dictionary();
12 | public Chest StorageChest = new Chest();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/DynamicDungeons/ITile.cs:
--------------------------------------------------------------------------------
1 | using xTile.Layers;
2 |
3 | namespace Entoarox.DynamicDungeons
4 | {
5 | internal interface ITile
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | int X { get; set; }
11 | int Y { get; set; }
12 | Layer Layer { get; set; }
13 |
14 |
15 | /*********
16 | ** Methods
17 | *********/
18 | xTile.Tiles.Tile Get();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DynamicDungeons/PTile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using xTile.Layers;
3 |
4 | namespace Entoarox.DynamicDungeons
5 | {
6 | internal struct PTile : ITile
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public int X { get; set; }
12 | public int Y { get; set; }
13 | public Layer Layer { get; set; }
14 | public string Key;
15 | public string Value;
16 |
17 |
18 | /*********
19 | ** Public methods
20 | *********/
21 | public PTile(int x, int y, Layer layer, string key, string value)
22 | {
23 | this.X = x;
24 | this.Y = y;
25 | this.Layer = layer;
26 | this.Key = key;
27 | this.Value = value;
28 | }
29 |
30 | public xTile.Tiles.Tile Get()
31 | {
32 | throw new NotImplementedException();
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/DynamicDungeons/Page.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.DynamicDungeons
5 | {
6 | internal abstract class Page
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public abstract void Draw(SpriteBatch batch, Rectangle region);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/DynamicDungeons/STile.cs:
--------------------------------------------------------------------------------
1 | using xTile.Layers;
2 | using xTile.Tiles;
3 |
4 | namespace Entoarox.DynamicDungeons
5 | {
6 | internal struct STile : ITile
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public int X { get; set; }
12 | public int Y { get; set; }
13 | public Layer Layer { get; set; }
14 | public TileSheet Sheet;
15 | public int Index;
16 |
17 |
18 | /*********
19 | ** Public methods
20 | *********/
21 | public STile(int x, int y, Layer layer, TileSheet sheet, int index)
22 | {
23 | this.X = x;
24 | this.Y = y;
25 | this.Layer = layer;
26 | this.Sheet = sheet;
27 | this.Index = index;
28 | }
29 |
30 | public xTile.Tiles.Tile Get()
31 | {
32 | return new StaticTile(this.Layer, this.Sheet, BlendMode.Additive, this.Index);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/DynamicDungeons/TextPage.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.DynamicDungeons
6 | {
7 | internal class TextPage : Page
8 | {
9 | /*********
10 | ** Fields
11 | *********/
12 | private readonly string Text;
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public TextPage(string text)
19 | {
20 | this.Text = text;
21 | }
22 |
23 | public override void Draw(SpriteBatch batch, Rectangle region)
24 | {
25 | string text = Game1.parseText(this.Text, Game1.smallFont, region.Width);
26 | Utility.drawTextWithShadow(batch, text, Game1.smallFont, new Vector2(region.X, region.Y), Game1.textColor);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/DynamicDungeons/Tiles/PropertyTile.cs:
--------------------------------------------------------------------------------
1 | using xTile;
2 |
3 | namespace Entoarox.DynamicDungeons.Tiles
4 | {
5 | internal class PropertyTile : Tile
6 | {
7 | /*********
8 | ** Fields
9 | *********/
10 | private readonly string Key;
11 | private readonly string Value;
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public PropertyTile(int x, int y, string layer, string key, string value)
18 | : base(x, y, layer)
19 | {
20 | this.Key = key;
21 | this.Value = value;
22 | }
23 |
24 | public override void Apply(int x, int y, Map map)
25 | {
26 | map.GetLayer(this.Layer).Tiles[this.X + x, this.Y + y]?.Properties.Add(this.Key, this.Value);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/DynamicDungeons/Tiles/StaticTile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using xTile;
3 | using xTile.Layers;
4 | using xTile.Tiles;
5 |
6 | namespace Entoarox.DynamicDungeons.Tiles
7 | {
8 | internal class StaticTile : Tile
9 | {
10 | /*********
11 | ** Fields
12 | *********/
13 | private readonly int Index;
14 | private readonly string Sheet;
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public StaticTile(int x, int y, string layer, int index, string sheet)
21 | : base(x, y, layer)
22 | {
23 | this.Index = index >= 0 ? index : throw new ArgumentOutOfRangeException(nameof(index));
24 | this.Sheet = sheet ?? throw new ArgumentNullException(nameof(sheet));
25 | }
26 |
27 | public override void Apply(int x, int y, Map map)
28 | {
29 | Layer layer = map.GetLayer(this.Layer);
30 | layer.Tiles[this.X + x, this.Y + y] = new xTile.Tiles.StaticTile(layer, map.GetTileSheet(this.Sheet), BlendMode.Additive, this.Index);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/DynamicDungeons/Tiles/Tile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using xTile;
3 |
4 | namespace Entoarox.DynamicDungeons.Tiles
5 | {
6 | internal abstract class Tile
7 | {
8 | /*********
9 | ** Fields
10 | *********/
11 | protected string Layer;
12 | protected int X;
13 | protected int Y;
14 |
15 |
16 | /*********
17 | ** Public methods
18 | *********/
19 | public abstract void Apply(int x, int y, Map map);
20 |
21 | public void Apply(Map map)
22 | {
23 | this.Apply(0, 0, map);
24 | }
25 |
26 |
27 | /*********
28 | ** Protected methods
29 | *********/
30 | protected Tile(int x, int y, string layer)
31 | {
32 | this.X = x >= 0 ? x : throw new ArgumentOutOfRangeException(nameof(x));
33 | this.Y = y >= 0 ? y : throw new ArgumentOutOfRangeException(nameof(y));
34 | this.Layer = layer ?? throw new ArgumentNullException(nameof(layer));
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/DynamicDungeons/assets/DynamicDungeonsEntrance.tbin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/DynamicDungeonsEntrance.tbin
--------------------------------------------------------------------------------
/DynamicDungeons/assets/book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/book/doodle1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle1.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/book/doodle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle2.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/book/doodle3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle3.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/credits.txt:
--------------------------------------------------------------------------------
1 | Extra non-vanilla tiles have been created for me by community members over on the SDV discord.
2 | My thanks to the following people, for their work!
3 |
4 | Prismuth:
5 | - The ore boulder
6 | - The extra minecart tracks
7 | - The background texture used for the book menu
8 | - The custom tiles for the dungeon entrance
9 |
10 | ChefRude:
11 | - The offer statue
12 | - Eye animation on the dwarven vendor
13 | - The ore-vein walls
14 | - The dripping water walls
15 |
16 | Eiri:
17 | - The stalagmites
18 | - The caved-in skeleton
19 | - Creating the dwarven vendor sprite
20 | - Pufferchick NPC
--------------------------------------------------------------------------------
/DynamicDungeons/assets/door.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/door.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/dungeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/dungeon.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/entrance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/entrance.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_boulder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_boulder.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_cavein.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_cavein.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_dwarfvendor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_dwarfvendor.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_info.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_stalagmite1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_stalagmite1.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_stalagmite2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_stalagmite2.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_statue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_statue.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_tracks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_tracks.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/sheet_walls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_walls.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/DoorSpriteSheet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/DoorSpriteSheet.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/door_anim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_anim.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/door_anim2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_anim2.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/door_wall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_wall.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/merged.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/merged.xcf
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/probably_old_robot_thingy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/probably_old_robot_thingy.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/pufferchick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/pufferchick.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/robot_head_animation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/robot_head_animation.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/sheet_info.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_info.xcf
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/sheet_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_light.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/unused/sheet_walls2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_walls2.png
--------------------------------------------------------------------------------
/DynamicDungeons/assets/zDynamicDungeonsEntrance_tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/zDynamicDungeonsEntrance_tiles.png
--------------------------------------------------------------------------------
/DynamicDungeons/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Dynamic Dungeons",
3 | "Author": "Entoarox",
4 | "Version": "0.1.16",
5 | "Description": "Adds new dynamically generated dungeons to stardew valley!",
6 | "UniqueID": "Entoarox.DynamicDungeons",
7 | "EntryDll": "DynamicDungeons.dll",
8 | "MinimumApiVersion": "2.8-beta",
9 | "UpdateKeys": []
10 | }
11 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Assets/Boots.json:
--------------------------------------------------------------------------------
1 | {
2 | "sneakers": 504,
3 | "rubber_boots": 505,
4 | "leather_boots": 506,
5 | "work_boots": 507,
6 | "combat_boots": 508,
7 | "tundra_boots": 509,
8 | "thermal_boots": 510,
9 | "dark_boots": 511,
10 | "firewalker_boots": 512,
11 | "genie_shoes": 513,
12 | "space_boots": 514,
13 | "cowboy_boots": 515,
14 | "emilys_magic_boots": 804,
15 | "leprechaun_shoes": 806
16 | }
--------------------------------------------------------------------------------
/EntoaroxUtilities/Assets/Floor.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/EntoaroxUtilities/Assets/Ring.json:
--------------------------------------------------------------------------------
1 | {
2 | "amethyst_ring": 529,
3 | "aquamarine_ring": 531,
4 | "burglars_ring": 526,
5 | "crabshell_ring": 810,
6 | "emerald_ring": 533,
7 | "glow_ring": 517,
8 | "iridium_band": 527,
9 | "jade_ring": 532,
10 | "jukebox_ring": 528,
11 | "magnet_ring": 519,
12 | "napalm_ring": 811,
13 | "ring_of_yoba": 524,
14 | "ruby_ring": 534,
15 | "savage_ring": 523,
16 | "slime_charmer_ring": 520,
17 | "small_glow_ring": 516,
18 | "small_magnet_ring": 518,
19 | "sturdy_ring": 525,
20 | "topaz_ring": 530,
21 | "vampire_ring": 522,
22 | "warrior_ring": 521,
23 | }
--------------------------------------------------------------------------------
/EntoaroxUtilities/Assets/Wallpaper.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/EntoaroxUtilities/EUGlobals.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Utilities
2 | {
3 | public static class EUGlobals
4 | {
5 | public static IEntoUtilsApi Api => Internals.Api.EntoUtilsApi.Instance;
6 |
7 | public delegate bool TypeIdResolverDelegate(StardewValley.Item item, ref string typeId);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Internals/Api/ICustomFarmingApi.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.Utilities.Internals.Api
8 | {
9 | interface ICustomFarmingApi
10 | {
11 | StardewValley.Item getCustomObject(string id);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Internals/Api/IJsonAssetsApi.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.Utilities.Internals.Api
4 | {
5 | public interface IJsonAssetsApi
6 | {
7 | int GetObjectId(string name);
8 | int GetBigCraftableId(string name);
9 | int GetHatId(string name);
10 | int GetWeaponId(string name);
11 | int GetClothingId(string name);
12 |
13 | IDictionary GetAllObjectIds();
14 | IDictionary GetAllBigCraftableIds();
15 | IDictionary GetAllHatIds();
16 | IDictionary GetAllWeaponIds();
17 | IDictionary GetAllClothingIds();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Internals/Api/IPrismaticToolsApi.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Utilities.Internals.Api
2 | {
3 | public interface IPrismaticToolsApi
4 | {
5 | int SprinklerIndex { get; }
6 | int BarIndex { get; }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Internals/AssetHandlers/HelperSheetLoader.cs:
--------------------------------------------------------------------------------
1 | using StardewModdingAPI;
2 |
3 | using Microsoft.Xna.Framework.Graphics;
4 |
5 | namespace Entoarox.Utilities.Internals.AssetHandlers
6 | {
7 | class HelperSheetLoader : IAssetLoader
8 | {
9 | public bool CanLoad(IAssetInfo asset)
10 | {
11 | return asset.AssetNameEquals("__EMU_HELPER_TILESHEET.png") || asset.AssetNameEquals("Maps/__EMU_HELPER_TILESHEET.png") || asset.AssetNameEquals("__EMU_HELPER_TILESHEET") || asset.AssetNameEquals("Maps/__EMU_HELPER_TILESHEET");
12 | }
13 |
14 | public T Load(IAssetInfo asset)
15 | {
16 | return (T)(object)new Texture2D(StardewValley.Game1.graphics.GraphicsDevice, 16, 16);
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Internals/Helpers/ModApi.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Utilities.Internals.Helpers
2 | {
3 | using Internals;
4 | public static class ModApi
5 | {
6 | public static bool IsLoadedAndApiAvailable(string mod, out T api) where T : class
7 | {
8 | api = null;
9 | if(EntoUtilsMod.Instance.Helper.ModRegistry.IsLoaded(mod))
10 | api = EntoUtilsMod.Instance.Helper.ModRegistry.GetApi(mod);
11 | return api != null;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/Tools/Timer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using StardewModdingAPI;
8 |
9 | namespace Entoarox.Utilities.Tools
10 | {
11 | public static class Timer
12 | {
13 | private static readonly Dictionary> Timers = new Dictionary>();
14 |
15 | public static void StartTimer(this IMonitor monitor, string id, string message = null)
16 | {
17 | if (!Timers.ContainsKey(monitor))
18 | Timers.Add(monitor, new Dictionary());
19 | Timers[monitor][id] = DateTime.Now;
20 | if (message != null)
21 | monitor.Log(message);
22 | }
23 | public static TimeSpan StopTimer(this IMonitor monitor, string id, string message = null)
24 | {
25 | TimeSpan time = TimeSpan.Zero;
26 | if (Timers.ContainsKey(monitor) && Timers[monitor].ContainsKey(id))
27 | time = DateTime.Now.Subtract(Timers[monitor][id]);
28 | if (message != null)
29 | monitor.Log(message.Replace("{{TIME}}", time.TotalMilliseconds.ToString()));
30 | return time;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Abstract/AbstractComponent.cs:
--------------------------------------------------------------------------------
1 | using Entoarox.Utilities.UI.Interfaces;
2 |
3 | using Microsoft.Xna.Framework;
4 | using Microsoft.Xna.Framework.Graphics;
5 |
6 | namespace Entoarox.Utilities.UI.Abstract
7 | {
8 | public abstract class AbstractComponent : IComponent
9 | {
10 | public virtual IComponentContainer Container { get; set; }
11 |
12 | public string Id { get; set; }
13 |
14 | protected int _Layer = 0;
15 | public int Layer
16 | {
17 | get => this._Layer;
18 | set
19 | {
20 | this._Layer = value;
21 | this.Container?.MarkDirty();
22 | }
23 | }
24 |
25 | protected bool _Visible = true;
26 | public bool Visible
27 | {
28 | get => this._Visible;
29 | set
30 | {
31 | this._Visible = value;
32 | this.Container?.MarkDirty();
33 | }
34 | }
35 |
36 | public virtual Rectangle DisplayRegion { get; set; }
37 |
38 | public abstract void Draw(Rectangle drawRect, SpriteBatch batch);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Abstract/AbstractUpdatingComponent.cs:
--------------------------------------------------------------------------------
1 | using Entoarox.Utilities.UI.Interfaces;
2 |
3 | using Microsoft.Xna.Framework;
4 |
5 | namespace Entoarox.Utilities.UI.Abstract
6 | {
7 | public abstract class AbstractUpdatingComponent : AbstractComponent, IUpdatingComponent
8 | {
9 | public abstract void Update(GameTime time);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Abstract/AbstractUpdatingInteractiveComponent.cs:
--------------------------------------------------------------------------------
1 | using Entoarox.Utilities.UI.Interfaces;
2 |
3 | using Microsoft.Xna.Framework;
4 |
5 | namespace Entoarox.Utilities.UI.Abstract
6 | {
7 | public abstract class AbstractUpdatingInteractiveComponent : AbstractInteractiveComponent, IUpdatingComponent
8 | {
9 | public abstract void Update(GameTime time);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.Utilities.UI.Interfaces
5 | {
6 | public interface IComponent
7 | {
8 | IComponentContainer Container { get; set; }
9 | string Id { get; set; }
10 | int Layer { get; set; }
11 | bool Visible { get; set; }
12 | Rectangle DisplayRegion { get; set; }
13 |
14 | void Draw(Rectangle drawRect, SpriteBatch batch);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IComponentCollection.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Utilities.UI.Interfaces
4 | {
5 | public interface IComponentCollection : IComponentContainer, IInteractiveComponent, IUpdatingComponent
6 | {
7 | Rectangle ComponentRegion { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IComponentContainer.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.Utilities.UI.Interfaces
4 | {
5 | public interface IComponentContainer : IEnumerable
6 | {
7 | IComponentMenu Menu { get; }
8 | IComponentContainer Components { get; }
9 |
10 | IComponent this[string componentId] { get; }
11 |
12 | void Add(IComponent component);
13 | void Remove(IComponent component);
14 | bool Contains(IComponent component);
15 | void Remove(string componentId);
16 | bool Contains(string componentId);
17 | void MarkDirty();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IComponentMenu.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Utilities.UI.Interfaces
2 | {
3 | public interface IComponentMenu : IComponentContainer
4 | {
5 | IInteractiveComponent FocusComponent { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IInteractiveComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Input;
3 | using Microsoft.Xna.Framework.Graphics;
4 |
5 | namespace Entoarox.Utilities.UI.Interfaces
6 | {
7 | public interface IInteractiveComponent : IComponent
8 | {
9 | bool Enabled { get; set; }
10 | Rectangle FocusRegion { get; }
11 |
12 | IInteractiveComponent NextUp { get; set; }
13 | IInteractiveComponent NextDown { get; set; }
14 | IInteractiveComponent NextLeft { get; set; }
15 | IInteractiveComponent NextRight { get; set; }
16 |
17 | int Scroll(int scrollAmount);
18 |
19 | void MouseIn(Point position);
20 | void MouseMove(Point position);
21 | void MouseOut(Point position);
22 |
23 | void LeftDown(Point position);
24 | void LeftHeld(Point position);
25 | void LeftUp(Point position);
26 |
27 | void RightDown(Point position);
28 | void RightHeld(Point position);
29 | void RightUp(Point position);
30 |
31 | void KeyDown(Keys key);
32 | void KeyHeld(Keys key);
33 | void KeyUp(Keys key);
34 |
35 | void FocusGained();
36 | void FocusLost();
37 |
38 | void Draw(Rectangle screenRect, Rectangle drawRect, SpriteBatch batch);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/UI/Interfaces/IUpdatingComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Utilities.UI.Interfaces
4 | {
5 | public interface IUpdatingComponent : IComponent
6 | {
7 | void Update(GameTime time);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Entoarox Modding Utilities",
3 | "Author": "Entoarox",
4 | "Version": "0.1.2",
5 | "Description": "Contains utilities to help make modding easier and provide cross-mod support for common things.",
6 | "UniqueID": "Entoarox.Utilities",
7 | "MinimumApiVersion": "3.8",
8 | "EntryDll": "EntoaroxUtilities.dll",
9 | "UpdateKeys": [ "nexus:5521" ]
10 | }
11 |
--------------------------------------------------------------------------------
/EntoaroxUtilities/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ExtendedMinecart/ExtendedMinecart.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ExtendedMinecart
5 | Entoarox.ExtendedMinecart
6 | 1.8.2
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ExtendedMinecart/ModConfig.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.ExtendedMinecart
4 | {
5 | internal class ModConfig
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public bool RefuelingEnabled = true;
11 | public double RefuelRequiredChance = 0.05;
12 | public bool AlternateDesertMinecart = false;
13 | public bool AlternateFarmMinecart = false;
14 | public bool FarmDestinationEnabled = true;
15 | public bool DesertDestinationEnabled = true;
16 | public bool WoodsDestinationEnabled = true;
17 | public bool BeachDestinationEnabled = true;
18 | public bool WizardDestinationEnabled = true;
19 | public bool UseCustomFarmDestination = false;
20 | public Point CustomFarmDestinationPoint = new Point(0, 0);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ExtendedMinecart/README.md:
--------------------------------------------------------------------------------
1 | **Extended Minecart** adds new minecart destinations to the game, that function as both in and out
2 | spots.
3 |
4 | ## Install
5 | 1. [Install the latest version of SMAPI](https://smapi.io).
6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2271).
8 | 4. Run the game using SMAPI.
9 |
10 | ## Use
11 | This mod adds new minecart destinations that function as both in and out spots. Some of these
12 | destinations unlock immediately, while others have requirements (like the Quarry). As a side-effect
13 | of having more places to go, the carts now have a small chance to run out of fuel and require you
14 | to input 5 coal before you can use them again.
15 |
16 | Made by request of Pathoschild as a somewhat Christmas gift, so share the thanks with him if you
17 | like it!
18 |
19 | ## Compatibility
20 | * For Stardew Valley 1.3.30 or later.
21 | * Compatible with Linux, Mac, or Windows.
22 | * No known mod conflicts.
23 |
24 | ## See also
25 | * [Release notes](RELEASE-NOTES.md)
26 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2271)
27 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-extended-minecart.127425/)
28 |
--------------------------------------------------------------------------------
/ExtendedMinecart/i18n/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "choose-destination": "Choose destination",
3 | "needs-refuel.question": "The minecart has run out of fuel. Use 5 coal to refuel it?",
4 | "needs-refuel.no-coal": "The minecart is out of fuel and requires 5 coal to be refueled.",
5 |
6 | "destination.farm": "Farm",
7 | "destination.town": "Town",
8 | "destination.mine": "Mine",
9 | "destination.bus": "Bus",
10 | "destination.quarry": "Quarry",
11 | "destination.desert": "Desert",
12 | "destination.woods": "Woods",
13 | "destination.beach": "Beach",
14 | "destination.wizard": "Wizard"
15 | }
16 |
--------------------------------------------------------------------------------
/ExtendedMinecart/i18n/pt.json:
--------------------------------------------------------------------------------
1 | {
2 | "choose-destination": "Escolher Destino",
3 | "needs-refuel.question": "O carrinho ficou sem combustível. Usar 5 carvões para reabastecer?",
4 | "needs-refuel.no-coal": "O carrinho está sem combustível é necessário 5 carvões para voltar a funcionar.",
5 |
6 | "destination.farm": "Fazenda",
7 | "destination.town": "Cidade",
8 | "destination.mine": "Mina",
9 | "destination.bus": "Ônibus",
10 | "destination.quarry": "Pedreira",
11 | "destination.desert": "Deserto",
12 | "destination.woods": "Floresta Abandonada",
13 | "destination.beach": "Praia",
14 | "destination.wizard": "Feiticeiro"
15 | }
--------------------------------------------------------------------------------
/ExtendedMinecart/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Extended Minecart",
3 | "Author": "Entoarox",
4 | "Version": "1.9.1",
5 | "Description": "More destinations for your minecart needs!",
6 | "UniqueID": "Entoarox.ExtendedMinecart",
7 | "EntryDll": "ExtendedMinecart.dll",
8 | "MinimumApiVersion": "2.11.0",
9 | "UpdateKeys": [ "Nexus:2271" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/FasterPaths/FasterPaths.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | FasterPaths
5 | Entoarox.FasterPaths
6 | 1.3.5
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/FasterPaths/ModConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.FasterPaths
2 | {
3 | public class ModConfig
4 | {
5 | public int WalkSpeedBoost = 0;
6 | public int RunSpeedBoost = 0;
7 |
8 | public int GravelPathBoost = 0;
9 |
10 | public int WoodFloorBoost = 1;
11 | public int WoodPathBoost = 1;
12 | public int PlankFloorBoost = 1;
13 |
14 | public int WeatheredFloorBoost = 2;
15 | public int StrawFloorBoost = 2;
16 |
17 | public int StoneFloorBoost = 3;
18 | public int CobblePathBoost = 3;
19 | public int SteppingStoneBoost = 3;
20 | public int BrickFloorBoost = 3;
21 | public int TownFloorBoost = 3;
22 |
23 | public int CrystalFloorBoost = 4;
24 | public int CrystalPathBoost = 4;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/FasterPaths/README.md:
--------------------------------------------------------------------------------
1 | **Faster Paths** makes you move faster while walking on a path you placed yourself. (To move faster
2 | off path too, run the game with the mod installed once and then edit the `config.json`.)
3 |
4 | ## Install
5 | 1. [Install the latest version of SMAPI](https://smapi.io).
6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2277).
8 | 4. Run the game using SMAPI.
9 |
10 | ## Compatibility
11 | * For Stardew Valley 1.3.30 or later.
12 | * Compatible with Linux, Mac, or Windows.
13 | * No known mod conflicts.
14 |
15 | ## See also
16 | * [Release notes](RELEASE-NOTES.md)
17 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2277)
18 | * [Discussion thread](https://community.playstarbound.com/resources/smapi-faster-paths.3641/)
19 |
--------------------------------------------------------------------------------
/FasterPaths/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Faster Paths",
3 | "Author": "Entoarox",
4 | "Version": "1.3.8",
5 | "Description": "Walk faster on paths, better paths faster movement!",
6 | "UniqueID": "Entoarox.FasterPaths",
7 | "EntryDll": "FasterPaths.dll",
8 | "MinimumApiVersion": "3.8",
9 | "UpdateKeys": [ "Nexus:2277" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/Framework/Advanced/PolyTupleHelper.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Advanced
2 | {
3 | internal class PolyTupleHelper
4 | {
5 | /*********
6 | ** Public methods
7 | *********/
8 | public static int CreateHashCode(params object[] objects)
9 | {
10 | int hash1 = (5381 << 16) + 5381;
11 | int hash2 = hash1;
12 |
13 | int i = 0;
14 | foreach (object obj in objects)
15 | {
16 | int hashCode = obj.GetHashCode();
17 | if (i % 2 == 0)
18 | hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27)) ^ hashCode;
19 | else
20 | hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27)) ^ hashCode;
21 | ++i;
22 | }
23 |
24 | return hash1 + hash2 * 1566083941;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Framework/Advanced/TupleSyntax.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Advanced
2 | {
3 | public static class TupleSyntax
4 | {
5 | /*********
6 | ** Public methods
7 | *********/
8 | public static PolyTuple T(T1 item1, T2 item2)
9 | {
10 | return new PolyTuple(item1, item2);
11 | }
12 |
13 | public static PolyTuple T(T1 item1, T2 item2, T3 item3)
14 | {
15 | return new PolyTuple(item1, item2, item3);
16 | }
17 |
18 | public static PolyTuple T(T1 item1, T2 item2, T3 item3, T4 item4)
19 | {
20 | return new PolyTuple(item1, item2, item3, item4);
21 | }
22 |
23 | public static PolyTuple T(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)
24 | {
25 | return new PolyTuple(item1, item2, item3, item4, item5);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/ApiWrappers/IJsonAssetsAPI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Entoarox.Framework.ApiWrappers
5 | {
6 |
7 | public interface IJsonAssetsAPI
8 | {
9 | void LoadAssets(string path);
10 |
11 | int GetObjectId(string name);
12 | int GetCropId(string name);
13 | int GetFruitTreeId(string name);
14 | int GetBigCraftableId(string name);
15 | int GetHatId(string name);
16 | int GetWeaponId(string name);
17 |
18 | IDictionary GetAllObjectIds();
19 | IDictionary GetAllCropIds();
20 | IDictionary GetAllFruitTreeIds();
21 | IDictionary GetAllBigCraftableIds();
22 | IDictionary GetAllHatIds();
23 | IDictionary GetAllWeaponIds();
24 |
25 | event EventHandler IdsAssigned;
26 | event EventHandler AddedItemsToShop;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/Config/ConfigDropdownAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StardewModdingAPI;
3 |
4 | namespace Entoarox.Framework.Config
5 | {
6 | [Obsolete]
7 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
8 | public class ConfigDropdownAttribute : ConfigAttribute
9 | {
10 | /*********
11 | ** Accessors
12 | *********/
13 | internal string[] Options;
14 |
15 |
16 | /*********
17 | ** Public methods
18 | *********/
19 | /// Configs that can be accessed using must use this attribute or the parent attribute on properties they wish to be dynamic. This attribute is for members of the type where multiple options should be shown in a dropdown.
20 | /// The label to display in front of this config option.
21 | /// The description to show when the label for this config option is hovered over, should explain what the option does.
22 | /// The list of dropdown options to display
23 | public ConfigDropdownAttribute(string label, string description, string[] options)
24 | : base(label, description)
25 | {
26 | this.Options = options;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/DeferredAssetInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework.Core.AssetHandlers
4 | {
5 | internal class DeferredAssetInfo
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public Type Type { get; set; }
11 | public Delegate Handler { get; set; }
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public DeferredAssetInfo(Type type, Delegate handler)
18 | {
19 | this.Type = type;
20 | this.Handler = handler;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/DeferredTypeHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using StardewModdingAPI;
4 |
5 | namespace Entoarox.Framework.Core.AssetHandlers
6 | {
7 | internal class DeferredTypeHandler : IAssetEditor
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | internal static Dictionary> EditMap = new Dictionary>();
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public bool CanEdit(IAssetInfo asset)
19 | {
20 | return DeferredTypeHandler.EditMap.ContainsKey(typeof(T));
21 | }
22 |
23 | public void Edit(IAssetData assetData)
24 | {
25 | T asset = assetData.GetData();
26 | foreach (AssetInjector injector in DeferredTypeHandler.EditMap[typeof(T)])
27 | injector(assetData.AssetName, ref asset);
28 | assetData.ReplaceWith(asset);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/DictionaryInjector.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Entoarox.Framework.Core.Utilities;
3 | using StardewModdingAPI;
4 |
5 | namespace Entoarox.Framework.Core.AssetHandlers
6 | {
7 | internal class DictionaryInjector : IAssetEditor
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | internal static Dictionary Map = new Dictionary();
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public bool CanEdit(IAssetInfo info)
19 | {
20 | return DictionaryInjector.Map.ContainsKey(info.AssetName) && DictionaryInjector.Map[info.AssetName].DataType == typeof(T);
21 | }
22 |
23 | public void Edit(IAssetData data)
24 | {
25 | DictionaryInjector.Map[data.AssetName].ApplyPatches(data);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/TextureInjector.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewModdingAPI;
4 |
5 | namespace Entoarox.Framework.Core.AssetHandlers
6 | {
7 | internal class TextureInjector : IAssetEditor
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | internal static Dictionary> Map = new Dictionary>();
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public bool CanEdit(IAssetInfo info)
19 | {
20 | return typeof(T) == typeof(Texture2D) && TextureInjector.Map.ContainsKey(info.AssetName);
21 | }
22 |
23 | public void Edit(IAssetData data)
24 | {
25 | IAssetDataForImage img = data.AsImage();
26 | foreach (TextureInjectorInfo entry in TextureInjector.Map[data.AssetName])
27 | img.PatchImage(entry.Texture, entry.Source, entry.Destination, PatchMode.Replace);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/TextureInjectorInfo.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.Framework.Core.AssetHandlers
5 | {
6 | internal class TextureInjectorInfo
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public Texture2D Texture { get; }
12 | public Rectangle? Source { get; }
13 | public Rectangle? Destination { get; }
14 |
15 |
16 | /*********
17 | ** Public methods
18 | *********/
19 | public TextureInjectorInfo(Texture2D texture, Rectangle? source, Rectangle? destination)
20 | {
21 | this.Texture = texture;
22 | this.Source = source;
23 | this.Destination = destination;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Framework/Core/AssetHandlers/XnbLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using StardewModdingAPI;
4 |
5 | namespace Entoarox.Framework.Core.AssetHandlers
6 | {
7 | internal class XnbLoader : IAssetLoader
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | internal static Dictionary> Map = new Dictionary>();
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public bool CanLoad(IAssetInfo asset)
19 | {
20 | return XnbLoader.Map.ContainsKey(asset.AssetName);
21 | }
22 |
23 | public T Load(IAssetInfo asset)
24 | {
25 | return XnbLoader.Map[asset.AssetName].Item1.Load(XnbLoader.Map[asset.AssetName].Item2);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/Core/Injection/HoeDirt_canPlantThisSeedHere.cs:
--------------------------------------------------------------------------------
1 | using Harmony;
2 | using StardewValley;
3 | using StardewValley.TerrainFeatures;
4 |
5 | namespace Entoarox.Framework.Core.Injection
6 | {
7 | [HarmonyPatch(typeof(HoeDirt), "canPlantThisSeedHere", new[] { typeof(int), typeof(int), typeof(int), typeof(bool) })]
8 | internal class HoeDirt_canPlantThisSeedHere
9 | {
10 | /*********
11 | ** Protected methods
12 | *********/
13 | private static bool Prefix(HoeDirt __instance, bool __return, int objectIndex, int tileX, int tileY, bool isFertilizer)
14 | {
15 | return
16 | isFertilizer
17 | || __instance.crop != null
18 | || !(EntoaroxFrameworkMod.Config.GreenhouseEverywhere || Game1.currentLocation is IAugmentedLocation && (Game1.currentLocation as IAugmentedLocation).IsGreenhouse);
19 | }
20 |
21 | private static void Postfix(HoeDirt __instance, bool __return, int objectIndex, int tileX, int tileY, bool isFertilizer)
22 | {
23 | Crop crop = new Crop(objectIndex, tileX, tileY);
24 | __return =
25 | crop.seasonsToGrowIn.Count != 0
26 | && (!crop.raisedSeeds.Value || !Utility.doesRectangleIntersectTile(Game1.player.GetBoundingBox(), tileX, tileY));
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Framework/Core/Message.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.Core
4 | {
5 | internal class Message
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public string Text;
11 | public float Alpha;
12 | public int Time;
13 | public int Size;
14 | public Color Color;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Framework/Core/ModConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Core
2 | {
3 | internal class ModConfig
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | /// If extra, possibly somewhat cheaty console commands should be enabled.
9 | public bool TrainerCommands = true;
10 |
11 | /// If every location should be treated like the greenhouse when it comes to crops.
12 | public bool GreenhouseEverywhere = false;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/Core/Serialization/CustomContractResolver.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Newtonsoft.Json;
5 | using Newtonsoft.Json.Serialization;
6 |
7 | using System.Xml.Serialization;
8 | using System.Reflection;
9 |
10 | namespace Entoarox.Framework.Core.Serialization
11 | {
12 | internal class CustomContractResolver : DefaultContractResolver
13 | {
14 | /*********
15 | ** Protected methods
16 | *********/
17 | protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
18 | {
19 | // get property info
20 | var prop = base.CreateProperty(member, memberSerialization);
21 | var elementAttr = (XmlElementAttribute)prop.AttributeProvider.GetAttributes(typeof(XmlElementAttribute), true).FirstOrDefault();
22 | var ignoreAttr = (XmlIgnoreAttribute)prop.AttributeProvider.GetAttributes(typeof(XmlIgnoreAttribute), true).FirstOrDefault();
23 |
24 | // set name
25 | if (!string.IsNullOrWhiteSpace(elementAttr?.ElementName))
26 | prop.PropertyName = elementAttr.ElementName;
27 |
28 | // set whether to seralize
29 | prop.ShouldSerialize = value => ignoreAttr == null;
30 | return prop;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Framework/Core/Utilities/DictionaryAssetInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StardewModdingAPI;
3 |
4 | namespace Entoarox.Framework.Core.Utilities
5 | {
6 | internal class DictionaryAssetInfo
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public IContentHelper ContentHelper { get; }
12 | public IDictionary Data { get; }
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public DictionaryAssetInfo(IContentHelper contentHelper, IDictionary data)
19 | {
20 | this.ContentHelper = contentHelper;
21 | this.Data = data;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Framework/Core/Utilities/Events.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StardewModdingAPI;
3 |
4 | namespace Entoarox.Framework.Core.Utilities
5 | {
6 | internal static class Events
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public static void FireEventSafely(string name, Delegate evt, TArgs args, bool obsolete = false) where TArgs : EventArgs
12 | {
13 | if (evt == null)
14 | return;
15 | foreach (Delegate handler in evt.GetInvocationList())
16 | try
17 | {
18 | if (typeof(TArgs) == typeof(EventArgs))
19 | (handler as EventHandler).Invoke(null, args);
20 | else
21 | (handler as EventHandler).Invoke(null, args);
22 | if (obsolete)
23 | EntoaroxFrameworkMod.Logger.LogOnce($"The {handler.Method.Name} event handler is using the deprecated {evt.Target.GetType().Name}.{name} event.", LogLevel.Warn);
24 | }
25 | catch (Exception ex)
26 | {
27 | EntoaroxFrameworkMod.Logger.Log($"The {handler.Method.Name} event handler failed handling the {evt.Target.GetType().Name}.{name} event:\n{ex}", LogLevel.Error);
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Framework/Core/Utilities/Globals.cs:
--------------------------------------------------------------------------------
1 | using StardewModdingAPI;
2 |
3 | namespace Entoarox.Framework.Core.Utilities
4 | {
5 | internal static class Globals
6 | {
7 | /*********
8 | ** Public methods
9 | *********/
10 | public static string GetModName(IModLinked mod)
11 | {
12 | return EntoaroxFrameworkMod.SHelper.ModRegistry.Get(mod.ModID).Manifest.Name;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Framework/Delegates.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework
2 | {
3 | public delegate T AssetLoader(string assetName);
4 |
5 | public delegate void AssetInjector(string assetName, ref T asset);
6 |
7 | public delegate void ReceiveMessage(string modID, string channel, string message, bool broadcast);
8 | }
9 |
--------------------------------------------------------------------------------
/Framework/EntoaroxFramework.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | EntoaroxFramework
5 | Entoarox.Framework
6 | 2.4.2
7 | net452
8 |
9 | true
10 |
11 | 7.3
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Always
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Framework/Events/EventArgsActiveItemChanged.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StardewValley;
3 |
4 | namespace Entoarox.Framework.Events
5 | {
6 | public class EventArgsActiveItemChanged : EventArgs
7 | {
8 | public readonly Item OldItem;
9 | public readonly Item NewItem;
10 |
11 | public EventArgsActiveItemChanged(Item oldItem, Item newItem)
12 | {
13 | this.OldItem = oldItem;
14 | this.NewItem = newItem;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Framework/Events/EventArgsArguments.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework.Events
4 | {
5 | public class EventArgsArguments : EventArgs
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public object[] Arguments;
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public EventArgsArguments(object[] arguments = null)
17 | {
18 | this.Arguments = arguments ?? new object[0];
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Framework/Events/EventArgsEditable.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Events
2 | {
3 | public class EventArgsEditable : EventArgsArguments
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public TReturn Value;
9 |
10 |
11 | /*********
12 | ** Public methods
13 | *********/
14 | public EventArgsEditable(TReturn value, object[] arguments = null)
15 | : base(arguments)
16 | {
17 | this.Value = value;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Framework/Events/EventArgsReturnable.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Events
2 | {
3 | public class EventArgsReturnable : EventArgsArguments
4 | {
5 | /*********
6 | ** Fields
7 | *********/
8 | private TReturn _Value;
9 |
10 |
11 | /*********
12 | ** Accessors
13 | *********/
14 | internal bool ReturnSet;
15 |
16 | public TReturn Value
17 | {
18 | set
19 | {
20 | this.ReturnSet = true;
21 | this._Value = value;
22 | }
23 | get => this._Value;
24 | }
25 |
26 |
27 | /*********
28 | ** Public methods
29 | *********/
30 | public EventArgsReturnable(object[] arguments = null)
31 | : base(arguments) { }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Framework/Events/MoreEvents.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using EntoEvents = Entoarox.Framework.Core.Utilities.Events;
3 |
4 | namespace Entoarox.Framework.Events
5 | {
6 | public static class MoreEvents
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | /// Triggered whenever a action tile is activated by the player.
12 | public static event EventHandler ActionTriggered;
13 |
14 | /// Triggered whenever a action tile is first walked onto by the player.
15 | public static event EventHandler TouchActionTriggered;
16 |
17 |
18 | /*********
19 | ** Public methods
20 | *********/
21 | internal static void FireActionTriggered(EventArgsActionTriggered eventArgs)
22 | {
23 | EntoEvents.FireEventSafely("ActionTriggered", ActionTriggered, eventArgs);
24 | }
25 |
26 | internal static void FireTouchActionTriggered(EventArgsActionTriggered eventArgs)
27 | {
28 | EntoEvents.FireEventSafely("TouchActionTriggered", TouchActionTriggered, eventArgs);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Framework/Experimental/PathNode.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Experimental
2 | {
3 | public class PathNode
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public PathNode Parent;
9 | public int X;
10 | public int Y;
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public PathNode(int x, int y, PathNode parent = null)
17 | {
18 | this.Parent = parent;
19 | this.X = x;
20 | this.Y = y;
21 | }
22 |
23 | public override bool Equals(object obj)
24 | {
25 | return obj is PathNode node && node.X == this.X && node.Y == this.Y;
26 | }
27 |
28 | public override int GetHashCode()
29 | {
30 | return (this.X << 8) | this.Y;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Framework/Extensions/PointExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.Extensions
4 | {
5 | public static class PointExtensions
6 | {
7 | public static Vector2 ToVector2(this Point self)
8 | {
9 | return new Vector2(self.X, self.Y);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Framework/Extensions/StringExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 |
4 | namespace Entoarox.Framework.Extensions
5 | {
6 | public static class StringExtensions
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public static string Base64Encode(this string str)
12 | {
13 | if (str == null)
14 | throw new ArgumentNullException(nameof(str));
15 | return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
16 | }
17 |
18 | public static string Base64Decode(this string str)
19 | {
20 | if (str == null)
21 | throw new ArgumentNullException(nameof(str));
22 | return Encoding.UTF8.GetString(Convert.FromBase64String(str));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Framework/IAugmentedLocation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework
4 | {
5 | /// A location which can use extended functionality provided by the framework.
6 | public interface IAugmentedLocation
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | /// The vanilla equivalent of this location. When replacing a vanilla location, this should be set to the type of that location in vanilla. If you are adding a new location, it should be set to null. When not null, the framework will during saving restore the vanilla version, then load the modded version again after loading.
12 | [Obsolete("This API member is not yet functional in the current development build.")]
13 | Type VanillaEquivalent { get; }
14 |
15 | /// Whether to treat the location as a greenhouse for crop behaviour.
16 | bool IsGreenhouse { get; }
17 |
18 | /// Whether to treat the location as a house/sheds for furniture behaviour. Flooring and wallpaper currently will not work in such locations. Serialization of decoratable locations is automatically handled by the framework.
19 | [Obsolete("This API member is not yet functional in the current development build.")]
20 | bool IsDecoratable { get; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Framework/IConditionHelper.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework
2 | {
3 | public interface IConditionHelper
4 | {
5 | bool ValidateConditions(string conditions, char separator = ',');
6 | bool ValidateConditions(string[] conditions);
7 | bool ValidateCondition(string condition);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Framework/IContentHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework
4 | {
5 | public interface IContentHandler
6 | {
7 | bool IsLoader { get; }
8 | bool IsInjector { get; }
9 | bool CanInject(string assetName);
10 | bool CanLoad(string assetName);
11 | void Inject(string assetName, ref T asset);
12 | T Load(string assetName, Func loadBase);
13 | }
14 | }
--------------------------------------------------------------------------------
/Framework/ICustomItem.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework
2 | {
3 | public interface ICustomItem { }
4 | }
5 |
--------------------------------------------------------------------------------
/Framework/IDeserializationHandler.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework
2 | {
3 | public interface IDeserializationHandler
4 | {
5 | bool ShouldDelete();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Framework/IHookedLocation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework
4 | {
5 | [Obsolete("Not for use by mods, designed for use by the framework's location event mechanics.")]
6 | public interface IHookedLocation { }
7 | }
8 |
--------------------------------------------------------------------------------
/Framework/IInterModHelper.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework
2 | {
3 | public interface IInterModHelper
4 | {
5 | /*********
6 | ** Methods
7 | *********/
8 | /// Subscribe for any messages posted to the given channel.
9 | /// The channel to subscribe to
10 | /// The handler to receive any messages with
11 | void Subscribe(string channel, ReceiveMessage handler);
12 |
13 | /// Subscribe for any messages posted to a channel with this mods unique ID as its channel name.
14 | ///
15 | void Subscribe(ReceiveMessage handler);
16 |
17 | /// Publish any given message to the given channel.
18 | /// The channel to publish to
19 | /// The message to publish
20 | void Publish(string channel, string message);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Framework/IMessageHelper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework
4 | {
5 | public interface IMessageHelper
6 | {
7 | void Add(string message, string name, Color color);
8 | void Add(string message, Color color);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Framework/IPlayerModifierHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Entoarox.Framework
5 | {
6 | public interface IPlayerModifierHelper
7 | {
8 | int Count { get; }
9 | void Add(PlayerModifier modifier);
10 | void AddRange(IEnumerable modifiers);
11 | void Remove(PlayerModifier modifier);
12 | void RemoveAll(Predicate predicate);
13 | void Clear();
14 | bool Contains(PlayerModifier modifier);
15 | bool Exists(Predicate predicate);
16 | bool TrueForAll(Predicate predicate);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Framework/Indev/CustomAdditionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.Framework.Indev
4 | {
5 | [Obsolete("This functionality is still in development and thus not meant for production use", true)]
6 | internal class CustomAdditionAttribute : Attribute { }
7 | }
8 |
--------------------------------------------------------------------------------
/Framework/Indev/IProfession.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Graphics;
2 |
3 | namespace Entoarox.Framework.Indev
4 | {
5 | internal interface IProfession
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | /// The skill level required before this profession can be unlocked.
11 | int SkillLevel { get; }
12 |
13 | /// The internal name of the parent profession needed to unlock this one (or `null` for no parent).
14 | string Parent { get; }
15 |
16 | /// The internal name used for this profession by the code.
17 | string Name { get; }
18 |
19 | /// The name that is visually displayed for this profession.
20 | string DisplayName { get; }
21 |
22 | /// A short description of the benefits this profession gives.
23 | string Description { get; }
24 |
25 | /// The icon for this profession.
26 | Texture2D Icon { get; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/Indev/PlayerSkillInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.Framework.Indev
4 | {
5 | internal class PlayerSkillInfo
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public int Experience = 0;
11 | public int Level = 0;
12 | public List Professions = new List();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/Indev/RecipeComponent.cs:
--------------------------------------------------------------------------------
1 | using Entoarox.Framework.UI;
2 |
3 | namespace Entoarox.Framework.Indev //.UI
4 | {
5 | internal class RecipeComponent : BaseInteractiveMenuComponent
6 | {
7 | /*********
8 | ** Public methods
9 | *********/
10 | public RecipeComponent(int item, bool craftable = true) { }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Framework/Indev/SkillData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.Framework.Indev
4 | {
5 | internal class PlayerSkillData
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public Dictionary Skills = new Dictionary();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Framework/Indev/VanillaProfession.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley.Menus;
4 |
5 | namespace Entoarox.Framework.Indev
6 | {
7 | [Obsolete("Currently in development", true)]
8 | internal class VanillaProfession : IProfession
9 | {
10 | /*********
11 | ** Accessors
12 | *********/
13 | public int SkillLevel { get; }
14 |
15 | public string Parent { get; }
16 |
17 | public string Name { get; }
18 |
19 | public string DisplayName => LevelUpMenu.getProfessionTitleFromNumber(SkillHelper.VanillaProfessions[this.Name]);
20 |
21 | public string Description => string.Join("\n", LevelUpMenu.getProfessionDescription(SkillHelper.VanillaProfessions[this.Name]));
22 |
23 | public Texture2D Icon => throw new NotImplementedException();
24 |
25 |
26 | /*********
27 | ** Public methods
28 | *********/
29 | public VanillaProfession(string name, string parent, int level)
30 | {
31 | this.Name = name;
32 | this.Parent = parent;
33 | this.SkillLevel = level;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Framework/Interface/Base/BaseClickableComponent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Xna.Framework;
3 |
4 | namespace Entoarox.Framework.Interface
5 | {
6 | public abstract class BaseClickableComponent : BaseDynamicComponent
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public event Action EventClicked;
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public override void LeftClick(Point offset, Point position)
18 | {
19 | this.EventClicked?.Invoke();
20 | base.LeftClick(offset, position);
21 | }
22 |
23 | public override void LeftHeld(Point offset, Point position)
24 | {
25 | this.EventClicked?.Invoke();
26 | base.LeftHeld(offset, position);
27 | }
28 |
29 |
30 | /*********
31 | ** Protected methods
32 | *********/
33 | protected BaseClickableComponent(string name, Rectangle bounds, int layer)
34 | : base(name, bounds, layer) { }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Framework/Interface/Base/BaseComponentContainer.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.Interface
4 | {
5 | public abstract class BaseComponentContainer : BaseComponent, IComponentContainer
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | #pragma warning disable CS0618 // Type or member is obsolete
11 | public InterfaceMenu Menu => this.Owner.Menu;
12 | #pragma warning restore CS0618 // Type or member is obsolete
13 | public Rectangle InnerBounds => this.OuterBounds;
14 | public IDynamicComponent FocusComponent => null;
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public abstract bool HasFocus(IDynamicComponent component);
21 | public abstract bool TabBack();
22 | public abstract bool TabNext();
23 |
24 |
25 | /*********
26 | ** Protected methods
27 | *********/
28 | protected BaseComponentContainer(string name, Rectangle bounds, int layer)
29 | : base(name, bounds, layer) { }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Framework/Interface/Base/BaseInputComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.Interface
4 | {
5 | public abstract class BaseInputComponent : BaseDynamicComponent, IInputComponent
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public bool Selected { get; set; }
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public abstract void ReceiveInput(char input);
17 |
18 |
19 | /*********
20 | ** Protected methods
21 | *********/
22 | protected BaseInputComponent(string name, Rectangle bounds, int layer)
23 | : base(name, bounds, layer) { }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Framework/Interface/Containers/GenericComponentCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Microsoft.Xna.Framework;
3 |
4 | namespace Entoarox.Framework.Interface
5 | {
6 | public class GenericComponentCollection : BaseComponentCollection
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public GenericComponentCollection(string name, Rectangle bounds, int layer = 0)
12 | : base(name, bounds, layer) { }
13 |
14 | public GenericComponentCollection(string name, Rectangle bounds, IEnumerable components, int layer = 0)
15 | : base(name, bounds, layer)
16 | {
17 | foreach (IComponent component in components)
18 | this.AddComponent(component);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IControllerComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Input;
2 |
3 | namespace Entoarox.Framework.Interface
4 | {
5 | internal interface IControllerComponent
6 | {
7 | /*********
8 | ** Methods
9 | *********/
10 | bool ReceiveController(Buttons button);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IFloatComponent.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Interface
2 | {
3 | public interface IFloatComponent : IDynamicComponent
4 | {
5 | IDynamicComponent FloatComponent { get; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IHotkeyComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Input;
2 |
3 | namespace Entoarox.Framework.Interface
4 | {
5 | public interface IHotkeyComponent : IDynamicComponent
6 | {
7 | /*********
8 | ** Methods
9 | *********/
10 | /// This event is triggered whenever a keyboard key is pressed. If or is false, this event will not trigger. If a component is both and then unless is false, input events happen instead of hotkey events.
11 | /// The key pressed.
12 | bool ReceiveHotkey(Keys key);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IInputComponent.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Interface
2 | {
3 | public interface IInputComponent : IDynamicComponent
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | /// Input components will only receive input events while this value is true.
9 | bool Selected { get; set; }
10 |
11 |
12 | /*********
13 | ** Methods
14 | *********/
15 | /// Triggers when a new character is input by the user. Conversion of keyboard input to the correct character values is handled by the framework. If , or is false, this event will not trigger.
16 | /// The input character.
17 | void ReceiveInput(char input);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IItemContainer.cs:
--------------------------------------------------------------------------------
1 | using StardewValley;
2 |
3 | namespace Entoarox.Framework.Interface
4 | {
5 | internal interface IItemContainer
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | Item CurrentItem { get; set; }
11 | bool IsGhostSlot { get; }
12 |
13 | /*********
14 | ** Methods
15 | *********/
16 | bool AcceptsItem(Item item);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Framework/Interface/Interfaces/IVisibilityObserver.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Interface
2 | {
3 | internal interface IVisibilityObserver : IComponentContainer
4 | {
5 | /*********
6 | ** Methods
7 | *********/
8 | void VisibilityChanged(IComponent component);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Framework/Interface/Misc/Strings.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.Interface
2 | {
3 | internal static class Strings
4 | {
5 | internal static string KeyNotFound = "Component is not attached to this collection";
6 | internal static string ComponentAttached = "Component is already attached to a collection";
7 | internal static string ComponentNotAttached = "Component is not attached to a collection";
8 | internal static string DuplicateKey = "Another component with the same name is already attached to this collection";
9 | internal static string NullMenu = "Container is not attached to a menu";
10 | internal static string NullOwner = "Component is not attached to a container";
11 | internal static string NotAccepted = "Component is not accepted by this collection";
12 | internal static string ContainerNotAttached = "Container is not attached to a menu";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/Interface/Static/GradientComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.Framework.Interface
6 | {
7 | public class GradientComponent : BaseComponent
8 | {
9 | /*********
10 | ** Fields
11 | *********/
12 | private readonly Color FromColor;
13 | private readonly Color ToColor;
14 | private readonly bool Vertical;
15 |
16 |
17 | /*********
18 | ** Public methods
19 | *********/
20 | public GradientComponent(string name, Rectangle bounds, Color fromColor, Color toColor, bool vertical = false, int layer = 0)
21 | : base(name, bounds, layer)
22 | {
23 | this.FromColor = fromColor;
24 | this.ToColor = toColor;
25 | this.Vertical = vertical;
26 | }
27 |
28 | public override void Draw(Point offset, SpriteBatch batch)
29 | {
30 | Rectangle rect = Utilities.GetDrawRectangle(offset, this.OuterBounds);
31 | batch.Draw(Game1.staminaRect, rect, this.FromColor);
32 | batch.Draw(this.Vertical ? Utilities.GradientTextureVertical : Utilities.GradientTextureHorizontal, rect, this.ToColor);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Framework/README.md:
--------------------------------------------------------------------------------
1 | **Entoarox Framework** contains utilities that other mods can use to simplify their code. All of
2 | its main functionality is designed as extension methods on SMAPI's own API's, thus one simple
3 | `using Entoarox.Framework;` at the top of your file, and all of it is available.
4 |
5 | ## Install
6 | 1. [Install the latest version of SMAPI](https://smapi.io).
7 | 2. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2269).
8 | 3. Run the game using SMAPI.
9 |
10 | ## Compatibility
11 | * For Stardew Valley 1.3.30 or later.
12 | * Compatible with Linux, Mac, or Windows.
13 | * No known mod conflicts.
14 |
15 | ## See also
16 | * [Release notes](RELEASE-NOTES.md)
17 | * [Nexus mod](https://www.nexusmods.com/stardewvalley/mods/2269)
18 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-entoarox-framework.125025/)
19 |
--------------------------------------------------------------------------------
/Framework/UI/Base/BaseFormComponent.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.Framework.UI
2 | {
3 | public abstract class BaseFormComponent : BaseInteractiveMenuComponent
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public virtual bool Disabled { get; set; } = false;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Framework/UI/Base/BaseKeyboardFormComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Input;
2 |
3 | namespace Entoarox.Framework.UI
4 | {
5 | public abstract class BaseKeyboardFormComponent : BaseFormComponent, IKeyboardComponent
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | public bool Selected { get; set; }
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | public virtual void TextReceived(char chr) { }
17 |
18 | public virtual void TextReceived(string str) { }
19 |
20 | public virtual void CommandReceived(char cmd) { }
21 |
22 | public virtual void SpecialReceived(Keys key) { }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Framework/UI/Containers/BookComponent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Xna.Framework;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class BookComponent : IComponentContainer
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public Rectangle EventRegion => throw new NotImplementedException();
12 | public Rectangle ZoomEventRegion => throw new NotImplementedException();
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public FrameworkMenu GetAttachedMenu()
19 | {
20 | throw new NotImplementedException();
21 | }
22 |
23 | public void GiveFocus(IInteractiveMenuComponent component)
24 | {
25 | throw new NotImplementedException();
26 | }
27 |
28 | public void ResetFocus()
29 | {
30 | throw new NotImplementedException();
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Framework/UI/Containers/ClickableCollectionComponent.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Microsoft.Xna.Framework;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class ClickableCollectionComponent : GenericCollectionComponent
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | public event ClickHandler Handler;
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public ClickableCollectionComponent(Point size, ClickHandler handler = null, List components = null)
18 | : base(size, components)
19 | {
20 | if (handler != null)
21 | this.Handler += handler;
22 | }
23 |
24 | public ClickableCollectionComponent(Rectangle area, ClickHandler handler = null, List components = null)
25 | : base(area, components)
26 | {
27 | if (handler != null)
28 | this.Handler += handler;
29 | }
30 |
31 | public override void LeftHeld(Point p, Point o) { }
32 |
33 | public override void LeftUp(Point p, Point o) { }
34 |
35 | public override void LeftClick(Point p, Point o)
36 | {
37 | this.Handler?.Invoke(this, this.Parent, this.Parent.GetAttachedMenu());
38 | }
39 |
40 | public override void RightClick(Point p, Point o) { }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Framework/UI/Generic/AnimatedComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.Framework.UI
6 | {
7 | public class AnimatedComponent : BaseMenuComponent
8 | {
9 | /*********
10 | ** Fields
11 | *********/
12 | protected TemporaryAnimatedSprite Sprite;
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public AnimatedComponent(Point position, TemporaryAnimatedSprite sprite)
19 | {
20 | this.SetScaledArea(new Rectangle(position.X, position.Y, sprite.sourceRect.Width, sprite.sourceRect.Height));
21 | this.Sprite = sprite;
22 | }
23 |
24 | public override void Update(GameTime t)
25 | {
26 | this.Sprite.update(t);
27 | }
28 |
29 | public override void Draw(SpriteBatch b, Point o)
30 | {
31 | if (this.Visible)
32 | this.Sprite.draw(b, false, o.X + this.Area.X, o.Y + this.Area.Y);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Framework/UI/Generic/ColoredRectangleComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 |
5 | namespace Entoarox.Framework.UI
6 | {
7 | internal class ColoredRectangleComponent : BaseMenuComponent
8 | {
9 | /*********
10 | ** Accessors
11 | *********/
12 | public Color Color;
13 |
14 |
15 | /*********
16 | ** Public methods
17 | *********/
18 | public ColoredRectangleComponent(Rectangle area, Color color)
19 | {
20 | this.SetScaledArea(area);
21 | this.Color = color;
22 | }
23 |
24 | public override void Draw(SpriteBatch b, Point o)
25 | {
26 | b.Draw(Game1.staminaRect, new Rectangle(this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height), this.Color);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Framework/UI/Generic/FrameComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 | using StardewValley;
4 | using StardewValley.Menus;
5 |
6 | namespace Entoarox.Framework.UI
7 | {
8 | public class FrameComponent : BaseMenuComponent
9 | {
10 | /*********
11 | ** Fields
12 | *********/
13 | protected bool Chrome;
14 |
15 |
16 | /*********
17 | ** Public methods
18 | *********/
19 | public FrameComponent(Rectangle area, Texture2D texture, Rectangle? crop = null)
20 | : base(area, texture, crop) { }
21 |
22 | public FrameComponent(Rectangle area)
23 | {
24 | this.Chrome = true;
25 | this.SetScaledArea(area);
26 | }
27 |
28 | public override void Draw(SpriteBatch b, Point o)
29 | {
30 | if (!this.Visible)
31 | return;
32 | if (this.Chrome)
33 | FrameworkMenu.DrawMenuRect(b, this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height);
34 | else
35 | IClickableMenu.drawTextureBox(b, this.Texture, this.Crop, this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height, Color.White, Game1.pixelZoom, false);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Framework/UI/Generic/TextureComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | public class TextureComponent : BaseMenuComponent
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public TextureComponent(Rectangle area, Texture2D texture, Rectangle? crop = null)
12 | : base(area, texture, crop) { }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/UI/Interfaces/IComponentCollection.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | public interface IComponentCollection : IComponentContainer
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | List InteractiveComponents { get; }
12 | List StaticComponents { get; }
13 |
14 |
15 | /*********
16 | ** Methods
17 | *********/
18 | bool AcceptsComponent(IMenuComponent component);
19 | void AddComponent(IMenuComponent component);
20 | void RemoveComponent(IMenuComponent component);
21 | void RemoveComponents() where T : IMenuComponent;
22 | void RemoveComponents(Predicate filter);
23 | void ClearComponents();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Framework/UI/Interfaces/IComponentContainer.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.UI
4 | {
5 | public interface IComponentContainer
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | Rectangle EventRegion { get; }
11 | Rectangle ZoomEventRegion { get; }
12 |
13 |
14 | /*********
15 | ** Methods
16 | *********/
17 | void ResetFocus();
18 | void GiveFocus(IInteractiveMenuComponent component);
19 | FrameworkMenu GetAttachedMenu();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Framework/UI/Interfaces/IIinteractiveMenuComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 |
3 | namespace Entoarox.Framework.UI
4 | {
5 | public interface IInteractiveMenuComponent : IMenuComponent
6 | {
7 | bool InBounds(Point position, Point offset);
8 | void LeftClick(Point position, Point offset);
9 | void RightClick(Point position, Point offset);
10 | void LeftHeld(Point position, Point offset);
11 | void LeftUp(Point position, Point offset);
12 | void HoverIn(Point position, Point offset);
13 | void HoverOut(Point position, Point offset);
14 | void HoverOver(Point position, Point offset);
15 | void FocusLost();
16 | void FocusGained();
17 | bool Scroll(int direction, Point position, Point offset);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Framework/UI/Interfaces/IKeyboardComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Input;
2 |
3 | namespace Entoarox.Framework.UI
4 | {
5 | public interface IKeyboardComponent
6 | {
7 | /*********
8 | ** Accessors
9 | *********/
10 | bool Selected { get; set; }
11 |
12 |
13 | /*********
14 | ** Public methods
15 | *********/
16 | void TextReceived(char chr);
17 | void TextReceived(string str);
18 | void CommandReceived(char cmd);
19 | void SpecialReceived(Keys key);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Framework/UI/Interfaces/IMenuComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using Microsoft.Xna.Framework.Graphics;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | public interface IMenuComponent
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | bool Visible { get; set; }
12 | int Layer { get; set; }
13 | IComponentContainer Parent { get; }
14 |
15 |
16 | /*********
17 | ** Public methods
18 | *********/
19 | void Update(GameTime t);
20 | void Draw(SpriteBatch b, Point offset);
21 | void Attach(IComponentContainer collection);
22 | void Detach(IComponentContainer collection);
23 | void OnAttach(IComponentContainer parent);
24 | void OnDetach(IComponentContainer parent);
25 | Point GetPosition();
26 | Rectangle GetRegion();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Framework/UI/Wrapper/ClickableCancelComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using StardewValley;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class ClickableCancelComponent : ClickableTextureComponent
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public ClickableCancelComponent(Point position, ClickHandler handler = null)
12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.mouseCursors, handler, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 47), true) { }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/UI/Wrapper/ClickableConfirmComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using StardewValley;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class ClickableConfirmComponent : ClickableTextureComponent
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public ClickableConfirmComponent(Point position, ClickHandler handler = null)
12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.mouseCursors, handler, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46), true) { }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/UI/Wrapper/ClickableObjectComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using StardewValley;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class ClickableObjectComponent : ClickableTextureComponent
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public ClickableObjectComponent(Point position, int index, ClickHandler handler = null, bool scaleOnHover = true)
12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.objectSpriteSheet, handler, Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, index, 16, 16), scaleOnHover) { }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/UI/Wrapper/ObjectComponent.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework;
2 | using StardewValley;
3 |
4 | namespace Entoarox.Framework.UI
5 | {
6 | internal class ObjectComponent : TextureComponent
7 | {
8 | /*********
9 | ** Public methods
10 | *********/
11 | public ObjectComponent(Point position, int index)
12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.objectSpriteSheet, Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, index, 16, 16)) { }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Framework/assets/placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/Framework/assets/placeholder.png
--------------------------------------------------------------------------------
/Framework/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Entoarox Framework",
3 | "Author": "Entoarox",
4 | "Version": "2.5.2",
5 | "Description": "A collection of APIs to make modding easier.",
6 | "UniqueID": "Entoarox.EntoaroxFramework",
7 | "EntryDll": "EntoaroxFramework.dll",
8 | "MinimumApiVersion": "3.8",
9 | "UpdateKeys": [ "Nexus:2269" ]
10 | }
11 |
--------------------------------------------------------------------------------
/FurnitureAnywhere/FurnitureAnywhere.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | FurnitureAnywhere
5 | Entoarox.FurnitureAnywhere
6 | 1.1.7
7 | net452
8 |
9 | true
10 |
11 | 7.3
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | false
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/FurnitureAnywhere/README.md:
--------------------------------------------------------------------------------
1 | **Furniture Anywhere** lets you to place furniture in ANY location.
2 |
3 | ## Install
4 | 1. [Install the latest version of SMAPI](https://smapi.io).
5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2276).
7 | 4. Run the game using SMAPI.
8 |
9 | ## Use
10 | Furniture Anywhere lets you to place furniture in ANY location. While this is nice and well, due to
11 | technical limitations, outside of the house or sheds, you can only place furniture the same way as
12 | chests or machines, aka, right next to your player. Otherwise, this mod has been tested extensively
13 | and no major issues have been found! So go out there, and make Stardew a furniture abomination as
14 | you wish!
15 |
16 | ## Compatibility
17 | * For Stardew Valley 1.3.30 or later.
18 | * Compatible with Linux, Mac, or Windows.
19 | * No known mod conflicts.
20 |
21 | ## See also
22 | * [Release notes](RELEASE-NOTES.md)
23 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2276)
24 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-furniture-anywhere.126719/)
25 |
--------------------------------------------------------------------------------
/FurnitureAnywhere/RELEASE-NOTES.md:
--------------------------------------------------------------------------------
1 | ## Release notes
2 | ## 1.1.7
3 | Released 28 December 2018. (Thanks to Pathoschild!)
4 |
5 | * Updated for the upcoming SMAPI 3.0.
6 |
7 | ## 1.1.6
8 | Released 23 September 2018. (Thanks to Pathoschild and Slamerz!)
9 |
10 | * Updated for Stardew Valley 1.3.
11 | * Fixed Linux/Mac compatibility.
12 | * Removed custom update checks; replaced by standard SMAPI update alerts.
13 | * Refactored internally.
14 |
15 | ## 1.1.5
16 | Released 01 December 2017.
17 |
18 | * Fixed issues in my mod build process that broke most of my mods.
19 |
20 | ## 1.1.2b
21 | Released 01 December 2017.
22 |
23 | * Updated for Entoarox Framework 2.0.
24 |
25 | ## 1.1.2
26 | Released 16 April 2017. (Thanks to Pathoschild!)
27 |
28 | * Updated for SMAPI 1.9.
29 |
30 | ## 1.1.1
31 | Released 10 February 2017.
32 |
33 | * Fixed boxing code so it actually works.
34 |
35 | ## 1.1
36 | Released 10 February 2017.
37 |
38 | * Added boxing code to replace furniture before save, to avoid breaking saves if you uninstall the mod.
39 |
40 | ## 1.0.2
41 | Released 23 November 2016.
42 |
43 | * Fixed mod not working for many players.
44 | * Fixed framework complaining about a type not being handled properly.
45 | * Fixed inconsistent furniture rotation behavior.
46 | * Fixed being able to place furniture so it overlaps another bit of furniture.
47 | * Fixed picking up furniture behaving unintuitively.
48 |
49 | ## 1.0
50 | Released 07 November 2016.
51 |
--------------------------------------------------------------------------------
/FurnitureAnywhere/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Furniture Anywhere",
3 | "Author": "Entoarox",
4 | "Version": "1.1.11",
5 | "Description": "Lets you place furniture anywhere you can place chests or machines!",
6 | "UniqueID": "Entoarox.FurnitureAnywhere",
7 | "EntryDll": "FurnitureAnywhere.dll",
8 | "MinimumApiVersion": "2.9.3",
9 | "UpdateKeys": [ "Nexus:2276" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/LanguagePatcher/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LanguagePatcher/LanguagePatcher.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | LanguagePatcher
5 | LanguagePatcher
6 | 1.0.0
7 | net452
8 | Exe
9 | 7.3
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/MagicJunimoPet/Ability.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 | using Microsoft.Xna.Framework.Graphics;
9 |
10 | namespace MagicJunimoPet
11 | {
12 | public abstract class Ability
13 | {
14 | public SmartPet Pet { get; internal set; }
15 |
16 | public abstract string Id { get; }
17 | public virtual string GetName()
18 | {
19 | return MJPModEntry.SHelper.Translation.Get("Ability." + this.Id + ".Name", new { PetName = this.Pet.Name });
20 | }
21 | public virtual string GetDescription()
22 | {
23 | return MJPModEntry.SHelper.Translation.Get("Ability." + this.Id + ".Description", new { PetName = this.Pet.Name });
24 | }
25 | public abstract void DrawIcon(Rectangle region, SpriteBatch batch);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/MagicJunimoPet/Behaviour.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 |
9 | using StardewValley;
10 | using StardewValley.Locations;
11 |
12 | namespace MagicJunimoPet
13 | {
14 | public abstract class Behaviour
15 | {
16 | protected readonly SmartPet Pet;
17 | public Behaviour(SmartPet pet)
18 | {
19 | this.Pet = pet;
20 | }
21 | public abstract void OnBehaviour(GameTime time);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/MagicJunimoPet/IActiveAbility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 | using Microsoft.Xna.Framework.Graphics;
9 |
10 | using StardewValley;
11 |
12 | namespace MagicJunimoPet
13 | {
14 | interface IActiveAbility
15 | {
16 | string GetLabel();
17 | void OnTrigger(Farmer who);
18 | void DrawTriggerIcon(Rectangle region, SpriteBatch batch);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/MagicJunimoPet/IRankedAbility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace MagicJunimoPet
8 | {
9 | interface IRankedAbility
10 | {
11 | int Rank { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/MagicJunimoPet/IRestrictedAbility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace MagicJunimoPet
8 | {
9 | interface IRestrictedAbility
10 | {
11 | bool IsAvailable();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/MagicJunimoPet/ISkinAbility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework.Graphics;
8 |
9 | namespace MagicJunimoPet
10 | {
11 | interface ISkinAbility
12 | {
13 | void DrawPet(SpriteBatch batch);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/MagicJunimoPet/ITickingAbility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 |
9 | namespace MagicJunimoPet
10 | {
11 | interface ITickingAbility
12 | {
13 | void OnUpdate(GameTime time);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/MagicJunimoPet/MagicJunimoPet.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MagicJunimoPet
5 | MagicJunimoPet
6 | 1.1.2
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/MagicJunimoPet/PetState.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace MagicJunimoPet
8 | {
9 | public enum PetState
10 | {
11 | Wandering,
12 | Following,
13 | Idling
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/MagicJunimoPet/Renderer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 | using Microsoft.Xna.Framework.Graphics;
9 |
10 | namespace MagicJunimoPet
11 | {
12 | public abstract class Renderer
13 | {
14 | public abstract void Draw(SmartPet pet, SpriteBatch batch);
15 | public abstract void Update(SmartPet pet, GameTime time);
16 | public virtual string HappySound => "Silence";
17 | public virtual string ThudSound => "Silence";
18 | public virtual string WagSound => "Silence";
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/MagicJunimoPet/assets/junimo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MagicJunimoPet/assets/junimo.png
--------------------------------------------------------------------------------
/MagicJunimoPet/i18n/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "FirstMessage": "You have found your first hidden junimo, find all five to wake up the Magic Junimo!",
3 | "FoundMessage": "You have found hidden junimo {{TotalFound}} of 5, find them all to wake up the Magic Junimo!",
4 | "LastMessage": "You have found all hidden junimo's and awoken the Magic Junimo, it will reach your farm tomorrow.",
5 | "EmptyMessage": "The junimo that was hidden here has since moved on."
6 | }
7 |
--------------------------------------------------------------------------------
/MagicJunimoPet/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "FirstMessage": "당신은 첫번째 숨겨진 주니모를 찾으셨습니다, 다섯 주니모를 전부 찾아 마법 주니모를 깨우세요!",
3 | "FoundMessage": "당신은 5마리 중 {{TotalFound}}마리의 숨겨진 주니모를 찾았습니다, 전부 찾아서 마법 주니모를 깨우세요!",
4 | "LastMessage": "당신은 모든 숨겨진 주니모들을 찾았으며 마법 주니모를 깨웠습니다, 내일 당신의 농장에 깜짝 손님이 도착할 겁니다.",
5 | "EmptyMessage": "주니모가 이 곳에 숨어있었습니다, 이사가기 전까지는요."
6 | }
7 |
--------------------------------------------------------------------------------
/MagicJunimoPet/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Magic Junimo Pet",
3 | "Author": "Entoarox",
4 | "Version": "1.2.2",
5 | "Description": "Adds a magic junimo who will come to live on your farm after you finish aiding his family.",
6 | "UniqueID": "Entoarox.MagicJunimoPet",
7 | "EntryDll": "MagicJunimoPet.dll",
8 | "MinimumApiVersion": "2.11.0",
9 | "UpdateKeys": [ "Nexus:3567" ]
10 | }
11 |
--------------------------------------------------------------------------------
/MoreAnimals/Framework/AnimalSkin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.MorePetsAndAnimals.Framework
4 | {
5 | /// An animal skin.
6 | internal class AnimalSkin
7 | {
8 | /*********
9 | ** Accessors
10 | *********/
11 | /// The animal type.
12 | public string AnimalType { get; }
13 |
14 | /// A unique skin ID for the animal type.
15 | public int ID { get; }
16 |
17 | /// The internal asset key.
18 | public string AssetKey { get; }
19 |
20 |
21 | /*********
22 | ** Public methods
23 | *********/
24 | /// Construct an instance.
25 | /// The animal type.
26 | /// A unique skin ID for the animal type.
27 | /// The internal asset key.
28 | public AnimalSkin(string animalType, int id, string assetKey)
29 | {
30 | this.AnimalType = animalType;
31 | this.ID = id;
32 | this.AssetKey = assetKey;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/MoreAnimals/MoreAnimals.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MoreAnimals
5 | Entoarox.MorePetsAndAnimals
6 | 3.0.2
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/MoreAnimals/assets/box.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/box.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/credits.txt:
--------------------------------------------------------------------------------
1 | dog_1 Bouhm
2 | dog_2 WildSpirits
3 | dog_3 WildSpirits
4 | dog_4 iWonTheWorld
5 | dog_5 Zhuria
6 | dog_6 Zhuria
7 | dog_7 Zhuria
8 | dog_8 Tofuffalo
9 | dog_9 BunnyBuns
10 |
11 | cat_1 WildSpirits
12 | cat_2 WildSpirits
13 | cat_3 JamieDepledge
14 | cat_4 Inccubus
15 | cat_5 Vixxi
16 | cat_6 mkslux00
17 | cat_7 BlackBodyX64
18 | cat_8 Ex0dus13
19 | cat_9 Ex0dus13
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/BabyDuck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/BabyDuck.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_1.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_2.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_3.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_4.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_5.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_6.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_7.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_8.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/cat_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_9.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_1.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_2.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_3.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_4.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_5.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_6.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_7.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_8.png
--------------------------------------------------------------------------------
/MoreAnimals/assets/skins/dog_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_9.png
--------------------------------------------------------------------------------
/MoreAnimals/i18n/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "Just an empty box.",
3 | "AdoptMessage": "Oh dear, it looks like someone has abandoned a poor {{petType}} here! Perhaps you should pay Marnie {{adoptionPrice}} gold to give it a checkup so you can adopt it?",
4 | "AdoptNoGold": "Unfortunately I do not have the required {{adoptionPrice}} gold in order to do this.",
5 | "AdoptYes": "Yes, I really should adopt the poor animal!",
6 | "AdoptNo": "No, I do not have the space to house it.",
7 | "ChooseName": "Choose a name",
8 | "Adopted": "Marnie will bring {{petName}} to your house once their have had their checkup."
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/i18n/es.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "Solo es una caja vacía.",
3 | "AdoptMessage": "¡Oh cielos, parece que alguien ha abandonado un ejemplar de {{petType}}! Quizás pueda pagarle a Marnie {{adoptionPrice}}G para que le haga un chequeo y así poder adoptarlo.",
4 | "AdoptNoGold": "Desgraciadamente, no tengo los {{adoptionPrice}}G para hacerlo.",
5 | "AdoptYes": "¡Sí, debería adoptar al pobre animal!",
6 | "AdoptNo": "No, no tengo espacio para acogerlo.",
7 | "ChooseName": "Elige un nombre",
8 | "Adopted": "Marnie llevará a {{petName}} a tu casa una vez le haya hecho el chequeo."
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/i18n/fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "Juste une boîte vide.",
3 | "AdoptMessage": "Oh non, on dirait que quelqu'un a abandonné un pauvre {{petType}} ici ! Peut-être devriez-vous payer Marnie {{adoptionPrice}} po pour qu'elle lui fasse un bilan de santé pour pouvoir l'adopter ?",
4 | "AdoptNoGold": "Malheureusement, je n'ai pas les {{adoptionPrice}} po nécessaires pour le faire.",
5 | "AdoptYes": "Oui, je devrais vraiment adopter ce pauvre animal !",
6 | "AdoptNo": "Non, je n'ai pas la place pour l'accueillir.",
7 | "ChooseName": "Choisissez un nom",
8 | "Adopted": "Marnie amènera {{petName}} chez vous une fois qu'elle aura fait leur bilan de santé."
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/i18n/it.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "Soltanto una scatola vuota.",
3 | "AdoptMessage": "Oh no, a quanto pare qualcuno ha abbandonato un {{petType}} qui! Magari potresti pagare {{adoptionPrice}} a Marnie per un controllo, così da adottarlo?",
4 | "AdoptNoGold": "Purtroppo non ho i {{adoptionPrice}} richiesti per poterlo fare.",
5 | "AdoptYes": "Sì, dovrei proprio adottarlo!",
6 | "AdoptNo": "No, non ho spazio per ospitarlo.",
7 | "ChooseName": "Scegli un nome",
8 | "Adopted": "Marnie porterà {{petName}} a casa tua subito dopo il controllo."
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "단지 빈 상자일 뿐이다.",
3 | "AdoptMessage": "오 이런, 누군가가 여기에 불쌍한 고양이 {petType} 한 마리를 버리고 간 것 같군요! 마니에게 {adoptionPrice} G를 지불하고 검진을 받아서 이 아이를 입양하시겠어요?",
4 | "AdoptNoGold": "이런 불행하게도, 제게는 {adoptionPrice} G만큼의 현금이 없는 것 같군요.",
5 | "AdoptYes": "네, 실로 불쌍한 이 동물을 입양해 돌봐줘야겠어요!",
6 | "AdoptNo": "아니요, 제 집에 새 애완동물을 들일만한 여력이 없어요.",
7 | "ChooseName": "이름을 지어주세요.",
8 | "Adopted": "필수적 예방 접종 및 단장을 모두 끝마치고 나면 마니가 {petName}을/를 당신의 집으로 데려다 줄 것입니다."
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/i18n/pt.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "Apenas uma caixa vazia.",
3 | "AdoptMessage": "Poxa vida, parece que alguém abandonou um pobre {{petType}} aqui! Talvez você deva pagar {{adoptionPrice}} ouro a Marnie para dar uma olhada nele e então adotá-lo?",
4 | "AdoptNoGold": "Infelizmente eu não tenho {{adoptionPrice}} ouro necessário para fazer isso.",
5 | "AdoptYes": "Sim, eu realmente devo adotar o pobre animal!",
6 | "AdoptNo": "Não, eu não tenho o espaço necessário em casa.",
7 | "ChooseName": "Escolha um nome",
8 | "Adopted": "A Marnie vai trazer o {{petName}} para sua casa assim que eles derem uma olhada nele."
9 | }
--------------------------------------------------------------------------------
/MoreAnimals/i18n/zh.json:
--------------------------------------------------------------------------------
1 | {
2 | "EmptyBox": "只是一个空箱子。",
3 | "AdoptMessage": "啊,天呀!看起来有一只被遗弃又可怜的{{petType}}在这里!也许你应该付给玛妮{{adoptionPrice}}元,给它做个检查,看看能不能领养它?",
4 | "AdoptNoGold": "很不幸的,我并没有{{adoptionPrice}}元做这件事。",
5 | "AdoptYes": "是,我真的应该领养这只可怜的动物!",
6 | "AdoptNo": "不,我没有空间收留它。",
7 | "ChooseName": "取一个名字",
8 | "Adopted": "一旦他们做了检查,玛妮将会带{{petName}}去你家。"
9 | }
10 |
--------------------------------------------------------------------------------
/MoreAnimals/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "More Animals",
3 | "Author": "Entoarox, see credits.txt for texture authors",
4 | "Version": "3.0.4",
5 | "Description": "Lets you adopt more pets, with skins of your choice! - Now also includes randomised animal skins!",
6 | "UniqueID": "Entoarox.MoreAnimals",
7 | "EntryDll": "MoreAnimals.dll",
8 | "MinimumApiVersion": "2.11.0",
9 | "UpdateKeys": [ "Nexus:2274" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/PlayGround/EF 2.1/IProfession.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Xna.Framework.Graphics;
2 |
3 | namespace Entoarox.Framework
4 | {
5 | interface IProfession
6 | {
7 | ///
8 | /// The skill level required before this profession can be unlocked
9 | ///
10 | int SkillLevel { get; }
11 | ///
12 | /// The internal name of the parent profession needed to unlock this one (or `null` for no parent)
13 | ///
14 | string Parent { get; }
15 | ///
16 | /// The internal name used for this profession by the code
17 | ///
18 | string Name { get; }
19 | ///
20 | /// The name that is visually displayed for this profession
21 | ///
22 | string DisplayName { get; }
23 | ///
24 | /// A short description of the benefits this profession gives
25 | ///
26 | string Description { get; }
27 | ///
28 | /// The icon for this profession
29 | ///
30 | Texture2D Icon { get; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/PlayGround/EF 2.1/RecipeComponent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Entoarox.Framework.UI
8 | {
9 | class RecipeComponent : BaseInteractiveMenuComponent
10 | {
11 | public RecipeComponent(int item, bool craftable=true)
12 | {
13 |
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/PlayGround/EF 2.1/SkillData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Entoarox.Framework.Core.Skills
4 | {
5 | class PlayerSkillData
6 | {
7 | #pragma warning disable CS0649
8 | public class SkillInfo
9 | {
10 | public int Experience;
11 | public int Level;
12 | public List Professions;
13 | }
14 | public Dictionary Skills;
15 | #pragma warning restore CS0649
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/PlayGround/EF 2.1/VanillaProfession.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Microsoft.Xna.Framework;
8 | using Microsoft.Xna.Framework.Graphics;
9 |
10 | using SFarmer = StardewValley.Farmer;
11 | using StardewValley.Menus;
12 |
13 | namespace Entoarox.Framework.Core.Skills
14 | {
15 | [Obsolete("Currently in development",true)]
16 | class VanillaProfession : IProfession
17 | {
18 | private string _Name;
19 | private string _Parent;
20 | private int _Level;
21 | public VanillaProfession(string name, string parent, int level)
22 | {
23 | this._Name = name;
24 | this._Parent = parent;
25 | this._Level = level;
26 | }
27 | public int SkillLevel => this._Level;
28 |
29 | public string Parent => this._Parent;
30 |
31 | public string Name => this._Name;
32 |
33 | public string DisplayName => LevelUpMenu.getProfessionTitleFromNumber(SkillHelper._VanillaProfessions[this._Name]);
34 |
35 | public string Description => string.Join("\n", LevelUpMenu.getProfessionDescription(SkillHelper._VanillaProfessions[this._Name]));
36 |
37 | public Texture2D Icon => throw new NotImplementedException();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/PlayGround/PlayGround.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PlayGround
5 | PlayGround
6 | 0.0.1
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/PlayGround/WrapperTest/IWrapper.cs:
--------------------------------------------------------------------------------
1 | namespace PlayGround.WrapperTest
2 | {
3 | interface IWrapper
4 | {
5 | void CallMethod();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/PlayGround/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Playerground",
3 | "Author": "Entoarox",
4 | "Version": "0.0.1",
5 | "Description": "Dev mod, not for use by end-users!",
6 | "UniqueID": "Entoarox.Playground",
7 | "EntryDll": "PlayGround.dll",
8 | "MinimumApiVersion": "2.8-beta",
9 | "UpdateKeys": []
10 | }
11 |
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentMode.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.SeasonalImmersion
2 | {
3 | internal enum ContentMode
4 | {
5 | Directory,
6 | Zipped,
7 | Internal
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Big Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Big Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Big Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Big Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Deluxe Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Deluxe Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Deluxe Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Deluxe Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Earth Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Earth Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Gold Clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Gold Clock.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Mill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Mill.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Shed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Shed.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Silo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Silo.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Slime Hutch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Slime Hutch.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Stable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Stable.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Water Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Water Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/Well.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Well.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/fall/houses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/houses.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Seasonal Buildings",
3 | "Author": "eLe",
4 | "Version": "1.0.0",
5 | "Description": "Adding seasonal sprucing up to the buildings",
6 | }
7 |
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Big Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Big Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Big Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Big Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Deluxe Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Deluxe Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Deluxe Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Deluxe Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Earth Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Earth Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Gold Clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Gold Clock.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Mill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Mill.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Shed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Shed.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Silo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Silo.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Slime Hutch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Slime Hutch.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Stable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Stable.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Water Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Water Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/Well.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Well.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/spring/houses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/houses.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Big Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Big Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Big Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Big Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Deluxe Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Deluxe Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Deluxe Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Deluxe Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Earth Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Earth Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Gold Clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Gold Clock.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Mill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Mill.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Shed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Shed.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Silo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Silo.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Slime Hutch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Slime Hutch.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Stable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Stable.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Water Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Water Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/Well.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Well.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/summer/houses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/houses.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Big Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Big Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Big Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Big Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Deluxe Barn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Deluxe Barn.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Deluxe Coop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Deluxe Coop.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Earth Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Earth Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Gold Clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Gold Clock.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Mill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Mill.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Shed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Shed.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Silo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Silo.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Slime Hutch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Slime Hutch.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Stable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Stable.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Water Obelisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Water Obelisk.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/Well.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Well.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPack/winter/houses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/houses.png
--------------------------------------------------------------------------------
/SeasonalImmersion/ContentPackManifest.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Entoarox.SeasonalImmersion
4 | {
5 | internal class ContentPackManifest
6 | {
7 | #pragma warning disable CS0649
8 | public string Name;
9 | public string Author;
10 | public Version Version;
11 | #pragma warning restore CS0649
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/SeasonalImmersion/Ionic.Zip.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/Ionic.Zip.dll
--------------------------------------------------------------------------------
/SeasonalImmersion/ModConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.SeasonalImmersion
2 | {
3 | /// The mod configuration options.
4 | internal class ModConfig
5 | {
6 | /// Whether to log more detailed info for troubleshooting.
7 | public bool VerboseLog { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/SeasonalImmersion/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Seasonal Immersion",
3 | "Author": "Entoarox",
4 | "Version": "1.12.1",
5 | "Description": "Immerse yourself in a more seasonal world!",
6 | "UniqueID": "Entoarox.SeasonalImmersion",
7 | "EntryDll": "SeasonalImmersion.dll",
8 | "MinimumApiVersion": "2.8-beta",
9 | "UpdateKeys": [ "Nexus:2273" ]
10 | }
11 |
--------------------------------------------------------------------------------
/ShopExpander/README.md:
--------------------------------------------------------------------------------
1 | **Shop Expander** lets you buy often-needed resources like wood/stone/seeds in bulk from the appropriate vendor.
2 |
3 | ## Install
4 | 1. [Install the latest version of SMAPI](https://smapi.io).
5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2278).
7 | 4. Run the game using SMAPI.
8 |
9 | ## Use
10 | This mod uses the Custom Conditions System included in the Entoarox Framework library; see
11 | [the documentation](https://github.com/Entoarox/StardewMods/blob/master/Framework/ConditionDocumentation.md)
12 | for more info.
13 |
14 | ## Compatibility
15 | * For Stardew Valley 1.3.30 or later.
16 | * Compatible with Linux, Mac, or Windows.
17 | * No known mod conflicts.
18 |
19 | ## See also
20 | * [Release notes](RELEASE-NOTES.md)
21 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2278)
22 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-shop-expander.127913/)
23 |
--------------------------------------------------------------------------------
/ShopExpander/Reference.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.ShopExpander
2 | {
3 | internal class Reference
4 | {
5 | /*********
6 | ** Accessors
7 | *********/
8 | public string Owner;
9 | public int Item;
10 | public int Amount;
11 | public string Conditions = null;
12 |
13 |
14 | /*********
15 | ** Public methods
16 | *********/
17 | public Reference(string owner, int item, int amount, string conditions = null)
18 | {
19 | this.Owner = owner;
20 | this.Item = item;
21 | this.Amount = amount;
22 | this.Conditions = conditions;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ShopExpander/ShopExpander.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ShopExpander
5 | Entoarox.ShopExpander
6 | 1.6.2
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ShopExpander/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Shop Expander",
3 | "Author": "Entoarox",
4 | "Version": "1.6.5",
5 | "Description": "Adds bulk options for wood & stone to the carpenter.",
6 | "UniqueID": "Entoarox.ShopExpander",
7 | "EntryDll": "ShopExpander.dll",
8 | "MinimumApiVersion": "2.9.3",
9 | "UpdateKeys": [ "Nexus:2278" ],
10 | "Dependencies": [
11 | { "UniqueID": "Entoarox.EntoaroxFramework" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/SitForStaminaMod/Config.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.SitForStamina
2 | {
3 | class Config
4 | {
5 | public uint TicksPerRegen = 5;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/SitForStaminaMod/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Sit For Stamina",
3 | "Author": "Entoarox",
4 | "Version": "1.0",
5 | "Description": "Passively regen stamina while sitting.",
6 | "UniqueID": "Entoarox.SitForStamina",
7 | "MinimumApiVersion": "3.8",
8 | "EntryDll": "SitForStamina.dll",
9 | "UpdateKeys": [ "nexus:7334" ]
10 | }
11 |
--------------------------------------------------------------------------------
/SitForStaminaMod/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/StardewModdingAPI191113(1).vspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113(1).vspx
--------------------------------------------------------------------------------
/StardewModdingAPI191113(2).vspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113(2).vspx
--------------------------------------------------------------------------------
/StardewModdingAPI191113.vspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113.vspx
--------------------------------------------------------------------------------
/StardewModdingAPI191207.vspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191207.vspx
--------------------------------------------------------------------------------
/StardewModdingAPI200220.vspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI200220.vspx
--------------------------------------------------------------------------------
/TDiffMaker/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/TDiffMaker/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/XnbLoader/ModConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Entoarox.XnbLoader
2 | {
3 | /// The mod configuration options.
4 | internal class ModConfig
5 | {
6 | /// Whether to log more detailed info for troubleshooting.
7 | public bool VerboseLog { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/XnbLoader/README.md:
--------------------------------------------------------------------------------
1 | **XNB Loader** lets you install any XNB mod just by adding it in this mod's `ModContent` folder,
2 | without needing to change any of the game's real files.
3 |
4 | ## Install
5 | 1. [Install the latest version of SMAPI](https://smapi.io).
6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269).
7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2275).
8 | 4. Run the game using SMAPI.
9 | 5. Once installed, you can add XNB mods in the `Stardew Valley\Mods\XNBLoader\ModContent` folder.
10 |
11 | ## Compatibility
12 | * For Stardew Valley 1.3.30 or later.
13 | * Compatible with Linux, Mac, or Windows.
14 | * No known mod conflicts.
15 |
16 | ## See also
17 | * [Release notes](RELEASE-NOTES.md)
18 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2275)
19 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-xnb-loader.130047/)
20 |
--------------------------------------------------------------------------------
/XnbLoader/XnbLoader.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | XnbLoader
5 | Entoarox.XnbLoader
6 | 1.1.11
7 | net452
8 | 7.3
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | false
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/XnbLoader/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Xnb Loader",
3 | "Author": "Entoarox",
4 | "Version": "1.1.11",
5 | "Description": "Safely load custom xnb files without touching your Content directory!",
6 | "UniqueID": "Entoarox.XnbLoader",
7 | "EntryDll": "XnbLoader.dll",
8 | "MinimumApiVersion": "2.8-beta",
9 | "UpdateKeys": [ "Nexus:2275" ],
10 | "Dependencies": [
11 | {
12 | "UniqueID": "Entoarox.EntoaroxFramework"
13 | }
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/common.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Entoarox
6 | https://github.com/Entoarox/StardewMods
7 | git
8 |
9 |
10 | 7.1
11 | x86
12 | x86
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------