Toon: Even more progress on removal of gender
This commit is contained in:
parent
bcff94ff44
commit
3a83435282
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
class PickANamePattern:
|
||||
|
||||
def __init__(self, nameStr, gender):
|
||||
def __init__(self, nameStr):
|
||||
self._nameStr = nameStr
|
||||
self._namePattern = self._compute(self._nameStr, gender)
|
||||
self._namePattern = self._compute(self._nameStr)
|
||||
|
||||
def hasNamePattern(self):
|
||||
return self._namePattern is not None
|
||||
|
|
@ -12,8 +12,8 @@ class PickANamePattern:
|
|||
def getNamePattern(self):
|
||||
return self._namePattern
|
||||
|
||||
def getNameString(self, pattern, gender):
|
||||
nameParts = self._getNameParts(gender)
|
||||
def getNameString(self, pattern):
|
||||
nameParts = self._getNameParts()
|
||||
invNameParts = []
|
||||
for i in range(len(nameParts)):
|
||||
invNameParts.append(invertDict(nameParts[i]))
|
||||
|
|
@ -27,8 +27,8 @@ class PickANamePattern:
|
|||
|
||||
return name
|
||||
|
||||
def getNamePartString(self, gender, patternIndex, partIndex):
|
||||
nameParts = self._getNameParts(gender)
|
||||
def getNamePartString(self, patternIndex, partIndex):
|
||||
nameParts = self._getNameParts()
|
||||
invNamePart = invertDict(nameParts[patternIndex])
|
||||
return invNamePart[partIndex]
|
||||
|
||||
|
|
@ -49,8 +49,8 @@ class PickANamePattern:
|
|||
for splitName in self._genWordListSplitPermutations(name.split()):
|
||||
yield splitName
|
||||
|
||||
def _compute(self, nameStr, gender):
|
||||
return self._computeWithNameParts(nameStr, self._getNameParts(gender))
|
||||
def _compute(self, nameStr ):
|
||||
return self._computeWithNameParts(nameStr, self._getNameParts())
|
||||
|
||||
def _computeWithNameParts(self, nameStr, nameParts):
|
||||
for splitPermutation in self._genNameSplitPermutations(nameStr):
|
||||
|
|
@ -60,7 +60,7 @@ class PickANamePattern:
|
|||
|
||||
return
|
||||
|
||||
def _getNameParts(self, gender):
|
||||
def _getNameParts(self):
|
||||
pass
|
||||
|
||||
def _recursiveCompute(self, words, nameParts, wi = 0, nwli = 0, pattern = None):
|
||||
|
|
@ -82,8 +82,8 @@ class PickANamePattern:
|
|||
|
||||
class PickANamePatternTwoPartLastName(PickANamePattern):
|
||||
|
||||
def getNameString(self, pattern, gender):
|
||||
name = PickANamePattern.getNameString(self, pattern, gender)
|
||||
def getNameString(self, pattern,):
|
||||
name = PickANamePattern.getNameString(self, pattern)
|
||||
if pattern[-2] != -1:
|
||||
words = name.split()
|
||||
name = ''
|
||||
|
|
@ -104,8 +104,8 @@ class PickANamePatternTwoPartLastName(PickANamePattern):
|
|||
def _getLastNameCapPrefixes(self):
|
||||
return []
|
||||
|
||||
def _compute(self, nameStr, gender):
|
||||
nameParts = self._getNameParts(gender)
|
||||
def _compute(self, nameStr):
|
||||
nameParts = self._getNameParts()
|
||||
combinedNameParts = nameParts[:-2]
|
||||
combinedNameParts.append({})
|
||||
combinedIndex2indices = {}
|
||||
|
|
|
|||
|
|
@ -101,10 +101,12 @@ def teleportIn(attack, npc, pos = Point3(0, 0, 0), hpr = Vec3(180.0, 0.0, 0.0)):
|
|||
|
||||
|
||||
def teleportOut(attack, npc):
|
||||
if npc.style.getGender() == 'm':
|
||||
a = ActorInterval(npc, 'bow')
|
||||
else:
|
||||
# instead of gender check the torso type
|
||||
|
||||
if npc.style.torso[1] == 'd':
|
||||
a = ActorInterval(npc, 'curtsy')
|
||||
else:
|
||||
a = ActorInterval(npc, 'bow')
|
||||
b = Func(npc.setChatAbsolute, TTLocalizer.MovieNPCSOSGoodbye, CFSpeech | CFTimeout)
|
||||
c = npc.getTeleportOutTrack()
|
||||
d = Func(npc.removeActive)
|
||||
|
|
|
|||
|
|
@ -392,16 +392,15 @@ class CatalogClothingItem(CatalogItem.CatalogItem):
|
|||
defn = ToonDNA.BottomStyles[str]
|
||||
dna.botTex = defn[0]
|
||||
dna.botTexColor = defn[1][self.colorIndex]
|
||||
if dna.getGender() == 'f':
|
||||
try:
|
||||
bottomPair = ToonDNA.GirlBottoms[dna.botTex]
|
||||
except:
|
||||
bottomPair = ToonDNA.GirlBottoms[0]
|
||||
try:
|
||||
bottomPair = ToonDNA.Bottoms[dna.botTex]
|
||||
except:
|
||||
bottomPair = ToonDNA.Bottoms[0]
|
||||
|
||||
if dna.torso[1] == 's' and bottomPair[1] == ToonDNA.SKIRT:
|
||||
dna.torso = dna.torso[0] + 'd'
|
||||
elif dna.torso[1] == 'd' and bottomPair[1] == ToonDNA.SHORTS:
|
||||
dna.torso = dna.torso[0] + 's'
|
||||
if dna.torso[1] == 's' and bottomPair[1] == ToonDNA.SKIRT:
|
||||
dna.torso = dna.torso[0] + 'd'
|
||||
elif dna.torso[1] == 'd' and bottomPair[1] == ToonDNA.SHORTS:
|
||||
dna.torso = dna.torso[0] + 's'
|
||||
avatar.b_setDNAString(dna.makeNetString())
|
||||
avatar.d_catalogGenClothes()
|
||||
return ToontownGlobals.P_ItemAvailable
|
||||
|
|
|
|||
|
|
@ -1108,10 +1108,7 @@ class CatalogFurnitureItem(CatalogAtticItem.CatalogAtticItem):
|
|||
|
||||
|
||||
def nextAvailableCloset(avatar, duplicateItems):
|
||||
if avatar.getStyle().getGender() == 'm':
|
||||
index = 0
|
||||
else:
|
||||
index = 1
|
||||
index = 0
|
||||
if not hasattr(avatar, 'maxClothes'):
|
||||
return None
|
||||
closetIds = ClothesToCloset.get(avatar.getMaxClothes())
|
||||
|
|
@ -1132,10 +1129,7 @@ def nextAvailableCloset(avatar, duplicateItems):
|
|||
|
||||
|
||||
def get50ItemCloset(avatar, duplicateItems):
|
||||
if avatar.getStyle().getGender() == 'm':
|
||||
index = 0
|
||||
else:
|
||||
index = 1
|
||||
index = 0
|
||||
closetId = MaxClosetIds[index]
|
||||
item = CatalogFurnitureItem(closetId)
|
||||
if item in avatar.onOrder or item in avatar.mailboxContents:
|
||||
|
|
@ -1160,10 +1154,8 @@ def getAllClosets():
|
|||
|
||||
|
||||
def get50ItemTrunk(avatar, duplicateItems):
|
||||
if avatar.getStyle().getGender() == 'm':
|
||||
index = 0
|
||||
else:
|
||||
index = 1
|
||||
index = 0
|
||||
|
||||
trunkId = MaxTrunkIds[index]
|
||||
item = CatalogFurnitureItem(trunkId)
|
||||
if item in avatar.onOrder or item in avatar.mailboxContents:
|
||||
|
|
|
|||
|
|
@ -119,17 +119,16 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
for head in ToonDNA.getHeadList(species):
|
||||
for torso in ToonDNA.toonTorsoTypes:
|
||||
for legs in ToonDNA.toonLegTypes:
|
||||
for gender in ('m', 'f'):
|
||||
print('species: %s, head: %s, torso: %s, legs: %s, gender: %s' % (species,
|
||||
print('species: %s, head: %s, torso: %s, legs: %s' % (species,
|
||||
head,
|
||||
torso,
|
||||
legs,
|
||||
gender))
|
||||
))
|
||||
dna = ToonDNA.ToonDNA()
|
||||
dna.newToon((head,
|
||||
torso,
|
||||
legs,
|
||||
gender))
|
||||
legs
|
||||
))
|
||||
toon = Toon.Toon()
|
||||
try:
|
||||
toon.setDNA(dna)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ class ClosetGUI(ClothesGUI.ClothesGUI):
|
|||
self.isOwner = isOwner
|
||||
self.deleteEvent = deleteEvent
|
||||
self.cancelEvent = cancelEvent
|
||||
self.genderChange = 0
|
||||
self.verify = None
|
||||
return
|
||||
|
||||
|
|
@ -75,7 +74,6 @@ class ClosetGUI(ClothesGUI.ClothesGUI):
|
|||
def setupScrollInterface(self):
|
||||
self.notify.debug('setupScrollInterface')
|
||||
self.dna = self.toon.getStyle()
|
||||
self.gender = self.dna.getGender()
|
||||
self.swappedTorso = 0
|
||||
if self.topsList == None:
|
||||
self.topsList = self.toon.getClothesTopsList()
|
||||
|
|
@ -125,9 +123,6 @@ class ClosetGUI(ClothesGUI.ClothesGUI):
|
|||
else:
|
||||
self.bottomTrashButton['text'] = TTLocalizer.ClosetDeleteShorts
|
||||
|
||||
def setGender(self, gender):
|
||||
self.ownerGender = gender
|
||||
self.genderChange = 1
|
||||
|
||||
def swapBottom(self, offset):
|
||||
length = len(self.bottoms)
|
||||
|
|
@ -140,11 +135,6 @@ class ClosetGUI(ClothesGUI.ClothesGUI):
|
|||
return None
|
||||
self.toon.style.botTex = self.bottoms[self.bottomChoice][0]
|
||||
self.toon.style.botTexColor = self.bottoms[self.bottomChoice][1]
|
||||
if self.genderChange == 1:
|
||||
if self.bottomChoice > 0:
|
||||
self.__handleGenderBender(1)
|
||||
else:
|
||||
self.__handleGenderBender(0)
|
||||
if self.toon.generateToonClothes() == 1:
|
||||
self.toon.loop('neutral', 0)
|
||||
self.swappedTorso = 1
|
||||
|
|
@ -153,20 +143,6 @@ class ClosetGUI(ClothesGUI.ClothesGUI):
|
|||
if self.swapEvent != None:
|
||||
messenger.send(self.swapEvent)
|
||||
|
||||
def __handleGenderBender(self, type):
|
||||
if type == 1:
|
||||
if self.toon.style.gender != self.ownerGender and self.toon.style.gender == 'f':
|
||||
self.toon.swapToonTorso(self.toon.style.torso[0] + 's', genClothes=0)
|
||||
self.toon.loop('neutral', 0)
|
||||
self.swappedTorso = 1
|
||||
self.toon.style.gender = self.ownerGender
|
||||
else:
|
||||
self.toon.style.gender = self.gender
|
||||
if self.toon.style.gender != self.ownerGender and self.toon.style.gender == 'm':
|
||||
self.toon.swapToonTorso(self.toon.style.torso[0] + 's', genClothes=0)
|
||||
self.toon.loop('neutral', 0)
|
||||
self.swappedTorso = 1
|
||||
|
||||
def removeTop(self, index):
|
||||
listLen = len(self.tops)
|
||||
if index < listLen:
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
self.purchaseDoneEvent = ''
|
||||
self.swapEvent = ''
|
||||
self.locked = 0
|
||||
self.gender = None
|
||||
self.topDeleted = 0
|
||||
self.bottomDeleted = 0
|
||||
self.closetTrack = None
|
||||
|
|
@ -130,7 +129,6 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
self.popupInfo = None
|
||||
if self.av:
|
||||
del self.av
|
||||
del self.gender
|
||||
del self.closetSphere
|
||||
del self.closetSphereNode
|
||||
del self.closetSphereNodePath
|
||||
|
|
@ -200,10 +198,9 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
self.hasLocalAvatar = 1
|
||||
return
|
||||
|
||||
def setState(self, mode, avId, ownerId, gender, topList, botList):
|
||||
def setState(self, mode, avId, ownerId, topList, botList):
|
||||
self.notify.debug('setState, mode=%s, avId=%s, ownerId=%d' % (mode, avId, ownerId))
|
||||
self.isOwner = avId == ownerId
|
||||
self.ownerGender = gender
|
||||
if mode == ClosetGlobals.CLOSED:
|
||||
self.fsm.request('closed')
|
||||
return
|
||||
|
|
@ -212,7 +209,6 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
self.av = self.cr.doId2do.get(self.customerId, None)
|
||||
if self.av:
|
||||
if base.localAvatar.getDoId() == self.customerId:
|
||||
self.gender = self.av.style.gender
|
||||
self.topList = topList
|
||||
self.botList = botList
|
||||
self.oldTopList = self.topList[0:]
|
||||
|
|
@ -227,11 +223,7 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
self.fsm.request('open')
|
||||
return
|
||||
|
||||
def _revertGender(self):
|
||||
if self.gender:
|
||||
self.av.style.gender = self.gender
|
||||
self.av.loop('neutral')
|
||||
|
||||
|
||||
def popupChangeClothesGUI(self, task):
|
||||
self.notify.debug('popupChangeClothesGUI')
|
||||
self.purchaseDoneEvent = self.uniqueName('purchaseDone')
|
||||
|
|
@ -246,8 +238,6 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
if not self.closetGUI:
|
||||
self.closetGUI = ClosetGUI.ClosetGUI(self.isOwner, self.purchaseDoneEvent, self.cancelEvent, self.swapEvent, self.deleteEvent, self.topList, self.botList)
|
||||
self.closetGUI.load()
|
||||
if self.gender != self.ownerGender:
|
||||
self.closetGUI.setGender(self.ownerGender)
|
||||
self.closetGUI.enter(base.localAvatar)
|
||||
self.closetGUI.showButtons()
|
||||
style = self.av.getStyle()
|
||||
|
|
@ -374,7 +364,7 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
return
|
||||
|
||||
def printInfo(self):
|
||||
print('avid: %s, gender: %s' % (self.av.doId, self.av.style.gender))
|
||||
print('avid: %s' % (self.av.doId))
|
||||
print('current top = %s,%s,%s,%s and bot = %s,%s,' % (self.av.style.topTex,
|
||||
self.av.style.topTexColor,
|
||||
self.av.style.sleeveTex,
|
||||
|
|
@ -393,7 +383,6 @@ class DistributedCloset(DistributedFurnitureItem.DistributedFurnitureItem):
|
|||
return
|
||||
elif mode == ClosetGlobals.CLOSET_MOVIE_COMPLETE:
|
||||
if self.isLocalToon:
|
||||
self._revertGender()
|
||||
print('-----------ending trunk interaction-----------')
|
||||
self.printInfo()
|
||||
print('-------------------------------------------------')
|
||||
|
|
|
|||
|
|
@ -22,14 +22,15 @@ def dnaCodeFromToonDNA(dna):
|
|||
|
||||
return i
|
||||
|
||||
if dna.gender == 'f':
|
||||
genderTypeNum = 0
|
||||
|
||||
if dna.eyelashes == 0:
|
||||
eyelashesTypeNum = 0
|
||||
else:
|
||||
genderTypeNum = 1
|
||||
eyelashesTypeNum = 1
|
||||
legTypeNum = findItemNumInList(dna.legs, ToonDNA.toonLegTypes) << 1
|
||||
torsoTypeNum = findItemNumInList(dna.torso, ToonDNA.toonTorsoTypes) << 3
|
||||
headTypeNum = findItemNumInList(dna.head, ToonDNA.toonHeadTypes) << 7
|
||||
return headTypeNum | torsoTypeNum | legTypeNum | genderTypeNum
|
||||
return headTypeNum | torsoTypeNum | legTypeNum | eyelashesTypeNum
|
||||
|
||||
|
||||
class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
||||
|
|
@ -46,7 +47,7 @@ class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
|||
self.model.setScale(self.worldScale * 1.5, self.worldScale * 1.5, self.worldScale)
|
||||
self.getToonPropertiesFromOptional()
|
||||
dna = ToonDNA.ToonDNA()
|
||||
dna.newToonFromProperties(self.headType, self.torsoType, self.legType, self.gender, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
dna.newToonFromProperties(self.headType, self.torsoType, self.legType, self.eyelashes, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
self.setupStoneToon(dna)
|
||||
self.poseToonFromTypeIndex(self.typeIndex)
|
||||
self.toon.reparentTo(self.model)
|
||||
|
|
@ -62,7 +63,7 @@ class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
|||
self.toon.initializeBodyCollisions('toonStatue')
|
||||
self.toon.stopBlink()
|
||||
self.toon.stopLookAround()
|
||||
self.gender = self.toon.style.gender
|
||||
self.eyelashes = self.toon.style.eyelashes
|
||||
self.speciesType = self.toon.style.getAnimal()
|
||||
self.headType = self.toon.style.head
|
||||
self.removeTextures()
|
||||
|
|
@ -85,7 +86,7 @@ class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
|||
self.toon.pose('victory', 30)
|
||||
self.toon.setH(180)
|
||||
self.speciesType = self.toon.style.getAnimal()
|
||||
self.gender = self.toon.style.gender
|
||||
self.eyelashes = self.toon.style.eyelashes
|
||||
|
||||
def setupCollision(self):
|
||||
DistributedStatuary.DistributedStatuary.setupCollision(self)
|
||||
|
|
@ -164,7 +165,7 @@ class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
|||
tsLashes = TextureStage('tsLashes')
|
||||
tsLashes.setPriority(2)
|
||||
tsLashes.setMode(tsLashes.MDecal)
|
||||
if self.gender == 'f':
|
||||
if self.eyelashes:
|
||||
if self.toon.hasLOD():
|
||||
head = self.toon.getPart('head', '1000')
|
||||
else:
|
||||
|
|
@ -188,14 +189,14 @@ class DistributedToonStatuary(DistributedStatuary.DistributedStatuary):
|
|||
self.optional = optional
|
||||
|
||||
def getToonPropertiesFromOptional(self):
|
||||
genderTypeNum = self.optional & 1
|
||||
eyelashesTypeNum = self.optional & 1
|
||||
legTypeNum = (self.optional & 6) >> 1
|
||||
torsoTypeNum = (self.optional & 120) >> 3
|
||||
headTypeNum = (self.optional & 65408) >> 7
|
||||
if genderTypeNum == 0:
|
||||
self.gender = 'f'
|
||||
if eyelashesTypeNum == 0:
|
||||
self.eyelashes = 0
|
||||
else:
|
||||
self.gender = 'm'
|
||||
self.eyelashes = 1
|
||||
if legTypeNum <= len(ToonDNA.toonLegTypes):
|
||||
self.legType = ToonDNA.toonLegTypes[legTypeNum]
|
||||
if torsoTypeNum <= len(ToonDNA.toonTorsoTypes):
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class DistributedTrunk(DistributedCloset.DistributedCloset):
|
|||
self.isFreePlayer = 0
|
||||
|
||||
def printInfo(self):
|
||||
print('avid: %s, gender: %s' % (self.av.doId, self.av.style.gender))
|
||||
print('avid: %s, ' % (self.av.doId))
|
||||
print('current hat = %s, glasses = %s, backpack = %s, shoes = %s' % (self.av.getHat(),
|
||||
self.av.getGlasses(),
|
||||
self.av.getBackpack(),
|
||||
|
|
@ -44,10 +44,9 @@ class DistributedTrunk(DistributedCloset.DistributedCloset):
|
|||
print('backpackList = %s' % self.av.getBackpackList())
|
||||
print('shoesList = %s' % self.av.getShoesList())
|
||||
|
||||
def setState(self, mode, avId, ownerId, gender, hatList, glassesList, backpackList, shoesList):
|
||||
def setState(self, mode, avId, ownerId, hatList, glassesList, backpackList, shoesList):
|
||||
self.notify.debug('setState, mode=%s, avId=%s, ownerId=%d' % (mode, avId, ownerId))
|
||||
self.isOwner = avId == ownerId
|
||||
self.ownerGender = gender
|
||||
if mode == ClosetGlobals.CLOSED:
|
||||
self.fsm.request('closed')
|
||||
return
|
||||
|
|
@ -61,7 +60,7 @@ class DistributedTrunk(DistributedCloset.DistributedCloset):
|
|||
else:
|
||||
self.isFreePlayer = 0
|
||||
if base.localAvatar.getDoId() == self.customerId:
|
||||
self.gender = self.av.style.gender
|
||||
self.eyelashes = self.av.style.eyelashes
|
||||
self.hatList = hatList
|
||||
self.glassesList = glassesList
|
||||
self.backpackList = backpackList
|
||||
|
|
@ -112,8 +111,6 @@ class DistributedTrunk(DistributedCloset.DistributedCloset):
|
|||
if not self.closetGUI:
|
||||
self.closetGUI = TrunkGUI.TrunkGUI(self.isOwner, self.purchaseDoneEvent, self.cancelEvent, self.swapHatEvent, self.swapGlassesEvent, self.swapBackpackEvent, self.swapShoesEvent, self.deleteEvent, self.hatList, self.glassesList, self.backpackList, self.shoesList)
|
||||
self.closetGUI.load()
|
||||
if self.gender != self.ownerGender:
|
||||
self.closetGUI.setGender(self.ownerGender)
|
||||
self.closetGUI.enter(base.localAvatar)
|
||||
self.closetGUI.showButtons()
|
||||
oldHat = self.av.getHat()
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ class TrunkGUI(StateData.StateData):
|
|||
self.swapShoesEvent = swapShoesEvent
|
||||
self.deleteEvent = deleteEvent
|
||||
self.cancelEvent = cancelEvent
|
||||
self.genderChange = 0
|
||||
self.verify = None
|
||||
return
|
||||
|
||||
|
|
@ -324,9 +323,7 @@ class TrunkGUI(StateData.StateData):
|
|||
task = Task(self.rotateToonR)
|
||||
taskMgr.add(task, self.taskName('rotateR'))
|
||||
|
||||
def setGender(self, gender):
|
||||
self.ownerGender = gender
|
||||
self.genderChange = 1
|
||||
|
||||
|
||||
def swapHat(self, offset):
|
||||
length = len(self.hats)
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ class ClothesGUI(StateData.StateData):
|
|||
self.type = type
|
||||
self.toon = None
|
||||
self.swapEvent = swapEvent
|
||||
self.gender = '?'
|
||||
self.girlInShorts = 0
|
||||
self.toonInShorts = 0
|
||||
self.swappedTorso = 0
|
||||
return
|
||||
|
||||
|
|
@ -119,18 +118,14 @@ class ClothesGUI(StateData.StateData):
|
|||
self.ignore(self.shuffleFetchMsg)
|
||||
|
||||
def setupButtons(self):
|
||||
self.girlInShorts = 0
|
||||
if self.gender == 'f':
|
||||
if self.bottomChoice == -1:
|
||||
botTex = self.bottoms[0][0]
|
||||
else:
|
||||
botTex = self.bottoms[self.bottomChoice][0]
|
||||
if ToonDNA.GirlBottoms[botTex][1] == ToonDNA.SHORTS:
|
||||
self.girlInShorts = 1
|
||||
if self.toon.style.getGender() == 'm':
|
||||
self.bottomFrame['text'] = TTLocalizer.ClothesShopShorts
|
||||
self.toonInShorts = 0
|
||||
if self.bottomChoice == -1:
|
||||
botTex = self.bottoms[0][0]
|
||||
else:
|
||||
self.bottomFrame['text'] = TTLocalizer.ClothesShopBottoms
|
||||
botTex = self.bottoms[self.bottomChoice][0]
|
||||
if ToonDNA.Bottoms[botTex][1] == ToonDNA.SHORTS:
|
||||
self.toonInShorts = 1
|
||||
self.bottomFrame['text'] = TTLocalizer.ClothesShopBottoms
|
||||
self.acceptOnce('last', self.__handleBackward)
|
||||
self.acceptOnce('next', self.__handleForward)
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -18,17 +18,15 @@ class ColorShop(StateData.StateData):
|
|||
self.colorAll = 1
|
||||
return
|
||||
|
||||
def getGenderColorList(self, dna):
|
||||
if self.dna.getGender() == 'm':
|
||||
return ToonDNA.defaultBoyColorList
|
||||
else:
|
||||
return ToonDNA.defaultGirlColorList
|
||||
def getColorList(self, dna):
|
||||
return ToonDNA.defaultColorList
|
||||
|
||||
|
||||
def enter(self, toon, shopsVisited = []):
|
||||
base.disableMouse()
|
||||
self.toon = toon
|
||||
self.dna = toon.getStyle()
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
try:
|
||||
self.headChoice = colorList.index(self.dna.headColor)
|
||||
self.armChoice = colorList.index(self.dna.armColor)
|
||||
|
|
@ -44,7 +42,7 @@ class ColorShop(StateData.StateData):
|
|||
self.startColor = 0
|
||||
self.acceptOnce('last', self.__handleBackward)
|
||||
self.acceptOnce('next', self.__handleForward)
|
||||
choicePool = [self.getGenderColorList(self.dna), self.getGenderColorList(self.dna), self.getGenderColorList(self.dna)]
|
||||
choicePool = [self.getColorList(self.dna), self.getColorList(self.dna), self.getColorList(self.dna)]
|
||||
self.shuffleButton.setChoicePool(choicePool)
|
||||
self.accept(self.shuffleFetchMsg, self.changeColor)
|
||||
self.acceptOnce('MAT-newToonCreated', self.shuffleButton.cleanHistory)
|
||||
|
|
@ -153,7 +151,7 @@ class ColorShop(StateData.StateData):
|
|||
self.ignore('MAT-newToonCreated')
|
||||
|
||||
def __swapAllColor(self, offset):
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
length = len(colorList)
|
||||
choice = (self.headChoice + offset) % length
|
||||
self.__updateScrollButtons(choice, length, self.allLButton, self.allRButton)
|
||||
|
|
@ -164,7 +162,7 @@ class ColorShop(StateData.StateData):
|
|||
self.__swapLegColor(choice - oldLegColorIndex)
|
||||
|
||||
def __swapHeadColor(self, offset):
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
length = len(colorList)
|
||||
self.headChoice = (self.headChoice + offset) % length
|
||||
self.__updateScrollButtons(self.headChoice, length, self.headLButton, self.headRButton)
|
||||
|
|
@ -173,7 +171,7 @@ class ColorShop(StateData.StateData):
|
|||
self.toon.swapToonColor(self.dna)
|
||||
|
||||
def __swapArmColor(self, offset):
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
length = len(colorList)
|
||||
self.armChoice = (self.armChoice + offset) % length
|
||||
self.__updateScrollButtons(self.armChoice, length, self.armLButton, self.armRButton)
|
||||
|
|
@ -182,7 +180,7 @@ class ColorShop(StateData.StateData):
|
|||
self.toon.swapToonColor(self.dna)
|
||||
|
||||
def __swapLegColor(self, offset):
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
length = len(colorList)
|
||||
self.legChoice = (self.legChoice + offset) % length
|
||||
self.__updateScrollButtons(self.legChoice, length, self.legLButton, self.legRButton)
|
||||
|
|
@ -210,7 +208,7 @@ class ColorShop(StateData.StateData):
|
|||
|
||||
def changeColor(self):
|
||||
self.notify.debug('Entering changeColor')
|
||||
colorList = self.getGenderColorList(self.dna)
|
||||
colorList = self.getColorList(self.dna)
|
||||
newChoice = self.shuffleButton.getCurrChoice()
|
||||
newHeadColorIndex = colorList.index(newChoice[0])
|
||||
newArmColorIndex = colorList.index(newChoice[1])
|
||||
|
|
|
|||
|
|
@ -95,10 +95,6 @@ class MakeAToon(StateData.StateData):
|
|||
base.playMusic(self.music, looping=1, volume=self.musicVolume)
|
||||
camera.setPosHpr(-5.7, -12.3501, 2.15, -24.8499, 2.73, 0)
|
||||
if self.warp:
|
||||
if self.toon.style.torso[1] == 's':
|
||||
self.toon.gender = 's'
|
||||
else:
|
||||
self.toon.gender = 'd'
|
||||
self.toon.reparentTo(render)
|
||||
self.toon.loop('neutral')
|
||||
self.toon.setPosHpr(-4.1, -2, 0, 200, 0, 0)
|
||||
|
|
@ -203,8 +199,6 @@ class MakeAToon(StateData.StateData):
|
|||
ee.bind(DGG.B1PRESS, lambda x, ee = ee: self.toggleSlide())
|
||||
self.eee = ee
|
||||
self.room = loader.loadModel('phase_3/models/makeatoon/tt_m_ara_mat_room')
|
||||
self.genderWalls = self.room.find('**/genderWalls')
|
||||
self.genderProps = self.room.find('**/genderProps')
|
||||
self.bodyWalls = self.room.find('**/bodyWalls')
|
||||
self.bodyProps = self.room.find('**/bodyProps')
|
||||
self.colorWalls = self.room.find('**/colorWalls')
|
||||
|
|
@ -306,10 +300,6 @@ class MakeAToon(StateData.StateData):
|
|||
self.cleanupFocusOutIval()
|
||||
self.room.removeNode()
|
||||
del self.room
|
||||
self.genderWalls.removeNode()
|
||||
self.genderProps.removeNode()
|
||||
del self.genderWalls
|
||||
del self.genderProps
|
||||
self.bodyWalls.removeNode()
|
||||
self.bodyProps.removeNode()
|
||||
del self.bodyWalls
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
GENDERSHOP = 1
|
||||
BODYSHOP = 2
|
||||
BODYSHOP = 1
|
||||
COLORSHOP = 3
|
||||
CLOTHESSHOP = 4
|
||||
NAMESHOP = 5
|
||||
|
|
|
|||
|
|
@ -9,21 +9,13 @@ class MakeClothesGUI(ClothesGUI.ClothesGUI):
|
|||
|
||||
def setupScrollInterface(self):
|
||||
self.dna = self.toon.getStyle()
|
||||
gender = self.dna.getGender()
|
||||
if gender != self.gender:
|
||||
self.tops = ToonDNA.getRandomizedTops(gender, tailorId=ToonDNA.MAKE_A_TOON)
|
||||
self.bottoms = ToonDNA.getRandomizedBottoms(gender, tailorId=ToonDNA.MAKE_A_TOON)
|
||||
self.gender = gender
|
||||
self.topChoice = 0
|
||||
self.bottomChoice = 0
|
||||
self.setupButtons()
|
||||
|
||||
def setupButtons(self):
|
||||
ClothesGUI.ClothesGUI.setupButtons(self)
|
||||
if len(self.dna.torso) == 1:
|
||||
if self.gender == 'm':
|
||||
torsoStyle = 's'
|
||||
elif self.girlInShorts == 1:
|
||||
|
||||
if self.toonInShorts == 1:
|
||||
torsoStyle = 's'
|
||||
else:
|
||||
torsoStyle = 'd'
|
||||
|
|
|
|||
|
|
@ -94,6 +94,17 @@ class NameGenerator:
|
|||
6: 2,
|
||||
7: 2,
|
||||
8: 3})
|
||||
|
||||
def getAllNameParts(self):
|
||||
return self._getNameParts({0: 0,
|
||||
1: 0,
|
||||
2: 0,
|
||||
3: 1,
|
||||
4: 1,
|
||||
5: 1,
|
||||
6: 2,
|
||||
7: 2,
|
||||
8: 3})
|
||||
|
||||
def getLastNamePrefixesCapped(self):
|
||||
return self.capPrefixes
|
||||
|
|
@ -213,21 +224,13 @@ class NameGenerator:
|
|||
retString = ''
|
||||
if titleFlag:
|
||||
titleList = self.neutralTitles[:]
|
||||
if boy:
|
||||
titleList += self.boyTitles
|
||||
elif girl:
|
||||
titleList += self.girlTitles
|
||||
else:
|
||||
self.error('Must be boy or girl.')
|
||||
titleList += self.boyTitles
|
||||
titleList += self.girlTitles
|
||||
retString += random.choice(titleList) + ' '
|
||||
if firstFlag:
|
||||
firstList = self.neutralFirsts[:]
|
||||
if boy:
|
||||
firstList += self.boyFirsts
|
||||
elif girl:
|
||||
firstList += self.girlFirsts
|
||||
else:
|
||||
self.error('Must be boy or girl.')
|
||||
firstList += self.boyFirsts
|
||||
firstList += self.girlFirsts
|
||||
retString += random.choice(firstList)
|
||||
if lastFlag:
|
||||
retString += ' '
|
||||
|
|
@ -239,12 +242,7 @@ class NameGenerator:
|
|||
retString += lastPrefix + lastSuffix
|
||||
return retString
|
||||
|
||||
def randomNameMoreinfo(self, boy = 0, girl = 0):
|
||||
if boy and girl:
|
||||
self.error("A name can't be both boy and girl!")
|
||||
if not boy and not girl:
|
||||
boy = random.choice([0, 1])
|
||||
girl = not boy
|
||||
def randomNameMoreinfo(self):
|
||||
uberFlag = random.choice(['title-first',
|
||||
'title-last',
|
||||
'first',
|
||||
|
|
@ -272,20 +270,14 @@ class NameGenerator:
|
|||
uberReturn[1] = firstFlag
|
||||
uberReturn[2] = lastFlag
|
||||
titleList = self.neutralTitles[:]
|
||||
if boy:
|
||||
titleList += self.boyTitles
|
||||
elif girl:
|
||||
titleList += self.girlTitles
|
||||
titleList += self.boyTitles
|
||||
titleList += self.girlTitles
|
||||
else:
|
||||
self.error('Must be boy or girl.')
|
||||
uberReturn[3] = random.choice(titleList)
|
||||
firstList = self.neutralFirsts[:]
|
||||
if boy:
|
||||
firstList += self.boyFirsts
|
||||
elif girl:
|
||||
firstList += self.girlFirsts
|
||||
else:
|
||||
self.error('Must be boy or girl.')
|
||||
firstList += self.boyFirsts
|
||||
firstList += self.girlFirsts
|
||||
uberReturn[4] = random.choice(firstList)
|
||||
lastPrefix = random.choice(self.lastPrefixes)
|
||||
lastSuffix = random.choice(self.lastSuffixes)
|
||||
|
|
@ -315,10 +307,7 @@ class NameGenerator:
|
|||
name = self.randomName(boy, girl)
|
||||
width = self.text.calcWidth(name)
|
||||
widthStr = str(width)
|
||||
if boy:
|
||||
print('Boy: ' + name + ' (' + widthStr + ' units)')
|
||||
if girl:
|
||||
print('Girl: ' + name + ' (' + widthStr + ' units)')
|
||||
print(name + ' (' + widthStr + ' units)')
|
||||
i += 1
|
||||
|
||||
def percentOver(self, limit = 9.0, samples = 1000):
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@ class NameShop(StateData.StateData):
|
|||
'',
|
||||
'']
|
||||
self.toon = None
|
||||
self.boy = 0
|
||||
self.girl = 0
|
||||
self.allTitles = []
|
||||
self.allFirsts = []
|
||||
self.allPrefixes = []
|
||||
|
|
@ -134,20 +132,13 @@ class NameShop(StateData.StateData):
|
|||
return
|
||||
else:
|
||||
self.toon = toon
|
||||
if self.toon.style.gender == 'm':
|
||||
self.boy = 1
|
||||
self.girl = 0
|
||||
else:
|
||||
self.boy = 0
|
||||
self.girl = 1
|
||||
self.usedNames = usedNames
|
||||
if not self.addedGenderSpecific or self.oldBoy != self.boy:
|
||||
self.oldBoy = self.boy
|
||||
if not self.addedGenderSpecific:
|
||||
self.listsLoaded = 0
|
||||
self.allTitles = [' '] + [' '] + self.nameGen.boyTitles * self.boy + self.nameGen.girlTitles * self.girl + self.nameGen.neutralTitles
|
||||
self.allTitles = [' '] + [' '] + self.nameGen.boyTitles + self.nameGen.girlTitles + self.nameGen.neutralTitles
|
||||
self.allTitles.sort()
|
||||
self.allTitles += [' '] + [' ']
|
||||
self.allFirsts = [' '] + [' '] + self.nameGen.boyFirsts * self.boy + self.nameGen.girlFirsts * self.girl + self.nameGen.neutralFirsts
|
||||
self.allFirsts = [' '] + [' '] + self.nameGen.boyFirsts + self.nameGen.girlFirsts + self.nameGen.neutralFirsts
|
||||
self.allFirsts.sort()
|
||||
self.allFirsts += [' '] + [' ']
|
||||
try:
|
||||
|
|
@ -644,7 +635,7 @@ class NameShop(StateData.StateData):
|
|||
|
||||
def __randomName(self):
|
||||
self.notify.debug('Finding random name')
|
||||
uberReturn = self.nameGen.randomNameMoreinfo(self.boy, self.girl)
|
||||
uberReturn = self.nameGen.randomNameMoreinfo()
|
||||
flags = uberReturn[:3]
|
||||
names = uberReturn[3:7]
|
||||
fullName = uberReturn[-1]
|
||||
|
|
|
|||
|
|
@ -7,13 +7,14 @@ class TTPickANamePattern(PickANamePatternTwoPartLastName):
|
|||
NameParts = None
|
||||
LastNamePrefixesCapped = None
|
||||
|
||||
def _getNameParts(self, gender):
|
||||
def _getNameParts(self):
|
||||
if TTPickANamePattern.NameParts is None:
|
||||
TTPickANamePattern.NameParts = {}
|
||||
ng = NameGenerator()
|
||||
TTPickANamePattern.NameParts['m'] = ng.getMaleNameParts()
|
||||
TTPickANamePattern.NameParts['f'] = ng.getFemaleNameParts()
|
||||
return TTPickANamePattern.NameParts[gender]
|
||||
TTPickANamePattern.NameParts['n'] = ng.getAllNameParts()
|
||||
return TTPickANamePattern.NameParts['n']
|
||||
|
||||
def _getLastNameCapPrefixes(self):
|
||||
if TTPickANamePattern.LastNamePrefixesCapped is None:
|
||||
|
|
|
|||
|
|
@ -737,20 +737,14 @@ class DistributedPhotoGame(DistributedMinigame, PhotoGameBase.PhotoGameBase):
|
|||
for pathIndex in range(len(self.data['PATHS'])):
|
||||
path = self.data['PATHS'][pathIndex]
|
||||
subject = Toon.Toon()
|
||||
gender = random.choice(['m', 'f'])
|
||||
eyelashes = random.choice([0, 1])
|
||||
seed = int(random.random() * 571)
|
||||
if gender == 'm':
|
||||
boy = 1
|
||||
girl = 0
|
||||
else:
|
||||
boy = 0
|
||||
girl = 1
|
||||
subject.setName(namegen.randomNameMoreinfo(boy=boy, girl=girl)[-1])
|
||||
subject.setName(namegen.randomNameMoreinfo()[-1])
|
||||
self.nameCounter += 1
|
||||
subject.setPickable(0)
|
||||
subject.setPlayerType(NametagGroup.CCNonPlayer)
|
||||
dna = ToonDNA.ToonDNA()
|
||||
dna.newToonRandom(seed, gender, 1)
|
||||
dna.newToonRandom(seed, eyelashes, 1)
|
||||
subject.setDNAString(dna.makeNetString())
|
||||
subject.animFSM.request('neutral')
|
||||
subject.setTag('subjectIndex', '%s' % len(self.subjects))
|
||||
|
|
|
|||
|
|
@ -486,57 +486,10 @@ class NPCMoviePlayer(DirectObject.DirectObject):
|
|||
self.setVar(varName, dialogue)
|
||||
return
|
||||
|
||||
def parseLoadCCDialogue(self, line):
|
||||
token, varName, filenameTemplate = line
|
||||
if self.toon.getStyle().gender == 'm':
|
||||
classicChar = 'mickey'
|
||||
else:
|
||||
classicChar = 'minnie'
|
||||
filename = filenameTemplate % classicChar
|
||||
if base.config.GetString('language', 'english') == 'japanese':
|
||||
dialogue = base.loader.loadSfx(filename)
|
||||
else:
|
||||
dialogue = None
|
||||
self.setVar(varName, dialogue)
|
||||
return
|
||||
|
||||
def parseLoadChar(self, line):
|
||||
token, name, charType = line
|
||||
char = Char.Char()
|
||||
dna = CharDNA.CharDNA()
|
||||
dna.newChar(charType)
|
||||
char.setDNA(dna)
|
||||
if charType == 'mk' or charType == 'mn':
|
||||
char.startEarTask()
|
||||
char.nametag.manage(base.marginManager)
|
||||
char.addActive()
|
||||
char.hideName()
|
||||
self.setVar(name, char)
|
||||
|
||||
def parseLoadClassicChar(self, line):
|
||||
token, name = line
|
||||
char = Char.Char()
|
||||
dna = CharDNA.CharDNA()
|
||||
if self.toon.getStyle().gender == 'm':
|
||||
charType = 'mk'
|
||||
else:
|
||||
charType = 'mn'
|
||||
dna.newChar(charType)
|
||||
char.setDNA(dna)
|
||||
char.startEarTask()
|
||||
char.nametag.manage(base.marginManager)
|
||||
char.addActive()
|
||||
char.hideName()
|
||||
self.setVar(name, char)
|
||||
self.chars.append(char)
|
||||
|
||||
|
||||
def parseUnloadChar(self, line):
|
||||
token, name = line
|
||||
char = self.getVar(name)
|
||||
track = Sequence()
|
||||
track.append(Func(self.__unloadChar, char))
|
||||
track.append(Func(self.delVar, name))
|
||||
return track
|
||||
|
||||
def parseLoadSuit(self, line):
|
||||
token, name, suitType = line
|
||||
|
|
@ -716,32 +669,9 @@ class NPCMoviePlayer(DirectObject.DirectObject):
|
|||
quitButton, extraChatFlags, dialogueList = self.parseExtraChatArgs(line[4:])
|
||||
return Func(avatar.setLocalPageChat, chatString, quitButton, extraChatFlags, dialogueList)
|
||||
|
||||
def parseCCChatConfirm(self, line):
|
||||
lineLength = len(line)
|
||||
avatarName = line[1]
|
||||
avatar = self.getVar(avatarName)
|
||||
if self.toon.getStyle().gender == 'm':
|
||||
chatString = eval('TTLocalizer.' + line[2] % 'Mickey')
|
||||
else:
|
||||
chatString = eval('TTLocalizer.' + line[2] % 'Minnie')
|
||||
quitButton, extraChatFlags, dialogueList = self.parseExtraChatArgs(line[3:])
|
||||
return Func(avatar.setLocalPageChat, chatString, quitButton, extraChatFlags, dialogueList)
|
||||
|
||||
|
||||
|
||||
def parseCCChatToConfirm(self, line):
|
||||
lineLength = len(line)
|
||||
avatarKey = line[1]
|
||||
avatar = self.getVar(avatarKey)
|
||||
toAvatarKey = line[2]
|
||||
toAvatar = self.getVar(toAvatarKey)
|
||||
localizerAvatarName = toAvatar.getName().capitalize()
|
||||
toAvatarName = eval('TTLocalizer.' + localizerAvatarName)
|
||||
if self.toon.getStyle().gender == 'm':
|
||||
chatString = eval('TTLocalizer.' + line[3] % 'Mickey')
|
||||
else:
|
||||
chatString = eval('TTLocalizer.' + line[3] % 'Minnie')
|
||||
chatString = chatString.replace('%s', toAvatarName)
|
||||
quitButton, extraChatFlags, dialogueList = self.parseExtraChatArgs(line[4:])
|
||||
return Func(avatar.setLocalPageChat, chatString, quitButton, extraChatFlags, dialogueList)
|
||||
|
||||
def parsePlaySfx(self, line):
|
||||
if len(line) == 2:
|
||||
|
|
|
|||
|
|
@ -131,9 +131,9 @@ class QuestPoster(DirectFrame):
|
|||
def createNpcToonHead(self, toNpcId):
|
||||
npcInfo = NPCToons.NPCToonDict[toNpcId]
|
||||
dnaList = npcInfo[2]
|
||||
gender = npcInfo[3]
|
||||
eyelashes = npcInfo[3]
|
||||
if dnaList == 'r':
|
||||
dnaList = NPCToons.getRandomDNA(toNpcId, gender)
|
||||
dnaList = NPCToons.getRandomDNA(toNpcId, eyelashes)
|
||||
dna = ToonDNA.ToonDNA()
|
||||
dna.newToonFromProperties(*dnaList)
|
||||
head = ToonHead.ToonHead()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
GiveAwardErrors = Enum('Success, WrongGender, NotGiftable, FullMailbox, FullAwardMailbox, AlreadyInMailbox, AlreadyInGiftQueue, AlreadyInOrderedQueue, AlreadyInCloset, AlreadyBeingWorn, AlreadyInAwardMailbox, AlreadyInThirtyMinuteQueue, AlreadyInMyPhrases, AlreadyKnowDoodleTraining, AlreadyRented, GenericAlreadyHaveError, UnknownError, UnknownToon, NonToon,')
|
||||
GiveAwardErrors = Enum('Success, NotGiftable, FullMailbox, FullAwardMailbox, AlreadyInMailbox, AlreadyInGiftQueue, AlreadyInOrderedQueue, AlreadyInCloset, AlreadyBeingWorn, AlreadyInAwardMailbox, AlreadyInThirtyMinuteQueue, AlreadyInMyPhrases, AlreadyKnowDoodleTraining, AlreadyRented, GenericAlreadyHaveError, UnknownError, UnknownToon, NonToon,')
|
||||
GiveAwardErrorStrings = {GiveAwardErrors.Success: 'success',
|
||||
GiveAwardErrors.WrongGender: 'wrong gender',
|
||||
GiveAwardErrors.NotGiftable: 'item is not giftable',
|
||||
GiveAwardErrors.FullMailbox: 'mailbox is full',
|
||||
GiveAwardErrors.FullAwardMailbox: 'award mailbox is full',
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class DistributedNPCTailor(DistributedNPCToonBase):
|
|||
if self.isLocalToon:
|
||||
taskMgr.doMethodLater(3.0, self.popupPurchaseGUI, self.uniqueName('popupPurchaseGUI'))
|
||||
print('-----------Starting tailor interaction-----------')
|
||||
print('avid: %s, gender: %s' % (self.av.doId, self.av.style.gender))
|
||||
print('avid: %s' % (self.av.doId))
|
||||
print('current top = %s,%s,%s,%s and bot = %s,%s,' % (self.av.style.topTex,
|
||||
self.av.style.topTexColor,
|
||||
self.av.style.sleeveTex,
|
||||
|
|
@ -157,7 +157,7 @@ class DistributedNPCTailor(DistributedNPCToonBase):
|
|||
self.setChatAbsolute(TTLocalizer.STOREOWNER_GOODBYE, CFSpeech | CFTimeout)
|
||||
if self.av and self.isLocalToon:
|
||||
print('-----------ending tailor interaction-----------')
|
||||
print('avid: %s, gender: %s' % (self.av.doId, self.av.style.gender))
|
||||
print('avid: %s' % (self.av.doId))
|
||||
print('current top = %s,%s,%s,%s and bot = %s,%s,' % (self.av.style.topTex,
|
||||
self.av.style.topTexColor,
|
||||
self.av.style.sleeveTex,
|
||||
|
|
|
|||
|
|
@ -489,10 +489,8 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
|||
changed = False
|
||||
if self.isPlayerControlled():
|
||||
allowedColors = []
|
||||
if self.dna.gender == 'm':
|
||||
allowedColors = ToonDNA.defaultBoyColorList + [26]
|
||||
else:
|
||||
allowedColors = ToonDNA.defaultGirlColorList + [26]
|
||||
allowedColors = ToonDNA.defaultColorList + [26]
|
||||
|
||||
if self.dna.legColor not in allowedColors:
|
||||
self.dna.legColor = allowedColors[0]
|
||||
changed = True
|
||||
|
|
|
|||
|
|
@ -208,9 +208,9 @@ class NPCFriendCard(DirectFrame):
|
|||
def createNPCToonHead(self, NPCID, dimension = 0.5):
|
||||
NPCInfo = NPCToons.NPCToonDict[NPCID]
|
||||
dnaList = NPCInfo[2]
|
||||
gender = NPCInfo[3]
|
||||
eyelashes = NPCInfo[3]
|
||||
if dnaList == 'r':
|
||||
dnaList = NPCToons.getRandomDNA(NPCID, gender)
|
||||
dnaList = NPCToons.getRandomDNA(NPCID, eyelashes)
|
||||
dna = ToonDNA.ToonDNA()
|
||||
dna.newToonFromProperties(*dnaList)
|
||||
head = ToonHead.ToonHead()
|
||||
|
|
|
|||
|
|
@ -63,9 +63,9 @@ TAILOR_COUNTDOWN_TIME = 300
|
|||
RTDNAFile = '/RTDNAFile.txt'
|
||||
saveDNA = False
|
||||
|
||||
def getRandomDNA(seed, gender):
|
||||
def getRandomDNA(seed, eyelashes):
|
||||
randomDNA = ToonDNA.ToonDNA()
|
||||
randomDNA.newToonRandom(seed, gender, 1)
|
||||
randomDNA.newToonRandom(seed, eyelashes, 1)
|
||||
return randomDNA.asTuple()
|
||||
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ def createNPC(air, npcId, desc, zoneId, posIndex = 0, questCallback = None):
|
|||
from . import DistributedNPCSpecialQuestGiverAI
|
||||
from . import DistributedNPCFlippyInToonHallAI
|
||||
from . import DistributedNPCScientistAI
|
||||
canonicalZoneId, name, dnaType, gender, protected, type = desc
|
||||
canonicalZoneId, name, dnaType, eyelashes, protected, type = desc
|
||||
if type == NPC_REGULAR:
|
||||
npc = DistributedNPCToonAI.DistributedNPCToonAI(air, npcId, questCallback=questCallback)
|
||||
elif type == NPC_HQ:
|
||||
|
|
@ -111,7 +111,7 @@ def createNPC(air, npcId, desc, zoneId, posIndex = 0, questCallback = None):
|
|||
npc.setName(name)
|
||||
dna = ToonDNA.ToonDNA()
|
||||
if dnaType == 'r':
|
||||
dnaList = getRandomDNA(npcId, gender)
|
||||
dnaList = getRandomDNA(npcId, eyelashes)
|
||||
else:
|
||||
dnaList = dnaType
|
||||
if saveDNA:
|
||||
|
|
@ -169,14 +169,14 @@ def createLocalNPC(npcId):
|
|||
if npcId not in NPCToonDict:
|
||||
return None
|
||||
desc = NPCToonDict[npcId]
|
||||
canonicalZoneId, name, dnaType, gender, protected, type = desc
|
||||
canonicalZoneId, name, dnaType, eyelashes, protected, type = desc
|
||||
npc = Toon.Toon()
|
||||
npc.setName(name)
|
||||
npc.setPickable(0)
|
||||
npc.setPlayerType(NametagGroup.CCNonPlayer)
|
||||
dna = ToonDNA.ToonDNA()
|
||||
if dnaType == 'r':
|
||||
dnaList = getRandomDNA(npcId, gender)
|
||||
dnaList = getRandomDNA(npcId, eyelashes)
|
||||
else:
|
||||
dnaList = dnaType
|
||||
dna.newToonFromProperties(*dnaList)
|
||||
|
|
|
|||
|
|
@ -10,11 +10,10 @@ class TailorClothesGUI(ClothesGUI.ClothesGUI):
|
|||
|
||||
def setupScrollInterface(self):
|
||||
self.dna = self.toon.getStyle()
|
||||
gender = self.dna.getGender()
|
||||
if self.swapEvent != None:
|
||||
self.tops = ToonDNA.getTops(gender, tailorId=self.tailorId)
|
||||
self.bottoms = ToonDNA.getBottoms(gender, tailorId=self.tailorId)
|
||||
self.gender = gender
|
||||
self.tops = ToonDNA.getTops(tailorId=self.tailorId)
|
||||
self.bottoms = ToonDNA.getBottoms(tailorId=self.tailorId)
|
||||
|
||||
self.topChoice = -1
|
||||
self.bottomChoice = -1
|
||||
self.setupButtons()
|
||||
|
|
|
|||
|
|
@ -610,7 +610,7 @@ class Toon(Avatar.Avatar, ToonHead):
|
|||
return
|
||||
|
||||
def updateToonDNA(self, newDNA, fForce = 0):
|
||||
self.style.gender = newDNA.getGender()
|
||||
self.style.eyelashes = newDNA.getEyelashes()
|
||||
oldDNA = self.style
|
||||
if fForce or newDNA.head != oldDNA.head:
|
||||
self.swapToonHead(newDNA.head)
|
||||
|
|
|
|||
|
|
@ -358,7 +358,6 @@ GirlShirts = [(0, 0),
|
|||
(22, 0)]
|
||||
|
||||
|
||||
=
|
||||
|
||||
def isValidBoyShirt(index):
|
||||
for pair in BoyShirts:
|
||||
|
|
@ -1348,7 +1347,7 @@ def getRandomGirlBottomAndColor(type):
|
|||
return (style[0], random.choice(style[1]))
|
||||
|
||||
|
||||
def getRandomizedTops(gender, tailorId = MAKE_A_TOON, generator = None):
|
||||
def getRandomizedTops(tailorId = MAKE_A_TOON, generator = None):
|
||||
if generator == None:
|
||||
generator = random
|
||||
collection = TailorCollections[tailorId]
|
||||
|
|
@ -1367,7 +1366,7 @@ def getRandomizedTops(gender, tailorId = MAKE_A_TOON, generator = None):
|
|||
return tops
|
||||
|
||||
|
||||
def getRandomizedBottoms(gender, tailorId = MAKE_A_TOON, generator = None):
|
||||
def getRandomizedBottoms(tailorId = MAKE_A_TOON, generator = None):
|
||||
if generator == None:
|
||||
generator = random
|
||||
collection = TailorCollections[tailorId]
|
||||
|
|
@ -1384,7 +1383,7 @@ def getRandomizedBottoms(gender, tailorId = MAKE_A_TOON, generator = None):
|
|||
return bottoms
|
||||
|
||||
|
||||
def getTops(gender, tailorId = MAKE_A_TOON):
|
||||
def getTops(tailorId = MAKE_A_TOON):
|
||||
collection = TailorCollections[tailorId][SHIRTS]
|
||||
tops = []
|
||||
for style in collection:
|
||||
|
|
@ -1397,11 +1396,10 @@ def getTops(gender, tailorId = MAKE_A_TOON):
|
|||
return tops
|
||||
|
||||
|
||||
def getAllTops(gender):
|
||||
def getAllTops():
|
||||
tops = []
|
||||
for style in list(ShirtStyles.keys()):
|
||||
if gender == 'm':
|
||||
if style[0] == 'g' or style[:3] == 'c_g':
|
||||
if style[0] == 'g' or style[:3] == 'c_g':
|
||||
continue
|
||||
elif style[0] == 'b' or style[:3] == 'c_b':
|
||||
continue
|
||||
|
|
@ -1414,7 +1412,7 @@ def getAllTops(gender):
|
|||
return tops
|
||||
|
||||
|
||||
def getBottoms(gender, tailorId = MAKE_A_TOON):
|
||||
def getBottoms(tailorId = MAKE_A_TOON):
|
||||
collection = TailorCollections[tailorId][BOTTOMS]
|
||||
bottoms = []
|
||||
for style in collection:
|
||||
|
|
@ -1424,7 +1422,7 @@ def getBottoms(gender, tailorId = MAKE_A_TOON):
|
|||
return bottoms
|
||||
|
||||
|
||||
def getAllBottoms(gender, output = 'both'):
|
||||
def getAllBottoms(output = 'both'):
|
||||
bottoms = []
|
||||
for style in list(BottomStyles.keys()):
|
||||
|
||||
|
|
@ -2146,7 +2144,7 @@ class ToonDNA(AvatarDNA.AvatarDNA):
|
|||
self.botTex = defn[0]
|
||||
self.botTexColor = defn[1][colorIndex]
|
||||
|
||||
def newToonRandom(self, seed = None, eyelashes = 'm', npc = 0, stage = None):
|
||||
def newToonRandom(self, seed = None, eyelashes = 0, npc = 0, stage = None):
|
||||
if seed:
|
||||
generator = random.Random()
|
||||
generator.seed(seed)
|
||||
|
|
@ -2157,7 +2155,7 @@ class ToonDNA(AvatarDNA.AvatarDNA):
|
|||
'l',
|
||||
'l',
|
||||
'l'])
|
||||
self.gender = gender
|
||||
self.eyelashes = eyelashes
|
||||
if not npc:
|
||||
if stage == MAKE_A_TOON:
|
||||
if not base.cr.isPaid():
|
||||
|
|
@ -2270,8 +2268,10 @@ class ToonDNA(AvatarDNA.AvatarDNA):
|
|||
else:
|
||||
notify.error('unknown leg size: ', self.legs)
|
||||
|
||||
def getGender(self):
|
||||
return self.gender
|
||||
|
||||
|
||||
def getEyelashes(self):
|
||||
return self.eyelashes
|
||||
|
||||
def getClothes(self):
|
||||
if len(self.torso) == 1:
|
||||
|
|
|
|||
|
|
@ -736,7 +736,7 @@ class ToonHead(Actor.Actor):
|
|||
return reachedTarget
|
||||
|
||||
def setupEyelashes(self, style):
|
||||
if style.getGender() == 'm':
|
||||
if style.getEyelashes():
|
||||
if self.__eyelashOpen:
|
||||
self.__eyelashOpen.removeNode()
|
||||
self.__eyelashOpen = None
|
||||
|
|
|
|||
|
|
@ -129,7 +129,6 @@ NSnameResult = (0.09, 0.084, 0.084)
|
|||
NSnameLabel = 0.1
|
||||
NStypeNotification = 0.08
|
||||
NScolorPrecede = True
|
||||
MATenterGenderShop = 0.18
|
||||
MATenterBodyShop = 0.18
|
||||
MATenterColorShop = 0.18
|
||||
MATenterClothesShop = 0.16
|
||||
|
|
|
|||
Loading…
Reference in New Issue