def saveState(): bak = Surface((50, 15)) bak.blit(display.screen, (0, 0), Rect(0, size[1] - 13, 50, 15)) display.clear((0, 0, 0), Rect(0, size[1] - 13, 50, 15)) display.draw( Font('freesansbold.ttf', 10).render('saving...', 1, (255, 255, 255)), Rect(1, size[1] - 14, 47, 13)) display.update() print ' Saving...' saveDict = {} if 'gameOver' not in game.sm.flags: for k, v in sv.__dict__.iteritems(): if k in sv.saveIncludes: saveDict[k] = v for name, obj in game.saveRegister: data = obj.save() if data != None: saveDict[name] = data with open(game.saveFile, 'wb') as saveFile: saveFile.write(zlib.compress(pickle.dumps(saveDict, 2))) display.draw(bak, (0, size[1] - 13)) display.update()
def addRemoveTick(): toClear = None for event in pygameEventGet(): if event.type == KEYDOWN: if event.key == K_ESCAPE: game.sm.switch('menu') elif event.key == K_SPACE: game.sm.switch('grow-shrink') sv.lastPlayState = 'grow-shrink' game.fbLabel.string = game.fbLabel.string.replace( 'add/remove', 'grow/shrink') elif event.key == K_c: display.clear() sv.circles.empty() elif event.type == MOUSEBUTTONDOWN: tx, ty = event.pos game.fbLabel.text(str(tx) + ', ' + str(ty) + ' add/remove') if event.button == 1: sv.mb1Down = True thisCircle = circle(tx, ty, sv.circles) thisCircle.radius = randint(radiusMin, radiusMax / 2) thisCircle.redraw() elif event.button == 3: for c in reversed(list(sv.circles.sprites())): if c.rect.collidepoint(tx, ty): toClear = c break elif event.type == MOUSEBUTTONUP: if event.button == 1: sv.mb1Down = False game.currCircle = None elif event.button == 3: sv.mb3Down = False game.currCircle = None game.ui.clear(display.screen, clear_callback) sv.circles.clear(display.screen, clear_callback) sv.circles.remove(toClear) postPlayTick()
def newGameLoadEnter(): display.clear() clearGrids()
def growShrinkTick(): for event in pygameEventGet(): if event.type == KEYDOWN: if event.key == K_ESCAPE: game.sm.switch('menu') elif event.key == K_SPACE: game.sm.switch('add-remove') sv.lastPlayState = 'add-remove' game.fbLabel.string = game.fbLabel.string.replace( 'grow/shrink', 'add/remove') elif event.key == K_c: display.clear() sv.circles.empty() elif event.type == MOUSEBUTTONDOWN: tx, ty = event.pos game.fbLabel.text(str(tx) + ', ' + str(ty) + ' grow/shrink') if event.button == 1: sv.mb1Down = True for c in reversed(list(sv.circles.sprites())): if c.rect.collidepoint(tx, ty): game.currCircle = c break elif event.button == 3: sv.mb3Down = True for c in reversed(list(sv.circles.sprites())): if c.rect.collidepoint(tx, ty): game.currCircle = c break elif event.type == MOUSEBUTTONUP: if event.button == 1: sv.mb1Down = False game.currCircle = None elif event.button == 3: sv.mb3Down = False game.currCircle = None if sv.mb1Down and game.currCircle != None: game.currCircle.radius = min(game.currCircle.radius + 1, radiusMax) if sv.mb3Down and game.currCircle != None: game.currCircle.radius = max(game.currCircle.radius - 1, radiusMin) game.ui.clear(display.screen, clear_callback) sv.circles.clear(display.screen, clear_callback) if game.currCircle != None: game.currCircle.redraw() postPlayTick()
def newGameLoadEnter(): display.clear()