Ejemplo n.º 1
0
    def setup(self):
        """
        Setup test case
        """
        self.config = Configuration(Model(), herculeum.config.levels, mock(),
                                    mock())

        self.config.initialise()
Ejemplo n.º 2
0
    def load_configuration(self, controls, surface_manager):
        """
        Load configuration
        """
        self.world = Model()
        self.config = Configuration(self.world, herculeum.config.levels,
                                    controls, surface_manager)

        self.config.initialise()
Ejemplo n.º 3
0
 def setup(self):
     """
     Setup test case
     """
     base_path = detect_base_path()
     self.config = Configuration(base_path, mock())
     self.config.initialise(herculeum.config.levels)
Ejemplo n.º 4
0
 def load_configuration(self):
     """
     Load configuration
     """
     self.world = Model()
     self.config = Configuration(self.base_path, self.world)
     self.config.initialise(herculeum.config.levels)
Ejemplo n.º 5
0
    def load_configuration(self, controls, surface_manager):
        """
        Load configuration
        """
        self.world = Model()
        self.config = Configuration(self.world, herculeum.config.levels, controls, surface_manager)

        self.config.initialise()
Ejemplo n.º 6
0
    def setup(self):
        """
        Setup test case
        """
        self.config = Configuration(Model(),
                                    herculeum.config.levels,
                                    mock(),
                                    mock())

        self.config.initialise()
Ejemplo n.º 7
0
class Application():
    """
    This class represents main application
    """

    def __init__(self):
        super().__init__()
        self.config = None
        self.gui = None
        self.world = None
        self.running = 1
        self.logger = None
        self.screen = None
        self.log_level = None

    def load_configuration(self, controls, surface_manager):
        """
        Load configuration
        """
        self.world = Model()
        self.config = Configuration(self.world,
                                    herculeum.config.levels,
                                    controls,
                                    surface_manager)

        self.config.initialise()

    def run(self, user_interface):
        """
        Starts the application
        """
        user_interface.show_main_window()

    def enable_cheat(self):
        """
        Enables cheat mode

        .. versionadded:: 0.9
        """
        print('Cheat code activated')
        for spec in self.level_generator_factory.portal_adder_configurations:
            spec.chance = 100

    def __get_surface_manager(self):
        """
        Get surface manager
        """
        return self.config.surface_manager

    def start_logging(self):
        """
        Start logging for the system
        """
        if self.log_level != 'none':
            logging.basicConfig(filename='pyherc.log',
                                level=self.log_level)
        self.logger = logging.getLogger('pyherc.main.Application')
        self.logger.info("Logging started")

    def __get_action_factory(self):
        """
        Get action factory instance

        Returns:
            ActionFactory
        """
        return self.config.action_factory

    def __get_creature_generator(self):
        """
        Get creature generator

        Returns:
            CreatureGenerator
        """
        return self.config.creature_generator

    def __get_item_generator(self):
        """
        Get item generator

        Returns:
            ItemGenerator
        """
        return self.config.item_generator

    def __get_level_generator_factory(self):
        """
        Get level generator factory
        """
        return self.config.level_generator_factory

    def __get_rng(self):
        """
        Get random number generator
        """
        return self.config.rng

    def __get_rules_engine(self):
        """
        Get rules engine
        """
        return self.config.rules_engine

    def __get_player_generator(self):
        """
        Get player generator
        """
        return self.config.player_generator

    def __get_trap_generator(self):
        """
        Get trap generator
        """
        return self.config.trap_generator

    surface_manager = property(__get_surface_manager)
    action_factory = property(__get_action_factory)
    creature_generator = property(__get_creature_generator)
    player_generator = property(__get_player_generator)
    trap_generator = property(__get_trap_generator)
    item_generator = property(__get_item_generator)
    level_generator_factory = property(__get_level_generator_factory)
    rng = property(__get_rng)
    rules_engine = property(__get_rules_engine)
