root/src/buildMenu.py @ 572

Revision 572, 4.6 KB (checked in by ecoughlan, 2 years ago)

unused imports and DIM files

Line 
1'''
2Created on Mar 23, 2012
3
4@author: TechTrek
5'''
6import math
7from inGameMenu import InGameMenu
8from menuPage import MenuPage
9from buildMenuEntry import BuildMenuEntry
10from backButton import BackButton
11from buildables import buildingLUT
12from dim import buildMenuDim as DIM
13from globals import *
14
15
16class BuildMenu(InGameMenu):
17    """
18        The build menu gives access to the different categories of buildings
19        that can be built.
20    """
21   
22    def __init__(self, pos, visible, category, buildResponse, closeResponse):
23        """
24            initializes the components of the BuildMenu subclass, which
25            contains menu pages as subwindows
26           
27            input type: int((x,y)), bool(visible), int(category),
28                        function pointer(buildResponse),
29                        function pointer(closeResponse)
30        """
31        InGameMenu.__init__(self, pos, visible, closeResponse)
32        self.category = category
33        self.currentPage = 0
34        self.responseList = [(self.prevPage,), (self.nextPage,), buildResponse, closeResponse]
35
36        back = BackButton((self.pos[0] + DIM.BUT_W_SHIFT,
37                           self.pos[1] + DIM.BUT_H_SHIFT), True,
38                          ((self.close,)))
39        back.stayBack = True
40        self.addWindow(back)
41
42        catBuildings = []
43        for building in buildingLUT.values():
44            if building.buildingType == self.category:
45                catBuildings.append(building)
46
47        catBuildings.sort()
48
49        # here you will check how many of category buildings there are
50        self.numPages = (len(catBuildings) - 1)/PAGE_SIZE
51        for j in range(self.numPages + 1):
52            page = MenuPage(self.pos,False, j, self.responseList )
53            for i in range(PAGE_SIZE):
54                if j*PAGE_SIZE + i >= len(catBuildings):
55                    continue
56                building = catBuildings[j*PAGE_SIZE + i]
57                entry = BuildMenuEntry((self.pos[0] + DIM.W_SHIFT,
58                                        self.pos[1] + DIM.H_SHIFT + DIM.V_SHIFT * i),
59                                       True, building)
60                entry.setYesResponse(buildResponse)
61                page.subwindows.append(entry)
62           
63            self.addWindow(page)
64        self.subwindows[self.currentPage + 2].open()
65   
66    def setBackResponse(self, response):
67        """
68            Sets the back button response
69           
70            input type: function pointer
71            return type: none
72        """
73        self.subwindows[1].addResponse(response)
74
75    def prevPage(self):
76        """
77            Moves to the previous block
78           
79            input type: none
80            return type: none
81        """
82        if self.currentPage > 0:
83            self.subwindows[self.currentPage + 2].close()
84            self.currentPage -= 1
85            self.subwindows[self.currentPage + 2].open()
86            if DEBUG == 0:
87                print 'left to page: ', self.currentPage
88
89    def nextPage(self):
90        """
91            Moves to the next block
92           
93            input type: none
94            return type: none
95        """
96        if self.currentPage < self.numPages:
97            self.subwindows[self.currentPage + 2].close()
98            self.currentPage += 1
99            self.subwindows[self.currentPage + 2].open()
100            if DEBUG == 0:
101                print 'right to page: ', self.currentPage
102
103    def open(self):
104        """
105            opens the window
106           
107            input type: none
108            return type: none
109        """
110        self.visible = True
111        self.subwindows[self.currentPage + 2].open()
112       
113
114    def close(self):
115        """
116            closes the window and subwindows
117           
118            input type: none
119            return type: none
120        """
121        self.visible = False
122        self.subwindows[self.currentPage + 2].close()
123        self.currentPage = 0
124
125    def event(self, e):
126        """
127            Checks if event applies to visible child windows. If so, return
128            true.
129           
130            Otherwise, checks if events apply to this object. If they do,
131            return true and take appropriate action.
132           
133            Else, returns false.
134           
135            input type: pygame.event
136            output type: boolean
137            """
138        for window in self.subwindows:
139            if window.isVisible():
140                returnValue = window.event(e)
141                if returnValue != False:
142                    return returnValue
143        return self.response(e)
144   
145
Note: See TracBrowser for help on using the browser.