X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/346a9b8e1fcfe30629f0d1ee4675e9e8f89890cf..4c4732c6ed8cb0aaa70fb2d4c6e5a958868c5349:/src/cursor/WarpingCursor.py diff --git a/src/cursor/WarpingCursor.py b/src/cursor/WarpingCursor.py deleted file mode 100755 index 57985e1..0000000 --- a/src/cursor/WarpingCursor.py +++ /dev/null @@ -1,155 +0,0 @@ -''' -Created on 29 mai 2009 - -@author: samsam -''' - -import os, sys, math - -import pygame -from pygame.sprite import Sprite - -class WarpingCursor(Sprite): - ''' - The class for animating the warping cursor - - screen: - the screen on which the WarpingCursor is painted - images: - The images constituting the animation of the cursor - durations: - The duration of each image in the animation - centerPosition: - The Position of the center of the cursor - _imagePointer: - A pointer to the current image - _animationOffset: - The time elapsed since when the current image should have been displayed - ''' - screen = None - images = None - durations = None - centerPosition = None - _imagePointer = None - _animationOffset = None - - - def __init__(self, scr, images, durations, initCenterPosition,flashImage): - ''' - Constructor - - scr: - the screen on which the WarpingCursor is painted - images: - The images constituting the animation of the cursor - durations: - The duration of each image in the animation - initCenterPosition: - The Position of the center of the cursor at the beginning - ''' - self.screen = scr - self.images = images - self.flashImagePath = flashImage - self.durations = durations - self.centerPosition = initCenterPosition - self.flashLength = 100 - self.flashing = False - self.image = pygame.image.load(self.images[0]).convert_alpha() - self._imagePointer = 0 - self._animationOffset = 0 - self._flashTimer = 0 - - def update(self, elapsedTime, centerPosition): - ''' - Update the cursor's look and position - - elapsedTime: - The time passed since the previous update - centerPosition: - the new position of the creep - ''' - self._updateImage(elapsedTime) - self.centerPosition = centerPosition - if self.flashing : - self._flashTimer += elapsedTime - if self._flashTimer > self.flashLength: - self.flashing = False - - def _updateImage(self, elapsedTime): - ''' - Update the cursor's image - - elapsedTime: - The time passed since the previous update - ''' - self._animationOffset += elapsedTime - - if self._animationOffset > self.durations[self._imagePointer]: - #New animation offset is computed first, before updating the pointer - self._animationOffset -= self.durations[self._imagePointer] - #point to the next image (restarts from the beginning when it reaches the end) - self._imagePointer = (self._imagePointer + 1) % len(self.images) - - if self.flashing: - self.image = pygame.image.load(self.flashImagePath).convert_alpha() - else : - self.image = pygame.image.load(self.images[self._imagePointer]).convert_alpha() - - def flash(self,flashLength = None): - self._flashTimer = 0 - self.flashing = True - if flashLength: - self.flashlength = flashLength - - def blit(self,surface): - ''' - Draw the circle on surface - ''' - - newPos = (self.centerPosition[0] - self.image.get_width() / 2, self.centerPosition[1] - self.image.get_height() / 2) - surface.blit(self.image, newPos) - -def createImageListFromPath(path, imageCount): - ''' - Create a list of images for a cursor (the concatenation of the original and reversed lists of images). - Images must be stored as path/imageNumber.png - - path: - The folder where the images for that cursor are stored - imageCount: - The number of images in the folder - ''' - - tempImages = [''.join([path, '/', str(i), '.png']) for i in range(imageCount)] - #tempImagesReversed = tempImages[:] - #tempImagesReversed.reverse() - #return(tempImages+tempImagesReversed) - return(tempImages) - -#testing -if __name__ == "__main__" : - window = pygame.display.set_mode((1680, 1050), pygame.FULLSCREEN) - screen = pygame.display.get_surface() - clock = pygame.time.Clock() - - images = createImageListFromPath('cursorImages/black',11) - durations = [50 for i in range(22)] - position = (400, 300) - cursor = WarpingCursor(screen, images, durations, position) - - while True: - # Limit frame speed to 50 FPS - # - timePassed = clock.tick(50) - - for event in pygame.event.get(): - if event.type == pygame.QUIT: - sys.exit() - if event.type == pygame.MOUSEMOTION: - position = event.pos - - cursor.update(timePassed, position) - cursor.blit(screen) - pygame.display.flip() - -