Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2/Profile.py
diff options
context:
space:
mode:
Diffstat (limited to 'MAFH2/Profile.py')
-rw-r--r--MAFH2/Profile.py322
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)
+
+