Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorechinelli <emilianochinelli@gmail.com>2010-12-17 22:26:10 (GMT)
committer echinelli <emilianochinelli@gmail.com>2010-12-17 22:26:10 (GMT)
commit1d3c89559a9af59d0e2f251662e5050b71cf2767 (patch)
treedcac9a0f1f6c81bfcda30cf858d3c8e39363c3c1
parentce5bb79050a6c512ba4e7fcdfe24d858992113f8 (diff)
menu items restrictions implementation.
-rwxr-xr-xSaludame.activity/menu.py56
-rwxr-xr-xSaludame.activity/menu_creator.py20
2 files changed, 51 insertions, 25 deletions
diff --git a/Saludame.activity/menu.py b/Saludame.activity/menu.py
index ff17c90..866be77 100755
--- a/Saludame.activity/menu.py
+++ b/Saludame.activity/menu.py
@@ -130,14 +130,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
@@ -176,11 +203,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
@@ -280,23 +306,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