Start on true friends

This commit is contained in:
DenialMC 2015-04-06 15:48:06 +03:00
parent 11913788e9
commit 4e470c4ee0
14 changed files with 33 additions and 120 deletions

View file

@ -873,6 +873,7 @@ dclass DistributedToon : DistributedPlayer {
takeDamage(uint16) broadcast ownrecv; takeDamage(uint16) broadcast ownrecv;
setBattleId(uint32 = 0) required broadcast ram; setBattleId(uint32 = 0) required broadcast ram;
setExperience(blob = [0*14]) required broadcast db; setExperience(blob = [0*14]) required broadcast db;
setTrueFriends(uint32[]) required ownrecv db;
setMaxCarry(uint8 = 20) required ownrecv db; setMaxCarry(uint8 = 20) required ownrecv db;
setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db; setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db;
setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db; setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db;

View file

@ -90,9 +90,6 @@ class ChatInputTyped(DirectObject.DirectObject):
elif not base.talkAssistant.checkWhisperTypedChatAvatar(self.whisperId): elif not base.talkAssistant.checkWhisperTypedChatAvatar(self.whisperId):
messenger.send('Chat-Failed avatar typed chat test') messenger.send('Chat-Failed avatar typed chat test')
self.deactivate() self.deactivate()
elif not base.talkAssistant.checkOpenTypedChat():
messenger.send('Chat-Failed open typed chat test')
self.deactivate()
def deactivate(self): def deactivate(self):
self.chatEntry.set('') self.chatEntry.set('')

View file

@ -32,7 +32,6 @@ from otp.distributed import OtpDoGlobals
from otp.distributed.OtpDoGlobals import * from otp.distributed.OtpDoGlobals import *
from otp.distributed.TelemetryLimiter import TelemetryLimiter from otp.distributed.TelemetryLimiter import TelemetryLimiter
from otp.login import HTTPUtil from otp.login import HTTPUtil
from otp.login import LoginTTUAccount
from otp.otpbase import OTPGlobals from otp.otpbase import OTPGlobals
from otp.otpbase import OTPLocalizer from otp.otpbase import OTPLocalizer
from otp.otpgui import OTPDialog from otp.otpgui import OTPDialog
@ -46,7 +45,6 @@ class OTPClientRepository(ClientRepositoryBase):
'PendingApproval', 'PendingApproval',
'Approved', 'Approved',
'Rejected']) 'Rejected'])
whiteListChatEnabled = 1 # TODO: Have server set this on localAvatar on login.
def __init__(self, serverVersion, launcher = None, playGame = None): def __init__(self, serverVersion, launcher = None, playGame = None):
ClientRepositoryBase.__init__(self) ClientRepositoryBase.__init__(self)
@ -71,9 +69,6 @@ class OTPClientRepository(ClientRepositoryBase):
else: else:
self.http = HTTPClient() self.http = HTTPClient()
self.loginInterface = LoginTTUAccount.LoginTTUAccount(self)
self.secretChatAllowed = base.config.GetBool('allow-secret-chat', True)
self.openChatAllowed = base.config.GetBool('allow-open-chat', True)
self.userSignature = base.config.GetString('signature', 'none') self.userSignature = base.config.GetString('signature', 'none')
self.__isPaid = 1 self.__isPaid = 1
self.parentMgr.registerParent(OTPGlobals.SPRender, base.render) self.parentMgr.registerParent(OTPGlobals.SPRender, base.render)
@ -1359,19 +1354,6 @@ class OTPClientRepository(ClientRepositoryBase):
def allowFreeNames(self): def allowFreeNames(self):
return base.config.GetInt('allow-free-names', 1) return base.config.GetInt('allow-free-names', 1)
# TODO: Login Server for all those
def allowSecretChat(self):
return self.secretChatAllowed
def allowWhiteListChat(self):
return hasattr(self, 'whiteListChatEnabled') and self.whiteListChatEnabled
def allowAnyTypedChat(self):
return self.allowSecretChat() or self.allowWhiteListChat() or self.allowOpenChat()
def allowOpenChat(self):
return self.openChatAllowed
def getStartingDistrict(self): def getStartingDistrict(self):
district = None district = None
if len(self.activeDistrictMap.keys()) == 0: if len(self.activeDistrictMap.keys()) == 0:

View file

@ -30,7 +30,7 @@ class AvatarFriendInfo(AvatarHandle):
result = True result = True
elif self.openChatEnabledYesNo and base.cr.openChatEnabled: elif self.openChatEnabledYesNo and base.cr.openChatEnabled:
result = True result = True
elif self.wlChatEnabledYesNo and base.cr.whiteListChatEnabled: elif self.wlChatEnabledYesNo and settings['speedchatPlus']:
result = True result = True
except: except:
pass pass

