general: loads to a connecting screen!
This commit is contained in:
parent
27bd82aa36
commit
46e7a352b6
23 changed files with 295 additions and 23 deletions
|
@ -97,3 +97,6 @@ audio-music-active #t
|
||||||
audio-master-sfx-volume 1
|
audio-master-sfx-volume 1
|
||||||
audio-master-music-volume 1
|
audio-master-music-volume 1
|
||||||
server-type prod
|
server-type prod
|
||||||
|
|
||||||
|
# TEMP
|
||||||
|
fake-playtoken dev
|
||||||
|
|
4
libtoontown/__init__.py
Normal file
4
libtoontown/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
from libpandadna import *
|
||||||
|
from pets.CPetBrain import CPetBrain
|
||||||
|
from pets.CPetChase import CPetChase
|
||||||
|
from pets.CPetFlee import CPetFlee
|
35
libtoontown/pets/CPetBrain.py
Normal file
35
libtoontown/pets/CPetBrain.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
import math
|
||||||
|
|
||||||
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
|
from panda3d.core import *
|
||||||
|
|
||||||
|
|
||||||
|
class CPetBrain:
|
||||||
|
notify = DirectNotifyGlobal.directNotify.newCategory('CPetBrain')
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def isAttendingUs(pathA, pathB):
|
||||||
|
v4 = pathB.getPos(pathA)
|
||||||
|
pathAB = ((v4[1] * v4[1]) + (v4[0] * v4[0]) + (v4[2] * v4[2]))
|
||||||
|
if not (pathAB > 100.0):
|
||||||
|
return True
|
||||||
|
|
||||||
|
v6 = pathA.getPos(pathB)
|
||||||
|
pathAA = ((v6[1] * v6[1]) + (v6[0] * v6[0]) + (v6[2] * v6[2]))
|
||||||
|
if pathAA == 0.0:
|
||||||
|
v6 = Vec3(0, 0, 0)
|
||||||
|
else:
|
||||||
|
pathAB = pathAA - 1.0
|
||||||
|
if pathAB >= 9.999999949504854e-13 or pathAB <= -9.999999949504854e-13:
|
||||||
|
pathAD = 1.0 / math.sqrt(pathAA)
|
||||||
|
v6 *= pathAD
|
||||||
|
|
||||||
|
v8 = Vec3.forward()
|
||||||
|
pathAC = ((v8[1] * v6[1]) + (v8[0] * v6[0]) + (v8[2] * v6[2]))
|
||||||
|
if pathAC < 0.8:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
81
libtoontown/pets/CPetChase.py
Normal file
81
libtoontown/pets/CPetChase.py
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
import math
|
||||||
|
|
||||||
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
|
from direct.showbase.PythonUtil import reduceAngle
|
||||||
|
from panda3d.core import *
|
||||||
|
|
||||||
|
from libotp import *
|
||||||
|
|
||||||
|
|
||||||
|
class CPetChase(CImpulse):
|
||||||
|
notify = DirectNotifyGlobal.directNotify.newCategory('CPetChase')
|
||||||
|
|
||||||
|
def __init__(self, target=None, minDist=None, moveAngle=None):
|
||||||
|
CImpulse.__init__(self)
|
||||||
|
self.target = target
|
||||||
|
if minDist is None:
|
||||||
|
minDist = 5.0
|
||||||
|
self.minDist = minDist
|
||||||
|
if moveAngle is None:
|
||||||
|
moveAngle = 20.0
|
||||||
|
self.moveAngle = moveAngle
|
||||||
|
self.lookAtNode = NodePath('lookatNode')
|
||||||
|
self.lookAtNode.hide()
|
||||||
|
self.vel = None
|
||||||
|
self.rotVel = None
|
||||||
|
|
||||||
|
def setTarget(self, target):
|
||||||
|
self.target = target
|
||||||
|
|
||||||
|
def getTarget(self):
|
||||||
|
return self.target
|
||||||
|
|
||||||
|
def setMinDist(self, minDist):
|
||||||
|
self.minDist = minDist
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
self.lookAtNode.removeNode()
|
||||||
|
del self.lookAtNode
|
||||||
|
del self.target
|
||||||
|
del self.vel
|
||||||
|
del self.rotVel
|
||||||
|
|
||||||
|
def setMover(self, mover):
|
||||||
|
CImpulse.setMover(self, mover)
|
||||||
|
self.lookAtNode.reparentTo(self.nodePath)
|
||||||
|
self.vel = self.VecType(0)
|
||||||
|
self.rotVel = self.VecType(0)
|
||||||
|
|
||||||
|
def process(self, dt):
|
||||||
|
CImpulse.process(self, dt)
|
||||||
|
me = self.nodePath
|
||||||
|
target = self.target
|
||||||
|
targetPos = target.getPos(me)
|
||||||
|
x = targetPos[0]
|
||||||
|
y = targetPos[1]
|
||||||
|
distance = math.sqrt(x * x + y * y)
|
||||||
|
self.lookAtNode.lookAt(target)
|
||||||
|
relH = reduceAngle(self.lookAtNode.getH(me))
|
||||||
|
epsilon = 0.005
|
||||||
|
rotSpeed = self.mover.getRotSpeed()
|
||||||
|
if relH < -epsilon:
|
||||||
|
vH = -rotSpeed
|
||||||
|
elif relH > epsilon:
|
||||||
|
vH = rotSpeed
|
||||||
|
else:
|
||||||
|
vH = 0
|
||||||
|
if abs(vH * dt) > abs(relH):
|
||||||
|
vH = relH / dt
|
||||||
|
if distance > self.minDist and abs(relH) < self.moveAngle:
|
||||||
|
vForward = self.mover.getFwdSpeed()
|
||||||
|
else:
|
||||||
|
vForward = 0
|
||||||
|
distanceLeft = distance - self.minDist
|
||||||
|
if distance > self.minDist and vForward * dt > distanceLeft:
|
||||||
|
vForward = distanceLeft / dt
|
||||||
|
if vForward:
|
||||||
|
self.vel.setY(vForward)
|
||||||
|
self.mover.addShove(self.vel)
|
||||||
|
if vH:
|
||||||
|
self.rotVel.setX(vH)
|
||||||
|
self.mover.addRotShove(self.rotVel)
|
66
libtoontown/pets/CPetFlee.py
Normal file
66
libtoontown/pets/CPetFlee.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
|
from direct.showbase.PythonUtil import reduceAngle
|
||||||
|
from panda3d.core import *
|
||||||
|
|
||||||
|
from libotp import *
|
||||||
|
|
||||||
|
|
||||||
|
class CPetFlee(CImpulse):
|
||||||
|
notify = DirectNotifyGlobal.directNotify.newCategory('CPetFlee')
|
||||||
|
|
||||||
|
def __init__(self, chaser=None, maxDist=50.0, moveAngle=20.0):
|
||||||
|
CImpulse.__init__(self)
|
||||||
|
self.chaser = chaser
|
||||||
|
self.maxDist = maxDist
|
||||||
|
self.moveAngle = moveAngle
|
||||||
|
self.lookAtNode = NodePath('lookatNode')
|
||||||
|
self.lookAtNode.hide()
|
||||||
|
self.vel = None
|
||||||
|
self.rotVel = None
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
self.lookAtNode.removeNode()
|
||||||
|
del self.lookAtNode
|
||||||
|
del self.chaser
|
||||||
|
del self.vel
|
||||||
|
del self.rotVel
|
||||||
|
|
||||||
|
def setChaser(self, chaser):
|
||||||
|
self.chaser = chaser
|
||||||
|
|
||||||
|
def _setMover(self, mover):
|
||||||
|
CImpulse._setMover(self, mover)
|
||||||
|
self.lookAtNode.reparentTo(self.nodePath)
|
||||||
|
self.vel = self.VecType(0)
|
||||||
|
self.rotVel = self.VecType(0)
|
||||||
|
|
||||||
|
def _process(self, dt):
|
||||||
|
CImpulse._process(self, dt)
|
||||||
|
me = self.nodePath
|
||||||
|
chaser = self.chaser
|
||||||
|
chaserPos = chaser.getPos(me)
|
||||||
|
chaserPos.setZ(0)
|
||||||
|
distance = self.VecType(chaserPos).length()
|
||||||
|
self.lookAtNode.lookAt(chaser)
|
||||||
|
relH = reduceAngle(self.lookAtNode.getH(me) + 180.0)
|
||||||
|
epsilon = 0.005
|
||||||
|
rotSpeed = self.mover.getRotSpeed()
|
||||||
|
if relH < -epsilon:
|
||||||
|
vH = -rotSpeed
|
||||||
|
elif relH > epsilon:
|
||||||
|
vH = rotSpeed
|
||||||
|
else:
|
||||||
|
vH = 0
|
||||||
|
if abs(vH * dt) > abs(relH):
|
||||||
|
vH = relH / dt
|
||||||
|
if distance < self.maxDist and abs(relH) < self.moveAngle:
|
||||||
|
vForward = self.mover.getFwdSpeed()
|
||||||
|
else:
|
||||||
|
vForward = 0
|
||||||
|
distanceLeft = self.maxDist - distance
|
||||||
|
if distanceLeft > 0.0 and vForward * dt > distanceLeft:
|
||||||
|
vForward = distanceLeft / dt
|
||||||
|
self.vel.setY(vForward)
|
||||||
|
self.rotVel.setX(vH)
|
||||||
|
self.mover.addShove(self.vel)
|
||||||
|
self.mover.addRotShove(self.rotVel)
|
0
libtoontown/pets/__init__.py
Normal file
0
libtoontown/pets/__init__.py
Normal file
|
@ -3,7 +3,7 @@ from direct.showbase import GarbageReport, ContainerReport, MessengerLeakDetecto
|
||||||
from direct.distributed import DistributedObject
|
from direct.distributed import DistributedObject
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
from direct.showbase.InputStateGlobal import inputState
|
from direct.showbase.InputStateGlobal import inputState
|
||||||
from direct.showbase.ObjectCount import ObjectCount
|
from otp.otpbase.ObjectCount import ObjectCount
|
||||||
from direct.task import Task
|
from direct.task import Task
|
||||||
from direct.task.TaskProfiler import TaskProfiler
|
from direct.task.TaskProfiler import TaskProfiler
|
||||||
from otp.avatar import Avatar
|
from otp.avatar import Avatar
|
||||||
|
|
48
otp/otpbase/ObjectCount.py
Normal file
48
otp/otpbase/ObjectCount.py
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
from direct.showbase.Job import Job
|
||||||
|
import gc
|
||||||
|
|
||||||
|
class ObjectCount(Job):
|
||||||
|
""" logs a count of the number of each type of object found in gc.get_objects() """
|
||||||
|
def __init__(self, name, immediate=False, doneCallback=None):
|
||||||
|
Job.__init__(self, name)
|
||||||
|
self._doneCallback = doneCallback
|
||||||
|
jobMgr.add(self)
|
||||||
|
if immediate:
|
||||||
|
jobMgr.finish(self)
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
self._doneCallback = None
|
||||||
|
Job.destroy(self)
|
||||||
|
|
||||||
|
def finished(self):
|
||||||
|
if self._doneCallback:
|
||||||
|
self._doneCallback(self)
|
||||||
|
self.destroy()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
objs = gc.get_objects()
|
||||||
|
yield None
|
||||||
|
type2count = {}
|
||||||
|
for obj in objs:
|
||||||
|
tn = safeTypeName(obj)
|
||||||
|
type2count.setdefault(tn, 0)
|
||||||
|
type2count[tn] += 1
|
||||||
|
yield None
|
||||||
|
# prevent garbage cycle
|
||||||
|
del objs
|
||||||
|
yield None
|
||||||
|
count2type = invertDictLossless(type2count)
|
||||||
|
yield None
|
||||||
|
counts = count2type.keys()
|
||||||
|
yield None
|
||||||
|
counts.sort()
|
||||||
|
yield None
|
||||||
|
counts.reverse()
|
||||||
|
yield None
|
||||||
|
print '===== ObjectCount: \'%s\' =====' % (self.getJobName())
|
||||||
|
for count in counts:
|
||||||
|
types = count2type[count]
|
||||||
|
for type in types:
|
||||||
|
print '%s: %s' % (count, type)
|
||||||
|
yield None
|
||||||
|
yield Job.Done
|
|
@ -1,3 +1,5 @@
|
||||||
|
import __builtin__
|
||||||
|
|
||||||
# class 'decorator' that records the stack at the time of creation
|
# class 'decorator' that records the stack at the time of creation
|
||||||
# be careful with this, it creates a StackTrace, and that can take a
|
# be careful with this, it creates a StackTrace, and that can take a
|
||||||
# lot of CPU
|
# lot of CPU
|
||||||
|
@ -19,3 +21,37 @@ def recordCreationStack(cls):
|
||||||
cls.getCreationStackTraceCompactStr = getCreationStackTraceCompactStr
|
cls.getCreationStackTraceCompactStr = getCreationStackTraceCompactStr
|
||||||
cls.printCreationStackTrace = printCreationStackTrace
|
cls.printCreationStackTrace = printCreationStackTrace
|
||||||
return cls
|
return cls
|
||||||
|
|
||||||
|
def pdir(obj, str = None, width = None,
|
||||||
|
fTruncate = 1, lineWidth = 75, wantPrivate = 0):
|
||||||
|
# Remove redundant class entries
|
||||||
|
uniqueLineage = []
|
||||||
|
for l in getClassLineage(obj):
|
||||||
|
if type(l) == types.ClassType:
|
||||||
|
if l in uniqueLineage:
|
||||||
|
break
|
||||||
|
uniqueLineage.append(l)
|
||||||
|
# Pretty print out directory info
|
||||||
|
uniqueLineage.reverse()
|
||||||
|
for obj in uniqueLineage:
|
||||||
|
_pdir(obj, str, width, fTruncate, lineWidth, wantPrivate)
|
||||||
|
print
|
||||||
|
|
||||||
|
def quantize(value, divisor):
|
||||||
|
# returns new value that is multiple of (1. / divisor)
|
||||||
|
return float(int(value * int(divisor))) / int(divisor)
|
||||||
|
|
||||||
|
def quantizeVec(vec, divisor):
|
||||||
|
# in-place
|
||||||
|
vec[0] = quantize(vec[0], divisor)
|
||||||
|
vec[1] = quantize(vec[1], divisor)
|
||||||
|
vec[2] = quantize(vec[2], divisor)
|
||||||
|
|
||||||
|
def isClient():
|
||||||
|
if hasattr(__builtin__, 'simbase') and not hasattr(__builtin__, 'base'):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
__builtin__.pdir = pdir
|
||||||
|
__builtin__.isClient = isClient
|
||||||
|
|
|
@ -3,7 +3,8 @@ from direct.distributed.ClockDelta import *
|
||||||
from direct.interval.IntervalGlobal import *
|
from direct.interval.IntervalGlobal import *
|
||||||
import HolidayDecorator
|
import HolidayDecorator
|
||||||
from toontown.toonbase import ToontownGlobals
|
from toontown.toonbase import ToontownGlobals
|
||||||
from pandac.PandaModules import Vec4, loadDNAFile, CSDefault, TransformState, NodePath, TransparencyAttrib
|
from pandac.PandaModules import Vec4, CSDefault, TransformState, NodePath, TransparencyAttrib
|
||||||
|
from libtoontown import loadDNAFile
|
||||||
from toontown.hood import GSHood
|
from toontown.hood import GSHood
|
||||||
|
|
||||||
class CrashedLeaderBoardDecorator(HolidayDecorator.HolidayDecorator):
|
class CrashedLeaderBoardDecorator(HolidayDecorator.HolidayDecorator):
|
||||||
|
|
|
@ -6,7 +6,8 @@ from toontown.toonbase import ToontownGlobals
|
||||||
from toontown.safezone import Playground
|
from toontown.safezone import Playground
|
||||||
from toontown.town import Street
|
from toontown.town import Street
|
||||||
from toontown.estate import Estate
|
from toontown.estate import Estate
|
||||||
from pandac.PandaModules import Vec4, loadDNAFile, CSDefault, TransformState, NodePath, TransparencyAttrib
|
from pandac.PandaModules import Vec4, CSDefault, TransformState, NodePath, TransparencyAttrib
|
||||||
|
from libtoontown import loadDNAFile
|
||||||
|
|
||||||
class HalloweenHolidayDecorator(HolidayDecorator.HolidayDecorator):
|
class HalloweenHolidayDecorator(HolidayDecorator.HolidayDecorator):
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('HalloweenHolidayDecorator')
|
notify = DirectNotifyGlobal.directNotify.newCategory('HalloweenHolidayDecorator')
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from toontown.toonbase import ToontownGlobals
|
from toontown.toonbase import ToontownGlobals
|
||||||
from direct.interval.IntervalGlobal import Parallel, Sequence, Func, Wait
|
from direct.interval.IntervalGlobal import Parallel, Sequence, Func, Wait
|
||||||
from pandac.PandaModules import Vec4, loadDNAFile, CSDefault, TransformState, NodePath, TransparencyAttrib
|
from pandac.PandaModules import Vec4, CSDefault, TransformState, NodePath, TransparencyAttrib
|
||||||
|
from libtoontown import loadDNAFile
|
||||||
|
|
||||||
class HolidayDecorator:
|
class HolidayDecorator:
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,10 @@ from direct.fsm import FSM
|
||||||
from direct.gui.DirectGui import DirectFrame, DGG
|
from direct.gui.DirectGui import DirectFrame, DGG
|
||||||
from direct.interval.IntervalGlobal import LerpScaleInterval, LerpColorScaleInterval, Parallel, Sequence, Wait
|
from direct.interval.IntervalGlobal import LerpScaleInterval, LerpColorScaleInterval, Parallel, Sequence, Wait
|
||||||
|
|
||||||
class DinerStatusIndicator(NodePath.NodePath, FSM.FSM):
|
class DinerStatusIndicator(NodePath, FSM.FSM):
|
||||||
|
|
||||||
def __init__(self, parent, pos = None, scale = None):
|
def __init__(self, parent, pos = None, scale = None):
|
||||||
NodePath.NodePath.__init__(self, 'DinerStatusIndicator')
|
NodePath.__init__(self, 'DinerStatusIndicator')
|
||||||
if parent:
|
if parent:
|
||||||
self.reparentTo(parent)
|
self.reparentTo(parent)
|
||||||
if pos:
|
if pos:
|
||||||
|
|
|
@ -86,7 +86,7 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
||||||
self.toons = {}
|
self.toons = {}
|
||||||
if self.http.getVerifySsl() != HTTPClient.VSNoVerify:
|
if self.http.getVerifySsl() != HTTPClient.VSNoVerify:
|
||||||
self.http.setVerifySsl(HTTPClient.VSNoDateCheck)
|
self.http.setVerifySsl(HTTPClient.VSNoDateCheck)
|
||||||
prepareAvatar(self.http)
|
#prepareAvatar(self.http)
|
||||||
self.__forbidCheesyEffects = 0
|
self.__forbidCheesyEffects = 0
|
||||||
self.friendManager = None
|
self.friendManager = None
|
||||||
self.speedchatRelay = None
|
self.speedchatRelay = None
|
||||||
|
|
|
@ -9,7 +9,7 @@ from toontown.toonbase import ToontownGlobals
|
||||||
import VineGameGlobals
|
import VineGameGlobals
|
||||||
import VineSpider
|
import VineSpider
|
||||||
|
|
||||||
class SwingVine(NodePath.NodePath):
|
class SwingVine(NodePath):
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('SwingVine')
|
notify = DirectNotifyGlobal.directNotify.newCategory('SwingVine')
|
||||||
defaultNormal = Vec3(1, 0, 0)
|
defaultNormal = Vec3(1, 0, 0)
|
||||||
SwingAnimPeriod = 6.0
|
SwingAnimPeriod = 6.0
|
||||||
|
|
|
@ -5,7 +5,7 @@ from pandac.PandaModules import *
|
||||||
import VineGameGlobals
|
import VineGameGlobals
|
||||||
from direct.interval.SoundInterval import SoundInterval
|
from direct.interval.SoundInterval import SoundInterval
|
||||||
|
|
||||||
class VineBat(NodePath.NodePath, DirectObject):
|
class VineBat(NodePath, DirectObject):
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('VineBat')
|
notify = DirectNotifyGlobal.directNotify.newCategory('VineBat')
|
||||||
notify.setDebug(True)
|
notify.setDebug(True)
|
||||||
RADIUS = 1.7
|
RADIUS = 1.7
|
||||||
|
|
|
@ -4,7 +4,7 @@ from direct.directnotify import DirectNotifyGlobal
|
||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
import VineGameGlobals
|
import VineGameGlobals
|
||||||
|
|
||||||
class VineSpider(NodePath.NodePath, DirectObject):
|
class VineSpider(NodePath, DirectObject):
|
||||||
RADIUS = 1.7
|
RADIUS = 1.7
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
|
@ -5,7 +5,7 @@ from pandac.PandaModules import Point3, TextNode, Vec4
|
||||||
from toontown.minigame import TravelGameGlobals
|
from toontown.minigame import TravelGameGlobals
|
||||||
from toontown.toonbase import TTLocalizer
|
from toontown.toonbase import TTLocalizer
|
||||||
from direct.interval.IntervalGlobal import Parallel, Sequence, LerpFunc, Func, Wait, SoundInterval
|
from direct.interval.IntervalGlobal import Parallel, Sequence, LerpFunc, Func, Wait, SoundInterval
|
||||||
from direct.showbase.PythonUtil import pdir
|
from otp.otpbase.PythonUtil import pdir
|
||||||
|
|
||||||
class VoteResultsTrolleyPanel(DirectFrame):
|
class VoteResultsTrolleyPanel(DirectFrame):
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('VoteResultsTrolleyPanel')
|
notify = DirectNotifyGlobal.directNotify.newCategory('VoteResultsTrolleyPanel')
|
||||||
|
|
|
@ -2,7 +2,7 @@ import math
|
||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
from direct.distributed.ClockDelta import *
|
from direct.distributed.ClockDelta import *
|
||||||
from direct.interval.IntervalGlobal import *
|
from direct.interval.IntervalGlobal import *
|
||||||
from direct.showbase.PythonUtil import quantizeVec
|
from otp.otpbase.PythonUtil import quantizeVec
|
||||||
from direct.task.Task import Task
|
from direct.task.Task import Task
|
||||||
from toontown.toontowngui import TTDialog
|
from toontown.toontowngui import TTDialog
|
||||||
from toontown.toonbase.ToonBaseGlobal import *
|
from toontown.toonbase.ToonBaseGlobal import *
|
||||||
|
|
|
@ -4,7 +4,6 @@ import tokenize
|
||||||
import copy
|
import copy
|
||||||
from direct.interval.IntervalGlobal import *
|
from direct.interval.IntervalGlobal import *
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
from direct.showbase import AppRunnerGlobal
|
|
||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
from direct.showbase import DirectObject
|
from direct.showbase import DirectObject
|
||||||
import BlinkingArrows
|
import BlinkingArrows
|
||||||
|
@ -1067,13 +1066,8 @@ class NPCMoviePlayer(DirectObject.DirectObject):
|
||||||
|
|
||||||
|
|
||||||
searchPath = DSearchPath()
|
searchPath = DSearchPath()
|
||||||
if AppRunnerGlobal.appRunner:
|
if __debug__:
|
||||||
searchPath.appendDirectory(Filename.expandFrom('$TT_3_ROOT/phase_3/etc'))
|
searchPath.appendDirectory(Filename('resources/phase_3/etc'))
|
||||||
else:
|
|
||||||
searchPath.appendDirectory(Filename('phase_3/etc'))
|
|
||||||
searchPath.appendDirectory(Filename.fromOsSpecific(os.path.expandvars('$TOONTOWN/src/quest')))
|
|
||||||
searchPath.appendDirectory(Filename.fromOsSpecific('toontown/src/quest'))
|
|
||||||
searchPath.appendDirectory(Filename('.'))
|
|
||||||
scriptFile = Filename('QuestScripts.txt')
|
scriptFile = Filename('QuestScripts.txt')
|
||||||
found = vfs.resolveFilename(scriptFile, searchPath)
|
found = vfs.resolveFilename(scriptFile, searchPath)
|
||||||
if not found:
|
if not found:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import math
|
import math
|
||||||
import random
|
import random
|
||||||
from pandac.PandaModules import NametagGroup, CFSpeech, VBase3, CollisionPlane, CollisionNode, CollisionSphere, CollisionTube, NodePath, Plane, Vec3, Vec2, Point3, BitMask32, CollisionHandlerEvent, TextureStage, VBase4, BoundingSphere
|
from pandac.PandaModules import VBase3, CollisionPlane, CollisionNode, CollisionSphere, CollisionTube, NodePath, Plane, Vec3, Vec2, Point3, BitMask32, CollisionHandlerEvent, TextureStage, VBase4, BoundingSphere
|
||||||
|
from libotp import NametagGroup, CFSpeech
|
||||||
from direct.interval.IntervalGlobal import Sequence, Wait, Func, LerpHprInterval, Parallel, LerpPosInterval, Track, ActorInterval, ParallelEndTogether, LerpFunctionInterval, LerpScaleInterval, LerpPosHprInterval, SoundInterval
|
from direct.interval.IntervalGlobal import Sequence, Wait, Func, LerpHprInterval, Parallel, LerpPosInterval, Track, ActorInterval, ParallelEndTogether, LerpFunctionInterval, LerpScaleInterval, LerpPosHprInterval, SoundInterval
|
||||||
from direct.task import Task
|
from direct.task import Task
|
||||||
from direct.fsm import FSM
|
from direct.fsm import FSM
|
||||||
|
|
|
@ -4,7 +4,8 @@ from toontown.toon import NPCToons
|
||||||
from toontown.toonbase import TTLocalizer
|
from toontown.toonbase import TTLocalizer
|
||||||
from direct.task.Task import Task
|
from direct.task.Task import Task
|
||||||
from direct.distributed import ClockDelta
|
from direct.distributed import ClockDelta
|
||||||
from pandac.PandaModules import CFSpeech, CFTimeout, Point3
|
from pandac.PandaModules import Point3
|
||||||
|
from libotp import CFSpeech, CFTimeout
|
||||||
from toontown.toontowngui import TTDialog
|
from toontown.toontowngui import TTDialog
|
||||||
from otp.otpbase import OTPLocalizer
|
from otp.otpbase import OTPLocalizer
|
||||||
from toontown.parties import PartyGlobals
|
from toontown.parties import PartyGlobals
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from direct.distributed.DistributedObject import DistributedObject
|
from direct.distributed.DistributedObject import DistributedObject
|
||||||
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
||||||
from pandac.PandaModules import CFSpeech, CFTimeout
|
from libotp import CFSpeech, CFTimeout
|
||||||
from toontown.toonbase import ToontownGlobals
|
from toontown.toonbase import ToontownGlobals
|
||||||
from toontown.toonbase import TTLocalizer
|
from toontown.toonbase import TTLocalizer
|
||||||
from toontown.toon import ToonDNA
|
from toontown.toon import ToonDNA
|
||||||
|
|
Loading…
Reference in a new issue