Ejemplo n.º 8
0
class TestMainConfiguration():
    """
    Tests for main configuration
    """
    def __init__(self):
        """
        Default constructor
        """
        self.config = None

    def setup(self):
        """
        Setup test case
        """
        base_path = detect_base_path()
        self.config = Configuration(base_path, mock())
        self.config.initialise(herculeum.config.levels)

    def test_initialisation(self):
        """
        Test that main configuration can be read and initialised properly

        Note:
            This test reads configuration from resources directory
        """
        config = self.config
        assert_that(config.resolution, is_(not_none()))
        assert_that(config.resolution, is_(not_none()))
        assert_that(config.full_screen, is_(not_none()))
        assert_that(config.caption, is_(not_none()))
        assert_that(config.surface_manager, is_(not_none()))
        assert_that(config.action_factory, is_(not_none()))
        assert_that(config.base_path, is_(not_none()))
        assert_that(config.item_generator, is_(not_none()))
        assert_that(config.creature_generator, is_(not_none()))
        assert_that(config.level_generator_factory, is_(not_none()))
        assert_that(config.level_size, is_(not_none()))
        assert_that(config.base_path, is_(not_none()))
        assert_that(config.model, is_(not_none()))
        assert_that(config.rng, is_(not_none()))

    def test_upper_catacombs_generator(self):
        """
        Test that upper catacombs level generator can be retrieved
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper catacombs')

    def test_upper_crypt_generator(self):
        """
        Test that upper crypt level generator can be retrieved
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper crypt')

    def test_inventory_factory_has_been_initialised(self):
        """
        Test that inventory action factory has been initialised
        """
        factory = self.config.action_factory.get_sub_factory(
                            InventoryParameters(character = None,
                                                item = None,
                                                sub_action = 'pick up'))

        assert_that(factory, is_(not_none()))
Ejemplo n.º 9
0
class TestMainConfiguration():
    """
    Tests for main configuration
    """
    def __init__(self):
        """
        Default constructor
        """
        self.config = None

    def setup(self):
        """
        Setup test case
        """
        self.config = Configuration(Model(), herculeum.config.levels, mock(),
                                    mock())

        self.config.initialise()

    def test_initialisation(self):
        """
        Test that main configuration can be read and initialised properly

        Note:
            This test reads configuration from resources directory
        """
        config = self.config
        assert_that(config.surface_manager, is_(not_none()))
        assert_that(config.action_factory, is_(not_none()))
        assert_that(config.item_generator, is_(not_none()))
        assert_that(config.creature_generator, is_(not_none()))
        assert_that(config.level_generator_factory, is_(not_none()))
        assert_that(config.level_size, is_(not_none()))
        assert_that(config.model, is_(not_none()))
        assert_that(config.rng, is_(not_none()))

    def test_first_gate_generator(self):
        """
        Test that first gate level generator can be retrieved and used
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('first gate')
        level = generator(None)

    def test_upper_mines_generator(self):
        """
        Test that upper mines level generator can be retrieved
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper mines')
        level = generator(None)

    def test_lower_mines_generator(self):
        """
        Test that lower mines level can be created
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower mines')
        level = generator(None)

    def test_forge_generator(self):
        """
        Test that forge can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('forge')
        level = generator(None)

    def test_lower_caverns_generator(self):
        """
        Test that lower caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower caverns')
        level = generator(None)

    def test_middle_caverns_generator(self):
        """
        Test that middle caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('middle caverns')
        level = generator(None)

    def test_upper_caverns_generator(self):
        """
        Test that upper caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper caverns')
        level = generator(None)

    def test_second_gate_generator(self):
        """
        Test that second gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('second gate')
        level = generator(None)

    def test_lower_maze_generator(self):
        """
        Test that lower maze can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower maze')
        level = generator(None)

    def test_courtyard_generator(self):
        """
        Test that courtyard can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('courtyard')
        level = generator(None)

    def test_upper_maze_generator(self):
        """
        Test that upper maze can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper maze')
        level = generator(None)

    def test_third_gate_generator(self):
        """
        Test that third gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('third gate')
        level = generator(None)

    def test_lower_catacombs_generator(self):
        """
        Test that lower catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower catacombs')
        level = generator(None)

    def test_central_catacombs_generator(self):
        """
        Test that central catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('central catacombs')
        level = generator(None)

    def test_upper_catacombs_generator(self):
        """
        Test that upper catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper catacombs')
        level = generator(None)

    def test_final_gate_generator(self):
        """
        Test that final gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('final gate')
        level = generator(None)

    def test_inventory_factory_has_been_initialised(self):
        """
        Test that inventory action factory has been initialised
        """
        factory = self.config.action_factory.get_sub_factory(
            InventoryParameters(character=None,
                                item=None,
                                sub_action='pick up'))

        assert_that(factory, is_(not_none()))

    def test_player_character_generator_has_been_initialised(self):
        """
        Test that player character generator is initialised during
        configuration phase
        """
        assert_that(self.config.player_generator, is_(not_none()))