View file

@ -35,7 +35,7 @@ class FriendInfo(AvatarHandle):
result = True result = True
elif self.openChatEnabledYesNo and base.cr.openChatEnabled: elif self.openChatEnabledYesNo and base.cr.openChatEnabled:
result = True result = True
elif self.wlChatEnabledYesNo and base.cr.whiteListChatEnabled: elif self.wlChatEnabledYesNo and settings['speedchatPlus']:
result = True result = True
except: except:
pass pass

View file

@ -14,7 +14,7 @@ BothSecrets = 2
def showFriendSecret(secretType = AvatarSecret): def showFriendSecret(secretType = AvatarSecret):
global globalFriendSecret global globalFriendSecret
if not base.cr.allowSecretChat(): if not settings['trueFriends']:
chatMgr = base.localAvatar.chatMgr chatMgr = base.localAvatar.chatMgr
chatMgr.fsm.request('noSecretChatAtAll') chatMgr.fsm.request('noSecretChatAtAll')
else: else:

View file

@ -1,12 +0,0 @@
class LoginBase:
def __init__(self, cr):
self.cr = cr
def sendLoginMsg(self, loginName, password, createFlag):
pass
def getErrorCode(self):
return 0

View file

@ -1,24 +0,0 @@
from direct.directnotify import DirectNotifyGlobal
import LoginBase
class LoginTTUAccount(LoginBase.LoginBase):
notify = DirectNotifyGlobal.directNotify.newCategory('LoginTTUAccount')
def __init__(self, cr):
LoginBase.LoginBase.__init__(self, cr)
def supportsRelogin(self):
return 1
def authorize(self, username, password):
return 0 # No error!
def sendLoginMsg(self):
cr = self.cr
# TODO
def getErrorCode(self):
return 0
def authenticateDelete(self, loginName, password):
return 1

View file

@ -1,43 +0,0 @@
from direct.gui.DirectGui import *
from pandac.PandaModules import *
from otp.chat import ChatInputNormal
from otp.otpbase import OTPLocalizer
from otp.otpbase import OTPGlobals
class TTChatInputNormal(ChatInputNormal.ChatInputNormal):
def __init__(self, chatMgr):
ChatInputNormal.ChatInputNormal.__init__(self, chatMgr)
gui = loader.loadModel('phase_3.5/models/gui/chat_input_gui')
self.chatFrame = DirectFrame(parent=aspect2dp, image=gui.find('**/Chat_Bx_FNL'), relief=None, pos=(-1.083, 0, 0.804), state=DGG.NORMAL, sortOrder=DGG.FOREGROUND_SORT_INDEX)
self.chatFrame.hide()
self.chatButton = DirectButton(parent=self.chatFrame, image=(gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos=(0.182, 0, -0.088), relief=None, text=('', OTPLocalizer.ChatInputNormalSayIt, OTPLocalizer.ChatInputNormalSayIt), text_scale=0.06, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.chatButtonPressed)
self.cancelButton = DirectButton(parent=self.chatFrame, image=(gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr')), pos=(-0.151, 0, -0.088), relief=None, text=('', OTPLocalizer.ChatInputNormalCancel, OTPLocalizer.ChatInputNormalCancel), text_scale=0.06, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.cancelButtonPressed)
self.whisperLabel = DirectLabel(parent=self.chatFrame, pos=(0.02, 0, 0.23), relief=DGG.FLAT, frameColor=(1, 1, 0.5, 1), frameSize=(-0.23,
0.23,
-0.07,
0.05), text=OTPLocalizer.ChatInputNormalWhisper, text_scale=0.04, text_fg=Vec4(0, 0, 0, 1), text_wordwrap=9.5, textMayChange=1)
self.whisperLabel.hide()
self.chatEntry = DirectEntry(parent=self.chatFrame, relief=None, scale=0.05, pos=(-0.2, 0, 0.11), entryFont=OTPGlobals.getInterfaceFont(), width=8.6, numLines=3, cursorKeys=0, backgroundFocus=0, command=self.sendChat)
self.chatEntry.bind(DGG.OVERFLOW, self.chatOverflow)
self.chatEntry.bind(DGG.TYPE, self.typeCallback)
return
def delete(self):
self.chatEntry.destroy()
self.chatButton.destroy()
self.cancelButton.destroy()
ChatInputNormal.ChatInputNormal.delete(self)
loader.unloadModel('phase_3.5/models/gui/chat_input_gui')
def typeCallback(self, extraArgs):
if localAvatar.chatMgr.chatInputWhiteList and localAvatar.chatMgr.chatInputWhiteList.isActive():
return
else:
messenger.send('enterNormalChat')
def checkForOverRide(self):
return False
if localAvatar.chatMgr.chatInputWhiteList and localAvatar.chatMgr.chatInputWhiteList.isActive():
return True
return False

View file

@ -189,7 +189,7 @@ class TTChatInputWhiteList(ChatInputWhiteListFrame):
flag = 1 flag = 1
for word in words: for word in words:
if word == '' or self.whiteList.isWord(word) or not base.cr.whiteListChatEnabled: if word == '' or self.whiteList.isWord(word) or not settings['speedchatPlus']:
newwords.append(word) newwords.append(word)
else: else:
if self.checkBeforeSend: if self.checkBeforeSend:
@ -204,7 +204,7 @@ class TTChatInputWhiteList(ChatInputWhiteListFrame):
if not strict: if not strict:
lastword = words[-1] lastword = words[-1]
try: try:
if lastword == '' or self.whiteList.isPrefix(lastword) or not base.cr.whiteListChatEnabled: if lastword == '' or self.whiteList.isPrefix(lastword) or not settings['speedchatPlus']:
newwords[-1] = lastword newwords[-1] = lastword
elif flag: elif flag:
newwords[-1] = '\x01WLDisplay\x01' + lastword + '\x02' newwords[-1] = '\x01WLDisplay\x01' + lastword + '\x02'

View file

@ -7,7 +7,6 @@ from direct.gui.DirectGui import *
from pandac.PandaModules import * from pandac.PandaModules import *
from otp.chat import ChatManager from otp.chat import ChatManager
from TTChatInputSpeedChat import TTChatInputSpeedChat from TTChatInputSpeedChat import TTChatInputSpeedChat
from TTChatInputNormal import TTChatInputNormal
from TTChatInputWhiteList import TTChatInputWhiteList from TTChatInputWhiteList import TTChatInputWhiteList
class ToontownChatManager(ChatManager.ChatManager): class ToontownChatManager(ChatManager.ChatManager):
@ -34,19 +33,15 @@ class ToontownChatManager(ChatManager.ChatManager):
self.whisperCancelButton = DirectButton(parent=self.whisperFrame, image=(gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr')), pos=(0.125, 0, -0.1), scale=1.179, relief=None, text=('', OTPLocalizer.ChatManagerCancel, OTPLocalizer.ChatManagerCancel), text_scale=0.05, text_fg=(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.__whisperCancelPressed) self.whisperCancelButton = DirectButton(parent=self.whisperFrame, image=(gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr')), pos=(0.125, 0, -0.1), scale=1.179, relief=None, text=('', OTPLocalizer.ChatManagerCancel, OTPLocalizer.ChatManagerCancel), text_scale=0.05, text_fg=(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.__whisperCancelPressed)
gui.removeNode() gui.removeNode()
ChatManager.ChatManager.__init__(self, cr, localAvatar) ChatManager.ChatManager.__init__(self, cr, localAvatar)
self.defaultToWhiteList = base.config.GetBool('white-list-is-default', 1)
self.chatInputSpeedChat = TTChatInputSpeedChat(self) self.chatInputSpeedChat = TTChatInputSpeedChat(self)
self.normalPos = Vec3(0.25, 0, -0.196) self.normalPos = Vec3(0.25, 0, -0.196)
self.whisperPos = Vec3(0, 0, -0.296) self.whisperPos = Vec3(0, 0, -0.296)
self.speedChatPlusPos = Vec3(-0.35, 0, 0.71) self.speedChatPlusPos = Vec3(-0.35, 0, 0.71)
self.SCWhisperPos = Vec3(0, 0, 0) self.SCWhisperPos = Vec3(0, 0, 0)
self.chatInputWhiteList = TTChatInputWhiteList() self.chatInputWhiteList = TTChatInputWhiteList()
if self.defaultToWhiteList: self.chatInputNormal = self.chatInputWhiteList
self.chatInputNormal = self.chatInputWhiteList self.chatInputNormal.setPos(self.normalPos)
self.chatInputNormal.setPos(self.normalPos) self.chatInputNormal.desc = 'chatInputNormal'
self.chatInputNormal.desc = 'chatInputNormal'
else:
self.chatInputNormal = TTChatInputNormal(self)
self.chatInputWhiteList.setPos(self.speedChatPlusPos) self.chatInputWhiteList.setPos(self.speedChatPlusPos)
self.chatInputWhiteList.reparentTo(base.a2dTopLeft) self.chatInputWhiteList.reparentTo(base.a2dTopLeft)
self.chatInputWhiteList.desc = 'chatInputWhiteList' self.chatInputWhiteList.desc = 'chatInputWhiteList'
@ -129,8 +124,6 @@ class ToontownChatManager(ChatManager.ChatManager):
self.fsm.request('normalChat') self.fsm.request('normalChat')
def __scButtonPressed(self): def __scButtonPressed(self):
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: CHAT: Speedchat')
messenger.send('wakeup') messenger.send('wakeup')
if self.fsm.getCurrentState().getName() == 'speedChat': if self.fsm.getCurrentState().getName() == 'speedChat':
self.fsm.request('mainMenu') self.fsm.request('mainMenu')
@ -185,8 +178,6 @@ class ToontownChatManager(ChatManager.ChatManager):
self.noSecretChatAtAllAndNoWhitelist.hide() self.noSecretChatAtAllAndNoWhitelist.hide()
def __whisperScButtonPressed(self, avatarName, avatarId, playerId): def __whisperScButtonPressed(self, avatarName, avatarId, playerId):
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: CHAT: Whisper')
messenger.send('wakeup') messenger.send('wakeup')
hasManager = hasattr(base.cr, 'playerFriendsManager') hasManager = hasattr(base.cr, 'playerFriendsManager')
transientFriend = 0 transientFriend = 0

View file

@ -195,6 +195,7 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
self.promotionStatus = [0, 0, 0, 0] self.promotionStatus = [0, 0, 0, 0]
self.buffs = [] self.buffs = []
self.redeemedCodes = [] self.redeemedCodes = []
self.trueFriends = []
def generate(self): def generate(self):
DistributedPlayerAI.DistributedPlayerAI.generate(self) DistributedPlayerAI.DistributedPlayerAI.generate(self)
@ -446,6 +447,22 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
def getExperience(self): def getExperience(self):
return self.experience.makeNetString() return self.experience.makeNetString()
def b_setTrueFriends(self, trueFriends):
self.d_setTrueFriends(trueFriends)
self.setTrueFriends(trueFriends)
def d_setTrueFriends(self, trueFriends):
self.sendUpdate('setTrueFriends', [trueFriends])
def setTrueFriends(self, trueFriends):
self.trueFriends = trueFriends
def getTrueFriends(self):
return self.trueFriends
def isTrueFriend(self, doId):
return doId in self.trueFriends
def b_setInventory(self, inventory): def b_setInventory(self, inventory):
self.setInventory(inventory) self.setInventory(inventory)

View file

@ -546,3 +546,6 @@ class DistributedToonUD(DistributedObjectUD):
def setRedeemedCodes(self, redeemedCodes): def setRedeemedCodes(self, redeemedCodes):
pass pass
def setTrueFriends(self, trueFriends):
pass

View file

@ -85,6 +85,10 @@ if 'language' not in settings:
settings['language'] = 'English' settings['language'] = 'English'
if 'cogLevel' not in settings: if 'cogLevel' not in settings:
settings['cogLevel'] = True settings['cogLevel'] = True
if 'speedchatPlus' not in settings:
settings['speedchatPlus'] = True
if 'trueFriends' not in settings:
settings['trueFriends'] = True
loadPrcFileData('Settings: res', 'win-size %d %d' % tuple(settings.get('res', (800, 600)))) loadPrcFileData('Settings: res', 'win-size %d %d' % tuple(settings.get('res', (800, 600))))
loadPrcFileData('Settings: fullscreen', 'fullscreen %s' % settings['fullscreen']) loadPrcFileData('Settings: fullscreen', 'fullscreen %s' % settings['fullscreen'])
loadPrcFileData('Settings: music', 'audio-music-active %s' % settings['music']) loadPrcFileData('Settings: music', 'audio-music-active %s' % settings['music'])
@ -92,9 +96,6 @@ loadPrcFileData('Settings: sfx', 'audio-sfx-active %s' % settings['sfx'])
loadPrcFileData('Settings: musicVol', 'audio-master-music-volume %s' % settings['musicVol']) loadPrcFileData('Settings: musicVol', 'audio-master-music-volume %s' % settings['musicVol'])
loadPrcFileData('Settings: sfxVol', 'audio-master-sfx-volume %s' % settings['sfxVol']) loadPrcFileData('Settings: sfxVol', 'audio-master-sfx-volume %s' % settings['sfxVol'])
loadPrcFileData('Settings: loadDisplay', 'load-display %s' % settings['loadDisplay']) loadPrcFileData('Settings: loadDisplay', 'load-display %s' % settings['loadDisplay'])
loadPrcFileData('Settings: toonChatSounds', 'toon-chat-sounds %s' % settings['toonChatSounds'])
loadPrcFileData('Settings: language', 'language %s' % settings['language'])
loadPrcFileData('Settings: cogLevel', 'cogLevel %s' % settings['cogLevel'])
import os import os