diff --git a/fast64_internal/data/z64/data.py b/fast64_internal/data/z64/data.py index 65f48fd..a7ad5f0 100644 --- a/fast64_internal/data/z64/data.py +++ b/fast64_internal/data/z64/data.py @@ -12,7 +12,7 @@ from .actor_data import Z64_ActorData # TODO: get this from XML -ootEnumNightSeq = [ +oot_enum_nature_id = [ ("Custom", "Custom", "Custom"), ("0x00", "General Night", "NATURE_ID_GENERAL_NIGHT"), ("0x01", "Market Entrance", "NATURE_ID_MARKET_ENTRANCE"), @@ -64,7 +64,7 @@ enum_ambiance_id = [ # --- -ootEnumSkybox = [ +oot_enum_skybox = [ ("Custom", "Custom", "Custom"), ("0x00", "None", "None"), ("0x01", "Standard Sky", "Standard Sky"), @@ -104,7 +104,7 @@ mm_enum_skybox = [ ("SKYBOX_CUTSCENE_MAP", "Cutscene Map", "0x05"), ] -ootEnumCloudiness = [ +oot_enum_skybox_config = [ ("Custom", "Custom", "Custom"), ("0x00", "Sunny", "Sunny"), ("0x01", "Cloudy", "Cloudy"), @@ -142,7 +142,7 @@ mm_enum_skybox_config = [ ("SKYBOX_CONFIG_27", "SKYBOX_CONFIG_27", "0x1B"), ] -ootEnumLinkIdle = [ +oot_enum_environment_type = [ ("Custom", "Custom", "Custom"), ("0x00", "Default", "Default"), ("0x01", "Sneezing", "Sneezing"), @@ -165,8 +165,7 @@ mm_enum_environment_type = [ ("ROOM_ENV_UNK_STRETCH_3", "Unknown Stretch 3", "0x06"), ] -# see RoomType enum -ootEnumRoomBehaviour = [ +oot_enum_room_type = [ ("Custom", "Custom", "Custom"), ("0x00", "Default", "Default"), ("0x01", "Dungeon Behavior (Z-Target, Sun's Song)", "Dungeon Behavior (Z-Target, Sun's Song)"), @@ -186,7 +185,7 @@ mm_enum_room_type = [ ("ROOM_TYPE_BOSS", "Boss", "0x05"), ] -ootEnumFloorSetting = [ +oot_enum_floor_property = [ ("Custom", "Custom", "Custom"), ("0x00", "Default", "Default"), ("0x05", "Trigger Respawn", "Trigger Respawn"), @@ -212,7 +211,7 @@ mm_enum_floor_property = [ ("0x0D", "Trigger Void (runs `Player_Action_1`)", "FLOOR_PROPERTY_13"), ] -enum_floor_property = [ +oot_enum_floor_type = [ ("Custom", "Custom", "Custom"), ("0x00", "Default", "Default"), ("0x01", "Haunted Wasteland Camera", "Haunted Wasteland Camera"), @@ -256,7 +255,7 @@ enum_floor_effect = [ ("0x02", "Walkable (Preserves Exit Flags)", "FLOOR_EFFECT_2"), ] -ootEnumCameraSType = [ +oot_enum_camera_setting_type = [ ("Custom", "Custom", "Custom"), ("CAM_SET_NONE", "None", "None"), ("CAM_SET_NORMAL0", "Normal0", "Normal0"), @@ -506,7 +505,7 @@ mm_enum_camera_setting_type = [ ] # order here sets order on the UI -ootEnumCSListType = [ +oot_enum_cs_list_type = [ # Col 1 ("TextList", "Text List", "Textbox", "ALIGN_BOTTOM", 0), ("MiscList", "Misc List", "Misc", "OPTIONS", 7), @@ -873,30 +872,30 @@ class Z64_Data: self.cs_index_start = 4 self.cs_list_type_to_cmd["Transition"] = "CS_TRANSITION" self.cs_list_type_to_cmd["RumbleList"] = "CS_RUMBLE_CONTROLLER_LIST" - self.ootEnumNightSeq = ootEnumNightSeq - self.ootEnumSkybox = ootEnumSkybox - self.ootEnumCloudiness = ootEnumCloudiness - self.ootEnumLinkIdle = ootEnumLinkIdle - self.ootEnumRoomBehaviour = ootEnumRoomBehaviour - self.ootEnumFloorSetting = ootEnumFloorSetting - self.enum_floor_property = enum_floor_property - self.ootEnumCameraSType = ootEnumCameraSType - self.ootEnumCSListType = ootEnumCSListType + self.enum_nature_id = oot_enum_nature_id + self.enum_skybox = oot_enum_skybox + self.enum_skybox_config = oot_enum_skybox_config + self.enum_environment_type = oot_enum_environment_type + self.enum_room_type = oot_enum_room_type + self.enum_floor_property = oot_enum_floor_property + self.enum_floor_type = oot_enum_floor_type + self.enum_camera_setting_type = oot_enum_camera_setting_type + self.enum_cs_list_type = oot_enum_cs_list_type self.skeleton_dict = oot_skeleton_dict self.enum_skeleton_mode = oot_enum_skeleton_mode elif self.game == "MM": self.cs_index_start = 1 self.cs_list_type_to_cmd["Transition"] = "CS_TRANSITION_LIST" self.cs_list_type_to_cmd["RumbleList"] = "CS_RUMBLE_LIST" - self.ootEnumNightSeq = enum_ambiance_id - self.ootEnumSkybox = mm_enum_skybox - self.ootEnumCloudiness = mm_enum_skybox_config - self.ootEnumLinkIdle = mm_enum_environment_type - self.ootEnumRoomBehaviour = mm_enum_room_type - self.ootEnumFloorSetting = mm_enum_floor_property - self.enum_floor_property = mm_enum_floor_type - self.ootEnumCameraSType = mm_enum_camera_setting_type - self.ootEnumCSListType = mm_enum_cs_list_type + self.enum_nature_id = enum_ambiance_id + self.enum_skybox = mm_enum_skybox + self.enum_skybox_config = mm_enum_skybox_config + self.enum_environment_type = mm_enum_environment_type + self.enum_room_type = mm_enum_room_type + self.enum_floor_property = mm_enum_floor_property + self.enum_floor_type = mm_enum_floor_type + self.enum_camera_setting_type = mm_enum_camera_setting_type + self.enum_cs_list_type = mm_enum_cs_list_type self.skeleton_dict = mm_skeleton_dict self.enum_skeleton_mode = mm_enum_skeleton_mode else: @@ -927,15 +926,15 @@ class Z64_Data: "chest_content": self.actors.ootEnumChestContent, "navi_msg_id": self.actors.ootEnumNaviMessageData, "collectibles": self.actors.ootEnumCollectibleItems, - "skyboxID": self.ootEnumSkybox, - "skyboxCloudiness": self.ootEnumCloudiness, - "nightSeq": self.ootEnumNightSeq, - "roomBehaviour": self.ootEnumRoomBehaviour, - "linkIdleMode": self.ootEnumLinkIdle, - "floorSetting": self.ootEnumFloorSetting, - "floorProperty": self.enum_floor_property, - "camSType": self.ootEnumCameraSType, - "cs_list_type": self.ootEnumCSListType, + "skybox": self.enum_skybox, + "skybox_config": self.enum_skybox_config, + "nature_id": self.enum_nature_id, + "room_type": self.enum_room_type, + "environment_type": self.enum_environment_type, + "floor_property": self.enum_floor_property, + "floor_type": self.enum_floor_type, + "camera_setting_type": self.enum_camera_setting_type, + "cs_list_type": self.enum_cs_list_type, "skeleton_mode": self.enum_skeleton_mode, } diff --git a/fast64_internal/z64/collision/constants.py b/fast64_internal/z64/collision/constants.py index 8fb83ea..2c63f36 100644 --- a/fast64_internal/z64/collision/constants.py +++ b/fast64_internal/z64/collision/constants.py @@ -4,17 +4,6 @@ ootEnumConveyer = [ ("Water", "Water", "Water"), ] -ootEnumFloorSetting = [ - ("Custom", "Custom", "Custom"), - ("0x00", "Default", "Default"), - ("0x05", "Void (Small)", "Void (Small)"), - ("0x06", "Grab Wall", "Grab Wall"), - ("0x08", "Stop Air Momentum", "Stop Air Momentum"), - ("0x09", "Fall Instead Of Jumping", "Fall Instead Of Jumping"), - ("0x0B", "Dive", "Dive"), - ("0x0C", "Void (Large)", "Void (Large)"), -] - ootEnumWallSetting = [ ("Custom", "Custom", "Custom"), ("0x00", "None", "None"), @@ -27,22 +16,6 @@ ootEnumWallSetting = [ ("0x07", "Push Block", "Push Block"), ] -enum_floor_property = [ - ("Custom", "Custom", "Custom"), - ("0x00", "None", "None"), - ("0x01", "Haunted Wasteland Camera", "Haunted Wasteland Camera"), - ("0x02", "Hurt Floor (Spikes)", "Hurt Floor (Spikes)"), - ("0x03", "Hurt Floor (Lava)", "Hurt Floor (Lava)"), - ("0x04", "Shallow Sand", "Shallow Sand"), - ("0x05", "Slippery", "Slippery"), - ("0x06", "No Fall Damage", "No Fall Damage"), - ("0x07", "Quicksand Crossing (Epona Uncrossable)", "Quicksand Crossing (Epona Uncrossable)"), - ("0x08", "Jabu Jabu's Belly", "Jabu Jabu's Belly"), - ("0x09", "Void", "Void"), - ("0x0A", "Link Looks Up", "Link Looks Up"), - ("0x0B", "Quicksand Crossing (Epona Crossable)", "Quicksand Crossing (Epona Crossable)"), -] - ootEnumCollisionTerrain = [ ("Custom", "Custom", "Custom"), ("0x00", "Walkable", "Walkable"), @@ -82,76 +55,6 @@ ootEnumCameraCrawlspaceSType = [ ("CAM_SET_CRAWLSPACE", "Crawlspace", "Crawlspace"), ] -ootEnumCameraSType = [ - ("Custom", "Custom", "Custom"), - ("CAM_SET_NONE", "None", "None"), - ("CAM_SET_NORMAL0", "Normal0", "Normal0"), - ("CAM_SET_NORMAL1", "Normal1", "Normal1"), - ("CAM_SET_DUNGEON0", "Dungeon0", "Dungeon0"), - ("CAM_SET_DUNGEON1", "Dungeon1", "Dungeon1"), - ("CAM_SET_NORMAL3", "Normal3", "Normal3"), - ("CAM_SET_HORSE0", "Horse", "Horse"), - ("CAM_SET_BOSS_GOMA", "Boss_gohma", "Boss_gohma"), - ("CAM_SET_BOSS_DODO", "Boss_dodongo", "Boss_dodongo"), - ("CAM_SET_BOSS_BARI", "Boss_barinade", "Boss_barinade"), - ("CAM_SET_BOSS_FGANON", "Boss_phantom_ganon", "Boss_phantom_ganon"), - ("CAM_SET_BOSS_BAL", "Boss_volvagia", "Boss_volvagia"), - ("CAM_SET_BOSS_SHADES", "Boss_bongo", "Boss_bongo"), - ("CAM_SET_BOSS_MOFA", "Boss_morpha", "Boss_morpha"), - ("CAM_SET_TWIN0", "Twinrova_platform", "Twinrova_platform"), - ("CAM_SET_TWIN1", "Twinrova_floor", "Twinrova_floor"), - ("CAM_SET_BOSS_GANON1", "Boss_ganondorf", "Boss_ganondorf"), - ("CAM_SET_BOSS_GANON2", "Boss_ganon", "Boss_ganon"), - ("CAM_SET_TOWER0", "Tower_climb", "Tower_climb"), - ("CAM_SET_TOWER1", "Tower_unused", "Tower_unused"), - ("CAM_SET_FIXED0", "Market_balcony", "Market_balcony"), - ("CAM_SET_FIXED1", "Chu_bowling", "Chu_bowling"), - ("CAM_SET_CIRCLE0", "Pivot_crawlspace", "Pivot_crawlspace"), - ("CAM_SET_CIRCLE2", "Pivot_shop_browsing", "Pivot_shop_browsing"), - ("CAM_SET_CIRCLE3", "Pivot_in_front", "Pivot_in_front"), - ("CAM_SET_PREREND0", "Prerend_fixed", "Prerend_fixed"), - ("CAM_SET_PREREND1", "Prerend_pivot", "Prerend_pivot"), - ("CAM_SET_PREREND3", "Prerend_side_scroll", "Prerend_side_scroll"), - ("CAM_SET_DOOR0", "Door0", "Door0"), - ("CAM_SET_DOORC", "Doorc", "Doorc"), - ("CAM_SET_RAIL3", "Crawlspace", "Crawlspace"), - ("CAM_SET_START0", "Start0", "Start0"), - ("CAM_SET_START1", "Start1", "Start1"), - ("CAM_SET_FREE0", "Free0", "Free0"), - ("CAM_SET_FREE2", "Free2", "Free2"), - ("CAM_SET_CIRCLE4", "Pivot_corner", "Pivot_corner"), - ("CAM_SET_CIRCLE5", "Pivot_water_surface", "Pivot_water_surface"), - ("CAM_SET_DEMO0", "Cs_0", "Cs_0"), - ("CAM_SET_DEMO1", "Twisted_Hallway", "Twisted_Hallway"), - ("CAM_SET_MORI1", "Forest_birds_eye", "Forest_birds_eye"), - ("CAM_SET_ITEM0", "Slow_chest_cs", "Slow_chest_cs"), - ("CAM_SET_ITEM1", "Item_unused", "Item_unused"), - ("CAM_SET_DEMO3", "Cs_3", "Cs_3"), - ("CAM_SET_DEMO4", "Cs_attention", "Cs_attention"), - ("CAM_SET_UFOBEAN", "Bean_generic", "Bean_generic"), - ("CAM_SET_LIFTBEAN", "Bean_lost_woods", "Bean_lost_woods"), - ("CAM_SET_SCENE0", "Scene_unused", "Scene_unused"), - ("CAM_SET_SCENE1", "Scene_transition", "Scene_transition"), - ("CAM_SET_HIDAN1", "Fire_platform", "Fire_platform"), - ("CAM_SET_HIDAN2", "Fire_staircase", "Fire_staircase"), - ("CAM_SET_MORI2", "Forest_unused", "Forest_unused"), - ("CAM_SET_MORI3", "Defeat_poe", "Defeat_poe"), - ("CAM_SET_TAKO", "Big_octo", "Big_octo"), - ("CAM_SET_SPOT05A", "Meadow_birds_eye", "Meadow_birds_eye"), - ("CAM_SET_SPOT05B", "Meadow_unused", "Meadow_unused"), - ("CAM_SET_HIDAN3", "Fire_birds_eye", "Fire_birds_eye"), - ("CAM_SET_ITEM2", "Turn_around", "Turn_around"), - ("CAM_SET_CIRCLE6", "Pivot_vertical", "Pivot_vertical"), - ("CAM_SET_NORMAL2", "Normal2", "Normal2"), - ("CAM_SET_FISHING", "Fishing", "Fishing"), - ("CAM_SET_DEMOC", "Cs_c", "Cs_c"), - ("CAM_SET_UO_FIBER", "Jabu_tentacle", "Jabu_tentacle"), - ("CAM_SET_DUNGEON2", "Dungeon2", "Dungeon2"), - ("CAM_SET_TEPPEN", "Directed_yaw", "Directed_yaw"), - ("CAM_SET_CIRCLE7", "Pivot_from_side", "Pivot_from_side"), - ("CAM_SET_NORMAL4", "Normal4", "Normal4"), -] - decomp_compat_map_CameraSType = { "CAM_SET_HORSE0": "CAM_SET_HORSE", "CAM_SET_BOSS_GOMA": "CAM_SET_BOSS_GOHMA", diff --git a/fast64_internal/z64/collision/properties.py b/fast64_internal/z64/collision/properties.py index f53ea2b..47980d2 100644 --- a/fast64_internal/z64/collision/properties.py +++ b/fast64_internal/z64/collision/properties.py @@ -1,19 +1,18 @@ import math + from bpy.props import StringProperty, PointerProperty, IntProperty, EnumProperty, BoolProperty, FloatProperty -from bpy.types import PropertyGroup, Camera, Object, Material, UILayout +from bpy.types import PropertyGroup, Object, Material, UILayout from bpy.utils import register_class, unregister_class + +from ...game_data import game_data from ...utility import prop_split from ..utility import drawEnumWithCustom -from ..constants import ootEnumSceneID from .constants import ( - ootEnumFloorSetting, ootEnumWallSetting, - enum_floor_property, ootEnumConveyer, enum_conveyor_speed, ootEnumCollisionTerrain, ootEnumCollisionSound, - ootEnumCameraSType, ) @@ -45,7 +44,7 @@ class OOTCollisionExportSettings(PropertyGroup): class OOTCameraPositionProperty(PropertyGroup): index: IntProperty(min=0) bgImageOverrideIndex: IntProperty(default=-1, min=-1) - camSType: EnumProperty(items=ootEnumCameraSType, default="CAM_SET_NONE") + camSType: EnumProperty(items=lambda self, context: game_data.z64.get_enum("camera_setting_type"), default=1) camSTypeCustom: StringProperty(default="CAM_SET_NONE") hasPositionData: BoolProperty(default=True, name="Has Position Data") @@ -68,11 +67,11 @@ class OOTMaterialCollisionProperty(PropertyGroup): eponaBlock: BoolProperty() decreaseHeight: BoolProperty() floorSettingCustom: StringProperty(default="0x00") - floorSetting: EnumProperty(items=ootEnumFloorSetting, default="0x00") + floorSetting: EnumProperty(items=lambda self, context: game_data.z64.get_enum("floor_property"), default=1) wallSettingCustom: StringProperty(default="0x00") wallSetting: EnumProperty(items=ootEnumWallSetting, default="0x00") floorPropertyCustom: StringProperty(default="0x00") - floorProperty: EnumProperty(items=enum_floor_property, default="0x00") + floorProperty: EnumProperty(items=lambda self, context: game_data.z64.get_enum("floor_type"), default=1) exitID: IntProperty(default=0, min=0) cameraID: IntProperty(default=0, min=0) isWallDamage: BoolProperty() @@ -109,9 +108,9 @@ class OOTMaterialCollisionProperty(PropertyGroup): layout.prop(self, "isWallDamage", text="Is Wall Damage") layout.prop(self, "hookshotable", text="Hookshotable") - drawEnumWithCustom(layout, self, "floorSetting", "Floor Setting", "") + drawEnumWithCustom(layout, self, "floorSetting", "Floor Property", "") drawEnumWithCustom(layout, self, "wallSetting", "Wall Setting", "") - drawEnumWithCustom(layout, self, "floorProperty", "Floor Property", "") + drawEnumWithCustom(layout, self, "floorProperty", "Floor Type", "") layout.prop(self, "ignoreCameraCollision", text="Ignore Camera Collision") layout.prop(self, "ignoreActorCollision", text="Ignore Actor Collision") diff --git a/fast64_internal/z64/constants.py b/fast64_internal/z64/constants.py index 699c2aa..6ed83eb 100644 --- a/fast64_internal/z64/constants.py +++ b/fast64_internal/z64/constants.py @@ -15,24 +15,6 @@ ootEnumHeaderMenuComplete = [ ("Child Day", "Child Day", "Child Day"), ] + ootEnumHeaderMenu -ootEnumLinkIdle = [ - ("Custom", "Custom", "Custom"), - ("0x00", "Default", "Default"), - ("0x01", "Sneezing", "Sneezing"), - ("0x02", "Wiping Forehead", "Wiping Forehead"), - ("0x04", "Yawning", "Yawning"), - ("0x07", "Gasping For Breath", "Gasping For Breath"), - ("0x09", "Brandish Sword", "Brandish Sword"), - ("0x0A", "Adjust Tunic", "Adjust Tunic"), - ("0xFF", "Hops On Epona", "Hops On Epona"), -] - -ootEnumCloudiness = [ - ("Custom", "Custom", "Custom"), - ("0x00", "Sunny", "Sunny"), - ("0x01", "Cloudy", "Cloudy"), -] - ootEnumCameraMode = [ ("Custom", "Custom", "Custom"), ("0x00", "Default", "Default"), @@ -70,37 +52,6 @@ ootEnumMapLocation = [ ("0x16", "Grottos & Fairy Fountains", "Grottos & Fairy Fountains"), ] -ootEnumSkybox = [ - ("Custom", "Custom", "Custom"), - ("0x00", "None", "None"), - ("0x01", "Standard Sky", "Standard Sky"), - ("0x02", "Hylian Bazaar", "Hylian Bazaar"), - ("0x03", "Brown Cloudy Sky", "Brown Cloudy Sky"), - ("0x04", "Market Ruins", "Market Ruins"), - ("0x05", "Black Cloudy Night", "Black Cloudy Night"), - ("0x07", "Link's House", "Link's House"), - ("0x09", "Market (Main Square, Day)", "Market (Main Square, Day)"), - ("0x0A", "Market (Main Square, Night)", "Market (Main Square, Night)"), - ("0x0B", "Happy Mask Shop", "Happy Mask Shop"), - ("0x0C", "Know-It-All Brothers' House", "Know-It-All Brothers' House"), - ("0x0E", "Kokiri Twins' House", "Kokiri Twins' House"), - ("0x0F", "Stable", "Stable"), - ("0x10", "Stew Lady's House", "Stew Lady's House"), - ("0x11", "Kokiri Shop", "Kokiri Shop"), - ("0x13", "Goron Shop", "Goron Shop"), - ("0x14", "Zora Shop", "Zora Shop"), - ("0x16", "Kakariko Potions Shop", "Kakariko Potions Shop"), - ("0x17", "Hylian Potions Shop", "Hylian Potions Shop"), - ("0x18", "Bomb Shop", "Bomb Shop"), - ("0x1A", "Dog Lady's House", "Dog Lady's House"), - ("0x1B", "Impa's House", "Impa's House"), - ("0x1C", "Gerudo Tent", "Gerudo Tent"), - ("0x1D", "Environment Color", "Environment Color"), - ("0x20", "Mido's House", "Mido's House"), - ("0x21", "Saria's House", "Saria's House"), - ("0x22", "Dog Guy's House", "Dog Guy's House"), -] - ootEnumSkyboxLighting = [ # see ``LightMode`` enum in ``z64environment.h`` ("Custom", "Custom", "Custom"), @@ -234,41 +185,6 @@ ootEnumMusicSeq = [ ("NA_BGM_NATURE_SFX_RAIN", "Nature Ambiance: Rain", "Nature Ambiance: Rain"), ] -ootEnumNightSeq = [ - ("Custom", "Custom", "Custom"), - ("0x00", "Standard night [day and night cycle]", "0x00"), - ("0x01", "Standard night [Kakariko]", "0x01"), - ("0x02", "Distant storm [Graveyard]", "0x02"), - ("0x03", "Howling wind and cawing [Ganon's Castle]", "0x03"), - ("0x04", "Wind + night birds [Kokiri]", "0x04"), - ("0x05", "Wind + crickets", "0x05"), - ("0x06", "Wind", "0x06"), - ("0x07", "Howling wind", "0x07"), - ("0x08", "Wind + crickets", "0x08"), - ("0x09", "Wind + crickets", "0x09"), - ("0x0A", "Tubed howling wind [Wasteland]", "0x0A"), - ("0x0B", "Tubed howling wind [Colossus]", "0x0B"), - ("0x0C", "Wind", "0x0C"), - ("0x0D", "Wind + crickets", "0x0D"), - ("0x0E", "Wind + crickets", "0x0E"), - ("0x0F", "Wind + birds", "0x0F"), - ("0x10", "Wind + crickets", "0x10"), - ("0x11", "?", "0x11"), - ("0x12", "Wind + crickets", "0x12"), - ("0x13", "Day music always playing", "0x13"), - ("0x14", "Silence", "0x14"), - ("0x16", "Silence", "0x16"), - ("0x17", "High tubed wind + rain", "0x17"), - ("0x18", "Silence", "0x18"), - ("0x19", "Silence", "0x19"), - ("0x1A", "High tubed wind + rain", "0x1A"), - ("0x1B", "Silence", "0x1B"), - ("0x1C", "Rain", "0x1C"), - ("0x1D", "High tubed wind + rain", "0x1D"), - ("0x1E", "Silence", "0x1E"), - ("0x1F", "High tubed wind + rain ", "0x1F"), -] - ootEnumGlobalObject = [ ("Custom", "Custom", "Custom"), ("OBJECT_INVALID", "None", "None"), @@ -527,17 +443,6 @@ ootEnumCamTransition = [ # ("0xFF", "0xFF", "0xFF"), ] -# see curRoom.behaviorType1 -ootEnumRoomBehaviour = [ - ("Custom", "Custom", "Custom"), - ("0x00", "Default", "Default"), - ("0x01", "Dungeon Behavior (Z-Target, Sun's Song)", "Dungeon Behavior (Z-Target, Sun's Song)"), - ("0x02", "Disable Backflips/Sidehops", "Disable Backflips/Sidehops"), - ("0x03", "Disable Color Dither", "Disable Color Dither"), - ("0x04", "(?) Horse Camera Related", "(?) Horse Camera Related"), - ("0x05", "Disable Darker Screen Effect (NL/Spins)", "Disable Darker Screen Effect (NL/Spins)"), -] - ootEnumDrawConfig = [ ("Custom", "Custom", "Custom"), ("SDC_DEFAULT", "Default", "Default"), diff --git a/fast64_internal/z64/cutscene/constants.py b/fast64_internal/z64/cutscene/constants.py index 3ebd2d4..d074645 100644 --- a/fast64_internal/z64/cutscene/constants.py +++ b/fast64_internal/z64/cutscene/constants.py @@ -47,19 +47,6 @@ ootEnumCSWriteType = [ ("Object", "Object", "Reference to Blender object representing cutscene", "", 2), ] -# order here sets order on the UI -ootEnumCSListType = [ - ("TextList", "Text List", "Textbox", "ALIGN_BOTTOM", 0), - ("MiscList", "Misc List", "Misc", "OPTIONS", 7), - ("RumbleList", "Rumble List", "Rumble Controller", "OUTLINER_OB_FORCE_FIELD", 8), - ("Transition", "Transition", "Transition", "COLORSET_10_VEC", 1), - ("LightSettingsList", "Light Settings List", "Lighting", "LIGHT_SUN", 2), - ("TimeList", "Time List", "Time", "TIME", 3), - ("StartSeqList", "Start Seq List", "Play BGM", "PLAY", 4), - ("StopSeqList", "Stop Seq List", "Stop BGM", "SNAP_FACE", 5), - ("FadeOutSeqList", "Fade-Out Seq List", "Fade BGM", "IPO_EASE_IN_OUT", 6), -] - csListTypeToIcon = { "TextList": "ALIGN_BOTTOM", "Transition": "COLORSET_10_VEC", diff --git a/fast64_internal/z64/cutscene/operators.py b/fast64_internal/z64/cutscene/operators.py index 345f1c2..3e4ddfd 100644 --- a/fast64_internal/z64/cutscene/operators.py +++ b/fast64_internal/z64/cutscene/operators.py @@ -8,7 +8,7 @@ from bpy.utils import register_class, unregister_class from ...utility import PluginError, raisePluginError from ...game_data import game_data from ..collection_utility import getCollection -from .constants import ootEnumCSTextboxType, ootEnumCSListType +from .constants import ootEnumCSTextboxType from .importer import importCutsceneData from ..exporter.cutscene import Cutscene @@ -36,7 +36,7 @@ class OOTCSListAdd(Operator): bl_options = {"REGISTER", "UNDO"} collectionType: StringProperty() - listType: EnumProperty(items=ootEnumCSListType) + listType: EnumProperty(items=lambda self, context: game_data.z64.get_enum("cs_list_type")) objName: StringProperty() def execute(self, context): diff --git a/fast64_internal/z64/cutscene/properties.py b/fast64_internal/z64/cutscene/properties.py index 552d433..86243c7 100644 --- a/fast64_internal/z64/cutscene/properties.py +++ b/fast64_internal/z64/cutscene/properties.py @@ -19,7 +19,6 @@ from .motion.operators import ( from .constants import ( ootEnumCSTextboxType, - ootEnumCSListType, ootEnumCSTextboxTypeIcons, ootCSSubPropToName, csListTypeToIcon, @@ -190,7 +189,7 @@ class OOTCSRumbleProperty(OOTCutsceneCommon, PropertyGroup): class OOTCSListProperty(PropertyGroup): expandTab: BoolProperty(default=True) - listType: EnumProperty(items=ootEnumCSListType) + listType: EnumProperty(items=lambda self, context: game_data.z64.get_enum("cs_list_type")) textList: CollectionProperty(type=OOTCSTextProperty) lightSettingsList: CollectionProperty(type=OOTCSLightSettingsProperty) timeList: CollectionProperty(type=OOTCSTimeProperty) @@ -205,7 +204,8 @@ class OOTCSListProperty(PropertyGroup): def draw_props(self, layout: UILayout, listIndex: int, objName: str, collectionType: str): box = layout.box().column() - enumName = getEnumName(ootEnumCSListType, self.listType) + enum_cs_list_type = game_data.z64.get_enum("cs_list_type") + enumName = getEnumName(enum_cs_list_type, self.listType) # Draw current command tab box.prop( @@ -264,7 +264,7 @@ class OOTCSListProperty(PropertyGroup): addOp.objName = objName else: addOp = box.operator( - OOTCollectionAdd.bl_idname, text="Add item to " + getEnumName(ootEnumCSListType, self.listType) + OOTCollectionAdd.bl_idname, text="Add item to " + getEnumName(enum_cs_list_type, self.listType) ) addOp.option = len(data) addOp.collectionType = collectionType + "." + attrName @@ -278,7 +278,7 @@ class OOTCSListProperty(PropertyGroup): p.draw_props(box, self, listIndex, i, objName, collectionType, enumName.removesuffix(" List")) if len(data) == 0: - box.label(text="No items in " + getEnumName(ootEnumCSListType, self.listType)) + box.label(text="No items in " + getEnumName(enum_cs_list_type, self.listType)) class OOTCutsceneCommandBase: @@ -365,7 +365,7 @@ class OOTCutsceneProperty(PropertyGroup): csDestinationCustom: StringProperty(default="CS_DEST_CUSTOM") csDestinationStartFrame: IntProperty(name="Start Frame", min=0, default=99) csLists: CollectionProperty(type=OOTCSListProperty, name="Cutscene Lists") - menuTab: EnumProperty(items=ootEnumCSListType) + menuTab: EnumProperty(items=lambda self, context: game_data.z64.get_enum("cs_list_type")) preview: PointerProperty(type=OOTCutscenePreviewProperty) diff --git a/fast64_internal/z64/importer/room_header.py b/fast64_internal/z64/importer/room_header.py index 7fb9dcc..1d3cb62 100644 --- a/fast64_internal/z64/importer/room_header.py +++ b/fast64_internal/z64/importer/room_header.py @@ -8,7 +8,6 @@ from ..utility import setCustomProperty from ..model_classes import OOTF3DContext from ..room.properties import OOTRoomHeaderProperty from ...game_data import game_data -from ..constants import ootEnumLinkIdle, ootEnumRoomBehaviour from .utility import getDataMatch, stripName, parse_commands_data from .classes import SharedSceneData from .constants import headerNames @@ -82,8 +81,8 @@ def parseRoomCommands( elif command == "SCENE_CMD_ECHO_SETTINGS": roomHeader.echo = args[0] elif command == "SCENE_CMD_ROOM_BEHAVIOR": - setCustomProperty(roomHeader, "roomBehaviour", args[0], ootEnumRoomBehaviour) - setCustomProperty(roomHeader, "linkIdleMode", args[1], ootEnumLinkIdle) + setCustomProperty(roomHeader, "roomBehaviour", args[0], game_data.z64.get_enum("room_type")) + setCustomProperty(roomHeader, "linkIdleMode", args[1], game_data.z64.get_enum("environment_type")) roomHeader.showInvisibleActors = args[2] == "true" or args[2] == "1" roomHeader.disableWarpSongs = args[3] == "true" or args[3] == "1" elif command == "SCENE_CMD_SKYBOX_DISABLES": diff --git a/fast64_internal/z64/importer/scene_collision.py b/fast64_internal/z64/importer/scene_collision.py index e2b526f..e539368 100644 --- a/fast64_internal/z64/importer/scene_collision.py +++ b/fast64_internal/z64/importer/scene_collision.py @@ -6,6 +6,7 @@ import mathutils from random import random from bpy.types import Material +from ...game_data import game_data from ...utility import PluginError, parentObject, hexOrDecInt, get_include_data, yUpToZUp from ..exporter.collision.surface import SurfaceType from ..exporter.collision.polygons import CollisionPoly @@ -17,12 +18,9 @@ from .utility import getDataMatch, getBits, checkBit, createCurveFromPoints, str from .classes import SharedSceneData from ..collision.constants import ( - ootEnumFloorSetting, ootEnumWallSetting, - enum_floor_property, ootEnumCollisionTerrain, ootEnumCollisionSound, - ootEnumCameraSType, ootEnumCameraCrawlspaceSType, enum_conveyor_speed, ) @@ -80,7 +78,7 @@ def parseCamPosData(setting: str, sceneData: str, posDataName: str, index: int, camObj = bpy.data.objects.new(objName, camera) bpy.context.scene.collection.objects.link(camObj) camProp = camObj.ootCameraPositionProperty - setCustomProperty(camProp, "camSType", setting, ootEnumCameraSType) + setCustomProperty(camProp, "camSType", setting, game_data.z64.get_enum("camera_setting_type")) camProp.hasPositionData = posDataName != "NULL" and posDataName != "0" camProp.index = orderIndex @@ -178,9 +176,9 @@ def parseSurfaceParams( ): col_props.eponaBlock = surface_type.isHorseBlocked col_props.decreaseHeight = surface_type.isSoft - setCustomProperty(col_props, "floorSetting", surface_type.floorProperty, ootEnumFloorSetting) + setCustomProperty(col_props, "floorSetting", surface_type.floorProperty, game_data.z64.get_enum("floor_property")) setCustomProperty(col_props, "wallSetting", surface_type.wallType, ootEnumWallSetting) - setCustomProperty(col_props, "floorProperty", surface_type.floorType, enum_floor_property) + setCustomProperty(col_props, "floorProperty", surface_type.floorType, game_data.z64.get_enum("floor_type")) col_props.exitID = surface_type.exitIndex col_props.cameraID = surface_type.bgCamIndex col_props.isWallDamage = surface_type.isWallDamage diff --git a/fast64_internal/z64/importer/scene_header.py b/fast64_internal/z64/importer/scene_header.py index 052875e..46ce045 100644 --- a/fast64_internal/z64/importer/scene_header.py +++ b/fast64_internal/z64/importer/scene_header.py @@ -7,6 +7,7 @@ import mathutils from pathlib import Path from typing import Optional +from ...game_data import game_data from ...utility import PluginError, readFile, parentObject, hexOrDecInt, gammaInverse from ...f3d.f3d_parser import parseMatrices from ..exporter.scene.general import EnvLightSettings @@ -23,14 +24,11 @@ from .scene_pathways import parsePathList from ..constants import ( ootEnumAudioSessionPreset, - ootEnumNightSeq, ootEnumMusicSeq, ootEnumCameraMode, ootEnumMapLocation, ootEnumNaviHints, ootEnumGlobalObject, - ootEnumSkybox, - ootEnumCloudiness, ootEnumSkyboxLighting, ) @@ -272,7 +270,7 @@ def parseSceneCommands( for command, args in cmd_map.items(): if command == "SCENE_CMD_SOUND_SETTINGS": setCustomProperty(sceneHeader, "audioSessionPreset", args[0], ootEnumAudioSessionPreset) - setCustomProperty(sceneHeader, "nightSeq", args[1], ootEnumNightSeq) + setCustomProperty(sceneHeader, "nightSeq", args[1], game_data.z64.get_enum("nature_id")) setCustomProperty(sceneHeader, "musicSeq", args[2], ootEnumMusicSeq) elif command == "SCENE_CMD_ROOM_LIST": # Assumption that all scenes use the same room list. @@ -316,8 +314,8 @@ def parseSceneCommands( entranceList = None elif command == "SCENE_CMD_SKYBOX_SETTINGS": - setCustomProperty(sceneHeader, "skyboxID", args[0], ootEnumSkybox) - setCustomProperty(sceneHeader, "skyboxCloudiness", args[1], ootEnumCloudiness) + setCustomProperty(sceneHeader, "skyboxID", args[0], game_data.z64.get_enum("skybox")) + setCustomProperty(sceneHeader, "skyboxCloudiness", args[1], game_data.z64.get_enum("skybox_config")) setCustomProperty(sceneHeader, "skyboxLighting", args[2], ootEnumSkyboxLighting) elif command == "SCENE_CMD_EXIT_LIST": exitListName = stripName(args[0]) diff --git a/fast64_internal/z64/room/properties.py b/fast64_internal/z64/room/properties.py index 3de2ed1..48b13f7 100644 --- a/fast64_internal/z64/room/properties.py +++ b/fast64_internal/z64/room/properties.py @@ -20,8 +20,6 @@ from bpy.props import ( ) from ..constants import ( - ootEnumRoomBehaviour, - ootEnumLinkIdle, ootEnumRoomShapeType, ootEnumHeaderMenu, ) @@ -93,11 +91,13 @@ class OOTRoomHeaderProperty(PropertyGroup): usePreviousHeader: BoolProperty(name="Use Previous Header", default=True) roomIndex: IntProperty(name="Room Index", default=0, min=0) - roomBehaviour: EnumProperty(items=ootEnumRoomBehaviour, default="0x00") + roomBehaviour: EnumProperty(items=lambda self, context: game_data.z64.get_enum("room_type"), default=1) roomBehaviourCustom: StringProperty(default="0x00") disableWarpSongs: BoolProperty(name="Disable Warp Songs") showInvisibleActors: BoolProperty(name="Show Invisible Actors") - linkIdleMode: EnumProperty(name="Link Idle Mode", items=ootEnumLinkIdle, default="0x00") + linkIdleMode: EnumProperty( + name="Link Idle Mode", items=lambda self, context: game_data.z64.get_enum("environment_type"), default=1 + ) linkIdleModeCustom: StringProperty(name="Link Idle Mode Custom", default="0x00") roomIsHot: BoolProperty( name="Use Hot Room Behavior", diff --git a/fast64_internal/z64/scene/properties.py b/fast64_internal/z64/scene/properties.py index 08f144c..7d2b45f 100644 --- a/fast64_internal/z64/scene/properties.py +++ b/fast64_internal/z64/scene/properties.py @@ -10,6 +10,8 @@ from bpy.props import ( FloatVectorProperty, ) from bpy.utils import register_class, unregister_class + +from ...game_data import game_data from ...render_settings import on_update_oot_render_settings from ...utility import prop_split, customExportWarning from ..cutscene.constants import ootEnumCSWriteType @@ -21,12 +23,9 @@ from ..constants import ( ootEnumSceneID, ootEnumGlobalObject, ootEnumNaviHints, - ootEnumSkybox, - ootEnumCloudiness, ootEnumSkyboxLighting, ootEnumMapLocation, ootEnumCameraMode, - ootEnumNightSeq, ootEnumAudioSessionPreset, ootEnumHeaderMenu, ootEnumDrawConfig, @@ -259,9 +258,11 @@ class OOTSceneHeaderProperty(PropertyGroup): naviCup: EnumProperty(name="Navi Hints", default="0x00", items=ootEnumNaviHints) naviCupCustom: StringProperty(name="Navi Hints Custom", default="0x00") - skyboxID: EnumProperty(name="Skybox", items=ootEnumSkybox, default="0x01") + skyboxID: EnumProperty(name="Skybox", items=lambda self, context: game_data.z64.get_enum("skybox"), default=2) skyboxIDCustom: StringProperty(name="Skybox ID", default="0") - skyboxCloudiness: EnumProperty(name="Cloudiness", items=ootEnumCloudiness, default="0x00") + skyboxCloudiness: EnumProperty( + name="Cloudiness", items=lambda self, context: game_data.z64.get_enum("skybox_config"), default=1 + ) skyboxCloudinessCustom: StringProperty(name="Cloudiness ID", default="0x00") skyboxLighting: EnumProperty( name="Skybox Lighting", @@ -280,7 +281,9 @@ class OOTSceneHeaderProperty(PropertyGroup): musicSeq: EnumProperty(name="Music Sequence", items=ootEnumMusicSeq, default="NA_BGM_FIELD_LOGIC") musicSeqCustom: StringProperty(name="Music Sequence ID", default="0x00") - nightSeq: EnumProperty(name="Nighttime SFX", items=ootEnumNightSeq, default="0x00") + nightSeq: EnumProperty( + name="Nighttime SFX", items=lambda self, context: game_data.z64.get_enum("nature_id"), default=1 + ) nightSeqCustom: StringProperty(name="Nighttime SFX ID", default="0x00") audioSessionPreset: EnumProperty(name="Audio Session Preset", items=ootEnumAudioSessionPreset, default="0x00") audioSessionPresetCustom: StringProperty(name="Audio Session Preset", default="0x00")