55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
class Entity:
|
|
made=0
|
|
def __init__(self,name="Unnamed",id=None,position=None,size=None,colliding_box=None,spawn_position=None,velocity=[0,0],acceleration=[0,0]):
|
|
"""Create entity object using name, id, position, size, colliding_box, spawn_position, velocity and acceleration."""
|
|
Entity.made+=1
|
|
self.made=Entity.made
|
|
self.name=name
|
|
self.id=id
|
|
self.position=position
|
|
self.size=size
|
|
self.spawn_position=spawn_position
|
|
self.velocity=velocity
|
|
self.acceleration=acceleration
|
|
self.load()
|
|
|
|
def load(self):
|
|
"""Load specific entity attributs."""
|
|
self.alive=False
|
|
self.mass=None
|
|
self.gravitional_constant=9.81
|
|
|
|
def move(self):
|
|
"""Move entity."""
|
|
for i in range(self.dimensions):
|
|
self.velocity[i]+=self.acceleration[i]
|
|
self.position[i]+=self.velocity[i]
|
|
|
|
def getNextPosition(self):
|
|
ax,ay=self.acceleration
|
|
vx,vy=self.velocity
|
|
x,y=self.position
|
|
vx+=ax
|
|
vy+=ay
|
|
x+=vx
|
|
y+=vy
|
|
return (x,y)
|
|
|
|
def spawn(self):
|
|
self.alive=True
|
|
if self.spawn_position is not None:
|
|
self.position=self.spawn_position
|
|
|
|
def die(self):
|
|
self.alive=False
|
|
|
|
def show(self,window):
|
|
pass
|
|
|
|
def collide(self,entity):
|
|
if self.colliding_box is not None and entity.colliding_box is not None:
|
|
x,y=self.getNextPosition()
|
|
ex,ey=entity.getNextPosition()
|
|
bx,by=self.colliding_box
|
|
ebx
|