Stardew Valley: Make sure number of month in time logic is a int to improve performance by ~20% (#3665)

* make sure number of month is actually a int

* improve rule explain like in pr

* remove redundant if in can_complete_bundle

* assert number is int so cache is not bloated
This commit is contained in:
Jérémie Bolduc
2024-07-20 15:24:24 -04:00
committed by GitHub
parent e33a9991ef
commit 34e7748f23
6 changed files with 38 additions and 9 deletions

View File

@@ -27,8 +27,8 @@ class BundleLogicMixin(BaseLogicMixin):
self.bundle = BundleLogic(*args, **kwargs)
class BundleLogic(BaseLogic[Union[ReceivedLogicMixin, HasLogicMixin, TimeLogicMixin, RegionLogicMixin, MoneyLogicMixin, QualityLogicMixin, FishingLogicMixin, SkillLogicMixin,
QuestLogicMixin]]):
class BundleLogic(BaseLogic[Union[ReceivedLogicMixin, HasLogicMixin, TimeLogicMixin, RegionLogicMixin, MoneyLogicMixin, QualityLogicMixin, FishingLogicMixin,
SkillLogicMixin, QuestLogicMixin]]):
# Should be cached
def can_complete_bundle(self, bundle: Bundle) -> StardewRule:
item_rules = []
@@ -45,7 +45,7 @@ QuestLogicMixin]]):
qualities.append(bundle_item.quality)
quality_rules = self.get_quality_rules(qualities)
item_rules = self.logic.has_n(*item_rules, count=bundle.number_required)
time_rule = True_() if time_to_grind <= 0 else self.logic.time.has_lived_months(time_to_grind)
time_rule = self.logic.time.has_lived_months(time_to_grind)
return can_speak_junimo & item_rules & quality_rules & time_rule
def get_quality_rules(self, qualities: List[str]) -> StardewRule: