Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorechinelli <emilianochinelli@gmail.com>2010-11-23 22:22:04 (GMT)
committer echinelli <emilianochinelli@gmail.com>2010-11-23 22:22:04 (GMT)
commit7009794668f119a563758a1bc6d4bf9f97a320b8 (patch)
tree3e7a951a0d1aa1725ec7308795090d90836c704c
parent36244f088b12ef945db6ea5c0b5c745238a85efd (diff)
*Character locations implementation
*weather implementations *environment handling *new menu items, actions and effects *new classes Environment and LocationEffect *add coments in previous implemented functions *changes in a lot modules *new backgrounds
-rwxr-xr-xSaludame.activity/actions.py2
-rwxr-xr-xSaludame.activity/actions_creator.py34
-rwxr-xr-xSaludame.activity/animation.py1
-rwxr-xr-xSaludame.activity/app_init.py16
-rwxr-xr-xSaludame.activity/assets/background/classroom_cold.pngbin0 -> 92241 bytes
-rwxr-xr-xSaludame.activity/assets/background/classroom_normal.pngbin0 -> 92350 bytes
-rwxr-xr-xSaludame.activity/assets/background/classroom_rainy.pngbin0 -> 244152 bytes
-rwxr-xr-xSaludame.activity/assets/background/classroom_sunny.pngbin0 -> 92200 bytes
-rwxr-xr-xSaludame.activity/assets/background/country_cold.pngbin0 -> 92055 bytes
-rwxr-xr-xSaludame.activity/assets/background/country_normal.pngbin0 -> 92198 bytes
-rwxr-xr-xSaludame.activity/assets/background/country_rainy.pngbin0 -> 242651 bytes
-rwxr-xr-xSaludame.activity/assets/background/country_sunny.pngbin0 -> 92310 bytes
-rwxr-xr-xSaludame.activity/assets/background/home_cold.pngbin0 -> 91898 bytes
-rwxr-xr-xSaludame.activity/assets/background/home_normal.pngbin0 -> 92075 bytes
-rwxr-xr-xSaludame.activity/assets/background/home_rainy.pngbin0 -> 242207 bytes
-rwxr-xr-xSaludame.activity/assets/background/home_sunny.pngbin0 -> 92137 bytes
-rwxr-xr-xSaludame.activity/assets/background/schoolyard_cold.pngbin0 -> 92174 bytes
-rwxr-xr-xSaludame.activity/assets/background/schoolyard_normal.pngbin0 -> 92383 bytes
-rwxr-xr-xSaludame.activity/assets/background/schoolyard_rainy.pngbin0 -> 236919 bytes
-rwxr-xr-xSaludame.activity/assets/background/square_cold.pngbin0 -> 92088 bytes
-rwxr-xr-xSaludame.activity/assets/background/square_normal.pngbin0 -> 92101 bytes
-rwxr-xr-xSaludame.activity/assets/background/square_rainy.pngbin0 -> 242555 bytes
-rwxr-xr-xSaludame.activity/assets/background/square_sunny.pngbin0 -> 92235 bytes
-rwxr-xr-xSaludame.activity/character.py19
-rwxr-xr-xSaludame.activity/character_creator.py59
-rwxr-xr-xSaludame.activity/effects.py22
-rwxr-xr-xSaludame.activity/game.py1
-rwxr-xr-xSaludame.activity/game_manager.py129
-rw-r--r--Saludame.activity/kid_window.py8
-rwxr-xr-xSaludame.activity/menu.py8
-rwxr-xr-xSaludame.activity/menu_creator.py16
-rwxr-xr-xSaludame.activity/window.py1
-rwxr-xr-xSaludame.activity/windows_controller.py8
33 files changed, 242 insertions, 82 deletions
diff --git a/Saludame.activity/actions.py b/Saludame.activity/actions.py
index 857406d..591d091 100755
--- a/Saludame.activity/actions.py
+++ b/Saludame.activity/actions.py
@@ -2,7 +2,6 @@
import status_bars
import events
-import animation
class Action:
@@ -54,3 +53,4 @@ class Mood:
+
diff --git a/Saludame.activity/actions_creator.py b/Saludame.activity/actions_creator.py
index 7db7184..3284088 100755
--- a/Saludame.activity/actions_creator.py
+++ b/Saludame.activity/actions_creator.py
@@ -18,13 +18,14 @@ CHEW_PATH = os.path.normpath("assets/kid/food/guiso")
bar_dec_effect = effects.Effect(None, [("nutrition", BARS_DECREASE_RATE), ("spare_time", BARS_DECREASE_RATE), ("physica", BARS_DECREASE_RATE), ("hygiene", BARS_DECREASE_RATE)])
-### ANIMATIONS ###
+
#actions list tuple format:
#[("action's id","icon_path","picture_path", appereance_probability, time_span,
# kid_animation_frame_rate,kid_animation_loop_times, kid_animation_path, window_animation_frame_rate,
# window_animation_loop_times, window_animation_path, sound_loop_times, sound_path, action's effect)]
+### ACTIONS THAT AFFECT STATUS BARS
actions_list = [
#id, icon, picture, appereance_probability, time_span, kid_animation_frame_rate, kid_animation_loop_times, kid_animation_path, window_animation_frame_rate, window_animation_loop_times, window_animation_path, sound_loop_times, sound_path, effect
@@ -125,13 +126,26 @@ actions_list = [
("BARS_DEC", None, None, 1.0, -1, 0, 0, None, 0, 0, None, 0, None, bar_dec_effect)
]
+### ACTIONS THAT SET CHARACTER LOCATION
+
+locations_ac_list = [("goto_schoolyard", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "schoolyard")),
+ ("goto_country", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "country")),
+ ("goto_classroom", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "classroom")),
+ ("goto_square", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "square")),
+ ("goto_living", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "home")),
+ ("goto_bedroom", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "home")),
+ ("goto_kitchen", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "home")),
+ ("goto_bathroom", None, None, None, 1, None, None, None, None, None, None, None, None, effects.LocationEffect(None, "home"))
+ ]
+
class ActionsLoader:
"""
Crea las acciones (Action) y sus efectos (Effect y EffectStatus) asociados.
"""
- def __init__(self, bar_controller):
+ def __init__(self, bar_controller, game_manager):
self.bar_controller = bar_controller
+ self.game_manager = game_manager
self.actions_list = self.__load_actions()
@@ -139,9 +153,17 @@ class ActionsLoader:
return self.actions_list
def __load_actions(self):
- return [actions.Action(action[0], action[1], action[2], action[3], action[4], action[5], action[6], action[7], action[8], action[9], action[10], action[11], action[12], self.__set_bar_controller(action[13])) for action in actions_list]
+ status_actions = [actions.Action(action[0], action[1], action[2], action[3], action[4], action[5], action[6], action[7], action[8], action[9], action[10], action[11], action[12], self.__set_bar_controller(action[13])) for action in actions_list]
+ location_actions = [actions.Action(action[0], action[1], action[2], action[3], action[4], action[5], action[6], action[7], action[8], action[9], action[10], action[11], action[12], self.__set_game_manager(action[13])) for action in locations_ac_list]
- def __set_bar_controller(self, effect_status):
- effect_status.set_bar_controller(self.bar_controller)
- return effect_status
+ return status_actions + location_actions
+
+ def __set_bar_controller(self, effect):
+ effect.set_bar_controller(self.bar_controller)
+ return effect
+
+ def __set_game_manager(self, location_effect):
+ location_effect.set_game_manager(self.game_manager)
+ return location_effect
+
diff --git a/Saludame.activity/animation.py b/Saludame.activity/animation.py
index 37fcf8c..60b72a5 100755
--- a/Saludame.activity/animation.py
+++ b/Saludame.activity/animation.py
@@ -147,3 +147,4 @@ class FPS:
text_surf = self.font.render(text, False, (255, 255, 255))
screen.blit(text_surf, self.rect)
return [self.rect]
+
diff --git a/Saludame.activity/app_init.py b/Saludame.activity/app_init.py
index edde027..3b5ba7c 100755
--- a/Saludame.activity/app_init.py
+++ b/Saludame.activity/app_init.py
@@ -15,11 +15,6 @@ class AppLoader:
### loaders
self.bars_loader = status_bars_creator.BarsLoader()
- actions_loader = actions_creator.ActionsLoader(self.bars_loader.get_bar_controller())
-
- ### actions
- self.actions_list = actions_loader.get_actions_list()
-
### status bars
self.status_bars_controller = self.bars_loader.get_bar_controller()
self.character_bars = self.bars_loader.get_third_level_bars() #the third level status bars
@@ -27,8 +22,8 @@ class AppLoader:
### events
self.events_list = self.__load_events(self.status_bars_controller)
### places
- character_loader = character_creator.CharacterLoader(self.actions_list, self.character_bars)
- self.places_dictionary = character_loader.get_places_dictionary()
+ character_loader = character_creator.CharacterLoader()
+ self.places_dictionary = None
### character
self.character = character_loader.get_character()
@@ -36,7 +31,11 @@ class AppLoader:
self.moods_list = self.__load_moods()
### game manager
- self.game_man = game_manager.GameManager(self.character, self.status_bars_controller, self.actions_list, self.events_list, None, self.moods_list, windows_controller)
+
+ self.game_man = game_manager.GameManager(self.character, self.status_bars_controller, None, self.events_list, None, character_loader.get_environments_dictionary(), self.moods_list, windows_controller)
+ actions_loader = actions_creator.ActionsLoader(self.bars_loader.get_bar_controller(), self.game_man)
+ self.actions_list = actions_loader.get_actions_list()
+ self.game_man.actions_list = self.actions_list
self.game_man.add_background_action("BARS_DEC") #acción de decrementar las barras
### menu
@@ -116,3 +115,4 @@ class AppLoader:
+
diff --git a/Saludame.activity/assets/background/classroom_cold.png b/Saludame.activity/assets/background/classroom_cold.png
new file mode 100755
index 0000000..f14e00f
--- /dev/null
+++ b/Saludame.activity/assets/background/classroom_cold.png
Binary files differ
diff --git a/Saludame.activity/assets/background/classroom_normal.png b/Saludame.activity/assets/background/classroom_normal.png
new file mode 100755
index 0000000..fdcaa88
--- /dev/null
+++ b/Saludame.activity/assets/background/classroom_normal.png
Binary files differ
diff --git a/Saludame.activity/assets/background/classroom_rainy.png b/Saludame.activity/assets/background/classroom_rainy.png
new file mode 100755
index 0000000..e914f1b
--- /dev/null
+++ b/Saludame.activity/assets/background/classroom_rainy.png
Binary files differ
diff --git a/Saludame.activity/assets/background/classroom_sunny.png b/Saludame.activity/assets/background/classroom_sunny.png
new file mode 100755
index 0000000..42b96d7
--- /dev/null
+++ b/Saludame.activity/assets/background/classroom_sunny.png
Binary files differ
diff --git a/Saludame.activity/assets/background/country_cold.png b/Saludame.activity/assets/background/country_cold.png
new file mode 100755
index 0000000..6228daf
--- /dev/null
+++ b/Saludame.activity/assets/background/country_cold.png
Binary files differ
diff --git a/Saludame.activity/assets/background/country_normal.png b/Saludame.activity/assets/background/country_normal.png
new file mode 100755
index 0000000..b7119be
--- /dev/null
+++ b/Saludame.activity/assets/background/country_normal.png
Binary files differ
diff --git a/Saludame.activity/assets/background/country_rainy.png b/Saludame.activity/assets/background/country_rainy.png
new file mode 100755
index 0000000..b488023
--- /dev/null
+++ b/Saludame.activity/assets/background/country_rainy.png
Binary files differ
diff --git a/Saludame.activity/assets/background/country_sunny.png b/Saludame.activity/assets/background/country_sunny.png
new file mode 100755
index 0000000..f5c0329
--- /dev/null
+++ b/Saludame.activity/assets/background/country_sunny.png
Binary files differ
diff --git a/Saludame.activity/assets/background/home_cold.png b/Saludame.activity/assets/background/home_cold.png
new file mode 100755
index 0000000..36777ec
--- /dev/null
+++ b/Saludame.activity/assets/background/home_cold.png
Binary files differ
diff --git a/Saludame.activity/assets/background/home_normal.png b/Saludame.activity/assets/background/home_normal.png
new file mode 100755
index 0000000..ad60445
--- /dev/null
+++ b/Saludame.activity/assets/background/home_normal.png
Binary files differ
diff --git a/Saludame.activity/assets/background/home_rainy.png b/Saludame.activity/assets/background/home_rainy.png
new file mode 100755
index 0000000..2b579d5
--- /dev/null
+++ b/Saludame.activity/assets/background/home_rainy.png
Binary files differ
diff --git a/Saludame.activity/assets/background/home_sunny.png b/Saludame.activity/assets/background/home_sunny.png
new file mode 100755
index 0000000..24a3ae2
--- /dev/null
+++ b/Saludame.activity/assets/background/home_sunny.png
Binary files differ
diff --git a/Saludame.activity/assets/background/schoolyard_cold.png b/Saludame.activity/assets/background/schoolyard_cold.png
new file mode 100755
index 0000000..317af5d
--- /dev/null
+++ b/Saludame.activity/assets/background/schoolyard_cold.png
Binary files differ
diff --git a/Saludame.activity/assets/background/schoolyard_normal.png b/Saludame.activity/assets/background/schoolyard_normal.png
new file mode 100755
index 0000000..519d8ee
--- /dev/null
+++ b/Saludame.activity/assets/background/schoolyard_normal.png
Binary files differ
diff --git a/Saludame.activity/assets/background/schoolyard_rainy.png b/Saludame.activity/assets/background/schoolyard_rainy.png
new file mode 100755
index 0000000..d9e2ee1
--- /dev/null
+++ b/Saludame.activity/assets/background/schoolyard_rainy.png
Binary files differ
diff --git a/Saludame.activity/assets/background/square_cold.png b/Saludame.activity/assets/background/square_cold.png
new file mode 100755
index 0000000..58e8a52
--- /dev/null
+++ b/Saludame.activity/assets/background/square_cold.png
Binary files differ
diff --git a/Saludame.activity/assets/background/square_normal.png b/Saludame.activity/assets/background/square_normal.png
new file mode 100755
index 0000000..66768cd
--- /dev/null
+++ b/Saludame.activity/assets/background/square_normal.png
Binary files differ
diff --git a/Saludame.activity/assets/background/square_rainy.png b/Saludame.activity/assets/background/square_rainy.png
new file mode 100755
index 0000000..bb7d737
--- /dev/null
+++ b/Saludame.activity/assets/background/square_rainy.png
Binary files differ
diff --git a/Saludame.activity/assets/background/square_sunny.png b/Saludame.activity/assets/background/square_sunny.png
new file mode 100755
index 0000000..c1e7d28
--- /dev/null
+++ b/Saludame.activity/assets/background/square_sunny.png
Binary files differ
diff --git a/Saludame.activity/character.py b/Saludame.activity/character.py
index ec0d87a..428922e 100755
--- a/Saludame.activity/character.py
+++ b/Saludame.activity/character.py
@@ -1,12 +1,11 @@
# -*- coding: utf-8 -*-
-import actions
import pygame
class Character:
- def __init__(self, name, level, score, hair_color, socks_color, skin_color, shoes_color, status_bar_list, clothes):
+ def __init__(self, name, level, score, hair_color, socks_color, skin_color, shoes_color, clothes):
self.name = name
self.level = level
self.score = score
@@ -19,10 +18,7 @@ class Character:
self.clothes = clothes
self.actual_place = None
- self.status_bar_list = status_bar_list #status bars
- self.active_events_list = []
- self.mood_list = [] #Class Mood instance's list
def set_clothes(self, clothes):
self.clothes = clothes
@@ -30,6 +26,18 @@ class Character:
def set_place(self, place_id):
self.actual_place = place_id
+class Environment:
+
+ def __init__(self, background_path, background_music):
+ self.background_path = background_path
+ self.background_music = background_music
+
+ def get_background_path(self):
+ return self.background_path
+
+ def get_background_music(self):
+ return self.background_music
+
class Place:
def __init__(self, place_id, background_path, background_music):
@@ -72,3 +80,4 @@ class Clothes:
+
diff --git a/Saludame.activity/character_creator.py b/Saludame.activity/character_creator.py
index c6a2ec4..255b488 100755
--- a/Saludame.activity/character_creator.py
+++ b/Saludame.activity/character_creator.py
@@ -27,36 +27,63 @@ import pygame
class CharacterLoader:
- def __init__(self, actions_dictionary, status_bar_list):
- self.actions_dictionary = actions_dictionary
- self.status_bar_list = status_bar_list
- self.places_dictionary = self.__load_places()
+ def __init__(self):
self.clothes_list = self.__load_clothes()
- self.character = self.__load_character(NAME, LEVEL, SCORE, self.actions_dictionary, self.places_dictionary, status_bar_list, self.clothes_list[0])
+ self.character = self.__load_character(NAME, LEVEL, SCORE, self.clothes_list[0])
+ self.environments_dictionary = self.__load_environments()
def get_character(self):
return self.character
-
- def get_places_dictionary(self):
- return self.places_dictionary
+
+ def get_environments_dictionary(self):
+ return self.environments_dictionary
def __load_clothes(self):
return ["a clothes"]
- def __load_character(self, name, level, score, actions_dictionary, places_dictionary, status_bar_list, clothes):
+ def __load_character(self, name, level, score, clothes):
hair_color = [pygame.Color(color) for color in HAIR_COLOR]
skin_color = [pygame.Color(color) for color in SKIN_COLOR]
socks_color = [pygame.Color(color) for color in SOCKS_COLOR]
shoes_color = [pygame.Color(color) for color in SHOES_COLOR]
- char = character.Character(name, level, score, hair_color, socks_color, skin_color, shoes_color, status_bar_list, clothes)
+ char = character.Character(name, level, score, hair_color, socks_color, skin_color, shoes_color, clothes)
return char
+
+ def __load_environments(self):
+ environments = {#schoolyard
+ "schoolyard_sunny" : character.Environment("assets/background/schoolyard_sunny.png", "music_path"),
+ "schoolyard_rainy" : character.Environment("assets/background/schoolyard_rainy.png", "music_path"),
+ "schoolyard_normal" : character.Environment("assets/background/schoolyard_normal.png", "music_path"),
+ "schoolyard_cold" : character.Environment("assets/background/schoolyard_cold.png", "music_path"),
+ #square
+ "square_sunny" : character.Environment("assets/background/square_sunny.png", "music_path"),
+ "square_rainy" : character.Environment("assets/background/square_rainy.png", "music_path"),
+ "square_normal" : character.Environment("assets/background/square_normal.png", "music_path"),
+ "square_cold" : character.Environment("assets/background/square_cold.png", "music_path"),
+ #classroom
+ "classroom_sunny" : character.Environment("assets/background/classroom_sunny.png", "music_path"),
+ "classroom_rainy" : character.Environment("assets/background/classroom_rainy.png", "music_path"),
+ "classroom_normal" : character.Environment("assets/background/classroom_normal.png", "music_path"),
+ "classroom_cold" : character.Environment("assets/background/classroom_cold.png", "music_path"),
+ #home
+ "home_sunny" : character.Environment("assets/background/home_sunny.png", "music_path"),
+ "home_rainy" : character.Environment("assets/background/home_rainy.png", "music_path"),
+ "home_normal" : character.Environment("assets/background/home_normal.png", "music_path"),
+ "home_cold" : character.Environment("assets/background/home_cold.png", "music_path"),
+ #country
+ "country_sunny" : character.Environment("assets/background/country_sunny.png", "music_path"),
+ "country_rainy" : character.Environment("assets/background/country_rainy.png", "music_path"),
+ "country_normal" : character.Environment("assets/background/country_normal.png", "music_path"),
+ "country_cold" : character.Environment("assets/background/country_cold.png", "music_path"),
+ }
- def __load_places(self):
- # school
-
- # home
- None
-
+ return environments
+
+
+
+
+
+
diff --git a/Saludame.activity/effects.py b/Saludame.activity/effects.py
index d6c3967..ec3b6de 100755
--- a/Saludame.activity/effects.py
+++ b/Saludame.activity/effects.py
@@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
class Effect:
+ """
+ Represents effects that affect directly on the status bars.
+ """
def __init__(self, bars_controller, effect_satatus_list):
"""
@@ -8,9 +11,6 @@ class Effect:
"""
self.bars_controller = bars_controller
self.effect_status_list = effect_satatus_list #list of tuples (bar_id, increase_rate)
-
- def add_effect(self, effect_status):
- self.effect_status_list.append(effect_status)
def activate(self):
for effect_status in self.effect_status_list:
@@ -19,8 +19,22 @@ class Effect:
def set_bar_controller(self, bars_controller):
self.bars_controller = bars_controller
+class LocationEffect:
+ """
+ Represents effects that set the character location.
+ """
+
+ def __init__(self, game_manager, place_id):
+ self.game_manager = game_manager
+ self.place_id = place_id
+
+ def activate(self):
+ self.game_manager.set_character_location(self.place_id)
+
+ def set_game_manager(self, game_manager):
+ self.game_manager = game_manager
-
+
diff --git a/Saludame.activity/game.py b/Saludame.activity/game.py
index 61605fd..c57d8f6 100755
--- a/Saludame.activity/game.py
+++ b/Saludame.activity/game.py
@@ -132,3 +132,4 @@ class Main():
if __name__ == "__main__":
Main().main(False)
+
diff --git a/Saludame.activity/game_manager.py b/Saludame.activity/game_manager.py
index 07ae93b..40e2240 100755
--- a/Saludame.activity/game_manager.py
+++ b/Saludame.activity/game_manager.py
@@ -4,6 +4,8 @@ CONTROL_INTERVAL = 15 #cantidad de señales hasta que realiza un checkeo de las
EVENTS_OCCURRENCE_INTERVAL = 5 #per control interval after an event
import random
+import effects
+import character
class GameManager:
"""
@@ -11,7 +13,7 @@ class GameManager:
y los eventos del juego.
"""
- def __init__(self, character, bars_controller, actions_list, events_list, places_list, moods_list, windows_controller):
+ def __init__(self, character, bars_controller, actions_list, events_list, places_list, environments_dictionary, moods_list, windows_controller):
"""
Constructor de la clase
"""
@@ -43,28 +45,82 @@ class GameManager:
self.probability_ranges = self.__calculate_ranges(self.events_list)
self.events_interval = EVENTS_OCCURRENCE_INTERVAL
+ #environment
+ self.environments_dictionary = environments_dictionary
+ self.current_weather = "sunny" # default weather
+ self.current_place = "schoolyard" # default place
+
+ #for testing
+ self.p_i = 0
+
def pause_game(self):
self.pause = True
def continue_game(self):
self.pause = False
+
+ def signal(self):
+ """
+ Increment signal, it means that an iteration has been completed
+ """
+ if not self.pause:
+ self.count += 1
+ if(self.count >= CONTROL_INTERVAL):
+ self.__control_active_actions() #handle active character actions
+ self.bars_controller.calculate_score() #calculates the score of the score_bar
+ self.__control_active_events() #handle active events
+ self.__check_active_mood() # check if the active character mood
+
+ self.count = 0
+
- def set_active_action(self, action_id):
- #place = get_place(self.character.actual_place)
- #if(place.allowed_action(action_id)): #continúa con la acción, solo si es permitida en el lugar
- if(not self.active_char_action): #Si existe una accion activa no la interrumpe
- if(True): #dont check char's place yet
- action = self.get_action(action_id)
- if(action):
- action.perform()
- self.windows_controller.show_action_animation(action)
- self.active_char_action = action
+## Environment handling
+
+ def set_character_location(self, place_id):
+ print "character went to: ", place_id
+ weather = self.get_current_weather()
+ environment_id = place_id + "_" + weather
+ environment = self.environments_dictionary[environment_id]
+
+ self.windows_controller.set_environment(environment)
- def get_active_action(self):
+ def set_current_weather(self, weather):
+ self.current_weather = weather
+
+
+ def get_current_weather(self):
+ l = ["rainy", "sunny", "cold", "normal"]
+ i = random.randint(0, 3)
+ if i == self.p_i:
+ return self.get_current_weather()
+ else:
+ self.p_i = i
+
+ print "se genero el clima: ", l[i]
+
+ return l[i]
+
+ def get_place(self, place_id):
"""
- Return the character active action
+ Returns the place asociated to the place_id
"""
- return self.active_char_action
+ for place in self.places_list:
+ if(place.id == place_id):
+ return place
+
+## Actions handling
+
+ def execute_action(self, action_id):
+ action = self.get_action(action_id)
+
+ if isinstance(action.effect, effects.Effect): #this action affects status bars
+ self.set_active_action(action_id)
+ elif isinstance(action.effect, effects.LocationEffect): #this action affects character location
+ if(self.active_char_action):
+ self.interrupt_active_action(None)
+ action.perform()
+ action.reset()
+
def interrupt_active_action(self, action_id):
"""
@@ -74,12 +130,13 @@ class GameManager:
"""
self.active_char_action.reset()
self.active_char_action = None
+ self.windows_controller.stop_actual_action_animation()
if(action_id):
action = self.get_action(action_id)
if(action):
self.active_char_action = action
-
+
def add_background_action(self, action_id):
"""
Add a background action.
@@ -87,29 +144,27 @@ class GameManager:
action = self.get_action(action_id)
if(action):
self.background_actions.append(action)
-
- def signal(self):
+
+ def get_active_action(self):
"""
- Increment signal, it means that an iteration has been completed
+ Return the character active action
"""
- if not self.pause:
- self.count += 1
- if(self.count >= CONTROL_INTERVAL):
- self.__control_active_actions() #handle active character actions
- self.bars_controller.calculate_score() #calculates the score of the score_bar
- self.__control_active_events() #handle active events
- self.__check_active_mood() # check if the active character mood
-
- self.count = 0
+ return self.active_char_action
- def get_place(self, id_place):
+ def set_active_action(self, action_id):
"""
- Returns the place asociated to the id_place
+ Set the active char actions
"""
- for place in self.places_list:
- if(place.id == id_place):
- return place
-
+ #place = get_place(self.character.actual_place)
+ #if(place.allowed_action(action_id)): #continúa con la acción, solo si es permitida en el lugar
+ if(not self.active_char_action): #Si existe una accion activa no la interrumpe
+ if(True): #dont check char's place yet
+ action = self.get_action(action_id)
+ if(action):
+ action.perform()
+ self.windows_controller.show_action_animation(action)
+ self.active_char_action = action
+
def get_action(self, action_id):
"""
Returns the action asociated to the id_action
@@ -117,9 +172,11 @@ class GameManager:
for action in self.actions_list:
if(action.id == action_id):
return action
-
+
def __control_active_actions(self):
-
+ """
+ Controls active game actions.
+ """
for action in self.background_actions:
action.perform()
action.time_span = 1 #that means background actions never stop
@@ -132,7 +189,6 @@ class GameManager:
self.active_char_action = None
self.windows_controller.stop_actual_action_animation()
-
## Moods handling
def __check_active_mood(self):
@@ -229,3 +285,4 @@ class GameManager:
+
diff --git a/Saludame.activity/kid_window.py b/Saludame.activity/kid_window.py
index 0349156..2ecd451 100644
--- a/Saludame.activity/kid_window.py
+++ b/Saludame.activity/kid_window.py
@@ -32,6 +32,11 @@ class KidWindow(Window):
self.last_repaint = False
+ ##### Environment #####
+ def set_environment(self, environment):
+ self.set_bg_image(pygame.image.load(environment.background_path).convert())
+ self.kid.set_bg_image(self.bg_image.subsurface(self.kid_rect))
+
##### Moods #####
def change_mood(self):
self.kid.change_mood()
@@ -115,4 +120,5 @@ class KidBalloon(Window):
screen.blit(self.bg, self.rect)
return [self.rect]
- \ No newline at end of file
+
+
diff --git a/Saludame.activity/menu.py b/Saludame.activity/menu.py
index 38aa97c..53f0be2 100755
--- a/Saludame.activity/menu.py
+++ b/Saludame.activity/menu.py
@@ -76,7 +76,8 @@ class Menu(Window):
Send an action to the game_manager. The action was selected
in one of the sub-items
"""
- self.game_manager.set_active_action(action_id)
+ #self.game_manager.execute_action(action_id)
+ self.game_manager.execute_action(action_id)
def set_actual_selection(self, actual_selection):
"""
@@ -172,8 +173,8 @@ class Item(Widget):
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))
+ surface.blit(icon, (0, 0))
+ surface.blit(text, (icon.get_size()[0] + 2, 0))
rect = surface.get_rect()
Widget.__init__(self, container, rect, frame_rate, surface)
@@ -205,3 +206,4 @@ class Item(Widget):
self.menu.close()
if(self.action_id != None):
self.menu.send_action(self.action_id)
+
diff --git a/Saludame.activity/menu_creator.py b/Saludame.activity/menu_creator.py
index a6214b3..aa61005 100755
--- a/Saludame.activity/menu_creator.py
+++ b/Saludame.activity/menu_creator.py
@@ -59,7 +59,20 @@ example = [
(_("Talk with a friend"), "assets/icons/icon.png", "talk_talk", None),
(_("Do homework"), "assets/icons/icon.png", "study_study", None),
(_("Clean up the bedroom"), "assets/icons/icon.png", "clean_clean", None)
- ])
+ ]),
+
+ (_("ir a..."), "assets/icons/icon_parent.png", None, [
+ (_("Schoolyard"), "assets/icons/icon.png", "goto_schoolyard", None),
+ (_("Country"), "assets/icons/icon.png", "goto_country", None),
+ (_("Classroom"), "assets/icons/icon.png", "goto_classroom", None),
+ (_("Square"), "assets/icons/icon.png", "goto_square", None),
+ (_("Home"), "assets/icons/icon_parent.png", None, [
+ (_("Living room"), "assets/icons/icon.png", "goto_living", None),
+ (_("Bedroom"), "assets/icons/icon.png", "goto_bedroom", None),
+ (_("Kitchen"), "assets/icons/icon.png", "goto_kitchen", None),
+ (_("Bathroom"), "assets/icons/icon.png", "goto_bathroom", None)
+ ])
+ ])
]
MENU_FRAME_RATE = 1
@@ -82,3 +95,4 @@ def create_item(item_tuple, a_menu, container, font):
subitems = []
return menu.Item(container, MENU_FRAME_RATE, item_tuple[0], item_tuple[1], item_tuple[2], subitems, a_menu, font)
+
diff --git a/Saludame.activity/window.py b/Saludame.activity/window.py
index d814e2c..911fe0d 100755
--- a/Saludame.activity/window.py
+++ b/Saludame.activity/window.py
@@ -155,3 +155,4 @@ class Window:
def get_background(self):
return self.get_background_and_owner()[0]
+
diff --git a/Saludame.activity/windows_controller.py b/Saludame.activity/windows_controller.py
index e86baa6..51304e6 100755
--- a/Saludame.activity/windows_controller.py
+++ b/Saludame.activity/windows_controller.py
@@ -83,7 +83,12 @@ class WindowsController:
W = []
for win in window.windows:
W.append(win.register_id)
- print(" (%s)" % (W))
+ print(" (%s)" % (W))
+
+ ##### BACKGROUND #####
+
+ def set_environment(self, environment):
+ self.windows["kid"].set_environment(environment)
##### Actions #####
def show_action_animation(self, action):
@@ -229,3 +234,4 @@ class ScaledGame:
+