mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 19:52:37 -06:00
DANIEL: Friends cleanup
This commit is contained in:
parent
4f9190418c
commit
338d83a907
20 changed files with 149 additions and 258 deletions
7
dependencies/astron/dclass/stride.dc
vendored
7
dependencies/astron/dclass/stride.dc
vendored
|
@ -150,7 +150,7 @@ dclass DistributedPlayer : DistributedAvatar {
|
|||
setSystemMessage(DoId aboutId, string(0-256) chatString) ownrecv;
|
||||
setSC(uint16 msgIndex) broadcast ownsend airecv;
|
||||
setSCCustom(uint16 msgIndex) broadcast ownsend airecv;
|
||||
setFriendsList(FriendEntry[] = []) ownrecv required db airecv;
|
||||
setFriendsList(uint32[] = []) ownrecv required db airecv;
|
||||
setDISLid(uint32 = 0) broadcast ownrecv ram db airecv required;
|
||||
WishName(string = "") db ram;
|
||||
WishNameState(string = "OPEN") db ram;
|
||||
|
@ -630,8 +630,8 @@ dclass DistributedToon : DistributedPlayer {
|
|||
takeDamage(uint16) broadcast ownrecv;
|
||||
setBattleId(uint32 = 0) required broadcast ram;
|
||||
setExperience(blob = [0*14]) required broadcast db;
|
||||
setIgnored(uint32[]) required clsend airecv ownrecv db;
|
||||
setReported(uint32[]) required ownrecv db;
|
||||
setIgnored(uint32[] = []) required clsend airecv ownrecv db;
|
||||
setReported(uint32[] = []) required ownrecv db;
|
||||
setMaxCarry(uint8 = 20) required ownrecv db;
|
||||
setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db;
|
||||
setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db;
|
||||
|
@ -798,6 +798,7 @@ dclass DistributedToon : DistributedPlayer {
|
|||
setBuffs(uint32[] = []) required ownrecv db;
|
||||
setRedeemedCodes(string [] = []) required ownrecv db;
|
||||
setEmblems(uint32[] = [0, 0]) required ownrecv db;
|
||||
setTrueFriends(uint32[] = []) required clsend ownrecv db;
|
||||
};
|
||||
|
||||
dclass DistributedPartyGate : DistributedObject {
|
||||
|
|
|
@ -144,7 +144,7 @@ class Avatar(Actor, ShadowCaster):
|
|||
elif self.playerType not in (NametagGlobals.CCNormal, NametagGlobals.CCSpeedChat):
|
||||
self.understandable = 1
|
||||
self.setPlayerType(NametagGlobals.CCNonPlayer)
|
||||
elif settings['trueFriends'] and base.cr.getFriendFlags(self.doId) & OTPGlobals.FriendChat:
|
||||
elif settings['trueFriends'] and base.localAvatar.isTrueFriends(self.doId):
|
||||
self.understandable = 2
|
||||
self.setPlayerType(NametagGlobals.CCNormal)
|
||||
elif settings['speedchatPlus']:
|
||||
|
|
|
@ -105,15 +105,11 @@ class DistributedPlayerAI(DistributedAvatarAI.DistributedAvatarAI, PlayerBase.Pl
|
|||
def getAdminAccess(self):
|
||||
return self.adminAccess
|
||||
|
||||
def extendFriendsList(self, friendId, friendCode):
|
||||
for i in xrange(len(self.friendsList)):
|
||||
friendPair = self.friendsList[i]
|
||||
if friendPair[0] == friendId:
|
||||
self.friendsList[i] = (friendId, friendCode)
|
||||
def extendFriendsList(self, friendId):
|
||||
if friendId in self.friendsList:
|
||||
return
|
||||
|
||||
self.friendsList.append((friendId, friendCode))
|
||||
|
||||
self.friendsList.append(friendId)
|
||||
|
||||
@magicWord(category=CATEGORY_SYSTEM_ADMINISTRATOR, types=[str])
|
||||
def system(message):
|
||||
|
|
|
@ -1252,9 +1252,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
|
||||
@exceptionLogged(append=False)
|
||||
def handleDatagram(self, di):
|
||||
if self.notify.getDebug():
|
||||
print 'ClientRepository received datagram:'
|
||||
di.getDatagram().dumpHex(ostream)
|
||||
msgType = self.getMsgType()
|
||||
if msgType == 65535:
|
||||
self.lostConnection()
|
||||
|
@ -1266,9 +1263,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
self.considerHeartbeat()
|
||||
return
|
||||
|
||||
def askAvatarKnown(self, avId):
|
||||
return 0
|
||||
|
||||
def queueRequestAvatarInfo(self, avId):
|
||||
pass
|
||||
|
||||
|
@ -1277,11 +1271,8 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
|
||||
def identifyAvatar(self, doId):
|
||||
info = self.doId2do.get(doId)
|
||||
if info:
|
||||
return info
|
||||
else:
|
||||
info = self.identifyFriend(doId)
|
||||
return info
|
||||
|
||||
return info if info else self.identifyFriend(doId)
|
||||
|
||||
def sendDisconnect(self):
|
||||
if self.isConnected():
|
||||
|
|
|
@ -95,8 +95,8 @@ class FriendManagerAI(DistributedObjectAI):
|
|||
del self.requests[context]
|
||||
return
|
||||
|
||||
requested.extendFriendsList(requester.getDoId(), 0)
|
||||
requester.extendFriendsList(requested.getDoId(), 0)
|
||||
requested.extendFriendsList(requester.getDoId())
|
||||
requester.extendFriendsList(requested.getDoId())
|
||||
|
||||
requested.d_setFriendsList(requested.getFriendsList())
|
||||
requester.d_setFriendsList(requester.getFriendsList())
|
||||
|
|
|
@ -18,8 +18,6 @@ AICollisionPriority = 10
|
|||
AICollMovePriority = 8
|
||||
MaxFriends = 200
|
||||
MaxBackCatalog = 48
|
||||
FriendChat = 1
|
||||
SuperChat = 2
|
||||
MaxCustomMessages = 25
|
||||
SPInvalid = 0
|
||||
SPHidden = 1
|
||||
|
|
|
@ -101,8 +101,8 @@ class TTChatInputWhiteList(ChatInputWhiteListFrame):
|
|||
|
||||
def sendChatByData(self, text):
|
||||
if self.trueFriendChat:
|
||||
for friendId, flags in base.localAvatar.friendsList:
|
||||
if flags & ToontownGlobals.FriendChat:
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
if base.localAvatar.isTrueFriends(friendId):
|
||||
self.sendWhisperByFriend(friendId, text)
|
||||
elif self.receiverId:
|
||||
base.talkAssistant.sendWhisperTalk(text, self.receiverId)
|
||||
|
|
|
@ -628,28 +628,12 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
return 0
|
||||
|
||||
def isFriend(self, doId):
|
||||
for friendId, flags in base.localAvatar.friendsList:
|
||||
if friendId == doId:
|
||||
if doId in base.localAvatar.friendsList:
|
||||
self.identifyFriend(doId)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
def isAvatarFriend(self, doId):
|
||||
for friendId, flags in base.localAvatar.friendsList:
|
||||
if friendId == doId:
|
||||
self.identifyFriend(doId)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
def getFriendFlags(self, doId):
|
||||
for friendId, flags in base.localAvatar.friendsList:
|
||||
if friendId == doId:
|
||||
return flags
|
||||
|
||||
return 0
|
||||
|
||||
def isFriendOnline(self, doId):
|
||||
return doId in self.friendsOnline
|
||||
|
||||
|
@ -694,7 +678,7 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
return self.identifyFriend(doId)
|
||||
|
||||
def isFriendsMapComplete(self):
|
||||
for friendId, flags in base.localAvatar.friendsList:
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
if self.identifyFriend(friendId) == None:
|
||||
return 0
|
||||
|
||||
|
@ -749,7 +733,6 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
PetDetail.PetDetail(doId, petDetailsCallback)
|
||||
|
||||
def handleGetFriendsList(self, resp):
|
||||
print len(resp)
|
||||
for toon in resp:
|
||||
doId = toon[0]
|
||||
name = toon[1]
|
||||
|
@ -980,15 +963,6 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
if obj.parentId == localAvatar.defaultShard and obj is not localAvatar:
|
||||
self.deleteObject(doId)
|
||||
|
||||
def askAvatarKnown(self, avId):
|
||||
if not hasattr(base, 'localAvatar'):
|
||||
return 0
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
if friendPair[0] == avId:
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
def requestAvatarInfo(self, avId):
|
||||
if avId == 0:
|
||||
return
|
||||
|
|
|
@ -105,15 +105,11 @@ class ToonStatueSelectionGUI(DirectFrame):
|
|||
newFF = (familyMember.id, familyMember.name, NametagGlobals.CCNonPlayer)
|
||||
self.ffList.append(newFF)
|
||||
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
friendId, flags = friendPair
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
handle = base.cr.identifyFriend(friendId)
|
||||
if handle and not self.checkFamily(friendId):
|
||||
if hasattr(handle, 'getName'):
|
||||
colorCode = NametagGlobals.CCSpeedChat
|
||||
if flags & ToontownGlobals.FriendChat:
|
||||
colorCode = NametagGlobals.CCNormal
|
||||
newFF = (friendPair[0], handle.getName(), colorCode)
|
||||
newFF = (friendId, handle.getName(), NametagGlobals.getFriendColor(friendId))
|
||||
self.ffList.append(newFF)
|
||||
else:
|
||||
self.notify.warning('Bad Handle for getName in makeFFlist')
|
||||
|
|
|
@ -62,6 +62,6 @@ class FriendHandle:
|
|||
def isUnderstandable(self):
|
||||
if settings['speedchatPlus']:
|
||||
return 1
|
||||
elif settings['trueFriends'] and base.cr.getFriendFlags(self.doId) & ToontownGlobals.FriendChat:
|
||||
elif settings['trueFriends'] and base.localAvatar.isTrueFriends(self.doId):
|
||||
return 1
|
||||
return 0
|
||||
|
|
|
@ -5,19 +5,17 @@ from direct.fsm import StateData
|
|||
from toontown.toon import ToonAvatarPanel
|
||||
from toontown.toonbase import ToontownGlobals
|
||||
from toontown.toonbase import TTLocalizer
|
||||
from toontown.nametag.NametagGlobals import *
|
||||
from otp.otpbase import OTPGlobals
|
||||
FLPPets = 1
|
||||
FLPOnline = 2
|
||||
FLPAll = 3
|
||||
globalFriendsList = None
|
||||
|
||||
def determineFriendName(friendTuple):
|
||||
if len(friendTuple) < 0:
|
||||
return None
|
||||
|
||||
handle = base.cr.identifyFriend(friendTuple[0])
|
||||
return handle.getName() if handle else None
|
||||
def determineFriendName(friendId):
|
||||
handle = base.cr.identifyFriend(friendId)
|
||||
|
||||
return handle.getName() if handle else ''
|
||||
|
||||
def compareFriends(f1, f2):
|
||||
name1 = determineFriendName(f1)
|
||||
|
@ -29,7 +27,6 @@ def compareFriends(f1, f2):
|
|||
else:
|
||||
return -1
|
||||
|
||||
|
||||
def showFriendsList():
|
||||
global globalFriendsList
|
||||
if globalFriendsList == None:
|
||||
|
@ -37,13 +34,11 @@ def showFriendsList():
|
|||
globalFriendsList.enter()
|
||||
return
|
||||
|
||||
|
||||
def hideFriendsList():
|
||||
if globalFriendsList != None:
|
||||
globalFriendsList.exit()
|
||||
return
|
||||
|
||||
|
||||
def showFriendsListTutorial():
|
||||
global globalFriendsList
|
||||
if globalFriendsList == None:
|
||||
|
@ -53,7 +48,6 @@ def showFriendsListTutorial():
|
|||
globalFriendsList.close['command'] = None
|
||||
return
|
||||
|
||||
|
||||
def hideFriendsListTutorial():
|
||||
if globalFriendsList != None:
|
||||
if hasattr(globalFriendsList, 'closeCommand'):
|
||||
|
@ -61,13 +55,11 @@ def hideFriendsListTutorial():
|
|||
globalFriendsList.exit()
|
||||
return
|
||||
|
||||
|
||||
def isFriendsListShown():
|
||||
if globalFriendsList != None:
|
||||
return globalFriendsList.isEntered
|
||||
return 0
|
||||
|
||||
|
||||
def unloadFriendsList():
|
||||
global globalFriendsList
|
||||
if globalFriendsList != None:
|
||||
|
@ -75,7 +67,6 @@ def unloadFriendsList():
|
|||
globalFriendsList = None
|
||||
return
|
||||
|
||||
|
||||
class FriendsListPanel(DirectFrame, StateData.StateData):
|
||||
|
||||
def __init__(self):
|
||||
|
@ -156,32 +147,14 @@ class FriendsListPanel(DirectFrame, StateData.StateData):
|
|||
DirectFrame.destroy(self)
|
||||
return None
|
||||
|
||||
def makeFriendButton(self, friendTuple, colorChoice = None, bold = 0):
|
||||
avId, flags = friendTuple
|
||||
command = self.__choseFriend
|
||||
def makeFriendButton(self, avId, color):
|
||||
handle = base.cr.identifyFriend(avId)
|
||||
if handle:
|
||||
toonName = handle.getName()
|
||||
else:
|
||||
|
||||
if not handle:
|
||||
base.cr.fillUpFriendsMap()
|
||||
return
|
||||
fg = ToontownGlobals.ColorNoChat
|
||||
if flags & ToontownGlobals.FriendChat:
|
||||
fg = ToontownGlobals.ColorAvatar
|
||||
if colorChoice:
|
||||
fg = colorChoice
|
||||
fontChoice = ToontownGlobals.getToonFont()
|
||||
fontScale = 0.04
|
||||
bg = None
|
||||
if colorChoice and bold:
|
||||
fontScale = 0.04
|
||||
colorS = 0.7
|
||||
bg = (colorChoice[0] * colorS,
|
||||
colorChoice[1] * colorS,
|
||||
colorChoice[2] * colorS,
|
||||
colorChoice[3])
|
||||
db = DirectButton(relief=None, text=toonName, text_scale=fontScale, text_align=TextNode.ALeft, text_fg=fg, text_shadow=bg, text1_bg=self.textDownColor, text2_bg=self.textRolloverColor, text3_fg=self.textDisabledColor, text_font=fontChoice, textMayChange=0, command=command, extraArgs=[avId])
|
||||
return db
|
||||
|
||||
return DirectButton(relief=None, text=handle.getName(), text_scale=0.04, text_align=TextNode.ALeft, text_fg=color, text_shadow=None, text1_bg=self.textDownColor, text2_bg=self.textRolloverColor, text3_fg=self.textDisabledColor, text_font=ToontownGlobals.getToonFont(), textMayChange=0, command=self.__choseFriend, extraArgs=[avId])
|
||||
|
||||
def enter(self):
|
||||
if self.isEntered == 1:
|
||||
|
@ -251,109 +224,47 @@ class FriendsListPanel(DirectFrame, StateData.StateData):
|
|||
if handle != None:
|
||||
messenger.send('clickedNametag', [handle])
|
||||
|
||||
def createButtons(self, avIds, nametag):
|
||||
avIds.sort(compareFriends)
|
||||
|
||||
for avId in avIds:
|
||||
if avId not in self.friends:
|
||||
button = self.makeFriendButton(avId, nametag)
|
||||
|
||||
if button:
|
||||
self.scrollList.addItem(button, refresh=0)
|
||||
self.friends[avId] = button
|
||||
|
||||
def __updateScrollList(self):
|
||||
newFriends = []
|
||||
petFriends = []
|
||||
freeChatOneRef = []
|
||||
speedChatOneRef = []
|
||||
freeChatDouble = []
|
||||
speedChatDouble = []
|
||||
offlineFriends = []
|
||||
if self.panelType == FLPAll:
|
||||
if True:
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
if base.cr.isFriendOnline(friendPair[0]):
|
||||
if friendPair[1] & ToontownGlobals.FriendChat:
|
||||
freeChatOneRef.insert(0, (friendPair[0],
|
||||
friendPair[1]))
|
||||
else:
|
||||
speedChatOneRef.insert(0, (friendPair[0],
|
||||
friendPair[1]))
|
||||
elif friendPair[1] & ToontownGlobals.FriendChat:
|
||||
freeChatOneRef.insert(0, (friendPair[0],
|
||||
friendPair[1]))
|
||||
else:
|
||||
speedChatOneRef.insert(0, (friendPair[0],
|
||||
friendPair[1]))
|
||||
|
||||
if self.panelType == FLPOnline:
|
||||
if True:
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
if base.cr.isFriendOnline(friendPair[0]):
|
||||
offlineFriends.append((friendPair[0],
|
||||
friendPair[1]))
|
||||
|
||||
if self.panelType == FLPPets:
|
||||
for objId, obj in base.cr.doId2do.items():
|
||||
from toontown.pets import DistributedPet
|
||||
if isinstance(obj, DistributedPet.DistributedPet):
|
||||
friendPair = (objId, 0)
|
||||
petFriends.append(friendPair)
|
||||
trueFriends = []
|
||||
friends = []
|
||||
|
||||
if self.panelType == FLPAll or self.panelType == FLPOnline:
|
||||
if base.wantPets and base.localAvatar.hasPet():
|
||||
petFriends.insert(0, (base.localAvatar.getPetId(), 0))
|
||||
for friendPair in self.friends.keys():
|
||||
friendButton = self.friends[friendPair]
|
||||
petFriends.insert(0, base.localAvatar.getPetId())
|
||||
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
if self.panelType != FLPOnline or base.cr.isFriendOnline(friendId):
|
||||
if base.localAvatar.isTrueFriends(friendId):
|
||||
trueFriends.insert(0, friendId)
|
||||
else:
|
||||
friends.insert(0, friendId)
|
||||
elif self.panelType == FLPPets and base.wantPets:
|
||||
for avId, av in base.cr.doId2do.items():
|
||||
from toontown.pets import DistributedPet
|
||||
if isinstance(av, DistributedPet.DistributedPet):
|
||||
petFriends.append(avId)
|
||||
|
||||
for friendId in self.friends.keys():
|
||||
friendButton = self.friends[friendId]
|
||||
self.scrollList.removeItem(friendButton, refresh=0)
|
||||
friendButton.destroy()
|
||||
del self.friends[friendPair]
|
||||
del self.friends[friendId]
|
||||
|
||||
newFriends.sort(compareFriends)
|
||||
petFriends.sort(compareFriends)
|
||||
freeChatOneRef.sort(compareFriends)
|
||||
speedChatOneRef.sort(compareFriends)
|
||||
freeChatDouble.sort(compareFriends)
|
||||
speedChatDouble.sort(compareFriends)
|
||||
offlineFriends.sort(compareFriends)
|
||||
for friendPair in newFriends:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in petFriends:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorNoChat, 0)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in freeChatDouble:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorFreeChat, 1)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in freeChatOneRef:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorFreeChat, 0)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in speedChatDouble:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorSpeedChat, 1)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in speedChatOneRef:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorSpeedChat, 0)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
for friendPair in offlineFriends:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair, ToontownGlobals.ColorNoChat, 0)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton, refresh=0)
|
||||
self.friends[friendPair] = friendButton
|
||||
self.createButtons(petFriends, NametagColors[CCNonPlayer][0][0])
|
||||
self.createButtons(trueFriends, NametagColors[CCNormal][0][0])
|
||||
self.createButtons(friends, NametagColors[CCSpeedChat][0][0])
|
||||
|
||||
self.scrollList.index = self.listScrollIndex[self.panelType]
|
||||
self.scrollList.refresh()
|
||||
|
|
|
@ -57,14 +57,15 @@ class FriendsListOperation(OperationFSM):
|
|||
self.friendIndex = 0
|
||||
self.realFriendsList = []
|
||||
|
||||
self.air.dbInterface.queryObject(self.air.dbId, self.friendsList[0][0],
|
||||
self.air.dbInterface.queryObject(self.air.dbId, self.friendsList[0],
|
||||
self.addFriend)
|
||||
|
||||
def addFriend(self, dclass, fields):
|
||||
if dclass != self.air.dclassesByName['DistributedToonUD']:
|
||||
self.demand('Error', 'Friend was not a Toon')
|
||||
return
|
||||
friendId = self.friendsList[self.friendIndex][0]
|
||||
friendId = self.friendsList[self.friendIndex]
|
||||
|
||||
self.realFriendsList.append([friendId, fields['setName'][0],
|
||||
fields['setDNAString'][0], fields['setPetId'][0]])
|
||||
|
||||
|
@ -75,7 +76,7 @@ class FriendsListOperation(OperationFSM):
|
|||
|
||||
self.friendIndex += 1
|
||||
self.air.dbInterface.queryObject(self.air.dbId,
|
||||
self.friendsList[self.friendIndex][0], self.addFriend)
|
||||
self.friendsList[self.friendIndex], self.addFriend)
|
||||
|
||||
|
||||
# -- Remove Friends --
|
||||
|
@ -97,15 +98,11 @@ class RemoveFriendOperation(OperationFSM):
|
|||
self.demand('Retrieved', fields['setFriendsList'][0])
|
||||
|
||||
def enterRetrieved(self, friendsList):
|
||||
newList = []
|
||||
for i in xrange(len(friendsList)):
|
||||
if friendsList[i][0] == self.target:
|
||||
continue
|
||||
newList.append(friendsList[i])
|
||||
friendsList.remove(self.target)
|
||||
if self.sender in self.mgr.onlineToons:
|
||||
dg = self.air.dclassesByName['DistributedToonUD'].aiFormatUpdate(
|
||||
'setFriendsList', self.sender, self.sender,
|
||||
self.air.ourChannel, [newList])
|
||||
self.air.ourChannel, [friendsList])
|
||||
self.air.send(dg)
|
||||
if self.alert:
|
||||
dg = self.air.dclassesByName['DistributedToonUD'].aiFormatUpdate(
|
||||
|
@ -117,7 +114,7 @@ class RemoveFriendOperation(OperationFSM):
|
|||
|
||||
self.air.dbInterface.updateObject(self.air.dbId, self.sender,
|
||||
self.air.dclassesByName['DistributedToonUD'],
|
||||
{'setFriendsList' : [newList]})
|
||||
{'setFriendsList' : [friendsList]})
|
||||
self.demand('Off')
|
||||
|
||||
|
||||
|
@ -142,12 +139,10 @@ class FriendDetailsOperation(OperationFSM):
|
|||
def enterRetrieved(self, friendsList):
|
||||
self.currId = 0
|
||||
for id in self.friendIds:
|
||||
for friend in friendsList:
|
||||
if friend[0] == id:
|
||||
if id in friendsList:
|
||||
self.currId = id
|
||||
self.air.dbInterface.queryObject(self.air.dbId, id,
|
||||
self.handleFriend)
|
||||
break
|
||||
self.demand('Off')
|
||||
|
||||
def handleFriend(self, dclass, fields):
|
||||
|
@ -177,7 +172,7 @@ class ClearListOperation(OperationFSM):
|
|||
|
||||
def enterRetrieved(self, friendsList):
|
||||
for friend in friendsList:
|
||||
newOperation = RemoveFriendOperation(self.mgr, self.air, friend[0],
|
||||
newOperation = RemoveFriendOperation(self.mgr, self.air, friend,
|
||||
targetAvId=self.sender, alert=True)
|
||||
self.mgr.operations.append(newOperation)
|
||||
newOperation.demand('Start')
|
||||
|
@ -274,6 +269,7 @@ class TTSFriendsManagerUD(DistributedObjectGlobalUD):
|
|||
|
||||
# -- Toon Online/Offline --
|
||||
def toonOnline(self, doId, friendsList):
|
||||
if not doId in self.onlineToons:
|
||||
self.onlineToons.append(doId)
|
||||
|
||||
channel = self.GetPuppetConnectionChannel(doId)
|
||||
|
@ -284,10 +280,9 @@ class TTSFriendsManagerUD(DistributedObjectGlobalUD):
|
|||
self.air.send(dg)
|
||||
|
||||
for friend in friendsList:
|
||||
friendId = friend[0]
|
||||
if friend[0] in self.onlineToons:
|
||||
self.sendUpdateToAvatarId(doId, 'friendOnline', [friendId])
|
||||
self.sendUpdateToAvatarId(friendId, 'friendOnline', [doId])
|
||||
self.sendUpdateToAvatarId(doId, 'friendOnline', [friend[0]])
|
||||
self.sendUpdateToAvatarId(friend[0], 'friendOnline', [doId])
|
||||
|
||||
def goingOffline(self, avId):
|
||||
self.toonOffline(avId)
|
||||
|
@ -299,8 +294,7 @@ class TTSFriendsManagerUD(DistributedObjectGlobalUD):
|
|||
if dclass != self.air.dclassesByName['DistributedToonUD']:
|
||||
return
|
||||
friendsList = fields['setFriendsList'][0]
|
||||
for friend in friendsList:
|
||||
friendId = friend[0]
|
||||
for friendId in friendsList:
|
||||
if friendId in self.onlineToons:
|
||||
self.sendUpdateToAvatarId(friendId, 'friendOffline', [doId])
|
||||
if doId in self.onlineToons:
|
||||
|
|
|
@ -134,7 +134,7 @@ def getModelWidthHeight(model):
|
|||
return (width, height)
|
||||
|
||||
def getFriendColor(id):
|
||||
return CCNormal if settings['trueFriends'] and base.cr.getFriendFlags(id) & OTPGlobals.FriendChat else CCNormal
|
||||
return CCNormal if settings['trueFriends'] and base.localAvatar.isTrueFriends(id) else CCNormal
|
||||
|
||||
# Foreground, background:
|
||||
NametagColors = {
|
||||
|
|
|
@ -12,7 +12,6 @@ from pandac.PandaModules import Vec3, Vec4, Point3, TextNode, VBase4
|
|||
|
||||
from otp.otpbase import OTPGlobals
|
||||
from otp.otpbase import OTPLocalizer
|
||||
from toontown.friends.FriendsListPanel import determineFriendName
|
||||
from toontown.nametag.Nametag import Nametag
|
||||
from toontown.nametag.NametagFloat2d import *
|
||||
from toontown.nametag import NametagGlobals
|
||||
|
@ -462,8 +461,8 @@ class PartyPlanner(DirectFrame, FSM):
|
|||
self.noFriends = True
|
||||
else:
|
||||
self.noFriends = False
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
self.friendList.addFriend(determineFriendName(friendPair), friendPair[0])
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
self.friendList.addFriend(friendId)
|
||||
|
||||
self.friendList.scrollTo(0)
|
||||
pos = self.gui.find('**/step_04_partyWillBe_locator').getPos()
|
||||
|
|
|
@ -2,6 +2,7 @@ from direct.gui.DirectGui import DirectFrame, DirectButton, DirectLabel
|
|||
from direct.gui.DirectGui import DirectScrolledList, DirectCheckButton
|
||||
from direct.gui.DirectCheckBox import DirectCheckBox
|
||||
from direct.gui import DirectGuiGlobals
|
||||
from toontown.friends.FriendsListPanel import determineFriendName
|
||||
from toontown.toonbase import ToontownGlobals
|
||||
from pandac.PandaModules import Vec3, Vec4, PlaneNode, Plane, Point3, TextNode, VBase4, NodePath
|
||||
|
||||
|
@ -22,7 +23,9 @@ class ScrolledFriendList(DirectScrolledList):
|
|||
def scrollButtonPressed(self):
|
||||
pass
|
||||
|
||||
def addFriend(self, name, id):
|
||||
def addFriend(self, id):
|
||||
name = determineFriendName(id)
|
||||
|
||||
if self.makeItemsCheckBoxes:
|
||||
checkedImage = self.gui.find('**/inviteButtonChecked')
|
||||
uncheckedImage = self.gui.find('**/inviteButtonUnchecked')
|
||||
|
|
|
@ -23,8 +23,7 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
|||
return (TTLocalizer.AvatarPanelIgnore, self.handleIgnore, IGNORE_SCALE)
|
||||
|
||||
def handleIgnore(self):
|
||||
isAvatarFriend = base.cr.isFriend(self.avatar.doId)
|
||||
if isAvatarFriend:
|
||||
if base.cr.isFriend(self.avatar.doId):
|
||||
self.dialog = TTDialog.TTGlobalDialog(
|
||||
style=TTDialog.CancelOnly,
|
||||
text=TTLocalizer.IgnorePanelAddFriendAvatar % self.avName,
|
||||
|
|
|
@ -182,6 +182,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
|||
self.redeemedCodes = []
|
||||
self.ignored = []
|
||||
self.reported = []
|
||||
self.trueFriends = []
|
||||
|
||||
def disable(self):
|
||||
for soundSequence in self.soundSequenceList:
|
||||
|
@ -2520,6 +2521,19 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
|||
if not self.isReported(doId):
|
||||
self.reported.append(doId)
|
||||
|
||||
def b_setTrueFriends(self, trueFriends):
|
||||
self.setTrueFriends(trueFriends)
|
||||
self.d_setTrueFriends(trueFriends)
|
||||
|
||||
def setTrueFriends(self, trueFriends):
|
||||
self.trueFriends = trueFriends
|
||||
|
||||
def d_setTrueFriends(self, trueFriends):
|
||||
self.sendUpdate('setTrueFriends', [trueFriends])
|
||||
|
||||
def isTrueFriends(self, doId):
|
||||
return doId in self.trueFriends
|
||||
|
||||
def applyBuffs(self):
|
||||
for id, timestamp in enumerate(self.buffs):
|
||||
if id == ToontownGlobals.BMovementSpeed:
|
||||
|
|
|
@ -160,6 +160,8 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
|||
self.redeemedCodes = []
|
||||
self.ignored = []
|
||||
self.reported = []
|
||||
self.trueFriends = []
|
||||
self.fishBingoTutorialDone = False
|
||||
|
||||
def generate(self):
|
||||
DistributedPlayerAI.DistributedPlayerAI.generate(self)
|
||||
|
@ -507,14 +509,11 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
|||
def getFriendsList(self):
|
||||
return self.friendsList
|
||||
|
||||
def extendFriendsList(self, friendId, friendCode):
|
||||
for i in xrange(len(self.friendsList)):
|
||||
friendPair = self.friendsList[i]
|
||||
if friendPair[0] == friendId:
|
||||
self.friendsList[i] = (friendId, friendCode)
|
||||
def extendFriendsList(self, friendId):
|
||||
if friendId in self.friendsList:
|
||||
return
|
||||
|
||||
self.friendsList.append((friendId, friendCode))
|
||||
self.friendsList.append(friendId)
|
||||
self.air.questManager.toonMadeFriend(self)
|
||||
|
||||
def d_setMaxNPCFriends(self, max):
|
||||
|
@ -4076,6 +4075,19 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
|||
self.redeemedCodes.remove(code)
|
||||
self.b_setRedeemedCodes(self.redeemedCodes)
|
||||
|
||||
def setTrueFriends(self, trueFriends):
|
||||
self.trueFriends = trueFriends
|
||||
|
||||
def d_setTrueFriends(self, trueFriends):
|
||||
self.sendUpdate('setTrueFriends', [trueFriends])
|
||||
|
||||
def b_setTrueFriends(self, trueFriends):
|
||||
self.setTrueFriends(trueFriends)
|
||||
self.d_setTrueFriends(trueFriends)
|
||||
|
||||
def getTrueFriends(self, trueFriends):
|
||||
return self.trueFriends
|
||||
|
||||
@magicWord(category=CATEGORY_PROGRAMMER, types=[str, int, int])
|
||||
def cheesyEffect(value, hood=0, expire=0):
|
||||
"""
|
||||
|
|
|
@ -525,3 +525,6 @@ class DistributedToonUD(DistributedObjectUD):
|
|||
|
||||
def setRedeemedCodes(self, redeemedCodes):
|
||||
pass
|
||||
|
||||
def setTrueFriends(self, trueFriends):
|
||||
pass
|
|
@ -76,19 +76,21 @@ class TownBattleSOSPanel(DirectFrame, StateData.StateData):
|
|||
DirectFrame.destroy(self)
|
||||
return None
|
||||
|
||||
def makeFriendButton(self, friendPair):
|
||||
friendId, flags = friendPair
|
||||
def makeFriendButton(self, friendId):
|
||||
handle = base.cr.identifyFriend(friendId)
|
||||
if handle == None:
|
||||
|
||||
if not handle:
|
||||
base.cr.fillUpFriendsMap()
|
||||
return
|
||||
|
||||
friendName = handle.getName()
|
||||
fg = Vec4(0.0, 0.0, 0.0, 1.0)
|
||||
|
||||
if handle.isPet():
|
||||
com = self.__chosePet
|
||||
else:
|
||||
com = self.__choseFriend
|
||||
return DirectButton(relief=None, text=friendName, text_scale=0.04, text_align=TextNode.ALeft, text_fg=fg, text1_bg=self.textDownColor, text2_bg=self.textRolloverColor, text3_fg=self.textDisabledColor, command=com, extraArgs=[friendId, friendName])
|
||||
|
||||
return DirectButton(relief=None, text=friendName, text_scale=0.04, text_align=TextNode.ALeft, text_fg=(0.0, 0.0, 0.0, 1.0), text1_bg=self.textDownColor, text2_bg=self.textRolloverColor, text3_fg=self.textDisabledColor, command=com, extraArgs=[friendId, friendName])
|
||||
|
||||
def makeNPCFriendButton(self, NPCFriendId, numCalls):
|
||||
if NPCFriendId not in TTLocalizer.NPCToonNames:
|
||||
|
@ -159,32 +161,30 @@ class TownBattleSOSPanel(DirectFrame, StateData.StateData):
|
|||
self.factoryToonIdList = toonIdList[:]
|
||||
|
||||
def __updateScrollList(self):
|
||||
newFriends = []
|
||||
battlePets = base.config.GetBool('want-pets-in-battle', 1)
|
||||
if base.wantPets and battlePets == 1 and base.localAvatar.hasPet():
|
||||
newFriends.append((base.localAvatar.getPetId(), 0))
|
||||
if not self.bldg or self.factoryToonIdList is not None:
|
||||
for friendPair in base.localAvatar.friendsList:
|
||||
if base.cr.isFriendOnline(friendPair[0]):
|
||||
if self.factoryToonIdList is None or friendPair[0] in self.factoryToonIdList:
|
||||
newFriends.append(friendPair)
|
||||
friends = []
|
||||
|
||||
for friendPair in self.friends.keys():
|
||||
if friendPair not in newFriends:
|
||||
friendButton = self.friends[friendPair]
|
||||
if base.wantPets and config.GetBool('want-pets-in-battle', 1) and base.localAvatar.hasPet():
|
||||
friends.append(base.localAvatar.getPetId())
|
||||
if not self.bldg or self.factoryToonIdList is not None:
|
||||
for friendId in base.localAvatar.friendsList:
|
||||
if base.cr.isFriendOnline(friendId):
|
||||
if self.factoryToonIdList is None or friendId in self.factoryToonIdList:
|
||||
friends.append(friendId)
|
||||
|
||||
for friendId in self.friends.keys():
|
||||
if friendId not in friends:
|
||||
friendButton = self.friends[friendId]
|
||||
self.scrollList.removeItem(friendButton)
|
||||
if not friendButton.isEmpty():
|
||||
friendButton.destroy()
|
||||
del self.friends[friendPair]
|
||||
del self.friends[friendId]
|
||||
|
||||
for friendPair in newFriends:
|
||||
if friendPair not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendPair)
|
||||
for friendId in friends:
|
||||
if friendId not in self.friends:
|
||||
friendButton = self.makeFriendButton(friendId)
|
||||
if friendButton:
|
||||
self.scrollList.addItem(friendButton)
|
||||
self.friends[friendPair] = friendButton
|
||||
|
||||
return
|
||||
self.friends[friendId] = friendButton
|
||||
|
||||
def __updateNPCFriendsPanel(self):
|
||||
self.NPCFriends = {}
|
||||
|
|
Loading…
Reference in a new issue