from engine import * from engine.event import * from pygame.locals import * from breakout_highscore import * from breakout_player import * from breakout_graphics import * from breakout_level import * ##import breakout_level import breakout_startup import Queue import pickle import copy import os ## Ugly hack for editing levels. class breakout_edit(model.abstract_gamestate): def __init__(self, filename): self.filename = filename if os.path.exists(self.filename): self.current_level = misc.load(self.filename) self.level_sprites = breakout_sprites() for sprite in self.current_level.get_levelsprites(): self.level_sprites.add(sprite) sprite.load() self.display_text = "Loaded file "+self.filename+"." else: self.current_level = level() self.level_sprites = breakout_sprites() self.display_text = "New file "+self.filename+"." print self.display_text self.display_text = self.display_text+\ " c clear, s save, q quit. "+\ "Select item with 1-4." print self.display_text self.current_brick = brick() self.current_brick.load() def mouse_pressed(self, pos): print pos new_brick = copy.copy(self.current_brick) new_brick.__init__() new_brick.set_pos(pos) new_brick.load() self.level_sprites.add(new_brick) self.display_text = "" def key_pressed(self, key): def new_brick(): pos = self.current_brick.get_pos() self.current_brick = brick() self.current_brick.load() self.current_brick.set_pos(pos) def new_red_brick(): pos = self.current_brick.get_pos() self.current_brick = red_brick() self.current_brick.load() self.current_brick.set_pos(pos) def new_blue_brick(): pos = self.current_brick.get_pos() self.current_brick = blue_brick() self.current_brick.load() self.current_brick.set_pos(pos) def new_orange_brick(): pos = self.current_brick.get_pos() self.current_brick = orange_brick() self.current_brick.load() self.current_brick.set_pos(pos) def clear_level(): self.level_sprites = breakout_sprites() ## self.level_sprites.empty() self.current_level.empty_level() self.display_text = "Cleared screen." def save_level(): for sprite in self.level_sprites: self.current_level.add_sprite(sprite) self.current_level.clear() misc.save(self.current_level, self.filename) for sprite in self.level_sprites: sprite.load() self.display_text = "Saved file "+self.filename def quit(): state = breakout_startup.breakout_startup() state.set_announce_method(self.announce_method) self.set_state(state) def different_key(): pass key_action = { K_1: new_brick, K_2: new_red_brick, K_3: new_blue_brick, K_4: new_orange_brick, K_c: clear_level, K_s: save_level, K_q: quit} key_action.get(key, different_key)() print key def draw(self, screen): self.level_sprites.draw(screen) self.current_brick.draw(screen) misc.draw_text(self.display_text,\ 15,\ (0,0,0),\ screen,\ (10,450)) ## This is only needed so that we can keep contact ## with the main event handler for quiting the game ## properly. def set_announce_method(self, announce_method): self.announce_method = announce_method def mouse_moved(self, pos): self.current_brick.set_pos(pos)