~danigm/pixwar/trunk

« back to all changes in this revision

Viewing changes to pixwar/seleccion.py

  • Committer: danigm
  • Date: 2008-05-19 17:44:05 UTC
  • mfrom: (9.2.2 pixWar)
  • Revision ID: danigm@arch_box-20080519174405-gevqmm23iio6zwie
Explosion en los planetas cuando se conquistan
instalador que no va bien, con setuptools

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import pygame
 
2
import copy
 
3
 
 
4
class SelRec:
 
5
    '''
 
6
    Un rectangulo para seleccionar varios planetas
 
7
    '''
 
8
    def __init__(self, player, planetas):
 
9
        self.player = player
 
10
        self.planetas = planetas
 
11
        self.rect = None
 
12
 
 
13
 
 
14
    def get(self):
 
15
        return self.rect is not None
 
16
 
 
17
    def set(self, (l,t), (w,h)):
 
18
        self.rect = pygame.Rect((l,t),(w,h))
 
19
 
 
20
    def draw(self, (posx, posy), surf):
 
21
        x, y = self.rect.left, self.rect.top
 
22
        self.rect.width = posx - x
 
23
        self.rect.height = posy - y
 
24
 
 
25
        cuadro = self.cuadro_verdadero()
 
26
        image = pygame.Surface((cuadro.width, cuadro.height))
 
27
        image.fill(self.player.get_color())
 
28
        image.set_alpha(30)
 
29
        image = image.convert()
 
30
 
 
31
        surf.blit(image, cuadro)
 
32
        pygame.draw.rect(surf, (255,255,0), self.rect, 2)
 
33
 
 
34
    def seleccionar(self):
 
35
 
 
36
        self.rect = self.cuadro_verdadero()
 
37
 
 
38
        colision = self.rect.collidelistall(self.planetas)
 
39
        if len(colision) > 0:
 
40
            colision = [self.planetas[i].get_pos() for i in colision]
 
41
 
 
42
            posx, posy = colision.pop(0)
 
43
            mods = pygame.key.get_mods()
 
44
            if mods & pygame.KMOD_LSHIFT:
 
45
                self.player.seleccionar_planeta_mas((posx, posy))
 
46
            else:
 
47
                self.player.seleccionar_planeta((posx, posy))
 
48
 
 
49
            for posx, posy in colision:
 
50
                self.player.seleccionar_planeta_mas((posx, posy))
 
51
 
 
52
        self.rect = None
 
53
 
 
54
    def cuadro_verdadero(self):
 
55
        width = self.rect.width
 
56
        height = self.rect.height
 
57
        left = self.rect.left
 
58
        top = self.rect.top
 
59
        if self.rect.left > self.rect.right:
 
60
            width = -width
 
61
            left = self.rect.right
 
62
        if self.rect.top > self.rect.bottom:
 
63
            height = -height
 
64
            top = self.rect.bottom
 
65
 
 
66
        return pygame.Rect((left,top), (width,height))