#!/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