Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Moleri <pmoleri@gmail.com>2010-12-18 20:29:13 (GMT)
committer Pablo Moleri <pmoleri@gmail.com>2010-12-18 20:29:13 (GMT)
commitd4e5230d88f8b003f9191324a0a883523065f3da (patch)
treea5704d07937bd91f5a6cf3556450f9bb972dedc0
parent1dfee05de8acea4008ec43d4e0ca372b3308142b (diff)
parent408713152991ab52a8677b494c3959a97ba2391f (diff)
Merge branch 'master' of git.sugarlabs.org:saludame/mainline
Conflicts: Saludame.activity/menu.py
-rwxr-xr-xSaludame.activity/menu.py62
-rwxr-xr-xSaludame.activity/menu_creator.py20
2 files changed, 54 insertions, 28 deletions
diff --git a/Saludame.activity/menu.py b/Saludame.activity/menu.py
index faee5b4..e52e71f 100755
--- a/Saludame.activity/menu.py
+++ b/Saludame.activity/menu.py
@@ -50,11 +50,11 @@ class Menu(Window):
self.item_list = item_list # item's list that going to be displayed, root items
self.previous_items = []
- self.exit = Item(container, frame_rate, _("exit"), "assets/icons/icon_quit.png", CLOSE_MENU, [], self, font, True)
+ self.exit = Item(container, frame_rate, _("exit"), "assets/icons/icon_quit.png", CLOSE_MENU, [], self, font, None, None, True)
self.exit.rect_in_container.center = center
self.exit.set_rect_in_container(self.exit.rect_in_container)
-
- self.back = Item(container, frame_rate, _("back"), "assets/icons/icon_quit.png", BACK_MENU, [], self, font, True)
+
+ self.back = Item(container, frame_rate, _("back"), "assets/icons/icon_quit.png", BACK_MENU, [], self, font, None, None, True)
self.back.rect_in_container.center = center
self.back.set_rect_in_container(self.back.rect_in_container)
@@ -131,14 +131,41 @@ class Menu(Window):
"""
allowed_items = []
for item in items_list:
- if item.action_id: #the item hasn't sub items
- action = self.game_manager.get_action(item.action_id)
- if self.verify_action(action, self.game_manager):
+ #verifies item conditions
+ if self.verify_item(item, self.game_manager):
+ #verifies item's action conditions
+ if item.action_id: #the item hasn't sub items
+ action = self.game_manager.get_action(item.action_id)
+ if self.verify_action(action, self.game_manager):
+ allowed_items.append(item)
+ else:
allowed_items.append(item)
- else:
- allowed_items.append(item)
return allowed_items
+ def verify_item(self, item, game_manager):
+ #verify place
+ if item.allowed_places:
+ allowed = False
+ current_place = game_manager.get_current_place()
+ for place in item.allowed_places:
+ if current_place == place:
+ allowed = True
+ break
+ if not allowed:
+ return False
+ #verify hour
+ if item.allowed_hours:
+ allowed = False
+ current_hour = game_manager.get_current_hour()
+ for hour in item.allowed_hours:
+ if current_hour == hour:
+ allowed = True
+ break
+ if not allowed:
+ return False
+
+ return True
+
def verify_action(self, action, game_manager):
#verify place
@@ -177,11 +204,10 @@ class Menu(Window):
if action.level > self.game_manager.get_level():
return False
-
+ #verify path
if not utilities.verify_path(action, self.game_manager):
return False
-
- #verify path
+
return True
@@ -281,23 +307,15 @@ class Item(Widget):
"""
Entity that represent an item
"""
- def __init__(self, container, frame_rate, name, icon_path, action_id, subitems_list, menu, font, center_item=False):
+ def __init__(self, container, frame_rate, name, icon_path, action_id, subitems_list, menu, font, allowed_places = None, allowed_hours = None, center_item=False):
self.name = name
self.subitems_list = subitems_list
self.action_id = action_id
self.menu = menu
+ self.allowed_places = allowed_places
+ self.allowed_hours = allowed_hours
- # visuals
- #path = os.path.normpath(icon_path)
- #icon = pygame.image.load(path).convert_alpha()
- #text = font.render(self.name, True, (255, 255, 255))
- #x_size = icon.get_size()[0] + text.get_size()[0] + 2
- #y_size = max([icon.get_size()[1], text.get_size()[1]])
- #surface = pygame.Surface((x_size, y_size))
- #surface.blit(icon, (0, 0))
- #surface.blit(text, (icon.get_size()[0] + 2, 0))
- #rect = surface.get_rect()
self.help_image = None
self.bg_image = None
if center_item:
diff --git a/Saludame.activity/menu_creator.py b/Saludame.activity/menu_creator.py
index c27eeff..a027f3e 100755
--- a/Saludame.activity/menu_creator.py
+++ b/Saludame.activity/menu_creator.py
@@ -5,7 +5,7 @@ import pygame
from gettext import gettext as _
import utilities
-example = [
+items = [
# ("display_name", "path_to_icon.png", "action_id", [Children]),
(_("Eat..."), "assets/icons/icon_parent.png", None, [
@@ -42,8 +42,9 @@ example = [
(_("Leche chocolatada"), "assets/icons/icon.png", "leche_chocolatada", None),
(_("Café con leche"), "assets/icons/icon.png", "leche_cafe", None),
(_("Leche"), "assets/icons/icon.png", "leche", None),
- (_("Leche con cereales"), "assets/icons/icon.png", "leche_cereales", None)
- ]),
+ (_("Leche con cereales"), "assets/icons/icon.png", "leche_cereales", None)],
+ ["schoolyard", "home"], ["morning", "afternoon"]
+ ),
(_("Líquidos..."), "assets/icons/icon_parent.png", None, [
@@ -102,7 +103,7 @@ MENU_FRAME_RATE = 1
def load_menu(game_manager, center, container, windows_controller):
font = utilities.get_font(20)
m = menu.Menu(1, container, windows_controller, [], center, 90, game_manager, font)
- for item in example:
+ for item in items:
an_item = create_item(item, m, container, font)
m.add_item(an_item)
m.calculate()
@@ -115,7 +116,14 @@ def create_item(item_tuple, a_menu, container, font):
subitems = [create_item(sub_item, a_menu, container, font) for sub_item in item_tuple[3]]
else:
subitems = []
-
- return menu.Item(container, MENU_FRAME_RATE, item_tuple[0], item_tuple[1], item_tuple[2], subitems, a_menu, font)
+ lenght = len(item_tuple)
+ item = None
+ if lenght == 4:
+ item = menu.Item(container, MENU_FRAME_RATE, item_tuple[0], item_tuple[1], item_tuple[2], subitems, a_menu, font)
+ elif lenght == 5: # the item has place restrictions
+ item = menu.Item(container, MENU_FRAME_RATE, item_tuple[0], item_tuple[1], item_tuple[2], subitems, a_menu, font, item_tuple[4])
+ elif lenght == 6: # the item has time restrictions
+ item = menu.Item(container, MENU_FRAME_RATE, item_tuple[0], item_tuple[1], item_tuple[2], subitems, a_menu, font, item_tuple[4], item_tuple[5])
+ return item