Repository navigation
Expand file tree
/
Copy pathData-CreatingSprite.py
More file actions
113 lines (96 loc) · 3.87 KB
/
Copy pathData-CreatingSprite.py
File metadata and controls
113 lines (96 loc) · 3.87 KB
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
109
110
111
112
113
__author__ = 'Perkel'
import pygame
import os
def find_file(name):
for root, dirs, files in os.walk(os.curdir):
if name in files:
print os.path.join(root, name)
return os.path.join(root, name)
def load_image(name, rect=None):
file_path = find_file(name)
if rect is not None:
try:
image = pygame.image.load(file_path)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
image = image.convert_alpha()
return image, image.get_rect()
else:
try:
image = pygame.image.load(file_path)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
image = image.convert_alpha()
return image
class CreateSprite(pygame.sprite.Sprite):
def __init__(self, name, hover=None, pressed=None):
pygame.sprite.Sprite.__init__(self)
# DATA
self.image, self.rect = load_image(name, True)
self.visible = True
self.image_no_hover = self.image
self.image_hover = None
self.image_pressed = None
# State in response to input
self.last_pressed = False
# State of buttons
if hover is True:
name_path = find_file(name)
file_path, file_fullname = os.path.split(name_path)
file_name, file_ending = os.path.splitext(file_fullname)
self.image_hover = load_image(file_name+"_hover"+file_ending)
if pressed is True:
name_path = find_file(name)
file_path, file_fullname = os.path.split(name_path)
file_name, file_ending = os.path.splitext(file_fullname)
self.image_pressed = load_image(file_name+"_pressed"+file_ending)
def get_state(self, game):
mouse_hover = False
mouse_button_down = False
mouse_button_up = False
# is mouse over sprite ?
if self.rect.collidepoint(game.mouse_position):
mouse_hover = True
else:
mouse_hover = False
# is mouse button is down ?
for event in game.events:
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
mouse_button_down = True
else:
mouse_button_down = False
# is mouse button is up ?
for event in game.events:
if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
mouse_button_up = True
else:
mouse_button_up = False
# If mouse is on sprite and button is pressed up
if mouse_button_up is True and mouse_hover is True:
self.last_pressed = True
else:
self.last_pressed = False
# CHANGE IMAGE GRAPHIC BASED ON INPUT
# sprite has flags : hover, pressed
if self.image_pressed is not None and self.image_hover is not None:
if mouse_button_down is True and mouse_hover is True:
self.image = self.image_pressed
else:
if mouse_hover is True:
self.image = self.image_hover
else:
self.image = self.image_no_hover
# sprite has flags: pressed
elif self.image_pressed is not None and self.image_hover is None:
if mouse_button_down is True and mouse_hover is True:
self.image = self.image_pressed
else:
self.image = self.image_no_hover
# sprite has flags: pressed
elif self.image_pressed is None and self.image_hover is not None:
if mouse_hover is True:
self.image = self.image_hover
else:
self.image = self.image_no_hover