]> icculus.org git repositories - theoddone33/hheretic.git/blob - heretic/menus.py
Add more menus.
[theoddone33/hheretic.git] / heretic / menus.py
1 import pyhexen
2
3 def CreateMenus(menu):
4         "Setup game-specific menus"
5         class MainMenu(pyhexen.menu.SubMenu):
6                 def __init__ (self, menu, name, x, y, prev):
7                         pyhexen.menu.SubMenu.__init__(self, menu, name, x, y, prev)
8                         self.SkullBaseLump = self.menu.wad.GetNumForName("M_SKL00")
9                 
10                 def Draw (self):
11                         frame = (self.menu.time/3) % 18
12                         self.menu.vid.DrawPatch (88, 0, self.menu.wad.CacheLumpName ('M_HTIC'))
13                         self.menu.vid.DrawPatch (40, 10, self.menu.wad.CacheLumpNum (self.SkullBaseLump + (17 - frame)))
14                         self.menu.vid.DrawPatch (232, 10, self.menu.wad.CacheLumpNum (self.SkullBaseLump + frame))
15
16         mainMenu = MainMenu (menu, 'main', 110, 56, None)
17         mainMenu.AddItem (mainMenu.ITT_EFUNC, 'NEW GAME', SCNetCheck, 1, 'episode')
18         mainMenu.AddItem (mainMenu.ITT_SETMENU, 'OPTIONS', None, None, 'options')
19         mainMenu.AddItem (mainMenu.ITT_SETMENU, 'GAME FILES', None, None, 'files')
20         mainMenu.AddItem (mainMenu.ITT_EFUNC, 'INFO', SCInfo, 0, None)
21         mainMenu.AddItem (mainMenu.ITT_EFUNC, 'QUIT GAME', SCQuitGame, 0, None)
22         menu.AddMenu (mainMenu)
23
24         episodeMenu = pyhexen.menu.SubMenu (menu, 'episode', 80, 50, 'main')
25         episodeMenu.AddItem (episodeMenu.ITT_EFUNC, 'CITY OF THE DAMNED', SCEpisode, 1, None)
26         episodeMenu.AddItem (episodeMenu.ITT_EFUNC, "HELL'S MAW", SCEpisode, 2, None)
27         episodeMenu.AddItem (episodeMenu.ITT_EFUNC, "THE DOME OF D'SPARIL", SCEpisode, 3, None)
28         episodeMenu.AddItem (episodeMenu.ITT_EFUNC, 'THE OSSUARY', SCEpisode, 4, None)
29         episodeMenu.AddItem (episodeMenu.ITT_EFUNC, 'THE STAGNANT DEMESNE', SCEpisode, 5, None)
30         menu.AddMenu (episodeMenu)
31
32         fileMenu = pyhexen.menu.SubMenu (menu, 'files', 110, 60, 'main')
33         fileMenu.AddItem (fileMenu.ITT_EFUNC, 'LOAD GAME', SCNetCheck, 2, 'load')
34         fileMenu.AddItem (fileMenu.ITT_SETMENU, 'SAVE GAME', None, 0, 'save')
35
36         menu.AddMenu (fileMenu)
37
38         class SaveLoadMenu(pyhexen.menu.SubMenu):
39                 def __init__ (self, menu, name, x, y, prev, text):
40                         pyhexen.menu.SubMenu.__init__(self, menu, name, x, y, prev)
41                         self.text = text
42                         self.textwidth = self.menu.TextBWidth (self.text)
43                 
44                 def DrawFileSlots (self):
45                         x = self.x
46                         y = self.y
47                         for i in range (0, 6):
48                                 self.menu.vis.DrawPatch (x, y, self.menu.wad.CacheLumpName ('M_FSLOT'))
49                                 # TODO: Draw slot text
50                                 y = y + self.menu.ITEM_HEIGHT
51
52                 def Draw (self):
53                         self.menu.DrawTextB (self.text, 160 - self.textwidth / 2, 10)
54                         self.DrawFileSlots ()
55
56         loadMenu = SaveLoadMenu (menu, 'load', 70, 30, 'files', 'LOAD GAME')
57         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 0, None)
58         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 1, None)
59         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 2, None)
60         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 3, None)
61         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 4, None)
62         loadMenu.AddItem (loadMenu.ITT_EFUNC, '', SCLoadGame, 5, None)
63
64         menu.AddMenu (loadMenu)
65
66         saveMenu = SaveLoadMenu (menu, 'save', 70, 30, 'files', 'SAVE GAME')
67         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 0, None)
68         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 1, None)
69         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 2, None)
70         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 3, None)
71         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 4, None)
72         saveMenu.AddItem (saveMenu.ITT_EFUNC, '', SCSaveGame, 5, None)
73
74         menu.AddMenu (saveMenu)
75
76         skillMenu = pyhexen.menu.SubMenu (menu, 'skill', 38, 30, 'episode')
77         skillMenu.AddItem (skillMenu.ITT_EFUNC, 'THOU NEEDETH A WET-NURSE', SCSkill, 0, None)
78         skillMenu.AddItem (skillMenu.ITT_EFUNC, 'YELLOWBELLIES-R-US', SCSkill, 1, None)
79         skillMenu.AddItem (skillMenu.ITT_EFUNC, 'BRINGEST THEM ONETH', SCSkill, 2, None)
80         skillMenu.AddItem (skillMenu.ITT_EFUNC, 'THOU ART A SMITE-MEISTER', SCSkill, 3, None)
81         skillMenu.AddItem (skillMenu.ITT_EFUNC, 'BLACK PLAGUE POSSESSES THEE', SCSkill, 4, None)
82
83         menu.AddMenu (skillMenu)
84
85         # TODO: Options menus stubbed
86         class OptionsMenu(pyhexen.menu.SubMenu):
87                 pass
88
89         optionsMenu = OptionsMenu (menu, 'options', 88, 30, 'main')
90
91         menu.AddMenu (optionsMenu)
92
93         class Options2Menu(pyhexen.menu.SubMenu):
94                 pass
95
96         options2Menu = Options2Menu (menu, 'options2', 90, 20, 'options')
97
98         menu.AddMenu (options2Menu)
99
100
101
102 def SCNetCheck (arg):
103         pass
104
105 def SCInfo (arg):
106         pass
107
108 def SCQuitGame (arg):
109         pass
110
111 def SCEpisode (arg):
112         pass
113
114 def SCLoadGame (arg):
115         pass
116
117 def SCSaveGame (arg):
118         pass
119
120 def SCSkill (arg):
121         pass
122