diff options
author | dmazzone <mazzone.diego@gmail.com> | 2010-11-23 00:11:27 (GMT) |
---|---|---|
committer | dmazzone <mazzone.diego@gmail.com> | 2010-11-23 00:11:27 (GMT) |
commit | 4d97c1947b37ef91b75cae4da2c0ae846fefd1c6 (patch) | |
tree | aaee59fd13b7356a2c6352e849b01c664b54106f | |
parent | 36244f088b12ef945db6ea5c0b5c745238a85efd (diff) |
Social events. External characters. [GUI]
Show kid_balloon time_span (100 frames).
-rwxr-xr-x | Saludame.activity/app_init.py | 6 | ||||
-rw-r--r-- | Saludame.activity/kid_window.py | 81 | ||||
-rw-r--r-- | Saludame.activity/panel_window.py | 10 | ||||
-rwxr-xr-x | Saludame.activity/windows_controller.py | 6 |
4 files changed, 92 insertions, 11 deletions
diff --git a/Saludame.activity/app_init.py b/Saludame.activity/app_init.py index edde027..c8d8d48 100755 --- a/Saludame.activity/app_init.py +++ b/Saludame.activity/app_init.py @@ -78,9 +78,9 @@ class AppLoader: ef4 = effects.Effect(bars_controller, [("energy", -1.4), ("resistencia", -0.9), ("fat", -0.5)]) ef5 = effects.Effect(bars_controller, [("nutrition", -0.3), ("energy", -1.4), ("resistencia", -0.9), ("fat", -0.5)]) - event_ill = events.Event("ill.jpg", None, "ill", 5, 15, "kind", None, ef4, "me siento mal!", 2, 50) #preferred mood sick 1 - event_caries = events.Event("caries.jpg", None, "caries", 5, 15, "kind", None, ef3, "me duele una muela...", 5, 50) - event_stomach_ache = events.Event("ill.jpg", "assets/events/stomach_ache", "stomach_ache", 5, 15, "kind", None, ef5, "me duele la panza! :(", 2, 50) #preferred mood sick 1 + event_ill = events.Event("ill.jpg", None, "ill", 5, 15, "kind", None, ef4, "me siento mal!", 2, 100) #preferred mood sick 1 + event_caries = events.Event("caries.jpg", None, "caries", 5, 15, "kind", None, ef3, "me duele una muela...", 5, 100) + event_stomach_ache = events.Event("ill.jpg", "assets/events/stomach_ache", "stomach_ache", 5, 15, "kind", None, ef5, "me duele la panza! :(", 2, 100) #preferred mood sick 1 return [event_ill, event_caries, event_stomach_ache] diff --git a/Saludame.activity/kid_window.py b/Saludame.activity/kid_window.py index 0349156..9a943bf 100644 --- a/Saludame.activity/kid_window.py +++ b/Saludame.activity/kid_window.py @@ -26,6 +26,12 @@ class KidWindow(Window): self.balloon = None + ### Events ### + + # Socials + self.social_event = None + self.external_character = None + # Menu self.menu = menu_creator.load_menu(game_man, (480, 250), self.rect, windows_controller) self.add_window(self.menu) @@ -45,20 +51,33 @@ class KidWindow(Window): def stop_action_animation(self): self.kid.stop_action_animation() + + ##### Events ##### + def add_social_event(self, event): + self.social_event = event + self.external_character = ExternalCharacter(self.rect, pygame.Rect(700, 170, 1, 1), 1, self.windows_controller) + self.add_window(self.external_character) + + def remove_social_event(self): + self.social_event = None + self.windows.remove(self.external_character) + self.external_character = None ##### Kid ballon ##### def show_kid_balloon(self, message, time_span): - self.balloon = KidBalloon(self.rect, pygame.Rect(580, 80, 1, 1), 1, self.windows_controller) + self.balloon = MessageBalloon(self.rect, pygame.Rect(580, 80, 1, 1), 1, self.windows_controller) self.balloon.set_text(message) self.balloon.set_time_span(time_span) self.add_window(self.balloon) - def remove_kid_ballon(self): + def remove_kid_balloon(self): self.windows.remove(self.balloon) self.balloon = None def draw(self, screen, frames): + changes = [] + if self.last_repaint: self.repaint = True self.last_repaint = False @@ -68,15 +87,63 @@ class KidWindow(Window): self.last_repaint = True self.repaint = True - changes = Window.draw(self, screen, frames) + changes += Window.draw(self, screen, frames) if self.balloon: if not self.balloon.visible: - self.remove_kid_ballon() + self.remove_kid_balloon() - return changes + if self.external_character: + if not self.external_character.visible: + self.remove_social_event() -class KidBalloon(Window): + # Characters at social events + if self.external_character: + changes += self.external_character.draw(screen, frames) + + return changes + +class ExternalCharacter(Window): + def __init__(self, container, rect, frame_rate, windows_controller): + + self.character = pygame.image.load("assets/characters/teacher.png").convert_alpha() + rect.size = self.character.get_size() + + Window.__init__(self, container, rect, frame_rate, windows_controller, "external_character") + + self.set_bg_image(self.character) + + self.visible = True + self.time_span = 100 # Hardcoded + + self.message_balloon = MessageBalloon(self.container, pygame.Rect(580, 80, 1, 1), 1, self.windows_controller) + self.message_balloon.set_text("DeberÃas ir al dentista....") # Hardcoded + self.message_balloon.set_time_span(self.time_span) # Mismo time_span que el character + + self.bg1 = (self.windows_controller.screen.subsurface(self.rect).copy()) + self.bg2 = (self.windows_controller.screen.subsurface(self.message_balloon.rect).copy()) + + # Override handle_mouse_down + def handle_mouse_down(self, (x, y)): + self.visible = False + + def draw(self, screen, frames): + if (not self.time_span): + self.visible = False + if (self.visible): + changes = [] + self.time_span -= 1 + self.repaint = True + changes += Window.draw(self, screen, frames) + changes += self.message_balloon.draw(screen, frames) + return changes + else: + screen.blit(self.bg1, self.rect) + screen.blit(self.bg2, self.message_balloon.rect) + return [self.rect, self.message_balloon.rect] + + +class MessageBalloon(Window): def __init__(self, container, rect, frame_rate, windows_controller): @@ -114,5 +181,3 @@ class KidBalloon(Window): else: screen.blit(self.bg, self.rect) return [self.rect] - -
\ No newline at end of file diff --git a/Saludame.activity/panel_window.py b/Saludame.activity/panel_window.py index 9792d71..80375f5 100644 --- a/Saludame.activity/panel_window.py +++ b/Saludame.activity/panel_window.py @@ -47,6 +47,13 @@ class PanelWindow(Window): # Social self.surf_social = pygame.Surface((70, 110)) + #self.rect_personal = pygame.Rect((510, 652), self.surf_social.get_rect().size) + self.active_social_events = [] + self.index_social_event = 0 + + # Para probar GUI eventos sociales + social = ImageButton(self.rect_personal, pygame.Rect(190, 15, 80, 80), 1, "assets/events/caries.jpg", self._cb_button_click_social) + self.add_button(social) # Customization customization_button = ImageButton(self.rect, pygame.Rect(885, 0, 1, 1), 1, "assets/layout/customization.png", self._cb_button_click_customization) @@ -138,6 +145,9 @@ class PanelWindow(Window): def _cb_button_click_customization(self, button): self.windows_controller.set_active_window("customization_window") + def _cb_button_click_social(self, button): + self.windows_controller.add_social_event(None) + class ActionProgressBar(Widget): """ Shows the progress of the active action diff --git a/Saludame.activity/windows_controller.py b/Saludame.activity/windows_controller.py index e86baa6..b4e609c 100755 --- a/Saludame.activity/windows_controller.py +++ b/Saludame.activity/windows_controller.py @@ -103,6 +103,12 @@ class WindowsController: def remove_personal_event(self, event): self.windows["panel_window"].remove_personal_event(event) + + def add_social_event(self, event): + self.windows["kid"].add_social_event(event) + + def remove_social_event(self, event): + self.windows["kid"].remove_social_event(event) ##### Messages at ballon ##### def show_kid_message(self, message, message_time_span): |