root/src/main.py @ 302

Revision 302, 10.5 KB (checked in by ecoughlan, 2 years ago)

More updates

Line 
1'''
2Created on Mar 24, 2012
3
4@author: TechTrek
5'''
6
7#import pygame._view # uncomment to use pygame2exe.py
8
9from buildables import loadAllBuildings
10import background
11import top
12import onScreenButton
13import inGameMenu
14import sys
15import description
16import menuEntry
17import map as map_
18import mainMenu
19import mainMenuButton
20import researchDescription
21import stats
22import buildMenu
23from globals import *
24
25from pygame.locals import *
26
27
28def Initialize():
29    """
30        Returns the top object with everything fully initialized.
31
32        input type: none
33        return type: top
34    """
35    loadAllBuildings()
36
37    # surface
38    screenSurface = pygame.display.set_mode((SCREEN_W, SCREEN_H), RESIZABLE)
39    pygame.display.set_caption("TechTrek")
40    screenSurface.fill(BLACK)
41
42    newTop = top.Top(screenSurface)
43
44    gameBackground = background.Background((0, 0), True,
45                                           'background.png', True)
46
47    ###########################################################################
48
49    menuBackground = background.Background((0, 0), True, 'menuBackground.jpg')
50
51    mainMenuWindow = mainMenu.MainMenu((400, 100), True)
52
53    newGameButton = mainMenuButton.MainMenuButton((450, 170 + MAIN_SHIFT * 0),
54                                                  True, 'New Game')
55    newGameButton.addResponse((menuBackground.closeWindow,))
56    newGameButton.addResponse((gameBackground.openWindow,))
57    # will also need to set new state and show opening sequence
58
59    resumeButton = mainMenuButton.MainMenuButton((450, 170 + MAIN_SHIFT * 1),
60                                                 False, 'Resume')
61    resumeButton.addResponse((menuBackground.closeWindow,))
62    resumeButton.addResponse((gameBackground.openWindow,))
63
64    loadButton = mainMenuButton.MainMenuButton((450, 170 + MAIN_SHIFT * 2),
65                                               True, 'Load')
66    loadButton.addResponse((newTop.loadGame, "new_test"))
67    loadButton.addResponse((menuBackground.closeWindow,))
68    loadButton.addResponse((gameBackground.openWindow,))
69
70    saveButton = mainMenuButton.MainMenuButton((450, 170 + MAIN_SHIFT * 3),
71                                               False, 'Save')
72    saveButton.addResponse((newTop.saveGame, "new_test"))
73
74    quitButton = mainMenuButton.MainMenuButton((450, 170 + MAIN_SHIFT * 4),
75                                               True, 'Quit')
76    quitButton.addResponse((pygame.quit,))
77    quitButton.addResponse((sys.exit,))
78
79    mainMenuWindow.addWindow(newGameButton)
80    mainMenuWindow.addWindow(resumeButton)
81    mainMenuWindow.addWindow(loadButton)
82    mainMenuWindow.addWindow(saveButton)
83    mainMenuWindow.addWindow(quitButton)
84    menuBackground.addWindow(mainMenuWindow)
85
86    ###########################################################################
87
88    buildTransportationMenu = buildMenu.BuildMenu((20, 20), False, 'TRANSPORTATION', 'build.png', TRANSPORTATION, newTop.build)
89    buildMaterialMenu = buildMenu.BuildMenu((20, 20), False, 'MATERIAL', 'build.png', MATERIALS, newTop.build)
90    buildPowerMenu = buildMenu.BuildMenu((20, 20), False, 'POWER', 'build.png', POWER, newTop.build)
91
92    buildPowerDescription = description.Description('power',
93                                                    "This is where the text would go.",
94                                                    pygame.image.load(os.path.abspath(iconDir + "power.png")))
95    buildPowerButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 0), False,
96                                           buildPowerDescription)
97    buildPowerButton.addResponse((buildPowerMenu.toggle,))
98
99    buildTransportationDescription = description.Description('transportation',
100                                                    "This is where the text would go.",
101                                                    pygame.image.load(os.path.abspath(iconDir + "transportation.png")))
102    buildTransportationButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 1),
103                                                    False, buildTransportationDescription)
104    buildTransportationButton.addResponse((buildTransportationMenu.toggle,))
105
106    buildMaterialDescription = description.Description('material',
107                                                    "This is where the text would go.",
108                                                    pygame.image.load(os.path.abspath(iconDir + "material.png")))
109    buildMaterialButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 2),
110                                              False, buildMaterialDescription)
111    buildMaterialButton.addResponse((buildMaterialMenu.toggle,))
112
113    buildCatMenu = inGameMenu.InGameMenu((20, 20), False,
114                                         'BUILD MENU', 'build.png')
115
116    buildPowerButton.addWindow(buildPowerMenu)
117    buildTransportationButton.addWindow(buildTransportationMenu)
118    buildMaterialButton.addWindow(buildMaterialMenu)
119
120    buildCatMenu.addWindow(buildPowerButton)
121    buildCatMenu.addWindow(buildTransportationButton)
122    buildCatMenu.addWindow(buildMaterialButton)
123
124    ###########################################################################
125
126    powerDescription = description.Description("POWER", "you will unlock ... ", pygame.image.load(os.path.abspath(iconDir + 'power.png')))
127    powerResearchDescription = researchDescription.ResearchDescription((550, 250), False, powerDescription)
128    powerResearchDescription.setYesResponse((newTop.research, 0))
129
130    researchPowerDescription = description.Description('power', "This is where the text would go.", pygame.image.load(os.path.abspath(iconDir + "power.png")))
131    researchPowerButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 0), False, researchPowerDescription)
132    researchPowerButton.addResponse((powerResearchDescription.toggle,))
133    researchPowerButton.addWindow(powerResearchDescription)
134
135    transportDescription = description.Description("TRANSPORTATION", "you will unlock ... ", pygame.image.load(os.path.abspath(iconDir + 'transportation.png')))
136    transportResearchDescription = researchDescription.ResearchDescription((550, 250), False, transportDescription)
137    transportResearchDescription.setYesResponse((newTop.research, 1))
138    researchTransportationDescription = description.Description('transportation', "This is where the text would go.", pygame.image.load(os.path.abspath(iconDir + "transportation.png")))
139    researchTransportationButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 1), False, researchTransportationDescription)
140    researchTransportationButton.addResponse((transportResearchDescription.toggle,))
141    researchTransportationButton.addWindow(transportResearchDescription)
142
143    materialDescription = description.Description("MATERIAL",
144                                                  "you will unlock ... ",
145                                                  pygame.image.load(os.path.abspath(iconDir + 'material.png')))
146    materialResearchDescription = researchDescription.ResearchDescription((550, 250), False, materialDescription)
147    materialResearchDescription.setYesResponse((newTop.research, 2))
148    researchMaterialDescription = description.Description('material',
149                                                    "This is where the text would go.",
150                                                    pygame.image.load(os.path.abspath(iconDir + "material.png")))
151    researchMaterialButton = menuEntry.MenuEntry((40, 100 + ENTRY_SHIFT * 2),
152                                                 False, researchMaterialDescription)
153    researchMaterialButton.addResponse((materialResearchDescription.toggle,))
154    researchMaterialButton.addWindow(materialResearchDescription)
155
156    researchMenu = inGameMenu.InGameMenu((20, 20), False,
157                                         'RESEARCH MENU', 'research.png')
158    researchMenu.addWindow(researchPowerButton)
159    researchMenu.addWindow(researchTransportationButton)
160    researchMenu.addWindow(researchMaterialButton)
161
162    ###########################################################################
163
164    researchButton = onScreenButton.OnScreenButton((20 + 169, 720), True,
165                                                   'RESEARCH')
166    researchButton.addWindow(researchMenu)
167    researchButton.addResponse((researchMenu.toggle,))
168    researchButton.addResponse((buildCatMenu.closeWindow,))
169
170    buildButton = onScreenButton.OnScreenButton((20, 720), True,
171                                                'BUILD')
172    buildButton.addWindow(buildCatMenu)
173    buildButton.addResponse((buildCatMenu.toggle,))
174    buildButton.addResponse((researchMenu.closeWindow,))
175
176    endTurnButton = onScreenButton.OnScreenButton((20 + 169 * 2, 720), True,
177                                                  'END TURN')
178    endTurnButton.addResponse((newTop.endTurn, ))
179    endTurnButton.addResponse((newTop.update, newTop.gameData.currentState))
180
181    undoTurnButton = onScreenButton.OnScreenButton((20 + 169, 20), True,
182                                                   'UNDO TURN')
183    undoTurnButton.addResponse((newTop.undoTurn, ))
184
185    menuButton = onScreenButton.OnScreenButton((20, 20), True,
186                                               'MAIN MENU')
187    menuButton.addResponse((gameBackground.closeWindow,))
188    menuButton.addResponse((menuBackground.openWindow,))
189
190    newMap = map_.Map((600, 20), True)
191
192    statsWindow = stats.Stats((600, 475), True, newTop.getSpec())
193
194    ###########################################################################
195    newTop.addWindow(menuBackground)
196    gameBackground.addWindow(menuButton)
197    gameBackground.addWindow(buildButton)
198    gameBackground.addWindow(researchButton)
199    gameBackground.addWindow(undoTurnButton)
200    gameBackground.addWindow(endTurnButton)
201    gameBackground.addWindow(newMap)
202    gameBackground.addWindow(statsWindow)
203
204    newTop.addWindow(gameBackground)
205
206    ###########################################################################
207
208    newTop.event(pygame.event.Event(VIDEORESIZE, {'w': SCREEN_W,
209                                                  'h': SCREEN_H}))
210    newTop.render(screenSurface)
211    pygame.display.update()
212    return newTop
213
214if __name__ == '__main__':
215    # initialize pygame modules
216    pygame.init()
217    if not pygame.display.get_init():
218        print "Display Error"
219        pygame.quit()
220        sys.exit()
221
222    # initialize our game
223    top = Initialize()
224
225    # run our game!
226    while True:
227        for e in pygame.event.get():
228            top.event(e)
Note: See TracBrowser for help on using the browser.