Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/MAFH2/MagicMenu.py
diff options
context:
space:
mode:
Diffstat (limited to 'MAFH2/MagicMenu.py')
-rw-r--r--MAFH2/MagicMenu.py106
1 files changed, 70 insertions, 36 deletions
diff --git a/MAFH2/MagicMenu.py b/MAFH2/MagicMenu.py
index 42d4bd9..8e4ea56 100644
--- a/MAFH2/MagicMenu.py
+++ b/MAFH2/MagicMenu.py
@@ -1,6 +1,8 @@
import pygame
import random
from fortuneengine.GameEngineElement import GameEngineElement
+from fortuneengine.DrawableObject import DrawableObject
+from fortuneengine.DynamicDrawableObject import DynamicDrawableObject
from AnimatedSprite import Spritesheet
from constants import MENU_PATH, PUZZLE_PATH
@@ -12,20 +14,24 @@ class MagicMenuHolder( GameEngineElement ):
GameEngineElement.__init__(self, has_draw=True, has_event=False)
self.menu = None
self.callback = callback
- self.background = pygame.image.load(MENU_PATH + "battleMenubackground.gif")
+ self.background = DrawableObject([pygame.image.load( MENU_PATH + "battleMenubackground.gif")], '')
+ self.background.setPosition(0,286)
+ self.game_engine.get_scene().addObject(self.background)
def remove_from_engine(self):
+ self.game_engine.get_scene().removeObject(self.background)
super( MagicMenuHolder, self ).remove_from_engine()
self.clear_menu()
def draw(self,screen,time_delta):
- screen.blit(self.background,(0,286,452,414))
+ pass
def menu_called(self, id):
self.callback(id, self)
def clear_menu(self):
if self.menu:
+ self.menu.clear()
self.menu.remove_from_engine()
self.menu = None
@@ -89,9 +95,7 @@ class MagicMenu(GameEngineElement):
def __init__(self, menu_options, x, y, spell_type):
GameEngineElement.__init__(self, has_draw=True, has_event=True)
magic_list = self.game_engine.get_object('battle').magic_list
- self.menu = Menu(menu_options, spell_type, magic_list)
-
-
+ self.menu = Menu(menu_options, spell_type, magic_list, self.game_engine.get_scene())
self.menu.set_pos(x, y)
self.add_to_engine()
@@ -100,12 +104,16 @@ class MagicMenu(GameEngineElement):
def draw(self,screen,time_delta):
self.menu.draw( screen )
+
+ def clear(self):
+ self.menu.clear()
class Menu(object):
- def __init__(self, options, spelltype, magic_list):
+ def __init__(self, options, spelltype, magic_list, scene):
"""Initialize the EzMenu! options should be a sequence of lists in the
format of [option_name, option_function]"""
+ self.scene = scene
self.buttons = []
self.options = options
self.x = 0
@@ -115,6 +123,7 @@ class Menu(object):
self.width = 2
self.spelltype = spelltype
self.magic_list = magic_list
+ self.reference = []
lightning = []
fire = []
@@ -130,56 +139,56 @@ class Menu(object):
if(spelltype == 0):
#fire attack
for i in range(4):
- self.buttons.append(pygame.transform.scale(fire[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(fire[i] , (60,60))], ""))
#filler buttons
for i in range(0,2):
- self.buttons.append(pygame.transform.scale(lightning[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(lightning[i] , (60,60))], ""))
random.seed()
- self.buttons.append(pygame.transform.scale(heal[random.randint(0,3)] , (60,60)))
- self.buttons.append(pygame.transform.scale(missile[random.randint(0,3)] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(heal[random.randint(0,3)] , (60,60))], ""))
+ self.buttons.append(DrawableObject([pygame.transform.scale(missile[random.randint(0,3)] , (60,60))], ""))
- self.mainGlyph = pygame.image.load(PUZZLE_PATH + "FireGlyph.gif").convert()
+ self.mainGlyph = pygame.image.load(PUZZLE_PATH + "FireGlyph.gif").convert_alpha()
self.glyphs = fire
elif(spelltype == 1):
#lightning attack
for i in range(4):
- self.buttons.append(pygame.transform.scale(lightning[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(lightning[i] , (60,60))], ""))
#filler buttons
for i in range(0,2):
- self.buttons.append(pygame.transform.scale(fire[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(fire[i] , (60,60))], ""))
random.seed()
- self.buttons.append(pygame.transform.scale(heal[random.randint(0,3)] , (60,60)))
- self.buttons.append(pygame.transform.scale(missile[random.randint(0,3)] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(heal[random.randint(0,3)] , (60,60))], ""))
+ self.buttons.append(DrawableObject([pygame.transform.scale(missile[random.randint(0,3)] , (60,60))], ""))
- self.mainGlyph = pygame.image.load(PUZZLE_PATH + "LightningGlyph.gif").convert()
+ self.mainGlyph = pygame.image.load(PUZZLE_PATH + "LightningGlyph.gif").convert_alpha()
self.glyphs = lightning
elif(spelltype == 2):
#missile attack
for i in range(4):
- self.buttons.append(pygame.transform.scale(missile[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(missile[i] , (60,60))], ""))
#filler buttons
for i in range(0,2):
- self.buttons.append(pygame.transform.scale(lightning[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(lightning[i] , (60,60))], ""))
random.seed()
- self.buttons.append(pygame.transform.scale(heal[random.randint(0,3)] , (60,60)))
- self.buttons.append(pygame.transform.scale(fire[random.randint(0,3)] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(heal[random.randint(0,3)] , (60,60))], ""))
+ self.buttons.append(DrawableObject([pygame.transform.scale(fire[random.randint(0,3)] , (60,60))], ""))
- self.mainGlyph = pygame.image.load(PUZZLE_PATH + "MissileGlyph.gif").convert()
+ self.mainGlyph = pygame.image.load(PUZZLE_PATH + "MissileGlyph.gif").convert_alpha()
self.glyphs = missile
elif(spelltype == 3):
#heal
for i in range(4):
- self.buttons.append(pygame.transform.scale(heal[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(heal[i] , (60,60))], ""))
#filler buttons
for i in range(0,2):
- self.buttons.append(pygame.transform.scale(lightning[i] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(lightning[i] , (60,60))], ""))
random.seed()
- self.buttons.append(pygame.transform.scale(missile[random.randint(0,3)] , (60,60)))
- self.buttons.append(pygame.transform.scale(fire[random.randint(0,3)] , (60,60)))
+ self.buttons.append(DrawableObject([pygame.transform.scale(missile[random.randint(0,3)] , (60,60))], ""))
+ self.buttons.append(DrawableObject([pygame.transform.scale(fire[random.randint(0,3)] , (60,60))], ""))
- self.mainGlyph = pygame.image.load(PUZZLE_PATH + "HealGlyph.gif").convert()
+ self.mainGlyph = pygame.image.load(PUZZLE_PATH + "HealGlyph.gif").convert_alpha()
self.glyphs = heal
deck = [0,1,2,3,4,5,6,7]
@@ -194,7 +203,25 @@ class Menu(object):
self.buttons = tButtons
self.options = tOptions
- self.height = (len(self.options)*self.buttons[1].get_height()) / self.cols
+ surf = pygame.Surface((60,60))
+ surf.fill((4, 119, 152))
+ self.selectRect = DynamicDrawableObject([surf],"")
+ self.selectRect.setPosition(297, 435)
+ self.scene.addObject(self.selectRect)
+ self.scene.addObjects(self.buttons)
+
+ self.mainGlyph.set_colorkey((255,0,255), pygame.RLEACCEL)
+ self.mainGlyphDO = DrawableObject([self.mainGlyph],"")
+ self.mainGlyphDO.setPosition(485,350)
+
+ for image in self.glyphs:
+ tempDO = DrawableObject([image],"",True)
+ #tempDO.makeTransparent(True)
+ self.reference.append(tempDO)
+ self.scene.addObjects(self.reference)
+ self.scene.addObject(self.mainGlyphDO)
+
+ self.height = (len(self.options)*self.buttons[1].getYSize()) / self.cols
def draw(self, surface):
"""Draw the menu to the surface."""
@@ -202,8 +229,8 @@ class Menu(object):
h=0 # Selection Spacing
j=0 # Col Spacing
index=0 #current spot in buttons list
- height = self.buttons[0].get_height()
- width = self.buttons[0].get_width()
+ height = 60
+ width = 60
for o in self.options:
@@ -211,8 +238,9 @@ class Menu(object):
newY = self.y + i * height
if h==self.option:
- pygame.draw.rect(surface, (4, 119, 152), ( newX, newY, height, width))
- surface.blit(self.buttons[index], (newX, newY) )
+ self.selectRect.setPosition(newX, newY)
+ self.buttons[index].setPosition(newX, newY)
+ #surface.blit(self.buttons[index], (newX, newY) )
j+=1
h+=1
@@ -221,14 +249,12 @@ class Menu(object):
i+=1
j=0
- self.mainGlyph.set_colorkey((255,0,255), pygame.RLEACCEL)
- surface.blit(self.mainGlyph, (485,350))
-
-
# Draw reference glyphs
for i in range(4):
if i in self.magic_list:
- surface.blit(self.glyphs[i], (800+((i%2) * 150), 350+(i/2 * 150)))
+ #surface.blit(self.glyphs[i], (800+((i%2) * 150), 350+(i/2 * 150)))
+ self.reference[i].makeTransparent(False)
+ self.reference[i].setPosition(800+((i%2) * 150), 350+(i/2 * 150))
def update(self, event):
"""Update the menu and get input for the menu."""
@@ -262,6 +288,14 @@ class Menu(object):
return return_val
+ def clear(self):
+ for object in self.buttons:
+ self.scene.removeObject(object)
+ for object in self.reference:
+ self.scene.removeObject(object)
+ self.scene.removeObject(self.mainGlyphDO)
+ self.scene.removeObject(self.selectRect)
+
def set_pos(self, x, y):
"""Set the topleft of the menu at x,y"""
self.x = x