roc/gameobj.py

112 lines
No EOL
2 KiB
Python
Executable file

import enums
class gameobj(object):
def __init__(self, self.pos):
self.pos = pos
self.roles = []
self.effects = []
def add_role(self, ro):
for i, r in enumerate(self.roles):
if ro is r:
break
if ro.order < r.order:
self.roles.insert(i, ro)
break
def remove_role(self, ro):
deleted = []
for ir, r in enumerate(reversed(self.roles)):
i = len(self.roles) - ir - 1
if isinstance(ro, type) and isinstance(r, ro):
del self.roles[i]
deleted.append(r)
elif ro is r:
del self.roles[i]
deleted.append(r)
return deleted
def ai(self):
pass
def handle_input(self):
pass
def move(self):
pass
def animate(self):
pass
def collide(self):
pass
def prerender(self):
pass
def render(self):
pass
class role(object):
order = 1000
phases = ()
def __init__(self):
pass
class ai_role(role):
order = 2000
phases = (enums.phase.ai,)
def update(self, owner, phase):
"we have no AI yet..."
class visible_role(role):
order = 10000
phases = (enums.phase.render,)
def update(self, owner, phase):
"we have no AI yet..."
class corporeal_role(role):
order = 5000
phases = (enums.phase.collide,)
def update(self, owner, phase):
"we have no AI yet..."
class animated_role(role):
order = 4000
phases = (enums.phase.animate,)
def update(self, owner, phase):
"we have no AI yet..."
class movable_role(role):
order = 3500
phases = (enums.phase.move,)
def update(self, owner, phase):
"we have no AI yet..."
class input_role(role):
order = 1000
phases = (enums.phase.handle_input,)
def update(self, owner, phase):
"we have no AI yet..."
class light_role(role):
order = 9000
phases = (enums.phase.prerender,)
def update(self, owner, phase):
"we have no AI yet..."
class rotation_role(role):
order = 3000
phases = (enums.phase.move,)
def update(self, owner, phase):
"we have no AI yet..."
class billboard_role(role):
order = 3000
phases = (enums.phase.move,)
def update(self, owner, phase):
"we have no AI yet..."