1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
import pygame, ezmenu
from fortuneengine.GameEngineElement import GameEngineElement
from fortuneengine.DrawableObject import DrawableObject
class GameMenuHolder( GameEngineElement ):
def __init__(self, callback, background=None, width=1200, height=900):
GameEngineElement.__init__(self, has_draw=True, has_event=False)
self.menu = None
self.callback = callback
self.background = DrawableObject([pygame.image.load(background).convert()], '')
self.background.scale(width, height)
self.add_to_scene([self.background])
self.width = width
self.height = height
def remove_from_engine(self):
super( GameMenuHolder, self ).remove_from_engine()
self.clear_menu()
def draw(self):
if self.background:
self.background.setPosition(0,0)
else:
screen.fill((0, 0, 255))
def menu_called(self, id):
self.callback(id, self)
def clear_menu(self):
if self.menu:
self.menu.clear_menu()
self.menu.remove_from_engine()
self.menu = None
def show_menu(self,id):
if self.is_in_engine():
self.clear_menu()
else:
self.add_to_engine()
if id == "title":
menu_options = [
["Adventure Play", lambda: self.show_menu("adventure"), "Begin a new game, create a new profile, or continue from a saved profile game"],
#['Creative Play', lambda: self.show_menu("creative"), "Play custom maps and learn how to create them"],
#['Network', lambda: self.show_menu("network"), "Play games with special rules or see the scoreboard"],
#['Extras', lambda: self.show_menu("extras"), "View special information for the loaded player profile"],
#['Options', lambda: self.menu_called("options"), "Change controls, language, difficulty, and other game settings"],
#['Options', lambda: self.show_menu("options"), "Change controls, language, difficulty, and other game settings"],
['Exit Game', lambda: self.game_engine.stop_event_loop(), "Exit the game"]
]
elif id == "adventure":
menu_options = [
#["Continue", lambda: self.menu_called("continue"), "Continue loaded game from the latest save"],
#["Level Select", lambda: self.menu_called("level"), "Play completed levels from loaded game"],
#["Load Game", lambda: self.menu_called("load"), "Load player profile game data"],
["New Game", lambda: self.menu_called("new"), "Play story mode from the beginning"],
#["New Player Profile", lambda: self.menu_called("newpro"), "Create a new player profile"],
["Return to Title", lambda: self.show_menu("title"), "Return to the title menu"]
]
elif id == "creative":
menu_options = [
["Play Custom Map", lambda: self.menu_called("playcustom"), "NOT AVAILABLE-Play a custom made map"],
["New Custom Map", lambda: self.menu_called("newcustom"), "NOT AVAILABLE-Learn how to create your own custom map"],
["Share Map", lambda: self.menu_called("sharecustom"), "NOT AVAILABLE-Share created maps with friends"],
["Return to Title", lambda: self.show_menu("title"), "Return to the title menu"]
]
elif id == "network":
menu_options = [
["Local Treasure Trekkers Play", lambda: self.menu_called("networktreasure"), "NOT AVAILABLE-Play a special time trial version of Fortune Hunter"],
["View Scoreboard", lambda: self.menu_called("networkscore"), "NOT AVAILABLE-View the scoreboard for your team"],
["Return to Title", lambda: self.show_menu("title"), "Return to the title menu"]
]
elif id == "extras":
menu_options = [
["View Bestiary", lambda: self.menu_called("viewbestiary"), "NOT AVAILABLE-View monster information"],
["View Treasures", lambda: self.menu_called("viewtreasures"), "NOT AVAILABLE-View collected treasures"],
["View Awards", lambda: self.menu_called("viewawards"), "NOT AVAILABLE-View awards"],
["View Statistics", lambda: self.menu_called("viewstats"), "NOT AVAILABLE-View statistics"],
["Return to Title", lambda: self.show_menu("title"), "Return to the title menu"]
]
elif id == "options":
menu_options = [
["Controls", lambda: self.menu_called("controls"), "NOT AVAILABLE-Change control scheme"],
["Language", lambda: self.menu_called("language"), "NOT AVAILABLE-Change language setting"],
["Audio", lambda: self.menu_called("audiu"), "NOT AVAILABLE-Toggle audio on or off"],
["Subtitles", lambda: self.menu_called("subtitles"), "NOT AVAILABLE-Toggle subtitles on or off"],
["FMCs", lambda: self.menu_called("fmcs"), "NOT AVAILABLE-Toggle FMCs on or off"],
["Cooperative Play", lambda: self.menu_called("coop"), "NOT AVAILABLE-Toggle coop mode on or off"],
["Game Difficulty", lambda: self.menu_called("difficulty"), "NOT AVAILABLE-Change the game difficulty setting"],
["Merchant Difficulty", lambda: self.menu_called("merchant"), "NOT AVAILABLE-Change the merchant difficulty setting"],
["Credits", lambda: self.menu_called("credits"), "NOT AVAILABLE-Watch the credits reel"],
["About", lambda: self.menu_called("about"), "NOT AVAILABLE-Information on game and version"],
["Return to Title", lambda: self.show_menu("title"), "Return to the title menu"]
]
else:
print "Invalid Menu", id
return
self.menu = GameMenu(menu_options, self.width, self.height)
class GameMenu(GameEngineElement):
def __init__(self, game_menu, width=800, height=400):
GameEngineElement.__init__(self, has_draw=True, has_event=True)
self.menu = ezmenu.EzMenu(game_menu, self.game_engine.get_scene())
self.menu.center_at(width - (width/3), height/2)
self.menu.help_text_at( 0, height-(height/10))
self.menu.set_font(pygame.font.SysFont("Arial", 20))
self.menu.set_highlight_color((0, 255, 0))
self.menu.set_normal_color((255, 255, 255))
self.add_to_engine()
def event_handler(self, event):
return self.menu.update(event)
def clear_menu(self):
self.menu.clear_menu()
def draw(self):
self.menu.draw()
|