100 lines
3 KiB
Python
100 lines
3 KiB
Python
import math
|
|
|
|
class GameSprite:
|
|
|
|
colorRed = (1, 0, 0, 1)
|
|
colorBlue = (0, 0, 1, 1)
|
|
colorGreen = (0, 1, 0, 1)
|
|
colorYellow = (1, 1, 0, 1)
|
|
colorPurple = (1, 0, 1, 1)
|
|
colorGhostRed = (1, 0, 0, 0.5)
|
|
colorGhostBlue = (0, 0, 1, 0.5)
|
|
colorGhostGreen = (0, 1, 0, 0.5)
|
|
colorGhostYellow = (1, 1, 0, 0.5)
|
|
colorGhostPurple = (1, 0, 1, 0.5)
|
|
colorWhite = (1, 1, 1, 1)
|
|
colorBlack = (0.5, 0.5, 0.5, 1.0)
|
|
colorShadow = (0, 0, 0, 0.5)
|
|
|
|
def __init__(self, nodeObj, colorType = 0, foundation = 0):
|
|
self.nodeObj = nodeObj
|
|
self.foundation = foundation
|
|
self.velX = 0
|
|
self.velZ = 0
|
|
self.prevX = 0
|
|
self.prevZ = 0
|
|
self.isActive = 1
|
|
self.size = 0.04
|
|
self.isQue = 0
|
|
self.colorType = colorType
|
|
if not foundation:
|
|
if colorType == 0:
|
|
self.setColor(GameSprite.colorGhostRed)
|
|
elif colorType == 1:
|
|
self.setColor(GameSprite.colorGhostBlue)
|
|
elif colorType == 2:
|
|
self.setColor(GameSprite.colorGhostGreen)
|
|
elif colorType == 3:
|
|
self.setColor(GameSprite.colorGhostYellow)
|
|
elif colorType == 4:
|
|
self.setColor(GameSprite.colorGhostPurple)
|
|
elif colorType == 0:
|
|
self.setColor(GameSprite.colorRed)
|
|
elif colorType == 1:
|
|
self.setColor(GameSprite.colorBlue)
|
|
elif colorType == 2:
|
|
self.setColor(GameSprite.colorGreen)
|
|
elif colorType == 3:
|
|
self.setColor(GameSprite.colorYellow)
|
|
elif colorType == 4:
|
|
self.setColor(GameSprite.colorPurple)
|
|
self.markedForDeath = 0
|
|
|
|
def delete(self):
|
|
self.nodeObj.destroy()
|
|
|
|
def run(self, timeDelta):
|
|
if self.isActive and not self.isQue:
|
|
self.prevX = self.nodeObj.getX()
|
|
self.prevZ = self.nodeObj.getZ()
|
|
self.setX(self.getX() + self.velX * timeDelta)
|
|
self.setZ(self.getZ() + self.velZ * timeDelta)
|
|
self.velX = self.velX * (1 - timeDelta * 4)
|
|
self.velZ = self.velZ * (1 - timeDelta * 4)
|
|
|
|
def setActive(self, active):
|
|
if active:
|
|
self.isActive = 1
|
|
else:
|
|
self.isActive = 0
|
|
self.velX = 0
|
|
self.velZ = 0
|
|
|
|
def getX(self):
|
|
return self.nodeObj.getX()
|
|
|
|
def getZ(self):
|
|
return self.nodeObj.getZ()
|
|
|
|
def setX(self, x):
|
|
self.prevX = self.nodeObj.getX()
|
|
self.nodeObj.setX(x)
|
|
|
|
def setZ(self, z):
|
|
self.prevZ = self.nodeObj.getZ()
|
|
self.nodeObj.setZ(z)
|
|
|
|
def addForce(self, force, direction):
|
|
if self.isActive:
|
|
forceX = math.cos(direction) * force
|
|
forceZ = math.sin(direction) * force
|
|
self.velX += forceX
|
|
self.velZ += forceZ
|
|
|
|
def setColor(self, trip):
|
|
self.nodeObj.setColorScale(trip[0], trip[1], trip[2], trip[3])
|
|
|
|
def collide(self):
|
|
if self.isActive:
|
|
self.setX(self.prevX)
|
|
self.setZ(self.prevZ)
|