def add_background(world, properties, i_store): if len(properties) >= BGND_NUM_PROPERTIES: pt = point.Point(int(properties[BGND_COL]), int(properties[BGND_ROW])) name = properties[BGND_NAME] world.set_background( pt, entities.Background(name, image_store.get_images(i_store, name)))
def load_map(self, index): self.pampuch = None self.monsters = list() self.game_state.goal = 0 self.game_state.points_level = 0 files.Textures.load(index) map_strings = files.load_map(index, self.game_state.mode) self.move_resize( [(self.master.surface.get_size()[i] - (map_strings.get_dimensions()[i] * constants.SQUARE_SIZE)) // 2 for i in range(2)], 1, [ map_strings.get_dimensions()[i] * constants.SQUARE_SIZE for i in range(2) ], False) self.map_widgets = Md_array(map_strings.get_dimensions()) for pos, field in map_strings.enumerated: self.map_widgets[pos] = entities.Background( self, [pos[i] * constants.SQUARE_SIZE for i in range(2)], [constants.SQUARE_SIZE for _ in range(2)], pos=pos) if field == constants.CHAR_WALL: self.map_widgets[pos].attr.type = 'wall' self.map_widgets[pos].set(image=files.Textures.wall) elif field == constants.CHAR_EMPTY: self.map_widgets[pos].attr.type = 'empty' self.map_widgets[pos].set(image=files.Textures.empty) else: self.map_widgets[pos].attr.img_empty = files.Textures.empty self.map_widgets[pos].attr.type = 'point' self.map_widgets[pos].set(image=files.Textures.point) self.game_state.goal += 1 if field == constants.CHAR_PAMPUCH: if self.pampuch is not None: raise FileFormatError( 'Pampuch must be instanced exactly once per level', level_index=index) self.pampuch = pos elif field == constants.CHAR_MONSTER: self.monsters.append(pos) if self.pampuch is None: raise FileFormatError( 'Pampuch must be instanced exactly once per level', level_index=index) self.pampuch = entities.Pampuch(self, self.pampuch) self.pampuch.attr.img_dead = files.Textures.dead.copy() for index, pos in enumerate(self.monsters): self.monsters[index] = entities.Monster(self, pos, self.pampuch) for m in self.monsters: others = self.monsters.copy() others.remove(m) m.colleagues = others self.children = self.children[1:] + self.children[:1]
def handle_mouse_button(view, world, event, entity_select, i_store): mouse_pt = mouse_to_tile(event.pos, view.tile_width, view.tile_height) tile_view_pt = worldview.viewport_to_world(view.viewport, mouse_pt) if event.button == mouse_buttons.LEFT and entity_select: if is_background_tile(entity_select): worldmodel.set_background(world, tile_view_pt, entities.Background(entity_select, image_store.get_images(i_store, entity_select))) return [tile_view_pt] else: new_entity = create_new_entity(tile_view_pt, entity_select, i_store) if new_entity: worldmodel.remove_entity_at(world, tile_view_pt) worldmodel.add_entity(world, new_entity) return [tile_view_pt] elif event.button == mouse_buttons.RIGHT: worldmodel.remove_entity_at(world, tile_view_pt) return [tile_view_pt] return []
def create_default_background(img): return entities.Background(image_store.DEFAULT_IMAGE_NAME, img)