Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # im not teaching you how to run this yet
- # op: http://pastebin.com/gMBW76Hi
- import sys, os
- from time import strftime
- from direct.interval.IntervalGlobal import *
- from math import pi, sin, cos
- from panda3d.core import NodePath, TextNode
- from direct.gui.OnscreenText import OnscreenText
- from pandac.PandaModules import WindowProperties
- from direct.showbase.DirectObject import DirectObject
- from direct.showbase.ShowBase import ShowBase
- from direct.interval.SoundInterval import SoundInterval
- from direct.actor.Actor import Actor
- from thread import start_new_thread as createThread
- from time import sleep as wait
- from direct.gui.DirectButton import DirectButton
- from direct.task import Task
- from panda3d.core import CollisionTraverser,CollisionNode
- from panda3d.core import CollisionHandlerQueue,CollisionRay
- from panda3d.core import Filename,AmbientLight,DirectionalLight
- from panda3d.core import PandaNode,NodePath,Camera,TextNode
- from panda3d.core import Vec3,Vec4,BitMask32
- from pandac.PandaModules import Texture, TextureStage, CardMaker
- class base(ShowBase):
- def logger(self, operator, message):
- self.loggerTime = strftime(':%m-%d-%Y %H:%M:%S')
- try:
- self.loggedText = self.logFile.read()
- self.newLoggedText = self.loggedText + "\n%s %s: %s" % (self.loggerTime,
- operator,
- message)
- self.logFile.write(self.newLoggedText)
- print "%s %s: %s" % (self.loggerTime,
- operator,
- message)
- self.logFile.flush()
- except Exception, err:
- print "Error writing log file! %s." % str(err)
- def updateZ(self):
- self.camera.setZ(self.camera.getZ()+0.1)
- self.localAvatar.setZ(self.localAvatar.getZ()+0.1)
- def logNotifier(self):
- while True:
- self.seconds = self.seconds + 5
- self.logger("GameStatus",
- "Game ran %s seconds without any errors." % str(self.seconds))
- wait(5)
- def __init__(self):
- self.time = strftime('%m-%d-%Y_%H.%M.%S')
- self.logFile = file("%s.log" % self.time,
- "w+b")
- self.logFile.write("Starting CartoonTown...")
- self.seconds = 0
- ShowBase.__init__(self)
- self.logger("GameStart",
- "ShowBase has been initialized!")
- class textures:
- bg = loader.loadTexture('phase_3.5/maps/toontown_central_tutorial_palette_4amla_1.jpg')
- base.textures = textures()
- self.logger("Loader",
- "All textures have been loaded!")
- class models:
- baseModel = loader.loadModel('phase_4/models/neighborhoods/toontown_central.bam')
- s_book = loader.loadModel('phase_3.5/models/gui/sticker_open_close_gui.bam')
- base.models = models()
- self.logger("Loader",
- "All models have been loaded!")
- self.localAvatar = Actor("phase_6/models/char/pluto-1000.bam",
- {"stand":"phase_6/models/char/pluto-stand.bam",
- "sit":"phase_6/models/char/pluto-sit.bam",
- "walk":"phase_6/models/char/pluto-walk.bam",
- "neutral":"phase_6/models/char/pluto-neutral.bam"})
- self.logger("Actor",
- "The local avatar has been loaded!")
- self.keyMap = {"left":0,
- "right":0,
- "forward":0,
- "backward":0,
- "cam-left":0,
- "cam-right":0}
- self.logger("KeyMapper",
- "The keys have been mapped!")
- self.cstitle = WindowProperties()
- self.cstitle.setTitle('CartoonTown')
- self.win.requestProperties(self.cstitle)
- self.logger("WindowManager",
- "The requested window properities have been applied!")
- base.models.baseModel.setPos(0, 120, -12)
- base.models.baseModel.setScale(.4)
- base.models.baseModel.reparentTo(render)
- self.logger("Render",
- "The playground %s has been loaded!" % str(base.models.baseModel))
- self.localAvatar.reparentTo(render)
- self.localAvatar.setScale(.4)
- self.localAvatar.setPos(0, 100, -12.5)
- self.localAvatar.setHpr(0, 0, 0)
- self.localAvatar.loop("neutral")
- self.logger("Actor",
- "The local avatar has been loaded into its place!")
- self.screenStage = TextureStage('screen')
- self.screenStage.setMode(TextureStage.MDecal)
- self.screenTexture = Texture()
- self.buffer = self.win.makeTextureBuffer("screen buffer",
- self.win.getXSize(),
- self.win.getYSize(),
- self.screenTexture, True)
- self.bufferCam = self.makeCamera(self.buffer,
- lens=self.cam.node().getLens())
- cm = CardMaker('screencard')
- cm.setFrameFullscreenQuad()
- cm.setHasUvs(True)
- screenCard = render2d.attachNewNode(cm.generate())
- screenCard.setTexture(base.textures.bg)
- screenCard.setTexture(self.screenStage, self.screenTexture)
- self.logger("Render",
- "The render's background texture has been loaded!")
- self.music = loader.loadMusic("phase_4/audio/bgm/TC_nbrhood.mid")
- self.music.setLoop(True)
- self.music.play()
- self.logger("Loader",
- "The music has been loaded!")
- self.floater = NodePath(PandaNode("floater"))
- self.floater.reparentTo(render)
- self.logger("PandaBase",
- "The collisionspheres have been applied to the models!")
- #self.accept("escape", sys.exit)
- self.accept("arrow_left", self.setKey, ["left",1])
- self.accept("arrow_right", self.setKey, ["right",1])
- self.accept("arrow_up", self.setKey, ["backward",1])
- self.accept("arrow_down", self.setKey, ["forward",1])
- self.accept("a", self.setKey, ["cam-left",1])
- self.accept("s", self.setKey, ["cam-right",1])
- self.accept("arrow_left-up", self.setKey, ["left",0])
- self.accept("arrow_right-up", self.setKey, ["right",0])
- self.accept("arrow_up-up", self.setKey, ["backward",0])
- self.accept("arrow_down-up", self.setKey, ["forward",0])
- self.accept("a-up", self.setKey, ["cam-left",0])
- self.accept("s-up", self.setKey, ["cam-right",0])
- self.logger("KeyMapper",
- "The keys have been assigned to their respective functions!")
- taskMgr.add(self.move,"moveTask")
- self.logger("TaskMgr",
- "The function 'self.move' has been added to the Task Manager as 'moveTask'!")
- self.isMoving = False
- self.disableMouse()
- self.camera.setPos(self.localAvatar.getX(),
- self.localAvatar.getY() + +20,
- self.localAvatar.getZ() + 2)
- self.camera.setHpr(180, 90, 0)
- self.logger("Render",
- "The camera position has been updated!")
- self.cTrav = CollisionTraverser()
- self.localAvatarGroundRay = CollisionRay()
- self.localAvatarGroundRay.setOrigin(0,0,1000)
- self.localAvatarGroundRay.setDirection(0,0,-1)
- self.localAvatarGroundCol = CollisionNode('localAvatarRay')
- self.localAvatarGroundCol.addSolid(self.localAvatarGroundRay)
- self.localAvatarGroundCol.setFromCollideMask(BitMask32.bit(0))
- self.localAvatarGroundCol.setIntoCollideMask(BitMask32.allOff())
- self.localAvatarGroundColNp = self.localAvatar.attachNewNode(self.localAvatarGroundCol)
- self.localAvatarGroundHandler = CollisionHandlerQueue()
- self.cTrav.addCollider(self.localAvatarGroundColNp, self.localAvatarGroundHandler)
- self.logger("Render",
- "Collisions have been applied to the actor 'localAvatar'!")
- self.camGroundRay = CollisionRay()
- self.camGroundRay.setOrigin(0,0,1000)
- self.camGroundRay.setDirection(0,0,-1)
- self.camGroundCol = CollisionNode('camRay')
- self.camGroundCol.addSolid(self.camGroundRay)
- self.camGroundCol.setFromCollideMask(BitMask32.bit(0))
- self.camGroundCol.setIntoCollideMask(BitMask32.allOff())
- self.camGroundColNp = self.camera.attachNewNode(self.camGroundCol)
- self.camGroundHandler = CollisionHandlerQueue()
- self.cTrav.addCollider(self.camGroundColNp, self.camGroundHandler)
- self.logger("Render",
- "Collisions have been applied to the model 'baseModel'!")
- ambientLight = AmbientLight("ambientLight")
- ambientLight.setColor(Vec4(.3, .3, .3, 1))
- directionalLight = DirectionalLight("directionalLight")
- directionalLight.setDirection(Vec3(-5, -5, -5))
- directionalLight.setColor(Vec4(1, 1, 1, 1))
- directionalLight.setSpecularColor(Vec4(1, 1, 1, 1))
- render.setLight(render.attachNewNode(ambientLight))
- render.setLight(render.attachNewNode(directionalLight))
- self.logger("Render",
- "Lights have been changed to 'ambientLight'!")
- DirectButton(text = "Z+", pos = (0, 0, 0.9), command = self.updateZ, scale = 0.1)
- createThread(self.logNotifier, ())
- def setKey(self, key, value):
- self.keyMap[key] = value
- if value == 0:
- self.logger("KeyMapper",
- "Key %s was released!" % key)
- elif value == 1:
- self.logger("KeyMapper",
- "Key %s was pressed!" % key)
- def move(self, task):
- self.camera.lookAt(self.localAvatar)
- if (self.keyMap["cam-left"]!=0):
- self.camera.setX(self.camera, -20 * globalClock.getDt())
- if (self.keyMap["cam-right"]!=0):
- self.camera.setX(self.camera, +20 * globalClock.getDt())
- startpos = self.localAvatar.getPos()
- if (self.keyMap["left"]!=0):
- self.localAvatar.setH(self.localAvatar.getH() + 300 * globalClock.getDt())
- if (self.keyMap["right"]!=0):
- self.localAvatar.setH(self.localAvatar.getH() - 300 * globalClock.getDt())
- if (self.keyMap["forward"]!=0):
- self.localAvatar.setY(self.localAvatar, -25 * globalClock.getDt())
- if (self.keyMap["backward"]!=0):
- self.localAvatar.setY(self.localAvatar, +25 * globalClock.getDt())
- if (self.keyMap["forward"]!=0) or (self.keyMap["backward"]!=0) or (self.keyMap["left"]!=0) or (self.keyMap["right"]!=0):
- if self.isMoving is False:
- self.localAvatar.loop("walk")
- self.isMoving = True
- else:
- if self.isMoving:
- self.localAvatar.stop()
- self.localAvatar.loop("neutral")
- self.isMoving = False
- camvec = self.localAvatar.getPos() - self.camera.getPos()
- camvec.setZ(0)
- camdist = camvec.length()
- camvec.normalize()
- if (camdist > 10.0):
- self.camera.setPos(self.camera.getPos() + camvec*(camdist-10))
- camdist = 10.0
- if (camdist < 5.0):
- self.camera.setPos(self.camera.getPos() - camvec*(5-camdist))
- camdist = 5.0
- self.cTrav.traverse(render)
- entries = []
- for i in range(self.localAvatarGroundHandler.getNumEntries()):
- entry = self.localAvatarGroundHandler.getEntry(i)
- entries.append(entry)
- entries.sort(lambda x,y: cmp(y.getSurfacePoint(render).getZ(),
- x.getSurfacePoint(render).getZ()))
- if (len(entries)>0) and (entries[0].getIntoNode().getName() == "toontown_central"):
- self.localAvatar.setZ(entries[0].getSurfacePoint(render).getZ())
- else:
- pass
- #self.localAvatar.setPos(startpos)
- entries = []
- for i in range(self.camGroundHandler.getNumEntries()):
- entry = self.camGroundHandler.getEntry(i)
- entries.append(entry)
- entries.sort(lambda x,y: cmp(y.getSurfacePoint(render).getZ(),
- x.getSurfacePoint(render).getZ()))
- if (len(entries)>0) and (entries[0].getIntoNode().getName() == "toontown_central"):
- self.camera.setZ(entries[0].getSurfacePoint(render).getZ()+1.0)
- if (self.camera.getZ() < self.localAvatar.getZ() + 2.0):
- self.camera.setZ(self.localAvatar.getZ() + 2.0)
- self.floater.setPos(self.localAvatar.getPos())
- self.floater.setZ(self.localAvatar.getZ() + 2.0)
- self.camera.lookAt(self.floater)
- return task.cont
- base = base()
- base.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement