encode static method
Uint8List
encode({
- AvatarStyle style = AvatarStyle.openPeeps,
- String headOrHairKey = '',
- String faceOrEyesKey = '',
- String hairColor = '',
- String skinColor = '',
- String clothingColor = '',
- String? facialHairKey,
- String? accessoriesKey,
- String? maskKey,
- String? bodyKey,
- String? mouthKey,
- String? noseKey,
- String? eyebrowsKey,
- String? earsKey,
- String? glassesKey,
- String? earringsKey,
- String earringColor = '',
- String eyeShadowColor = '',
- String eyesColor = '',
- String glassesColor = '',
- String mouthColor = '',
- String eyebrowsColor = '',
- String? rearHairKey,
- String avataaarStyleKey = '',
- String clothingGraphicKey = '',
- String accessoriesColor = '',
- String hatColor = '',
- String facialHairColor = '',
- String backgroundColor = '',
Encodes avatar parameters into exactly 13 bytes.
Implementation
static Uint8List encode({
AvatarStyle style = AvatarStyle.openPeeps,
String headOrHairKey = '',
String faceOrEyesKey = '',
String hairColor = '',
String skinColor = '',
String clothingColor = '',
String? facialHairKey,
String? accessoriesKey,
String? maskKey,
String? bodyKey,
String? mouthKey,
String? noseKey,
String? eyebrowsKey,
String? earsKey,
String? glassesKey,
String? earringsKey,
String earringColor = '',
String eyeShadowColor = '',
String eyesColor = '',
String glassesColor = '',
String mouthColor = '',
String eyebrowsColor = '',
String? rearHairKey,
String avataaarStyleKey = '',
String clothingGraphicKey = '',
String accessoriesColor = '',
String hatColor = '',
String facialHairColor = '',
String backgroundColor = '',
}) {
final writer = _BitWriter(13);
writer.write(style.index, 3); // 3 bits for style (up to 8 styles)
switch (style) {
case AvatarStyle.openPeeps:
writer.write(_keyIndex(OpenPeepsAssets.head, headOrHairKey), _bits(OpenPeepsAssets.head.length));
writer.write(_keyIndex(OpenPeepsAssets.face, faceOrEyesKey), _bits(OpenPeepsAssets.face.length));
writer.write(facialHairKey == null ? OpenPeepsAssets.facialHair.length : _keyIndex(OpenPeepsAssets.facialHair, facialHairKey), _bits(OpenPeepsAssets.facialHair.length + 1));
writer.write(accessoriesKey == null ? OpenPeepsAssets.accessories.length : _keyIndex(OpenPeepsAssets.accessories, accessoriesKey), _bits(OpenPeepsAssets.accessories.length + 1));
writer.write(maskKey == null ? OpenPeepsAssets.mask.length : _keyIndex(OpenPeepsAssets.mask, maskKey), _bits(OpenPeepsAssets.mask.length + 1));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(clothingColor), 7);
writer.write(_colorIndex(hairColor), 7);
break;
case AvatarStyle.personas:
writer.write(_keyIndex(PersonasAssets.hair, headOrHairKey), _bits(PersonasAssets.hair.length));
writer.write(_keyIndex(PersonasAssets.eyes, faceOrEyesKey), _bits(PersonasAssets.eyes.length));
writer.write(_keyIndex(PersonasAssets.body, bodyKey), _bits(PersonasAssets.body.length));
writer.write(_keyIndex(PersonasAssets.mouth, mouthKey), _bits(PersonasAssets.mouth.length));
writer.write(_keyIndex(PersonasAssets.nose, noseKey), _bits(PersonasAssets.nose.length));
writer.write(facialHairKey == null ? PersonasAssets.facialHair.length : _keyIndex(PersonasAssets.facialHair, facialHairKey), _bits(PersonasAssets.facialHair.length + 1));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(clothingColor), 7);
writer.write(_colorIndex(hairColor), 7);
break;
case AvatarStyle.micah:
writer.write(_keyIndex(MicahAssets.hair, headOrHairKey), _bits(MicahAssets.hair.length));
writer.write(_keyIndex(MicahAssets.eyes, faceOrEyesKey), _bits(MicahAssets.eyes.length));
writer.write(_keyIndex(MicahAssets.eyebrows, eyebrowsKey), _bits(MicahAssets.eyebrows.length));
writer.write(_keyIndex(MicahAssets.ears, earsKey), _bits(MicahAssets.ears.length));
writer.write(_keyIndex(MicahAssets.shirt, bodyKey), _bits(MicahAssets.shirt.length));
writer.write(_keyIndex(MicahAssets.nose, noseKey), _bits(MicahAssets.nose.length));
writer.write(_keyIndex(MicahAssets.mouth, mouthKey), _bits(MicahAssets.mouth.length));
writer.write(facialHairKey == null ? MicahAssets.facialHair.length : _keyIndex(MicahAssets.facialHair, facialHairKey), _bits(MicahAssets.facialHair.length + 1));
writer.write(glassesKey == null ? MicahAssets.glasses.length : _keyIndex(MicahAssets.glasses, glassesKey), _bits(MicahAssets.glasses.length + 1));
writer.write(earringsKey == null ? MicahAssets.earrings.length : _keyIndex(MicahAssets.earrings, earringsKey), _bits(MicahAssets.earrings.length + 1));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(hairColor), 7);
writer.write(_colorIndex(clothingColor), 7);
writer.write(_colorIndex(glassesColor), 7);
writer.write(_colorIndex(earringColor), 7);
writer.write(_colorIndex(eyeShadowColor), 7);
break;
case AvatarStyle.toonhead:
writer.write(_keyIndex(ToonHeadAssets.hair, headOrHairKey), _bits(ToonHeadAssets.hair.length));
writer.write(_keyIndex(ToonHeadAssets.eyes, faceOrEyesKey), _bits(ToonHeadAssets.eyes.length));
writer.write(_keyIndex(ToonHeadAssets.mouth, mouthKey), _bits(ToonHeadAssets.mouth.length));
writer.write(_keyIndex(ToonHeadAssets.clothes, bodyKey), _bits(ToonHeadAssets.clothes.length));
writer.write(_keyIndex(ToonHeadAssets.eyebrows, eyebrowsKey), _bits(ToonHeadAssets.eyebrows.length));
writer.write(rearHairKey == null ? ToonHeadAssets.rearHair.length : _keyIndex(ToonHeadAssets.rearHair, rearHairKey), _bits(ToonHeadAssets.rearHair.length + 1));
writer.write(facialHairKey == null ? ToonHeadAssets.beard.length : _keyIndex(ToonHeadAssets.beard, facialHairKey), _bits(ToonHeadAssets.beard.length + 1));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(hairColor), 7);
writer.write(_colorIndex(clothingColor), 7);
break;
case AvatarStyle.avataaars:
writer.write(_keyIndex(AvataaarsAssets.top, headOrHairKey), _bits(AvataaarsAssets.top.length));
writer.write(_keyIndex(AvataaarsAssets.eyes, faceOrEyesKey), _bits(AvataaarsAssets.eyes.length));
writer.write(_keyIndex(AvataaarsAssets.eyebrows, eyebrowsKey), _bits(AvataaarsAssets.eyebrows.length));
writer.write(_keyIndex(AvataaarsAssets.mouth, mouthKey), _bits(AvataaarsAssets.mouth.length));
writer.write(_keyIndex(AvataaarsAssets.clothing, bodyKey), _bits(AvataaarsAssets.clothing.length));
writer.write(_keyIndex(AvataaarsAssets.clothingGraphic, clothingGraphicKey), _bits(AvataaarsAssets.clothingGraphic.length));
writer.write(_keyIndex(AvataaarsAssets.style, avataaarStyleKey), _bits(AvataaarsAssets.style.length));
writer.write(facialHairKey == null ? AvataaarsAssets.facialHair.length : _keyIndex(AvataaarsAssets.facialHair, facialHairKey), _bits(AvataaarsAssets.facialHair.length + 1));
writer.write(accessoriesKey == null ? AvataaarsAssets.accessories.length : _keyIndex(AvataaarsAssets.accessories, accessoriesKey), _bits(AvataaarsAssets.accessories.length + 1));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(clothingColor), 7);
writer.write(_colorIndex(hairColor), 7);
writer.write(_colorIndex(facialHairColor), 7);
writer.write(_colorIndex(accessoriesColor), 7);
writer.write(_colorIndex(hatColor), 7);
writer.write(_colorIndex(backgroundColor), 7);
break;
case AvatarStyle.miniavs:
writer.write(_keyIndex(MiniavsAssets.body, bodyKey), _bits(MiniavsAssets.body.length));
writer.write(_keyIndex(MiniavsAssets.eyes, faceOrEyesKey), _bits(MiniavsAssets.eyes.length));
writer.write(_keyIndex(MiniavsAssets.mouth, mouthKey), _bits(MiniavsAssets.mouth.length));
writer.write(_keyIndex(MiniavsAssets.head, noseKey), _bits(MiniavsAssets.head.length));
writer.write(facialHairKey == null ? MiniavsAssets.mustache.length : _keyIndex(MiniavsAssets.mustache, facialHairKey), _bits(MiniavsAssets.mustache.length + 1));
writer.write(glassesKey == null ? MiniavsAssets.glasses.length : _keyIndex(MiniavsAssets.glasses, glassesKey), _bits(MiniavsAssets.glasses.length + 1));
writer.write(_keyIndex(MiniavsAssets.hair, headOrHairKey), _bits(MiniavsAssets.hair.length));
writer.write(_colorIndex(skinColor), 7);
writer.write(_colorIndex(clothingColor), 7);
writer.write(_colorIndex(hairColor), 7);
break;
}
return writer.bytes;
}