Stardew Valley: Refactor Animals to use Content Packs (#4320)

This commit is contained in:
Jérémie Bolduc
2025-04-20 10:17:22 -04:00
committed by GitHub
parent 33dc845de8
commit 22941168cd
15 changed files with 229 additions and 85 deletions

View File

@@ -1,6 +1,7 @@
import functools
from typing import Union, Any, Iterable
from .animal_logic import AnimalLogicMixin
from .artisan_logic import ArtisanLogicMixin
from .base_logic import BaseLogicMixin, BaseLogic
from .grind_logic import GrindLogicMixin
@@ -11,6 +12,7 @@ from .received_logic import ReceivedLogicMixin
from .region_logic import RegionLogicMixin
from .requirement_logic import RequirementLogicMixin
from .tool_logic import ToolLogicMixin
from ..data.animal import IncubatorSource, OstrichIncubatorSource
from ..data.artisan import MachineSource
from ..data.game_item import GenericSource, Source, GameItem, CustomRuleSource
from ..data.harvest import ForagingSource, FruitBatsSource, MushroomCaveSource, SeasonalForagingSource, \
@@ -25,7 +27,7 @@ class SourceLogicMixin(BaseLogicMixin):
class SourceLogic(BaseLogic[Union[SourceLogicMixin, HasLogicMixin, ReceivedLogicMixin, HarvestingLogicMixin, MoneyLogicMixin, RegionLogicMixin,
ArtisanLogicMixin, ToolLogicMixin, RequirementLogicMixin, GrindLogicMixin]]):
ArtisanLogicMixin, ToolLogicMixin, RequirementLogicMixin, GrindLogicMixin, AnimalLogicMixin]]):
def has_access_to_item(self, item: GameItem):
rules = []
@@ -81,6 +83,14 @@ ArtisanLogicMixin, ToolLogicMixin, RequirementLogicMixin, GrindLogicMixin]]):
def _(self, source: HarvestCropSource):
return self.logic.harvesting.can_harvest_crop_from(source)
@has_access_to.register
def _(self, source: IncubatorSource):
return self.logic.animal.can_incubate(source.egg_item)
@has_access_to.register
def _(self, source: OstrichIncubatorSource):
return self.logic.animal.can_ostrich_incubate(source.egg_item)
@has_access_to.register
def _(self, source: MachineSource):
return self.logic.artisan.can_produce_from(source)