Ejemplo n.º 10
0
class TestMainConfiguration():
    """
    Tests for main configuration
    """
    def __init__(self):
        """
        Default constructor
        """
        self.config = None

    def setup(self):
        """
        Setup test case
        """
        self.config = Configuration(Model(),
                                    herculeum.config.levels,
                                    mock(),
                                    mock())

        self.config.initialise()

    def test_initialisation(self):
        """
        Test that main configuration can be read and initialised properly

        Note:
            This test reads configuration from resources directory
        """
        config = self.config
        assert_that(config.surface_manager, is_(not_none()))
        assert_that(config.action_factory, is_(not_none()))
        assert_that(config.item_generator, is_(not_none()))
        assert_that(config.creature_generator, is_(not_none()))
        assert_that(config.level_generator_factory, is_(not_none()))
        assert_that(config.level_size, is_(not_none()))
        assert_that(config.model, is_(not_none()))
        assert_that(config.rng, is_(not_none()))

    def test_first_gate_generator(self):
        """
        Test that first gate level generator can be retrieved and used
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('first gate')
        level = generator(None)

    def test_upper_mines_generator(self):
        """
        Test that upper mines level generator can be retrieved
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper mines')
        level = generator(None)

    def test_lower_mines_generator(self):
        """
        Test that lower mines level can be created
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower mines')
        level = generator(None)        

    def test_forge_generator(self):
        """
        Test that forge can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('forge')
        level = generator(None)

    def test_lower_caverns_generator(self):
        """
        Test that lower caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower caverns')
        level = generator(None)

    def test_middle_caverns_generator(self):
        """
        Test that middle caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('middle caverns')
        level = generator(None)

    def test_upper_caverns_generator(self):
        """
        Test that upper caverns can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper caverns')
        level = generator(None)

    def test_second_gate_generator(self):
        """
        Test that second gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('second gate')
        level = generator(None)

    def test_lower_maze_generator(self):
        """
        Test that lower maze can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower maze')
        level = generator(None)

    def test_courtyard_generator(self):
        """
        Test that courtyard can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('courtyard')
        level = generator(None)

    def test_upper_maze_generator(self):
        """
        Test that upper maze can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper maze')
        level = generator(None)

    def test_third_gate_generator(self):
        """
        Test that third gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('third gate')
        level = generator(None)

    def test_lower_catacombs_generator(self):
        """
        Test that lower catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('lower catacombs')
        level = generator(None)

    def test_central_catacombs_generator(self):
        """
        Test that central catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('central catacombs')
        level = generator(None)

    def test_upper_catacombs_generator(self):
        """
        Test that upper catacombs can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('upper catacombs')
        level = generator(None)

    def test_final_gate_generator(self):
        """
        Test that final gate can be generated
        """
        factory = self.config.level_generator_factory
        generator = factory.get_generator('final gate')
        level = generator(None)

    def test_inventory_factory_has_been_initialised(self):
        """
        Test that inventory action factory has been initialised
        """
        factory = self.config.action_factory.get_sub_factory(
                            InventoryParameters(character = None,
                                                item = None,
                                                sub_action = 'pick up'))

        assert_that(factory, is_(not_none()))

    def test_player_character_generator_has_been_initialised(self):
        """
        Test that player character generator is initialised during
        configuration phase
        """
        assert_that(self.config.player_generator, is_(not_none()))
Ejemplo n.º 11
0
class Application(object):
    """
    This class represents main application
    """

    def __init__(self):
        super(Application, self).__init__()
        self.config = None
        self.gui = None
        self.world = None
        self.running = 1
        self.base_path = None
        self.logger = None
        self.screen = None
        self.log_level = None

    def process_command_line(self):
        """
        Process command line options
        """
        log_levels = {'debug': logging.DEBUG,
                      'info': logging.INFO,
                      'warning': logging.WARNING,
                      'error': logging.ERROR,
                      'critical': logging.CRITICAL}
        args = sys.argv
        for argument in args:
            if argument in log_levels:
                self.log_level = log_levels[argument]

    def load_configuration(self):
        """
        Load configuration
        """
        self.world = Model()
        self.config = Configuration(self.base_path, self.world)
        self.config.initialise(herculeum.config.levels)

    def run(self):
        """
        Starts the application
        """
        self.screen = pygame.display.set_mode((800, 600),
                                              pygame.SWSURFACE)
        self.gui = MainWindow(self,
                              self.base_path,
                              self.surface_manager)
        menu = StartMenu(self,
                         self.surface_manager)
        self.gui.connect(pgu.gui.QUIT, self.gui.quit, None)
        self.gui.run(menu, screen = self.screen)

    def __get_surface_manager(self):
        """
        Get surface manager
        """
        return self.config.surface_manager

    def start_logging(self):
        """
        Start logging for the system
        """
        logging.basicConfig(filename='pyherc.log',
                            level=self.log_level)
        self.logger = logging.getLogger('pyherc.main.Application')
        self.logger.info("Logging started")

    def change_state(self, state):
        """
        Change state of the gui

        Args:
            state: String specifying which state to display
        """
        self.gui.change_state(state)

    def __get_action_factory(self):
        """
        Get action factory instance

        Returns:
            ActionFactory
        """
        return self.config.action_factory

    def __get_creature_generator(self):
        """
        Get creature generator

        Returns:
            CreatureGenerator
        """
        return self.config.creature_generator

    def __get_item_generator(self):
        """
        Get item generator

        Returns:
            ItemGenerator
        """
        return self.config.item_generator

    def __get_level_generator_factory(self):
        """
        Get level generator factory
        """
        return self.config.level_generator_factory

    def __get_rng(self):
        """
        Get random number generator
        """
        return self.config.rng

    def detect_resource_directory(self):
        """
        Detects location of resources directory and updates self.base_path
        """
        search_directory = '.'
        current = os.path.normpath(os.path.join(os.getcwd(), search_directory))

        while not os.path.exists(os.path.join(current, 'resources')):
            search_directory = search_directory +'/..'
            current = os.path.normpath(os.path.join(os.getcwd(),
                                                    search_directory))

        self.base_path = os.path.join(current, 'resources')

    surface_manager = property(__get_surface_manager)
    action_factory = property(__get_action_factory)
    creature_generator = property(__get_creature_generator)
    item_generator = property(__get_item_generator)
    level_generator_factory = property(__get_level_generator_factory)
    rng = property(__get_rng)
Ejemplo n.º 12
0
class Application():
    """
    This class represents main application
    """
    def __init__(self):
        super().__init__()
        self.config = None
        self.gui = None
        self.world = None
        self.running = 1
        self.logger = None
        self.screen = None
        self.log_level = None

    def load_configuration(self, controls, surface_manager):
        """
        Load configuration
        """
        self.world = Model()
        self.config = Configuration(self.world, herculeum.config.levels,
                                    controls, surface_manager)

        self.config.initialise()

    def run(self, user_interface):
        """
        Starts the application
        """
        user_interface.show_main_window()

    def enable_cheat(self):
        """
        Enables cheat mode

        .. versionadded:: 0.9
        """
        print('Cheat code activated')
        for spec in self.level_generator_factory.portal_adder_configurations:
            spec.chance = 100

    def __get_surface_manager(self):
        """
        Get surface manager
        """
        return self.config.surface_manager

    def start_logging(self):
        """
        Start logging for the system
        """
        if self.log_level != 'none':
            logging.basicConfig(filename='pyherc.log', level=self.log_level)
        self.logger = logging.getLogger('pyherc.main.Application')
        self.logger.info("Logging started")

    def __get_action_factory(self):
        """
        Get action factory instance

        Returns:
            ActionFactory
        """
        return self.config.action_factory

    def __get_creature_generator(self):
        """
        Get creature generator

        Returns:
            CreatureGenerator
        """
        return self.config.creature_generator

    def __get_item_generator(self):
        """
        Get item generator

        Returns:
            ItemGenerator
        """
        return self.config.item_generator

    def __get_level_generator_factory(self):
        """
        Get level generator factory
        """
        return self.config.level_generator_factory

    def __get_rng(self):
        """
        Get random number generator
        """
        return self.config.rng

    def __get_rules_engine(self):
        """
        Get rules engine
        """
        return self.config.rules_engine

    def __get_player_generator(self):
        """
        Get player generator
        """
        return self.config.player_generator

    def __get_trap_generator(self):
        """
        Get trap generator
        """
        return self.config.trap_generator

    surface_manager = property(__get_surface_manager)
    action_factory = property(__get_action_factory)
    creature_generator = property(__get_creature_generator)
    player_generator = property(__get_player_generator)
    trap_generator = property(__get_trap_generator)
    item_generator = property(__get_item_generator)
    level_generator_factory = property(__get_level_generator_factory)
    rng = property(__get_rng)
    rules_engine = property(__get_rules_engine)