mirror of
https://github.com/Steffo99/lihzahrd.git
synced 2024-11-21 15:44:24 +00:00
Complete header parsing
This commit is contained in:
parent
5da9921892
commit
41f1a70105
1 changed files with 84 additions and 8 deletions
|
@ -550,7 +550,7 @@ class WorldAltarsSmashed:
|
||||||
return f"WorldAltars(count={self.count}, ore_tier1={self.ore_tier1}, ore_tier2={self.ore_tier2}, ore_tier3={self.ore_tier3})"
|
return f"WorldAltars(count={self.count}, ore_tier1={self.ore_tier1}, ore_tier2={self.ore_tier2}, ore_tier3={self.ore_tier3})"
|
||||||
|
|
||||||
|
|
||||||
class AnglersQuest(enum.IntEnum):
|
class AnglersQuestFish(enum.IntEnum):
|
||||||
BATFISH = 0
|
BATFISH = 0
|
||||||
BUMBLEBEE_TUNA = 1
|
BUMBLEBEE_TUNA = 1
|
||||||
CATFISH = 2
|
CATFISH = 2
|
||||||
|
@ -592,7 +592,7 @@ class AnglersQuest(enum.IntEnum):
|
||||||
TROPICAL_BARRACUDA = 38
|
TROPICAL_BARRACUDA = 38
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"AnglersQuest('{self.name}')"
|
return f"AnglersQuestFish('{self.name}')"
|
||||||
|
|
||||||
|
|
||||||
class WorldSavedNPCs:
|
class WorldSavedNPCs:
|
||||||
|
@ -616,6 +616,29 @@ class WorldSavedNPCs:
|
||||||
return f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic}, angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector}, bartender={self.bartender})"
|
return f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic}, angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector}, bartender={self.bartender})"
|
||||||
|
|
||||||
|
|
||||||
|
class WorldShadowOrbs:
|
||||||
|
"""Information related to the Shadow Orbs (or the Crimson Hearts) smashed in the world."""
|
||||||
|
def __init__(self,
|
||||||
|
smashed_at_least_once: bool,
|
||||||
|
spawn_meteorite: bool,
|
||||||
|
evil_boss_counter: int):
|
||||||
|
self.smashed_at_least_once: bool = smashed_at_least_once
|
||||||
|
"""If a Shadow Orb has ever been smashed in this world."""
|
||||||
|
|
||||||
|
self.spawn_meteorite: bool = spawn_meteorite
|
||||||
|
"""If a Meteorite should land in the world at midnight.
|
||||||
|
|
||||||
|
It is set to True when a Shadow Orb is smashed, then it is set to False when the meteorite actually lands."""
|
||||||
|
|
||||||
|
self.evil_boss_counter: int = evil_boss_counter
|
||||||
|
"""If it is 2, the Eater of Worlds will spawn when a Shadow Orb is smashed.
|
||||||
|
|
||||||
|
It is the number of Shadow Orbs broken, modulo 3."""
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"WorldShadowOrbs(smashed_at_least_once={self.smashed_at_least_once}, spawn_meteorite={self.spawn_meteorite}, evil_boss_counter={self.evil_boss_counter})"
|
||||||
|
|
||||||
|
|
||||||
class WorldBossesDefeated:
|
class WorldBossesDefeated:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
eye_of_cthulhu: bool,
|
eye_of_cthulhu: bool,
|
||||||
|
@ -674,6 +697,20 @@ class WorldBossesDefeated:
|
||||||
return f"<WorldBossesDefeated>"
|
return f"<WorldBossesDefeated>"
|
||||||
|
|
||||||
|
|
||||||
|
class WorldAnglersQuest:
|
||||||
|
"""Information about today's Angler's quest."""
|
||||||
|
|
||||||
|
def __init__(self, current_goal: AnglersQuestFish, completed_by: typing.List[str]):
|
||||||
|
self.current_goal: AnglersQuestFish = current_goal
|
||||||
|
"""The fish currently requested by the angler."""
|
||||||
|
|
||||||
|
self.completed_by: typing.List[str] = completed_by
|
||||||
|
"""A list of player names who completed the angler's quest today."""
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"WorldAnglersQuest(current_goal={self.current_goal}, completed_by={self.completed_by})"
|
||||||
|
|
||||||
|
|
||||||
class World:
|
class World:
|
||||||
"""The Python representation of a Terraria world."""
|
"""The Python representation of a Terraria world."""
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
|
@ -699,7 +736,13 @@ class World:
|
||||||
dungeon_point: Coordinates,
|
dungeon_point: Coordinates,
|
||||||
world_evil: WorldEvilType,
|
world_evil: WorldEvilType,
|
||||||
saved_npcs: WorldSavedNPCs,
|
saved_npcs: WorldSavedNPCs,
|
||||||
altars_smashed: WorldAltarsSmashed):
|
altars_smashed: WorldAltarsSmashed,
|
||||||
|
is_hardmode: bool,
|
||||||
|
shadow_orbs: WorldShadowOrbs,
|
||||||
|
bosses_defeated: WorldBossesDefeated,
|
||||||
|
anglers_quest: WorldAnglersQuest,
|
||||||
|
clouds: WorldClouds,
|
||||||
|
cultist_delay: int):
|
||||||
|
|
||||||
self.version: Version = version
|
self.version: Version = version
|
||||||
"""The game version when this savefile was last saved."""
|
"""The game version when this savefile was last saved."""
|
||||||
|
@ -770,6 +813,32 @@ class World:
|
||||||
self.altars_smashed: WorldAltarsSmashed = altars_smashed
|
self.altars_smashed: WorldAltarsSmashed = altars_smashed
|
||||||
"""Information related to the destruction of Demon Altars with a Pwnhammer."""
|
"""Information related to the destruction of Demon Altars with a Pwnhammer."""
|
||||||
|
|
||||||
|
self.is_hardmode: bool = is_hardmode
|
||||||
|
"""Whether or not the world is in hardmode."""
|
||||||
|
|
||||||
|
self.shadow_orbs: WorldShadowOrbs = shadow_orbs
|
||||||
|
"""Information related to the Shadow Orbs or Crimson Hearts in the world."""
|
||||||
|
|
||||||
|
self.bosses_defeated: WorldBossesDefeated = bosses_defeated
|
||||||
|
"""Which bosses have been defeated in the world."""
|
||||||
|
|
||||||
|
self.anglers_quest: WorldAnglersQuest = anglers_quest
|
||||||
|
"""Information about today's Angler's Quest."""
|
||||||
|
|
||||||
|
self.clouds: WorldClouds = clouds
|
||||||
|
self.cultist_delay: int = cultist_delay
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'<World "{self.name}">'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def crimson_hearts(self) -> WorldShadowOrbs:
|
||||||
|
return self.shadow_orbs
|
||||||
|
|
||||||
|
@crimson_hearts.setter
|
||||||
|
def crimson_hearts(self, value):
|
||||||
|
self.shadow_orbs = value
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_from_file(cls, file):
|
def create_from_file(cls, file):
|
||||||
f = FileReader(file)
|
f = FileReader(file)
|
||||||
|
@ -846,10 +915,12 @@ class World:
|
||||||
defeated_frost_moon = f.bool()
|
defeated_frost_moon = f.bool()
|
||||||
defeated_pirates = f.bool()
|
defeated_pirates = f.bool()
|
||||||
|
|
||||||
smashed_shadow_orb = f.bool()
|
shadow_orbs = WorldShadowOrbs(smashed_at_least_once=f.bool(),
|
||||||
spawn_meteor = f.bool()
|
spawn_meteorite=f.bool(),
|
||||||
smashed_shadow_orb_mod3 = f.int4()
|
evil_boss_counter=f.int4())
|
||||||
|
|
||||||
smashed_altars_count = f.int4()
|
smashed_altars_count = f.int4()
|
||||||
|
|
||||||
is_hardmode = f.bool()
|
is_hardmode = f.bool()
|
||||||
|
|
||||||
invasion_delay = f.int4()
|
invasion_delay = f.int4()
|
||||||
|
@ -901,7 +972,9 @@ class World:
|
||||||
|
|
||||||
saved_angler = f.bool()
|
saved_angler = f.bool()
|
||||||
|
|
||||||
angler_today_quest_target = AnglersQuest(f.int4())
|
angler_today_quest_target = AnglersQuestFish(f.int4())
|
||||||
|
anglers_quest = WorldAnglersQuest(current_goal=angler_today_quest_target,
|
||||||
|
completed_by=angler_today_quest_completed_by)
|
||||||
|
|
||||||
saved_stylist = f.bool()
|
saved_stylist = f.bool()
|
||||||
saved_tax_collector = f.bool()
|
saved_tax_collector = f.bool()
|
||||||
|
@ -1008,8 +1081,11 @@ class World:
|
||||||
is_expert=is_expert, created_on=created_on, styles=world_styles, backgrounds=backgrounds,
|
is_expert=is_expert, created_on=created_on, styles=world_styles, backgrounds=backgrounds,
|
||||||
spawn_point=spawn_point, underground_level=underground_level, cavern_level=cavern_level,
|
spawn_point=spawn_point, underground_level=underground_level, cavern_level=cavern_level,
|
||||||
time=time, events=events, dungeon_point=dungeon_point, world_evil=world_evil,
|
time=time, events=events, dungeon_point=dungeon_point, world_evil=world_evil,
|
||||||
saved_npcs=saved_npcs, altars_smashed=altars_smashed)
|
saved_npcs=saved_npcs, altars_smashed=altars_smashed, is_hardmode=is_hardmode,
|
||||||
|
shadow_orbs=shadow_orbs, bosses_defeated=bosses_defeated, anglers_quest=anglers_quest,
|
||||||
|
clouds=clouds, cultist_delay=cultist_delay)
|
||||||
breakpoint()
|
breakpoint()
|
||||||
|
return world
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in a new issue