diff --git a/src/nodes/character_builder.py b/src/nodes/character_builder.py index 67ef241..f6383aa 100644 --- a/src/nodes/character_builder.py +++ b/src/nodes/character_builder.py @@ -38,21 +38,13 @@ class CharacterBuilder: "eyes_override_mode": ("BOOLEAN", {"default": False}), "eyewear_override": ("STRING", {"default": ""}), "eyewear_override_mode": ("BOOLEAN", {"default": False}), + # Hair + "bald": ("BOOLEAN", {"default": False}), # Face details "face_details_override": ("STRING", {"default": ""}), "face_details_override_mode": ("BOOLEAN", {"default": False}), - # Hair - "bald": ("BOOLEAN", {"default": False}), - # Body details - "show_body_details": ("BOOLEAN", {"default": True}), "face_piercings_override": ("STRING", {"default": ""}), "face_piercings_override_mode": ("BOOLEAN", {"default": False}), - "upper_details_override": ("STRING", {"default": ""}), - "upper_details_override_mode": ("BOOLEAN", {"default": False}), - "mid_details_override": ("STRING", {"default": ""}), - "mid_details_override_mode": ("BOOLEAN", {"default": False}), - "lower_details_override": ("STRING", {"default": ""}), - "lower_details_override_mode": ("BOOLEAN", {"default": False}), # Nails / Makeup "show_nails": ("BOOLEAN", {"default": True}), "nail_color_override": ("STRING", {"default": ""}), @@ -66,32 +58,40 @@ class CharacterBuilder: "neckwear_override_mode": ("BOOLEAN", {"default": False}), "armwear_override": ("STRING", {"default": ""}), "armwear_override_mode": ("BOOLEAN", {"default": False}), - # Body + # Body / Body details "show_body": ("BOOLEAN", {"default": True}), + "show_body_details": ("BOOLEAN", {"default": True}), "show_upper_body": ("BOOLEAN", {"default": True}), + "upper_details_override": ("STRING", {"default": ""}), + "upper_details_override_mode": ("BOOLEAN", {"default": False}), "show_mid_body": ("BOOLEAN", {"default": True}), + "mid_details_override": ("STRING", {"default": ""}), + "mid_details_override_mode": ("BOOLEAN", {"default": False}), "show_lower_body": ("BOOLEAN", {"default": True}), + "lower_details_override": ("STRING", {"default": ""}), + "lower_details_override_mode": ("BOOLEAN", {"default": False}), "show_butt": ("BOOLEAN", {"default": True}), }, "optional": { # Eyes - "eye_color": ("STRING", {"forceInput": True}), "eye_type": ("STRING", {"forceInput": True}), + "eye_color": ("STRING", {"forceInput": True}), "pupils": ("STRING", {"forceInput": True}), "eye_details": ("STRING", {"forceInput": True}), "eye_effects": ("STRING", {"forceInput": True}), "eyewear": ("STRING", {"forceInput": True}), - # Face - "teeth": ("STRING", {"forceInput": True}), + # Mouth "mouth_type": ("STRING", {"forceInput": True}), - "face_details": ("STRING", {"forceInput": True}), - "face_piercings": ("STRING", {"forceInput": True}), + "teeth": ("STRING", {"forceInput": True}), # Hair "hair_color": ("STRING", {"forceInput": True}), "hair_style": ("STRING", {"forceInput": True}), + # Face details + "face_details": ("STRING", {"forceInput": True}), + "face_piercings": ("STRING", {"forceInput": True}), # Nails / Makeup - "nail_color": ("STRING", {"forceInput": True}), "nail_type": ("STRING", {"forceInput": True}), + "nail_color": ("STRING", {"forceInput": True}), "makeup": ("STRING", {"forceInput": True}), "makeup_modifiers": ("STRING", {"forceInput": True}), # Accessories @@ -127,18 +127,11 @@ class CharacterBuilder: eyes_override_mode, eyewear_override, eyewear_override_mode, + bald, face_details_override, face_details_override_mode, - bald, - show_body_details, face_piercings_override, face_piercings_override_mode, - upper_details_override, - upper_details_override_mode, - mid_details_override, - mid_details_override_mode, - lower_details_override, - lower_details_override_mode, show_nails, nail_color_override, nail_color_override_mode, @@ -151,25 +144,32 @@ class CharacterBuilder: armwear_override, armwear_override_mode, show_body, + show_body_details, show_upper_body, + upper_details_override, + upper_details_override_mode, show_mid_body, + mid_details_override, + mid_details_override_mode, show_lower_body, + lower_details_override, + lower_details_override_mode, show_butt, # Optional - eye_color="", eye_type="", + eye_color="", pupils="", eye_details="", eye_effects="", eyewear="", - teeth="", mouth_type="", - face_details="", - face_piercings="", + teeth="", hair_color="", hair_style="", - nail_color="", + face_details="", + face_piercings="", nail_type="", + nail_color="", makeup="", makeup_modifiers="", facewear="", diff --git a/src/nodes/character_loader.py b/src/nodes/character_loader.py index d1b1446..9959cdd 100644 --- a/src/nodes/character_loader.py +++ b/src/nodes/character_loader.py @@ -30,24 +30,25 @@ BASE_ENDPOINT = f"{API_ROOT}/characters" CHARACTER_TEMPLATE = { # Eyes - "eye_color": "", "eye_type": EMPTY_VALUE, + "eye_color": "", "pupils": EMPTY_VALUE, "eye_details": "", "eyewear": "", - # Face - "teeth": EMPTY_VALUE, + # Mouth "mouth_type": EMPTY_VALUE, - "face_details": "", - "face_piercings": "", + "teeth": EMPTY_VALUE, # Hair "hair_color": "", "hair_style_options": "", "hair_style_selected": "", + # Face details + "face_details": "", + "face_piercings": "", # Nails / Makeup - "makeup": "", - "nail_color": "", "nail_type": EMPTY_VALUE, + "nail_color": "", + "makeup": "", # Accessories "facewear": "", "neckwear": "", @@ -97,23 +98,24 @@ class CharacterLoader: "required": { "character_file": (scan_files(_get_characters_dir()),), # Eyes - "eye_color": ("STRING", {"default": ""}), "eye_type": (get_builder_config_key(_CFG, "eye_type"),), + "eye_color": ("STRING", {"default": ""}), "pupils": (get_builder_config_key(_CFG, "pupils"),), "eye_details": ("STRING", {"default": ""}), "eyewear": ("STRING", {"default": ""}), - # Face - "teeth": (get_builder_config_key(_CFG, "teeth"),), + # Mouth "mouth_type": (get_builder_config_key(_CFG, "mouth_type"),), - "face_details": ("STRING", {"default": ""}), - "face_piercings": ("STRING", {"default": ""}), + "teeth": (get_builder_config_key(_CFG, "teeth"),), # Hair "hair_color": ("STRING", {"default": ""}), "hair_style_options": ("STRING", {"multiline": True, "default": ""}), "hair_style_selected": ("STRING", {"default": ""}), + # Face details + "face_details": ("STRING", {"default": ""}), + "face_piercings": ("STRING", {"default": ""}), # Nails / Makeup - "nail_color": ("STRING", {"default": ""}), "nail_type": (get_builder_config_key(_CFG, "nail_type"),), + "nail_color": ("STRING", {"default": ""}), "makeup": ("STRING", {"default": ""}), # Accessories "facewear": ("STRING", {"default": ""}), @@ -148,22 +150,23 @@ class CharacterLoader: RETURN_TYPES = ("STRING",) * 28 RETURN_NAMES = ( # Eyes - "eye_color", "eye_type", + "eye_color", "pupils", "eye_details", "eyewear", - # Face - "teeth", + # Mouth "mouth_type", - "face_details", - "face_piercings", + "teeth", # Hair "hair_color", "hair_style", + # Face details + "face_details", + "face_piercings", # Nails / Makeup - "nail_color", "nail_type", + "nail_color", "makeup", # Accessories "facewear", @@ -188,20 +191,20 @@ class CharacterLoader: def load_character( self, character_file, - eye_color, eye_type, + eye_color, pupils, eye_details, eyewear, - teeth, mouth_type, - face_details, - face_piercings, + teeth, hair_color, hair_style_options, hair_style_selected, - nail_color, + face_details, + face_piercings, nail_type, + nail_color, makeup, facewear, neckwear, @@ -262,22 +265,23 @@ class CharacterLoader: return ( # Eyes - clean_val(eye_color), clean_val(eye_type), + clean_val(eye_color), clean_val(pupils), clean_val(eye_details), clean_val(eyewear), - # Face - clean_val(teeth), + # Mouth clean_val(mouth_type), - clean_val(face_details), - clean_val(face_piercings), + clean_val(teeth), # Hair clean_val(hair_color), clean_val(hair_style_selected), + # Face details + clean_val(face_details), + clean_val(face_piercings), # Nails / Makeup - clean_val(nail_color), clean_val(nail_type), + clean_val(nail_color), clean_val(makeup), # Accessories clean_val(facewear), diff --git a/web/character_builder.js b/web/character_builder.js index a0e321c..2fa6e5b 100644 --- a/web/character_builder.js +++ b/web/character_builder.js @@ -22,24 +22,24 @@ const OVERRIDE_FIELDS = [ "eyewear_override", "face_details_override", "face_piercings_override", - "upper_details_override", - "mid_details_override", - "lower_details_override", "nail_color_override", "facewear_override", "neckwear_override", "armwear_override", + "upper_details_override", + "mid_details_override", + "lower_details_override", ]; const BOOL_FIELDS = [ "show_eyes", "show_eyeballs", "bald", - "show_body_details", "show_nails", "show_makeup", "toggle_accessories", "show_body", + "show_body_details", "show_upper_body", "show_mid_body", "show_lower_body", @@ -156,11 +156,11 @@ const applyAllVisibility = (node, toggleWidgets) => { const showEyes = get("show_eyes"); const showEyeballs = get("show_eyeballs"); const isBald = get("bald"); - const showPiercings = get("show_body_details"); const showNails = get("show_nails"); const showMakeup = get("show_makeup"); const toggleAccessories = get("toggle_accessories"); const showBody = get("show_body"); + const showBodyDetails = get("show_body_details"); const showUpperBody = get("show_upper_body"); const showMidBody = get("show_mid_body"); const showLowerBody = get("show_lower_body"); @@ -186,51 +186,6 @@ const applyAllVisibility = (node, toggleWidgets) => { // bald -> hair_color + hair_style dots setDotsDisabled(node, ["hair_color", "hair_style"], !isBald); - // show_body_details -> 4 piercing override toggle widgets + raw dots - setToggleWidgetDisabled( - node, - toggleWidgets, - ["face_piercings_override"], - !showPiercings, - ); - setDotsDisabled(node, ["face_piercings"], !showPiercings); - setToggleWidgetDisabled( - node, - toggleWidgets, - ["upper_details_override"], - !(showBody && showUpperBody && showPiercings), - ); - - setDotsDisabled( - node, - ["upper_details"], - !(showBody && showUpperBody && showPiercings), - ); - - setToggleWidgetDisabled( - node, - toggleWidgets, - ["mid_details_override"], - !(showBody && showMidBody && showPiercings), - ); - setDotsDisabled( - node, - ["mid_details"], - !(showBody && showMidBody && showPiercings), - ); - - setToggleWidgetDisabled( - node, - toggleWidgets, - ["lower_details_override"], - !(showBody && showLowerBody && showPiercings), - ); - setDotsDisabled( - node, - ["lower_details"], - !(showBody && showLowerBody && showPiercings), - ); - // show_nails -> nail_color_override toggle widget + nail_type/nail_color dots setDotsDisabled(node, ["nail_type"], !showNails); setDotsDisabled(node, ["nail_color"], !(showNails && showMakeup)); @@ -257,6 +212,43 @@ const applyAllVisibility = (node, toggleWidgets) => { !toggleAccessories, ); + // show_body_details -> 3 body details override toggle widgets + raw dots + setToggleWidgetDisabled( + node, + toggleWidgets, + ["upper_details_override"], + !(showBody && showUpperBody && showBodyDetails), + ); + setDotsDisabled( + node, + ["upper_details"], + !(showBody && showUpperBody && showBodyDetails), + ); + + setToggleWidgetDisabled( + node, + toggleWidgets, + ["mid_details_override"], + !(showBody && showMidBody && showBodyDetails), + ); + setDotsDisabled( + node, + ["mid_details"], + !(showBody && showMidBody && showBodyDetails), + ); + + setToggleWidgetDisabled( + node, + toggleWidgets, + ["lower_details_override"], + !(showBody && showLowerBody && showBodyDetails), + ); + setDotsDisabled( + node, + ["lower_details"], + !(showBody && showLowerBody && showBodyDetails), + ); + // show_body -> 4 body sub-toggles setDisabled( node, @@ -282,11 +274,11 @@ const attachCharacterBuilder = (node) => { "show_eyes", "show_eyeballs", "bald", - "show_body_details", "show_nails", "show_makeup", "toggle_accessories", "show_body", + "show_body_details", "show_upper_body", "show_mid_body", "show_lower_body", @@ -310,9 +302,8 @@ const attachCharacterBuilder = (node) => { { name: "show_butt" }, ]; const groups = [ - { from: "show_eyes", to: "face_details_override" }, + { from: "show_eyes", to: "eyewear_override" }, { from: "bald", to: "bald" }, - { from: "show_body_details", to: "lower_details_override" }, { from: "show_nails", to: "show_makeup" }, { from: "toggle_accessories", to: "armwear_override" }, { from: "show_body", to: "show_butt" }, diff --git a/web/character_loader.js b/web/character_loader.js index 7167875..b6a4233 100644 --- a/web/character_loader.js +++ b/web/character_loader.js @@ -20,23 +20,24 @@ const BASE_ENDPOINT = `${API_ROOT}/characters`; const CHARACTER_TEMPLATE = { // Eyes - eye_color: "", eye_type: EMPTY_VALUE, + eye_color: "", pupils: EMPTY_VALUE, eye_details: "", eyewear: "", - // Face - teeth: EMPTY_VALUE, + // Mouth mouth_type: EMPTY_VALUE, - face_details: "", - face_piercings: "", + teeth: EMPTY_VALUE, // Hair hair_color: "", hair_style_options: "", hair_style_selected: "", + // Face details + face_details: "", + face_piercings: "", // Nails / Makeup - nail_color: "", nail_type: EMPTY_VALUE, + nail_color: "", makeup: "", // Accessories facewear: "", @@ -259,9 +260,9 @@ const attachCharacterLoader = (node) => { ]; const groups = [ { from: "eye_color", to: "eye_details" }, - { from: "teeth", to: "mouth_type" }, + { from: "mouth_type", to: "teeth" }, { from: "face_details", to: "face_piercings" }, - { from: "nail_color", to: "nail_type" }, + { from: "nail_type", to: "makeup" }, { from: "facewear", to: "armwear" }, { from: "base_body", to: "body_details" }, { from: "upper_body", to: "upper_details" },