Exemple #1
0
    def test_stair_linking(self):
        """
        Test that stairs can be linked
        """
        level1 = Level([20, 20], self.floor_rock, self.wall_empty)
        level2 = Level([20, 20], self.floor_rock, self.wall_empty)

        stairs1 = Portal((None, None), None)
        #TODO: beak link
        stairs1.icon = 200
        level1.add_portal(stairs1, (10, 10))

        stairs2 = Portal((None, None), None)
        level2.add_portal(stairs2, (5, 5), stairs1)

        assert(stairs1.level == level1)
        assert(stairs1.location == (10, 10))
        assert(stairs1.other_end == stairs2)

        assert(stairs2.level == level2)
        assert(stairs2.location == (5, 5))
        assert(stairs2.other_end == stairs1)

        assert(stairs1 in level1.portals)
        assert(stairs2 in level2.portals)
Exemple #2
0
    def generate_level(self, portal):
        """
        Generate level

        :param portal: portal to link to this level
        :type portal: Portal
        """
        new_level = Level(size = self.level_context.size,
                          floor_type = self.level_context.floor_type,
                          wall_type = self.level_context.wall_type,
                          empty_floor = self.level_context.empty_floor,
                          empty_wall = self.level_context.empty_wall)

        sections = self.partitioner.partition_level(new_level)

        for section in sections:
            generator = self.random_generator.choice(self.room_generators)
            generator.generate_room(section)

        self.decorator.decorate_level(new_level)

        for adder in self.portal_adders:
            adder.add_portal(new_level)

        # all this needs to be cleaned up
        if portal != None:
            rooms = new_level.get_locations_by_type('room')
            if len(rooms) > 0:
                new_portal = Portal(icons = (portal.other_end_icon, None),
                                    level_generator = None)
                location = self.random_generator.choice(rooms)
                new_level.add_portal(new_portal, location, portal)
            else:
                self.logger.warn('no location found, skipping')


        self.creature_adder.add_creatures(new_level)

        self.item_adder.add_items(new_level)

        self.logger.debug(new_level.dump_string())

        return new_level