Echo Hollow

Gender-Bending Interactive Stories! :D

User Tools

Site Tools


smutbook:classes:apparel:start

This is an old revision of the document!


Table of Contents

Apparel

Apparel in SmutBook is defined as anything that a Person can wear. This includes clothing, jewelry, and perhaps even naughty toys in some cases.

The Apparel system also provides the Wardrobe and WornApparel classes, which are special subclasses of GeneralInventory that only deal with Apparel. Wardrobe is a lightly modified GeneralInventory that modifies the sorting implementation to make it more clothing-specific (although it can still contain any PersistentObject, non Apparel objects will all be lumped into the “Other” category). WornApparel is used by the Person classes to track what a Person is wearing, and enforces the rule of only one article of apparel per ClothingSlot (see below).

In general, you may use a Wardrobe interchangeably with a GeneralInventory when using the InventoryUI macro. For the wearing and removing of Apparel by a Person, however, a modified version (ApparelUI) is provided. The left-hand inventory provided to ApparelUI should always be a Person (not a WornApparel, but the higher-level Person object that is dressing/undressing). The right-hand inventory should always be a Wardrobe. FIXME This isn't *technically* true, but the sorting will be fked up; but we need to make it Work Better, as I can see use-cases where a person might want to dress out of a backpack in a bathroom stall, or somesuch.

FIXME: Document how WornApparel and Wardrobe interact as far as items technically remaining in the Wardrobe while they are worn by a Person.

TODO

Stuff that is changing:

Each Apparel will be of one or more ClothingTypes. Only one of each ClothingType may be worn at a time. Additionally, a ClothingType may define other ClothingTypes that conflict with it. This would allow us to, for example, make a dress conflict with pants and shirt. These will just be a string (we ought to make it case-insensitive just to make things easier on the library user), and we'll want to implement an easy way to implement new ClothingTypes and to add new conflicting ClothingTypes to existing ClothingTypes.

  • underpants
  • bra
  • stockings (also for socks)
  • top
  • bottom
  • dress (conflicts with top and bottom)
  • shoes
  • coat
  • hat
  • gloves
  • bag (handbag, backpack, satchel - things worn over your shoulder or on your back on top of everything else)
  • necklace
  • bracelet
  • ring
  • earrings
  • bellyButton (piercing)
  • nipples (piercing)
  • maleChastityDevice
  • femaleChastityDevice
  • wig

ClothingType occupies one or more Layers. Usually only one, but if we want to implement a whole costume as one item, for example, we may want to make it use several layers. In fact, we should combine the implementation of this and BodySlot into a list of (layer,bodyslot) pairs. FIXME

  • bodypart (cock, breasts, hair, beard, body hair, etc)
  • onbodypart (cages, jewelry, wigs, etc)
  • underwear (panties, bra)
  • overunderwear (pantyhose, stockings, leggings)
  • clothing (pants, shirts, skirts, shoes)
  • overclothing (belts, plate carriers, sheathes, holsters, etc)
  • outerwear (coats, hats, gloves)
  • strapped (backpacks, sachels, rifle slings)

A particular article of clothing occupies one or more BodySlots (used used in conjunction with Layers to figure out what covers what):

  • scalp - top of head. Hair, wigs, hats.
  • ears
  • eyes
  • nose
  • mouth
  • chin - beards, facial hair
  • neck
  • shoulders
  • breasts
  • cleavage
  • upperBack
  • tummy
  • lowerBack
  • upperHip - low-rise clothing won't cover this. So we can model whale-tails, etc.
  • groin
  • ass
  • thighs
  • knees
  • calves
  • ankles
  • feet
  • toes
  • upper arms
  • elbows
  • lower arms
  • wrists
  • hands
  • fingers

Each (layer,bodyslot) will specify a (coverage,thickness).

  • Coverage:
    • “none” - No coverage at all at location. Generally used for non-default apparel states (ie pulling up a skirt).
    • “partial” - Coverage exists on the location, but lower layers can be seen through it (spaghetti straps, sheer fabric)
    • “full” - The location is fully covered and lower layers cannot be seen (unless the “print through”).
  • Thickness:
    • “thin” - the apparel will not print through a tight layer above it.
    • “tight” - non-thin apparel on lower layer prints through (ie panty-lines through leggings, bra under tight t-shirt)
    • “normal” - Standard clothing fully hides what is below it if the coverage is full.
    • “bulky” - clothing cannot be worn on layers above it (ie a backpack, wings as a body part, etc)

Things we have to be able to handle:

  • a tight blue t-shirt (showing the lines of a bra) - non-thin bra, tight shirt
  • an off-shoulder crop top (showing the shoulder straps of a pink bra) - crop top doesn't cover shoulders
  • an unzipped leather jacket - “unzipped” state changes front coverage to partial.
  • a pair of red satin panties (showing the bulge of a small cock and balls) - tight panties
  • a pair of low-waisted cutoff jean shorts (showing the whale-tail of a pink thong) - pants don't cover upperThigh; thong has partial coverage on upperThigh.

FIXME Finish transcribing this from notes before implementation.

smutbook/classes/apparel/start.1691638589.txt.gz · Last modified: 2023/08/09 20:36 by lee