1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygame
import Image
from api.Vector import CVector
from api.Math import distVec
from Mouse import CMouse
class CSprite(pygame.sprite.Sprite):
def __init__(self, x = 0, y = 0):
pygame.sprite.Sprite.__init__(self)
self.mPos = CVector(x, y)
self.mVel = CVector(0, 0)
self.mOffsetX = 0
self.mOffsetY = 0
self.maxSpeed = 50
self.mactive = False
self.mclicked = False
self.image = pygame.surface.Surface((0, 0), 0)
self.rect = self.image.get_rect()
def setRegistrationPointOffset(self, aOffsetX, aOffsetY):
self.mOffsetX = aOffsetX
self.mOffsetY = aOffsetY
def setXY(self, aX, aY):
self.mPos.setXY(aX, aY)
def setPosition(self, position):
self.mPos.setVec(position)
def setPosTuple(self, position):
self.mPos.setXY(position[0], position[1])
def setVelXY(self, aVelX, aVelY):
self.mVel.setXY(aVelX, aVelY)
self.mVel.truncate(self.maxSpeed)
def setVelVec(self, aVec):
self.mVel.setVec(aVec)
self.mVel.truncate(self.maxSpeed)
def setMaxSpeed(self, aMaxSpeed):
self.maxSpeed = aMaxSpeed
def update(self):
self.mPos.add(self.mVel)
self.calculatePositionWithOffset()
self.mclicked = False
if CMouse().firstPress():
if self.rect.collidepoint(CMouse().getPos()):
self.mactive = True
if self.mactive:
if CMouse().release():
self.mactive = False
if self.rect.collidepoint(CMouse().getPos()):
self.mclicked = True
def loadImage(self, aImageFilename, aIsTransparent=True):
self.setImage(Image.loadImage(aImageFilename, aIsTransparent))
def setImage(self, aImage):
self.image = aImage
self.rect = self.image.get_rect()
self.calculatePositionWithOffset()
def mouseDown(self):
self.pressed = False
if CMouse().pressed():
if self.rect.collidepoint(CMouse().getPos()):
self.pressed = True
return self.pressed
def mouseOver(self):
if not CMouse().pressed():
if self.rect.collidepoint(CMouse().getPos()):
return True
else:
return False
else:
return False
def clicked(self):
return self.mclicked
def distanceTo(self, point):
return distVec(self.mPos, point)
def calculatePositionWithOffset(self):
self.rect.x = self.mPos.getX() - self.mOffsetX
self.rect.y = self.mPos.getY() - self.mOffsetY
def getX(self):
return self.mPos.getX()
def getY(self):
return self.mPos.getY()
def getSize(self):
return (self.rect[2], self.rect[3])
def destroy(self):
self.image = None
|