mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 11:42:39 -06:00
128 lines
4.6 KiB
Python
128 lines
4.6 KiB
Python
|
from panda3d.core import *
|
||
|
from direct.directnotify import DirectNotifyGlobal
|
||
|
from direct.showbase.DirectObject import DirectObject
|
||
|
from toontown.minigame import ToonBlitzGlobals
|
||
|
from toontown.minigame import TwoDBlock
|
||
|
from toontown.minigame import TwoDEnemyMgr
|
||
|
from toontown.minigame import TwoDTreasureMgr
|
||
|
from toontown.minigame import TwoDSpawnPointMgr
|
||
|
from toontown.minigame import TwoDStomperMgr
|
||
|
|
||
|
class TwoDSection(DirectObject):
|
||
|
notify = DirectNotifyGlobal.directNotify.newCategory('TwoDSection')
|
||
|
|
||
|
def __init__(self, indexNum, sectionInfo, sectionNP, sectionMgr):
|
||
|
self.indexNum = indexNum
|
||
|
self.sectionNP = sectionNP
|
||
|
self.sectionMgr = sectionMgr
|
||
|
self.blocks = []
|
||
|
self.load(sectionInfo)
|
||
|
|
||
|
def destroy(self):
|
||
|
for block in self.blocks:
|
||
|
block.destroy()
|
||
|
|
||
|
self.enemyMgr.destroy()
|
||
|
del self.enemyMgr
|
||
|
self.treasureMgr.destroy()
|
||
|
del self.treasureMgr
|
||
|
self.spawnPointMgr.destroy()
|
||
|
del self.spawnPointMgr
|
||
|
self.stomperMgr.destroy()
|
||
|
del self.stomperMgr
|
||
|
self.sectionMgr = None
|
||
|
self.sectionNP = None
|
||
|
self.blockList = []
|
||
|
self.enemyList = []
|
||
|
self.treasureList = []
|
||
|
self.spawnPointList = []
|
||
|
return
|
||
|
|
||
|
def load(self, sectionInfo):
|
||
|
self.sectionTypeNum = sectionInfo[0]
|
||
|
enemyIndicesSelected = sectionInfo[1]
|
||
|
treasureIndicesSelected = sectionInfo[2]
|
||
|
spawnPointIndicesSelected = sectionInfo[3]
|
||
|
stomperIndicesSelected = sectionInfo[4]
|
||
|
attribs = ToonBlitzGlobals.SectionTypes[self.sectionTypeNum]
|
||
|
self.length = attribs[1]
|
||
|
self.blockList = attribs[2]
|
||
|
enemiesPool = attribs[3]
|
||
|
treasuresPool = attribs[4]
|
||
|
spawnPointsPool = attribs[5]
|
||
|
stompersPool = attribs[6]
|
||
|
self.enemyList = []
|
||
|
for enemyIndex in enemyIndicesSelected:
|
||
|
self.enemyList.append(enemiesPool[enemyIndex])
|
||
|
|
||
|
self.treasureList = []
|
||
|
for treasure in treasureIndicesSelected:
|
||
|
treasureIndex = treasure[0]
|
||
|
treasureValue = treasure[1]
|
||
|
treasureAttribs = treasuresPool[treasureIndex]
|
||
|
self.treasureList.append((treasureAttribs, treasureValue))
|
||
|
|
||
|
self.spawnPointList = []
|
||
|
for spawnPointIndex in spawnPointIndicesSelected:
|
||
|
self.spawnPointList.append(spawnPointsPool[spawnPointIndex])
|
||
|
|
||
|
self.stomperList = []
|
||
|
for stomperIndex in stomperIndicesSelected:
|
||
|
self.stomperList.append(stompersPool[stomperIndex])
|
||
|
|
||
|
self.blocksNP = NodePath('Blocks')
|
||
|
self.blocksNP.reparentTo(self.sectionNP)
|
||
|
if self.blockList[0][1][0] != (0, 0, 12):
|
||
|
self.notify.warning('First block of section %s does not start at (0, 0, 12)' % self.sectionTypeNum)
|
||
|
for index in xrange(0, len(self.blockList)):
|
||
|
blockAttribs = self.blockList[index]
|
||
|
fileName = ToonBlitzGlobals.BlockTypes[blockAttribs[0]][0]
|
||
|
blockIndex = int(fileName[-1])
|
||
|
blockType = self.sectionMgr.game.assetMgr.blockTypes[blockIndex]
|
||
|
sectionizedId = self.getSectionizedId(index)
|
||
|
newBlock = TwoDBlock.TwoDBlock(blockType, sectionizedId, blockAttribs)
|
||
|
newBlock.model.reparentTo(self.blocksNP)
|
||
|
self.blocks.append(newBlock)
|
||
|
|
||
|
self.enemyMgr = TwoDEnemyMgr.TwoDEnemyMgr(self, self.enemyList)
|
||
|
self.treasureMgr = TwoDTreasureMgr.TwoDTreasureMgr(self, self.treasureList, self.enemyList)
|
||
|
self.spawnPointMgr = TwoDSpawnPointMgr.TwoDSpawnPointMgr(self, self.spawnPointList)
|
||
|
self.stomperMgr = TwoDStomperMgr.TwoDStomperMgr(self, self.stomperList)
|
||
|
if self.sectionTypeNum == 'end':
|
||
|
self.spawnPointMgr.setupLastSavePointHandle()
|
||
|
|
||
|
def enterPlay(self, elapsedTime):
|
||
|
for block in self.blocks:
|
||
|
block.start(elapsedTime)
|
||
|
|
||
|
self.enemyMgr.enterPlay(elapsedTime)
|
||
|
self.stomperMgr.enterPlay(elapsedTime)
|
||
|
|
||
|
def exitPlay(self):
|
||
|
pass
|
||
|
|
||
|
def enterPause(self):
|
||
|
for block in self.blocks:
|
||
|
block.enterPause()
|
||
|
|
||
|
self.enemyMgr.enterPause()
|
||
|
self.stomperMgr.enterPause()
|
||
|
|
||
|
def exitPause(self):
|
||
|
for block in self.blocks:
|
||
|
block.exitPause()
|
||
|
|
||
|
self.enemyMgr.exitPause()
|
||
|
self.stomperMgr.exitPause()
|
||
|
|
||
|
def getSectionizedId(self, num):
|
||
|
|
||
|
def getTwoDigitString(index):
|
||
|
if index < 10:
|
||
|
output = '0' + str(index)
|
||
|
else:
|
||
|
output = str(index)
|
||
|
return output
|
||
|
|
||
|
return getTwoDigitString(self.indexNum) + '-' + getTwoDigitString(num)
|