class MasterController: def __init__(self): self.map = Map(MAP_SIZE_W, MAP_SIZE_H, BLOCKSIZE) pygame.init() window = pygame.display.set_mode((WIDTH,HEIGHT)) pygame.display.set_caption('def') self.screen = pygame.display.get_surface() self.model = Model( self.map) self.camera = Camera(self.screen.get_width(),self.screen.get_height()) self.entity_controller = EntityController(self.map) self.entity_view = EntityView(self.entity_controller) self.view = View(self.screen, self.camera, self.entity_view) self.camera_lock = True self.camera_follow_player = False #music here atm # pygame.mixer.music.load("src/music/04.ogg") # pygame.mixer.music.play() def menu_mode(self): self.menu = Menu() while 1: self.screen.fill((0,0,0)) self.menu.draw(self.screen) def run(self): self.map.load_map("map1.map") #self.map.load_map("test.out") # self.map.init_adjacent() self.entity_controller.update_enemy_path() self.entity_controller.add_entity() while 1: self.screen.fill((0,0,50)) self.update() self.handle_events(pygame.event.get()) self.view.draw_level(self.screen, self.map) self.entity_controller.update() pygame.display.update() pygame.display.flip() def update(self): # CAMERA MOUSE self.update_camera() if not self.camera_lock and not self.camera_follow_player: self.camera.update() elif self.camera_follow_player: self.camera.set_pos( ((WIDTH/2)-(self.entity_controller.get_player_pos().get_pos()[0]*BLOCKSIZE*self.camera.get_zoom()), (HEIGHT/2)-(self.entity_controller.get_player_pos().get_pos()[1]*BLOCKSIZE*self.camera.get_zoom()) ) ) def update_camera(self): #PREVENT ouside window mouse scrolling # if not pygame.mouse.get_focused(): # self.camera.set_speed((0,0)) # return if self.view.freeze_camera_movement_areas(pygame.mouse.get_pos()): self.camera.set_speed((0,0)) return if pygame.mouse.get_pos()[0] < self.screen.get_width()/10: self.camera.set_speed((CAMERA_SPEED,self.camera.get_speed()[1])) if pygame.mouse.get_pos()[0] > self.screen.get_width()-(self.screen.get_width()/10): self.camera.set_speed((-1*CAMERA_SPEED,self.camera.get_speed()[1])) if self.camera.get_speed()[0] != 0 and pygame.mouse.get_pos()[0] > self.screen.get_width()/10 and pygame.mouse.get_pos()[0] < self.screen.get_width() -(self.screen.get_width()/10): self.camera.set_speed((0,self.camera.get_speed()[1])) # UP N DOWN if pygame.mouse.get_pos()[1] < self.screen.get_height()/10: self.camera.set_speed((self.camera.get_speed()[0],CAMERA_SPEED)) # dont scroll on hud if pygame.mouse.get_pos()[1] > self.screen.get_height()-200: self.camera.set_speed((self.camera.get_speed()[0],-1*CAMERA_SPEED)) if self.camera.get_speed()[1] != 0 and pygame.mouse.get_pos()[1] > self.screen.get_height()/10 and pygame.mouse.get_pos()[1] < self.screen.get_height()-300:#self.screen.get_height() -(self.screen.get_height()/10): self.camera.set_speed((self.camera.get_speed()[0],0)) def handle_events(self, events): for event in events: if event.type == KEYDOWN: if event.key == K_ESCAPE: pygame.quit() sys.exit() # HANDLE SAVEINPUT N STUFF if event.key == K_UP: self.map.save_map("test.out") if event.key == K_DOWN: self.map.load_map() self.entity_controller.set_map(self.map) if event.key == K_SPACE: # add entity(enemy).. self.entity_controller.add_entity() if event.key == K_c: self.camera.center_map() if event.key == K_F1: self.view.toggle_lines() if event.key == K_F2: if self.camera_lock: self.camera_lock = False else: self.camera_lock = True if event.key == K_F3: if self.camera_follow_player: self.camera_follow_player = False else: self.camera_follow_player = True if event.type == QUIT: pygame.quit() sys.exit() self.view.handle_event(event,self.map) if event.type == pygame.MOUSEBUTTONDOWN: if pygame.mouse.get_pressed()[0] == 1: self.map.change_color_at((pygame.mouse.get_pos()[0]-self.camera.get_x() ,pygame.mouse.get_pos()[1]-self.camera.get_y()) , self.view.get_selected_color(), self.camera.get_zoom()) if event.button == 5: self.camera.set_zoom(self.camera.get_zoom()/2.0) if event.button == 4: self.camera.set_zoom(self.camera.get_zoom()*2.0) if pygame.mouse.get_pressed()[2] == 1: self.entity_controller.add_tower(self.map.tile_at(pygame.mouse.get_pos()))