Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordmazzone <mazzone.diego@gmail.com>2010-11-23 00:11:27 (GMT)
committer dmazzone <mazzone.diego@gmail.com>2010-11-23 00:11:27 (GMT)
commit4d97c1947b37ef91b75cae4da2c0ae846fefd1c6 (patch)
treeaaee59fd13b7356a2c6352e849b01c664b54106f
parent36244f088b12ef945db6ea5c0b5c745238a85efd (diff)
Social events. External characters. [GUI]
Show kid_balloon time_span (100 frames).
-rwxr-xr-xSaludame.activity/app_init.py6
-rw-r--r--Saludame.activity/kid_window.py81
-rw-r--r--Saludame.activity/panel_window.py10
-rwxr-xr-xSaludame.activity/windows_controller.py6
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):