Poodletooth-iLand/toontown/coghq/FactoryUtil.py

77 lines
2.3 KiB
Python

from panda3d.core import *
from direct.showbase import DirectObject
from direct.interval.IntervalGlobal import *
from toontown.toonbase import ToontownGlobals
import MovingPlatform
from direct.task.Task import Task
from toontown.suit import Suit
from toontown.suit import SuitDNA
class Ouch(DirectObject.DirectObject):
def __init__(self, keyEvent, callback):
DirectObject.DirectObject.__init__(self)
self.accept(keyEvent, callback)
def destroy(self):
self.ignoreAll()
class CyclePlacer(DirectObject.DirectObject):
def __init__(self, locations, keyEvent, startIndex = 0):
DirectObject.DirectObject.__init__(self)
self.locations = locations
self.index = startIndex
self.accept(keyEvent, self.gotoNextLocation)
def destroy(self):
self.locations = None
self.ignoreAll()
return
def gotoNextLocation(self):
self.index = (self.index + 1) % len(self.locations)
self.gotoLocation()
def gotoLocation(self, index = None):
if index is None:
index = self.index
pos, h = self.locations[index]
base.localAvatar.reparentTo(render)
base.localAvatar.setPos(*pos)
base.localAvatar.setH(h)
return
class ToonLifter(DirectObject.DirectObject):
SerialNum = 0
def __init__(self, keyDownEvent, speed = 2):
DirectObject.DirectObject.__init__(self)
self.serialNum = ToonLifter.SerialNum
ToonLifter.SerialNum += 1
self.taskName = 'ToonLifter%s' % self.serialNum
self.keyDownEvent = keyDownEvent
self.keyUpEvent = self.keyDownEvent + '-up'
self.speed = speed
self.accept(self.keyDownEvent, self.startLifting)
def destroy(self):
self.ignoreAll()
taskMgr.remove(self.taskName)
def startLifting(self):
def liftTask(task, self = self):
base.localAvatar.setZ(base.localAvatar.getZ() + self.speed)
return Task.cont
def stopLifting(self = self):
taskMgr.remove(self.taskName)
self.ignore(self.keyUpEvent)
self.accept(self.keyDownEvent, self.startLifting)
self.ignore(self.keyDownEvent)
self.accept(self.keyUpEvent, stopLifting)
taskMgr.add(liftTask, self.taskName)