oldschool-toontown/otp/level/EntityTypes.py
2019-12-30 01:00:16 -05:00

176 lines
4 KiB
Python

from .EntityTypeDesc import EntityTypeDesc
from toontown.coghq.SpecImports import *
class Entity(EntityTypeDesc):
abstract = 1
type = 'entity'
attribs = (('type', None, 'const'),
('name', '<unnamed>', 'string'),
('comment', '', 'string'),
('parentEntId', 0, 'entId'))
class LevelMgr(Entity):
type = 'levelMgr'
permanent = 1
attribs = (('name', 'LevelMgr', 'const'), ('parentEntId', 0, 'const'), ('modelFilename', '', 'const'))
class EditMgr(Entity):
type = 'editMgr'
permanent = 1
blockAttribs = ('comment',)
attribs = (('name', 'LevelMgr', 'const'),
('parentEntId', 0, 'const'),
('requestSave', None, 'const'),
('requestNewEntity', None, 'const'),
('insertEntity', None, 'const'),
('removeEntity', None, 'const'))
class AttribModifier(Entity):
type = 'attribModifier'
attribs = (('recursive', 0, 'bool'),
('typeName', '', 'string'),
('attribName', '', 'string'),
('value', '', 'string'))
class Locator(Entity):
type = 'locator'
attribs = (('searchPath', '', 'string'),)
class Nodepath(Entity):
type = 'nodepath'
attribs = (('parentEntId',
0,
'entId',
{'type': 'nodepath'}),
('pos', Point3(0, 0, 0), 'pos'),
('hpr', Vec3(0, 0, 0), 'hpr'),
('scale', 1, 'scale'))
class Zone(Nodepath):
type = 'zone'
permanent = 1
blockAttribs = ('pos', 'hpr')
attribs = (('parentEntId', 0, 'const'), ('description', '', 'string'), ('visibility', [], 'visZoneList'))
class EntrancePoint(Nodepath):
type = 'entrancePoint'
attribs = (('entranceId', -1, 'int'), ('radius',
15,
'float',
{'min': 0}), ('theta',
20,
'float',
{'min': 0}))
class LogicGate(Entity):
type = 'logicGate'
output = 'bool'
attribs = (('input1Event',
0,
'entId',
{'output': 'bool'}),
('input2Event',
0,
'entId',
{'output': 'bool'}),
('isInput1', 0, 'bool'),
('isInput2', 0, 'bool'),
('logicType',
'or',
'choice',
{'choiceSet': ['or',
'and',
'xor',
'nand',
'nor',
'xnor']}))
class CutScene(Entity):
type = 'cutScene'
output = 'bool'
attribs = (('pos', Point3(0, 0, 0), 'pos'),
('hpr', Vec3(0, 0, 0), 'hpr'),
('startStopEvent',
0,
'entId',
{'output': 'bool'}),
('effect',
'irisInOut',
'choice',
{'choiceSet': ['nothing', 'irisInOut', 'letterBox']}),
('motion',
'foo1',
'choice',
{'choiceSet': ['foo1']}),
('duration', 5.0, 'float'))
class CollisionSolid(Nodepath):
type = 'collisionSolid'
attribs = (('solidType',
'sphere',
'choice',
{'choiceSet': ['sphere', 'tube']}),
('radius', 1.0, 'float'),
('length', 0.0, 'float'),
('showSolid', 0, 'bool'))
class Model(Nodepath):
type = 'model'
attribs = (('loadType',
'loadModelCopy',
'choice',
{'choiceSet': ['loadModelCopy', 'loadModel', 'loadModelOnce']}),
('modelPath', None, 'bamfilename'),
('flattenType',
'light',
'choice',
{'choiceSet': ['none',
'light',
'medium',
'strong']}),
('collisionsOnly', 0, 'bool'),
('goonHatType',
'none',
'choice',
{'choiceSet': ['none', 'hardhat', 'security']}))
class Path(Nodepath):
type = 'path'
attribs = (('pathIndex', 0, 'int'), ('pathScale', 1.0, 'float'))
class VisibilityExtender(Entity):
type = 'visibilityExtender'
attribs = (('event',
None,
'entId',
{'output': 'bool'}), ('newZones', [], 'visZoneList'))
class AmbientSound(Nodepath):
type = 'ambientSound'
attribs = (('soundPath', '', 'bamfilename'), ('volume',
1,
'float',
{'min': 0,
'max': 1}), ('enabled', 1, 'bool'))
class PropSpinner(Entity):
type = 'propSpinner'
class EntityGroup(Entity):
type = 'entityGroup'