~ubuntu-branches/ubuntu/vivid/magicor/vivid

« back to all changes in this revision

Viewing changes to magicor/states/title.py

  • Committer: Bazaar Package Importer
  • Author(s): Michael Bienia
  • Date: 2010-01-02 13:18:28 UTC
  • mfrom: (2.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100102131828-o4p3gthk8m1dopv5
Tags: 1.1-1ubuntu1
* Merge with Debian testing. Remaining changes: 
  + debian/control: As Ubuntu's cdbs symlinks identical files, magicor needs
    a strict versioned Depends on magicor-data for the symlinked files to be
    in the same version.
* debian/magicor.install: Update to also work for Python 2.6. 
* debian/magicor.dirs: Unneeded as Makefile.debian creates them too.
* debian/Makefile.debian: Use /usr/share/python/python.mk to determine the
  correct Python library directory.
* debian/control: Update python dependency to >= 2.6.

Show diffs side-by-side

added added

removed removed

Lines of Context:
129
129
        self.resources.setDefaultTile(
130
130
            self.resources[self.config["default_tile"]])
131
131
        self.scaleAngle = 0
 
132
        self.selectDelay = 0
132
133
        self.loaded = False
133
134
        self.shadeSurface = pygame.Surface((screen.get_width(),
134
135
                                            screen.get_height()),
144
145
        self.levelPaths = {}
145
146
        for path, levelInfo in self.resources.loadLevelData():
146
147
            for filename, data in levelInfo:
147
 
                theme = os.path.dirname(filename[len(path):])
148
 
                level = Level(data)
149
 
                level.theme = theme or None
150
 
                self.levels.append(level)
151
 
                self.levelPaths[level] = path + filename
 
148
                theme = os.path.dirname(filename[len(path):])[1:]
 
149
                if not theme.startswith("_") or config.get("devmode"):
 
150
                    level = Level(data)
 
151
                    level.theme = theme or None
 
152
                    self.levels.append(level)
 
153
                    self.levelPaths[level] = path + filename
152
154
        self.levels.sort(lambda x, y:
153
155
                         cmp(x.theme, y.theme)
154
156
                         or cmp(x.title, y.title))
 
157
        #start possibly at a level never tried
 
158
        for i in xrange(len(self.levels)):
 
159
                if (not self.config.getInt("time_"+self.levels[i].title)):
 
160
                        self.selected = i
 
161
                        break
155
162
        if self.data.lastLevelFinished:
156
163
            for i in xrange(len(self.levels)):
157
164
                if (self.levels[i].id == self.data.lastLevelFinished
163
170
                if self.levels[i].id == self.data.lastLevel:
164
171
                    self.selected = i
165
172
                    break
166
 
        self.resources.stopMusic()
 
173
        if config.getBool("music"):
 
174
            self.resources.playMusic("music/menu")
167
175
        self.updateInfo()
168
176
        
169
177
    def control(self):
170
178
        if self.controls.escape:
171
179
            self.setNext(TitleState(self.config, self.data, self.screen))
 
180
            self.resources.stopMusic()
172
181
            self.controls.clear()
173
182
        elif self.controls.start or self.controls.action:
 
183
            self.resources.stopMusic()
174
184
            self.resources.playSound("samples/start")
175
185
            self.setNext(PlayState(self.config,
176
186
                                   self.data,
181
191
            self.resources.playSound("samples/menu")
182
192
            self.selected = (self.selected - 1) % len(self.levels)
183
193
            self.loaded = False
184
 
            self.controls.clear()
 
194
            self.selectDelay = 2
185
195
            self.updateInfo()
186
196
        elif self.controls.down:
187
197
            self.resources.playSound("samples/menu")
188
198
            self.loaded = False
189
199
            self.selected = (self.selected + 1) % len(self.levels)
190
 
            self.controls.clear()
 
200
            self.selectDelay = 2
191
201
            self.updateInfo()
192
202
 
193
203
    def updateInfo(self):
208
218
                    self.renderLevel(self.renderSurface)
209
219
                    rendered = True
210
220
                except (ValueError, ResourceNotFound), e:
211
 
                    warnings.warn("unable to init level: %s"%e)
 
221
                    warnings.warn("Unable to init level-Resource not found: %s"%e)
212
222
                    del self.levels[self.selected]
213
223
 
214
224
    def run(self):
215
 
        self.control()
 
225
        if self.selectDelay:
 
226
            self.selectDelay -= 1
 
227
        else:
 
228
            self.control()
216
229
        width, height = self.screen.get_width(), self.screen.get_height()
217
230
        if self.levels:
218
231
            if self.eyecandy:
245
258
                else:
246
259
                    self.text.font = self.resources["fonts/info-inactive"]
247
260
                if i >= 0 and i < len(self.levels):
248
 
                    self.text.draw(self.levels[i].title, 0, y)
 
261
                        if (self.config.getInt("time_"+self.levels[i].title)):
 
262
                                time = self.config.getInt("time_"+self.levels[i].title)
 
263
                                minutes, seconds = divmod(time, 60)
 
264
                                self.text.draw(self.levels[i].title+" ("+str(minutes)+"m"+str(seconds)+"s)", 0, y)
 
265
                        else:
 
266
                                self.text.draw(self.levels[i].title, 0, y)
 
267
 
249
268
            self.text.font = self.resources["fonts/info"]
250
269
            #self.text.draw("difficulty %s"
251
270
            #               %(self.levels[self.selected].difficulty or "not set"), 0, 268,
322
341
            elif sprite.name == "direction":
323
342
                v = "sprites/arrow"
324
343
                offset = ["right", "down", "left", "up"].index(sprite.args)
 
344
            elif sprite.name == "trapola":
 
345
                w, h = 32, 32    
 
346
                v = "sprites/trapola2_q"
 
347
            elif sprite.name == "ball":
 
348
                w, h = 8, 8
 
349
                v = "sprites/ball_b"
325
350
            if v:
326
351
                surface.blit(self.resources["%s"%v],
327
352
                             (x * 32, y * 32),