otpgo: Add ToonDNA.lua
This commit is contained in:
parent
c789273846
commit
62b57cb504
|
|
@ -0,0 +1,185 @@
|
|||
NumToColor = {
|
||||
'White', 'Peach', 'Bright Red', 'Red', 'Maroon', 'Sienna', 'Brown', 'Tan',
|
||||
'Coral', 'Orange', 'Yellow', 'Cream', 'Citrine', 'Lime', 'Sea Green',
|
||||
'Green', 'Light Blue', 'Aqua', 'Blue', 'Periwinkle', 'Royal Blue',
|
||||
'Slate Blue', 'Purple', 'Lavender', 'Pink', 'Plum', 'Black'
|
||||
}
|
||||
|
||||
AnimalToSpecies = {
|
||||
dog = 'Dog',
|
||||
cat = 'Cat',
|
||||
mouse = 'Mouse',
|
||||
horse = 'Horse',
|
||||
rabbit = 'Rabbit',
|
||||
duck = 'Duck',
|
||||
monkey = 'Monkey',
|
||||
bear = 'Bear',
|
||||
pig = 'Pig'
|
||||
}
|
||||
|
||||
toonHeadTypes = {'dls',
|
||||
'dss',
|
||||
'dsl',
|
||||
'dll',
|
||||
'cls',
|
||||
'css',
|
||||
'csl',
|
||||
'cll',
|
||||
'hls',
|
||||
'hss',
|
||||
'hsl',
|
||||
'hll',
|
||||
'mls',
|
||||
'mss',
|
||||
'rls',
|
||||
'rss',
|
||||
'rsl',
|
||||
'rll',
|
||||
'fls',
|
||||
'fss',
|
||||
'fsl',
|
||||
'fll',
|
||||
'pls',
|
||||
'pss',
|
||||
'psl',
|
||||
'pll',
|
||||
'bls',
|
||||
'bss',
|
||||
'bsl',
|
||||
'bll',
|
||||
'sls',
|
||||
'sss',
|
||||
'ssl',
|
||||
'sll'}
|
||||
|
||||
toonHeadTypeToAnimalName = {
|
||||
d = 'dog',
|
||||
c = 'cat',
|
||||
m = 'mouse',
|
||||
h = 'horse',
|
||||
r = 'rabbit',
|
||||
f = 'duck',
|
||||
p = 'monkey',
|
||||
b = 'bear',
|
||||
s = 'pig'
|
||||
}
|
||||
|
||||
-- DNA validation:
|
||||
DNA_FIRST_CHAR = "t"
|
||||
DNA_LENGTH = 15
|
||||
|
||||
DNA_MAX_HEAD_INDEX = 34
|
||||
DNA_MAX_TORSO_INDEX = 9
|
||||
DNA_MAX_LEG_INDEX = 3
|
||||
|
||||
DNA_MAX_SHIRTS = 151
|
||||
DNA_MAX_CLOTHING_COLORS = 31
|
||||
DNA_MAX_SLEEVES = 138
|
||||
|
||||
DNA_MAX_MALE_BOTTOMS = 58
|
||||
DNA_MAX_FEMALE_BOTTOMS = 63
|
||||
|
||||
DNA_MAX_COLOR = 27
|
||||
|
||||
function isValidNetString(dnaString)
|
||||
local validDna = true
|
||||
|
||||
local dg = datagram:new()
|
||||
dg:addString(dnaString)
|
||||
|
||||
local _dgi = datagramiterator.new(dg)
|
||||
_dgi:readUint16() -- length, unused
|
||||
|
||||
if _dgi:getRemainingSize() ~= DNA_LENGTH then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
if _dgi:readFixedString(1) ~= DNA_FIRST_CHAR then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- headIndex
|
||||
local headIndex = _dgi:readUint8()
|
||||
if headIndex >= DNA_MAX_HEAD_INDEX then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- torsoIndex
|
||||
if _dgi:readUint8() >= DNA_MAX_TORSO_INDEX then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- legsIndex
|
||||
if _dgi:readUint8() >= DNA_MAX_LEG_INDEX then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- gender
|
||||
local validForGender
|
||||
|
||||
if _dgi:readUint8() == 1 then
|
||||
validForGender = DNA_MAX_MALE_BOTTOMS
|
||||
else
|
||||
validForGender = DNA_MAX_FEMALE_BOTTOMS
|
||||
end
|
||||
|
||||
local topTex = _dgi:readUint8()
|
||||
local topTexColor = _dgi:readUint8()
|
||||
local sleeveTex = _dgi:readUint8()
|
||||
local sleeveTexColor = _dgi:readUint8()
|
||||
local botTex = _dgi:readUint8()
|
||||
local botTexColor = _dgi:readUint8()
|
||||
local armColor = _dgi:readUint8()
|
||||
local gloveColor = _dgi:readUint8()
|
||||
local legColor = _dgi:readUint8()
|
||||
local headColor = _dgi:readUint8()
|
||||
|
||||
-- Shirts
|
||||
if topTex >= DNA_MAX_SHIRTS then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- ClothesColors
|
||||
if topTexColor >= DNA_MAX_CLOTHING_COLORS then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- Sleeves
|
||||
if sleeveTex >= DNA_MAX_SLEEVES then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- ClothesColors
|
||||
if sleeveTexColor >= DNA_MAX_CLOTHING_COLORS then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
if botTex >= validForGender then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- ClothesColors
|
||||
if botTexColor >= DNA_MAX_CLOTHING_COLORS then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
-- allColorsList
|
||||
if armColor >= DNA_MAX_COLOR then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
if gloveColor ~= 0 then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
if legColor >= DNA_MAX_COLOR then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
if headColor >= DNA_MAX_COLOR then
|
||||
validDna = false
|
||||
end
|
||||
|
||||
local head = toonHeadTypes[headIndex + 1]
|
||||
return validDna, {headColor + 1, toonHeadTypeToAnimalName[head:sub(1, 1)]}
|
||||
end
|
||||
Loading…
Reference in New Issue