Changeset 226 for trunk/src/pyspacewar/ui.py
- Timestamp:
- 12/25/06 18:55:40 (5 years ago)
- Files:
-
- 1 modified
-
trunk/src/pyspacewar/ui.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/pyspacewar/ui.py
r225 r226 10 10 import glob 11 11 import time 12 import math 12 13 import random 13 14 import itertools … … 168 169 beta = 1-alpha 169 170 return (int(alpha*r1+beta*r2), int(alpha*g1+beta*g2), int(alpha*b1+beta*b2)) 171 172 173 def smooth(x, xmax, y1, y2): 174 """Calculate a smooth transition from y1 to y2 as x moves from 0 to xmax. 175 176 >>> for x in range(10): 177 ... print '*' * int(smooth(x, 9, 1, 10)) 178 * 179 * 180 * 181 ** 182 **** 183 ****** 184 ******** 185 ********* 186 ********* 187 ********* 188 189 """ 190 t = -5 + 10 * (float(x) / xmax) 191 value = 1 / (1 + math.exp(-t)) 192 return y1 + (y2 - y1) * value 193 170 194 171 195 … … 1002 1026 fg_color = (220, 255, 255) 1003 1027 bg_color = (24, 120, 14) 1028 alpha = int(255 * 0.9) 1004 1029 1005 1030 def __init__(self, font, text, xpadding=16, ypadding=16, xalign=0.5, … … 1014 1039 self.text = text 1015 1040 self.surface = pygame.Surface((self.width, self.height)) 1016 self.surface.set_alpha(255 * 0.9)1017 1041 self.surface.set_colorkey((1, 1, 1)) 1018 1042 self.surface.fill(self.bg_color) … … 1030 1054 """Draw the element.""" 1031 1055 x, y = self.position(surface) 1056 self.surface.set_alpha(self.alpha) 1032 1057 surface.blit(self.surface, (x, y)) 1033 1058 … … 1146 1171 paused = True 1147 1172 1173 show_message_after = 1 # seconds 1174 fade_in_time = 5 # seconds 1175 1176 def enter(self, prev_mode): 1177 """Enter the mode.""" 1178 UIMode.enter(self, prev_mode) 1179 self.message = None 1180 self.pause_entered = time.time() 1181 self.animate = self.wait_for_fade 1182 1148 1183 def draw(self, screen): 1149 1184 """Draw extra things pertaining to the mode.""" 1150 1185 self.prev_mode.draw(screen) 1186 if self.animate: 1187 self.animate() 1188 if self.message: 1189 self.message.draw(screen) 1190 1191 def wait_for_fade(self): 1192 if time.time() >= self.pause_entered + self.show_message_after: 1193 self.message = HUDMessage(self.ui.menu_font, "Paused") 1194 self.message.alpha = 0 1195 self.animate = self.fade_in 1196 1197 def fade_in(self): 1198 t = time.time() - self.pause_entered - self.show_message_after 1199 if t > self.fade_in_time: 1200 self.message.alpha = int(255 * 0.9) 1201 self.animate = None 1202 else: 1203 self.message.alpha = int(smooth(t, self.fade_in_time, 0, 255 * 0.9)) 1151 1204 1152 1205 def handle_any_other_key(self, event):
