def __init__(self, filename): self.bg_color = [0, 0, 0] self.player = None self.event = {} self.filename = filename if CONST.debug: Editor.__init__(self) GUI.__init__(self)
def loop(self, screen): img_manager.draw_rect(screen, Vector2(), Rect(Vector2(),engine.get_screen_size()),self.bg_color) snd_manager.update_music_status() """ if CONST.render == 'kivy': for layer in self.objects: for img in layer: #set img pos outside the screen if isinstance(img, AnimImage): for kivy_img in img.anim.img_indexes: kivy_img.x = -engine.get_screen_size().x kivy_img.y = -engine.get_screen_size().y """ '''Event If mouse_click on element, execute its event, of not null''' if self.show_mouse: show_mouse() mouse_pos, pressed = get_mouse() if pressed[0] and not self.click: event = None self.click = True for layer in self.objects: for image in layer: if image.check_click(mouse_pos, self.screen_pos): event = image.event if event: event.execute() elif not pressed[0]: self.click = False if not self.lock: physics_manager.loop() '''Show images''' if self.player and self.player.anim: self.screen_pos = self.player.anim.get_screen_pos() remove_image = [] for i, layer in enumerate(self.objects): if i == 2: NetworkGamestate.loop(self, screen) for j, img in enumerate(layer): img.loop(screen, self.screen_pos) if img.remove: remove_image.append(img) for r in remove_image: self.objects[i].remove(r) '''GUI''' GUI.loop(self, screen) '''Editor''' if CONST.debug: Editor.loop(self, screen, self.screen_pos)
def load_level(level): """ Import a level with: -Physics static object -Images with or without animation -IA (if any) -Player position, size, etc... but not recreate the player!!! """ level_data = load_json(CONST.path_prefix+level.filename) if level_data is not None: log("LOAD PLAYER") player_data = get_element(level_data, 'player') if player_data is not None: '''load the json containing the player and treat it as an AnimImage''' player = None if isinstance(player_data, CONST.string_type): log("Loading player "+player_data) player_json = load_json(CONST.path_prefix + player_data) player = load_image_from_json(player_json, level) elif isinstance(player_data,dict): player = load_image_from_json(player_data, level) else: log("Warning: Invalid format for player JSON",1) if player: level.player = player log("LOAD GUI") gui_data = get_element(level_data, 'gui') if gui_data is not None: '''load the json containing the gui parameters''' if isinstance(gui_data, CONST.string_type): GUI.load_gui_json(load_json(gui_data),level) elif isinstance(gui_data,dict): GUI.load_gui_json(gui_data,level) else: log("Warning: invalid format for GUI JSON",1) log("LOAD_BG COLOR") bg_color = get_element(level_data,'bg_color') if bg_color is not None: level.bg_color = bg_color show_mouse = get_element(level_data,'show_mouse') if show_mouse is not None: level.show_mouse = show_mouse use_physics = get_element(level_data,'use_physics') if use_physics is not None: level.use_physics = use_physics network = get_element(level_data, 'network') if network is not None: level.use_network = network log("LOAD EVENTS") event_data = get_element(level_data, "events") if event_data: for e in event_data.keys(): level.event[e] = load_event(event_data[e]) log("LOAD ImAGE OBJECTS") objects_dict = get_element(level_data, 'objects') reset_object_id() if objects_dict is not None: for object_data in objects_dict: if isinstance(object_data, CONST.string_type): load_image_from_json(load_json(object_data), level, None) elif isinstance(object_data,dict): image_type = get_element(object_data,"type") load_image_from_json(object_data,level,image_type) checkpoints = get_element(level_data, 'checkpoints') if checkpoints: log("CHECKPOINTS LIST: "+str(checkpoints)) v_checkpoints = [] for c in checkpoints: v_checkpoints.append(Vector2(c)) level.checkpoints = v_checkpoints log("END OF LOADING") return True return False