From d4e5230d88f8b003f9191324a0a883523065f3da Mon Sep 17 00:00:00 2001 From: Pablo Moleri Date: Sat, 18 Dec 2010 20:29:13 +0000 Subject: Merge branch 'master' of git.sugarlabs.org:saludame/mainline Conflicts: Saludame.activity/menu.py --- 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 -- cgit v0.9.1