oc2: Reduce calls to meets_requirements (#4060)
This commit is contained in:
parent
b6c58c5c24
commit
1541f46d44
|
@ -35,17 +35,13 @@ def has_requirements_for_level_star(
|
||||||
state: CollectionState, level: Overcooked2GenericLevel, stars: int, player: int) -> bool:
|
state: CollectionState, level: Overcooked2GenericLevel, stars: int, player: int) -> bool:
|
||||||
assert 0 <= stars <= 3
|
assert 0 <= stars <= 3
|
||||||
|
|
||||||
# First ensure that previous stars are obtainable
|
# First, ensure that global requirements for this many stars are met.
|
||||||
if stars > 1:
|
# Lower numbers of stars are implied meetable if this level is meetable.
|
||||||
if not has_requirements_for_level_star(state, level, stars-1, player):
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Second, ensure that global requirements are met
|
|
||||||
if not meets_requirements(state, "*", stars, player):
|
if not meets_requirements(state, "*", stars, player):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Finally, return success only if this level's requirements are met
|
# Then return success only if this level's requirements are met at all stars up through this one
|
||||||
return meets_requirements(state, level.shortname, stars, player)
|
return all(meets_requirements(state, level.shortname, s, player) for s in range(1, stars + 1))
|
||||||
|
|
||||||
|
|
||||||
def meets_requirements(state: CollectionState, name: str, stars: int, player: int):
|
def meets_requirements(state: CollectionState, name: str, stars: int, player: int):
|
||||||
|
@ -421,6 +417,7 @@ level_logic = {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
( # 3-star
|
( # 3-star
|
||||||
|
# Necessarily implies 2-star
|
||||||
[ # Exclusive
|
[ # Exclusive
|
||||||
"Progressive Dash",
|
"Progressive Dash",
|
||||||
"Spare Plate",
|
"Spare Plate",
|
||||||
|
|
Loading…
Reference in New Issue