diff options
author | olpc user <olpc@xo-a7-50-46.localdomain> | 2010-11-05 21:03:58 (GMT) |
---|---|---|
committer | olpc user <olpc@xo-a7-50-46.localdomain> | 2010-11-05 21:03:58 (GMT) |
commit | 998c8b44819036ccfaa09ea9a36e803ae1e74c48 (patch) | |
tree | 19888ee2c7ba1e6dae6918bc8ed1f3e70d71169b /MAFH2/Profile.py | |
parent | 239213cb02c1d2c426796c0099f51271c7ee341d (diff) |
committed files that were ignored during last commit (lose condition)
Diffstat (limited to 'MAFH2/Profile.py')
-rw-r--r-- | MAFH2/Profile.py | 322 |
1 files changed, 165 insertions, 157 deletions
diff --git a/MAFH2/Profile.py b/MAFH2/Profile.py index 2494695..c3feac6 100644 --- a/MAFH2/Profile.py +++ b/MAFH2/Profile.py @@ -1,157 +1,165 @@ -import pygame - -from fortuneengine.GameEngineElement import GameEngineElement -from fortuneengine.DrawableFontObject import DrawableFontObject -from fortuneengine.DrawableObject import DrawableObject -from constants import MENU_PATH, NORTH, RIGHT, LEFT -from Hero import Hero -from Dungeon import Dungeon -from Items import Key -from gettext import gettext as _ - -class Profile(GameEngineElement): - def __init__(self, recall_string=None, name_entry_cb=None): - GameEngineElement.__init__(self) - self.name = "" - self.dungeon_id = "al1.txt" - self.position = (-1, -1) - self.playerFacing=NORTH - self.hero = Hero() - - # 4 types of stats and difficulties - self.problem_stats = {} - self.difficulty = {} - for stat in ['mult', 'div', 'geo', 'shop']: - - # Each type of stat has 3 "levels" easy, medium, hard - # Shop uses level for too much, too little, exact - self.problem_stats[stat] = [(0,0), (0,0), (0,0)] - - #Difficulty: 1=Easy 2=Meduim(default) 3=Hard - self.difficulty[stat] = 2 - - self.puzzlesSolved=0 - self.inventory = [] - - bg = pygame.image.load(MENU_PATH+"mafh_splash.gif").convert() - self.background = DrawableObject([bg], '') - self.background.scale(self.game_engine.width, self.game_engine.height) - self.add_to_scene([self.background]) - - #create background rect - draw_width = self.game_engine.width/4 - draw_height = self.game_engine.height/4 - surf = pygame.Surface((draw_width+60,draw_height+60)) - surf.fill((150,150,255)) - self.blueRect = DrawableObject([surf],"") - self.add_to_scene([self.blueRect]) - - font = pygame.font.Font(None, 16) - self.text_list = [] - self.text_list.append(DrawableFontObject("1", font)) - self.text_list.append(DrawableFontObject("2", font)) - self.text_list.append(DrawableFontObject("name",font)) - self.add_to_scene(self.text_list) - - - if recall_string: - self.load_from_json_string( recall_string ) - - if self.name == "": - self.name_cb = name_entry_cb - self.add_to_engine() - - def next_dungeon(self): - self.position = (-1, -1) - self.playerFacin = NORTH - - d = self.game_engine.get_object('dungeon') - self.dungeon_id = d.next - d.remove_from_engine() - self.game_engine.remove_object('dungeon') - self.game_engine.add_object('dungeon', Dungeon( self.dungeon_id )) - self.remove_keys() - - def load_from_json_string( self, recall_string ): - print "TO BE IMPLEMENTED" - - def dump_to_json_string( self ): - print "TO BE IMPLEMENTED" - - def update_problem_stat( self, p_type, level, correct ): - assert( p_type in self.problem_stats ) - assert( level >= 0 and level < len(self.problem_stats) - 1 ) - - correct, wrong = self.problem_stats[p_type][level] - if correct: - self.problem_stats[p_type][level] = (correct + 1, wrong) - else: - self.problem_stats[p_type][level] = (correct, wrong + 1) - - def move_to(self, x, y): - self.position = (x, y) - - def turn(self, dir): - if dir == RIGHT: - self.playerFacing = (self.playerFacing - 1) % 4 - - elif dir == LEFT: - self.playerFacing = (self.playerFacing + 1) % 4 - - def give_item(self, item): - self.inventory.append(item) - - def remove_keys(self): - i = 0 - new_inv = [] - for item in self.inventory: - if not isinstance(item, Key): - new_inv.append(item) - self.inventory = new_inv - - def add_to_engine(self): - super( Profile, self).add_to_engine() - - def remove_from_engine(self): - super( Profile, self).remove_from_engine() - - def event_handler(self, event): - """ - Handles user input (used only for name entry) - """ - if event.type == pygame.KEYDOWN: - if pygame.key.name(event.key)=='backspace': - self.name = self.name[0:-1] - return True - elif pygame.key.name(event.key)=='return': - self.remove_from_engine() - self.name_cb() - return True - else: - self.name+=event.unicode - return True - - def draw(self): - """ - Draws user input for name to the screen - """ - width = self.game_engine.width - height = self.game_engine.height - - draw_width = width/4 - draw_height = height/4 - - self.background.setPosition(0,0) - self.blueRect.setPosition(draw_width, draw_height) - - #name - self.text_list[0].changeText(self.name,(0,0,0)) - self.text_list[0].setPosition(draw_width+60, draw_height+60) - #text1 - self.text_list[1].changeText(_("Enter Name:"), (0,0,0)) - self.text_list[1].setPosition(draw_width,draw_height) - #text2 - self.text_list[2].changeText(_("Return to continue"), (0,0,0)) - self.text_list[2].setPosition(draw_width+20,draw_height+20) - - +import pygame
+
+from fortuneengine.GameEngineElement import GameEngineElement
+from fortuneengine.DrawableFontObject import DrawableFontObject
+from fortuneengine.DrawableObject import DrawableObject
+from constants import MENU_PATH, NORTH, RIGHT, LEFT
+from Hero import Hero
+from Dungeon import Dungeon
+from Items import Key
+from gettext import gettext as _
+
+class Profile(GameEngineElement):
+ def __init__(self, recall_string=None, name_entry_cb=None):
+ GameEngineElement.__init__(self)
+ self.name = ""
+ self.dungeon_id = "al1.txt"
+ self.position = (-1, -1)
+ self.playerFacing=NORTH
+ self.hero = Hero()
+
+ # 4 types of stats and difficulties
+ self.problem_stats = {}
+ self.difficulty = {}
+ for stat in ['mult', 'div', 'geo', 'shop']:
+
+ # Each type of stat has 3 "levels" easy, medium, hard
+ # Shop uses level for too much, too little, exact
+ self.problem_stats[stat] = [(0,0), (0,0), (0,0)]
+
+ #Difficulty: 1=Easy 2=Meduim(default) 3=Hard
+ self.difficulty[stat] = 2
+
+ self.puzzlesSolved=0
+ self.inventory = []
+
+ bg = pygame.image.load(MENU_PATH+"mafh_splash.gif").convert()
+ self.background = DrawableObject([bg], '')
+ self.background.scale(self.game_engine.width, self.game_engine.height)
+ self.add_to_scene([self.background])
+
+ #create background rect
+ draw_width = self.game_engine.width/4
+ draw_height = self.game_engine.height/4
+ surf = pygame.Surface((draw_width+60,draw_height+60))
+ surf.fill((150,150,255))
+ self.blueRect = DrawableObject([surf],"")
+ self.add_to_scene([self.blueRect])
+
+ font = pygame.font.Font(None, 16)
+ self.text_list = []
+ self.text_list.append(DrawableFontObject("1", font))
+ self.text_list.append(DrawableFontObject("2", font))
+ self.text_list.append(DrawableFontObject("name",font))
+ self.add_to_scene(self.text_list)
+
+
+ if recall_string:
+ self.load_from_json_string( recall_string )
+
+ if self.name == "":
+ self.name_cb = name_entry_cb
+ self.add_to_engine()
+
+ def reload_dungeon(self):
+ self.__load_dungeon(self.game_engine.get_object('dungeon').id)
+ #restore HP
+ self.hero.setHealth(self.hero.maxHealthPoints())
+
+ def next_dungeon(self):
+ self.__load_dungeon(self.game_engine.get_object('dungeon').next)
+
+ def __load_dungeon(self,id):
+ self.position = (-1, -1)
+ self.playerFacing = NORTH
+
+ d = self.game_engine.get_object('dungeon')
+ self.dungeon_id = id
+ d.remove_from_engine()
+ self.game_engine.remove_object('dungeon')
+ self.game_engine.add_object('dungeon', Dungeon( self.dungeon_id ))
+ self.remove_keys()
+
+ def load_from_json_string( self, recall_string ):
+ print "TO BE IMPLEMENTED"
+
+ def dump_to_json_string( self ):
+ print "TO BE IMPLEMENTED"
+
+ def update_problem_stat( self, p_type, level, correct ):
+ assert( p_type in self.problem_stats )
+ assert( level >= 0 and level < len(self.problem_stats) - 1 )
+
+ correct, wrong = self.problem_stats[p_type][level]
+ if correct:
+ self.problem_stats[p_type][level] = (correct + 1, wrong)
+ else:
+ self.problem_stats[p_type][level] = (correct, wrong + 1)
+
+ def move_to(self, x, y):
+ self.position = (x, y)
+
+ def turn(self, dir):
+ if dir == RIGHT:
+ self.playerFacing = (self.playerFacing - 1) % 4
+
+ elif dir == LEFT:
+ self.playerFacing = (self.playerFacing + 1) % 4
+
+ def give_item(self, item):
+ self.inventory.append(item)
+
+ def remove_keys(self):
+ i = 0
+ new_inv = []
+ for item in self.inventory:
+ if not isinstance(item, Key):
+ new_inv.append(item)
+ self.inventory = new_inv
+
+ def add_to_engine(self):
+ super( Profile, self).add_to_engine()
+
+ def remove_from_engine(self):
+ super( Profile, self).remove_from_engine()
+
+ def event_handler(self, event):
+ """
+ Handles user input (used only for name entry)
+ """
+ if event.type == pygame.KEYDOWN:
+ if pygame.key.name(event.key)=='backspace':
+ self.name = self.name[0:-1]
+ return True
+ elif pygame.key.name(event.key)=='return':
+ self.remove_from_engine()
+ self.name_cb()
+ return True
+ else:
+ self.name+=event.unicode
+ return True
+
+ def draw(self):
+ """
+ Draws user input for name to the screen
+ """
+ width = self.game_engine.width
+ height = self.game_engine.height
+
+ draw_width = width/4
+ draw_height = height/4
+
+ self.background.setPosition(0,0)
+ self.blueRect.setPosition(draw_width, draw_height)
+
+ #name
+ self.text_list[0].changeText(self.name,(0,0,0))
+ self.text_list[0].setPosition(draw_width+60, draw_height+60)
+ #text1
+ self.text_list[1].changeText(_("Enter Name:"), (0,0,0))
+ self.text_list[1].setPosition(draw_width,draw_height)
+ #text2
+ self.text_list[2].changeText(_("Return to continue"), (0,0,0))
+ self.text_list[2].setPosition(draw_width+20,draw_height+20)
+
+
|