diff options
Diffstat (limited to 'helpers/key.py')
-rw-r--r-- | helpers/key.py | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/helpers/key.py b/helpers/key.py index 6997e70..9a6cb3b 100644 --- a/helpers/key.py +++ b/helpers/key.py | |||
@@ -18,7 +18,8 @@ class Key: | |||
18 | lighter_outer_color = (200, 200, 200) | 18 | lighter_outer_color = (200, 200, 200) |
19 | default_inner_color = (255, 255, 255) | 19 | default_inner_color = (255, 255, 255) |
20 | mapped_inner_color = ( 0, 255, 0) | 20 | mapped_inner_color = ( 0, 255, 0) |
21 | mapped_unready_inner_color = (255, 165, 0) | 21 | mapped_unready_inner_color = ( 0, 255, 0, 100) |
22 | #mapped_unready_inner_color = (255, 165, 0) | ||
22 | 23 | ||
23 | def __init__(self, mapping, draw_lock, key_name, key_sym, top, left, width = 48, height = 48, disabled = False): | 24 | def __init__(self, mapping, draw_lock, key_name, key_sym, top, left, width = 48, height = 48, disabled = False): |
24 | self.draw_lock = draw_lock | 25 | self.draw_lock = draw_lock |
@@ -50,13 +51,16 @@ class Key: | |||
50 | 51 | ||
51 | self.inner_color = self.default_inner_color | 52 | self.inner_color = self.default_inner_color |
52 | self.actions = [] | 53 | self.actions = [] |
54 | self.description = [] | ||
55 | self.custom_color = None | ||
56 | self.custom_unready_color = None | ||
53 | 57 | ||
54 | def square(self, all_actions_ready): | 58 | def square(self, all_actions_ready): |
55 | if self.has_actions(): | 59 | if self.has_actions(): |
56 | if all_actions_ready: | 60 | if all_actions_ready: |
57 | self.inner_color = self.mapped_inner_color | 61 | self.inner_color = self.custom_color or self.mapped_inner_color |
58 | else: | 62 | else: |
59 | self.inner_color = self.mapped_unready_inner_color | 63 | self.inner_color = self.custom_unready_color or self.mapped_unready_inner_color |
60 | 64 | ||
61 | return RoundedRect((0, 0, self.width, self.height), | 65 | return RoundedRect((0, 0, self.width, self.height), |
62 | self.outer_color, self.inner_color, self.linewidth) | 66 | self.outer_color, self.inner_color, self.linewidth) |
@@ -67,6 +71,14 @@ class Key: | |||
67 | position[1] - self.position[1] | 71 | position[1] - self.position[1] |
68 | ) | 72 | ) |
69 | 73 | ||
74 | def set_description(self, description): | ||
75 | self.description = description | ||
76 | |||
77 | def set_color(self, color): | ||
78 | self.custom_color = tuple(color) | ||
79 | color.append(100) | ||
80 | self.custom_unready_color = tuple(color) | ||
81 | |||
70 | def draw(self, background_surface): | 82 | def draw(self, background_surface): |
71 | self.draw_lock.acquire() | 83 | self.draw_lock.acquire() |
72 | all_actions_ready = self.all_actions_ready() | 84 | all_actions_ready = self.all_actions_ready() |
@@ -75,11 +87,27 @@ class Key: | |||
75 | 87 | ||
76 | if getattr(sys, 'frozen', False): | 88 | if getattr(sys, 'frozen', False): |
77 | police = pygame.font.Font(sys._MEIPASS + "/Ubuntu-Regular.ttf", 14) | 89 | police = pygame.font.Font(sys._MEIPASS + "/Ubuntu-Regular.ttf", 14) |
90 | text_police = pygame.font.Font(sys._MEIPASS + "/Ubuntu-Regular.ttf", 10) | ||
78 | else: | 91 | else: |
79 | police = pygame.font.Font("Ubuntu-Regular.ttf", 14) | 92 | police = pygame.font.Font("Ubuntu-Regular.ttf", 14) |
93 | text_police = pygame.font.Font("Ubuntu-Regular.ttf", 10) | ||
80 | 94 | ||
95 | police.set_bold(True) | ||
81 | text = police.render(self.key_sym, True, (0,0,0)) | 96 | text = police.render(self.key_sym, True, (0,0,0)) |
82 | self.surface.blit(text, (5,5)) | 97 | self.surface.blit(text, (5,5)) |
98 | |||
99 | is_first_line = True | ||
100 | offset = 11 + text_police.get_linesize() | ||
101 | first_line_offset = 18 | ||
102 | for description in self.description: | ||
103 | text = text_police.render(description, True, (0,0,0)) | ||
104 | if is_first_line: | ||
105 | self.surface.blit(text, (first_line_offset, 9)) | ||
106 | is_first_line = False | ||
107 | else: | ||
108 | self.surface.blit(text, (5, offset)) | ||
109 | offset += text_police.get_linesize() | ||
110 | |||
83 | background_surface.blit(self.surface, self.position) | 111 | background_surface.blit(self.surface, self.position) |
84 | self.draw_lock.release() | 112 | self.draw_lock.release() |
85 | 113 | ||
@@ -114,8 +142,8 @@ class Key: | |||
114 | 142 | ||
115 | def list_actions(self, screen): | 143 | def list_actions(self, screen): |
116 | action_descriptions = [action.description() for action in self.actions] | 144 | action_descriptions = [action.description() for action in self.actions] |
117 | print("actions linked to key {}:".format(self.key_sym)) | 145 | #print("actions linked to key {}:".format(self.key_sym)) |
118 | print("\t" + "\n\t".join(action_descriptions)) | 146 | #print("\t" + "\n\t".join(action_descriptions)) |
119 | self.draw_lock.acquire() | 147 | self.draw_lock.acquire() |
120 | surface = pygame.Surface((800, 250)).convert() | 148 | surface = pygame.Surface((800, 250)).convert() |
121 | surface.fill((250, 250, 250)) | 149 | surface.fill((250, 250, 250)) |