Ejemplo n.º 1
0
    def unregister(cls):
        """Unregister an action class

        Returns:
            True if the action was unregistered, false if Not
        """
        try:
            ActionManager.unregister_action(cls.__registered_as)
            cls.__registered_as = None
            return True
        except NotRegisteredError as error:
            print(error)
            return False
Ejemplo n.º 2
0
    def edit_actions(self):
        """Show the dialog to edit actions"""
        dialog = Actions(self)
        values = dialog.show_modal(self.editor_gui.editor_window,
                                   self.engine.pump)
        if not dialog.return_value:
            return False
        ActionManager.clear_actions()
        current_items = list(values["current_items"])
        self.project.set("fife-rpg", "Actions", current_items)
        self.register_actions(current_items)

        self.project_changed = True
Ejemplo n.º 3
0
    def register(cls, name):
        """Registers the class as an action

        Args:
            name: The name under which the class should be registered

        Returns:
            True if the action was registered, False if not.
        """
        try:
            ActionManager.register_action(name, cls)
            cls.__registered_as = name
            for dependency in cls.dependencies:
                if not dependency.registered_as:
                    dependency.register()
            return True
        except AlreadyRegisteredError as error:
            print error
            return False
Ejemplo n.º 4
0
    def register(cls, name):
        """Registers the class as an action

        Args:
            name: The name under which the class should be registered

        Returns:
            True if the action was registered, False if not.
        """
        try:
            ActionManager.register_action(name, cls)
            cls.__registered_as = name
            for dependency in cls.dependencies:
                if not dependency.registered_as:
                    dependency.register()
            return True
        except AlreadyRegisteredError as error:
            print(error)
            return False
Ejemplo n.º 5
0
    def mousePressed(self, event):#pylint: disable=W0221
        application = self.gamecontroller.application
        player = application.world.get_or_create_entity("PlayerCharacter")
        if event.getButton() == fife.MouseEvent.LEFT:
            scr_point = application.screen_coords_to_map_coords(
                            fife.ScreenPoint(event.getX(), event.getY()),
                            "actors"
                            )
            fifeagent.run(player, scr_point)
            print player.Agent.position            
        elif event.getButton() == fife.MouseEvent.RIGHT:
            if application.language == "en":
                application.language = "de"
            else:
                application.language = "en"                
            world = application.world
            game_map = application.current_map
            if game_map:
                pt = fife.ScreenPoint(event.getX(), event.getY())
                actor_instances = game_map.get_instances_at(
                                                    pt, 
                                                    game_map.get_layer("actors"))

            if actor_instances:
                    for actor in actor_instances:
                        identifier = actor.getId()
                        if identifier == "PlayerCharacter":
                            continue
                        entity = world.get_entity(identifier)
                        possible_actions = ActionManager.get_possible_actions(
                                                                     player, 
                                                                     entity) 
                        actions = {}
                        for name, action in possible_actions.iteritems():
                            actions[name] = action(application, player, entity)
                            print actions[name].menu_text
                        
                        if actions.has_key("MoveAgent"):
                            fifeagent.approach_and_execute(player, entity,
                                callback=lambda:
                                    actions["MoveAgent"].execute()
                            )
                        elif actions.has_key("Read"):
                            fifeagent.approach_and_execute(player, entity,
                                callback=lambda:
                                    player.FifeAgent.instance.say(
                                            actions["Read"].execute(), 2000)
                            )
                        elif actions.has_key("Look"):
                            fifeagent.approach_and_execute(player, entity,
                                callback=lambda: 
                                    player.FifeAgent.instance.say(
                                            actions["Look"].execute(), 2000)
                            )
Ejemplo n.º 6
0
 def clear(self):
     """Clears all data and restores saved settings"""
     self._maps = {}
     self._current_map = None
     self._components = {}
     self._actions = {}
     self._systems = {}
     self._behaviours = {}
     self.changed_maps = []
     self.project_changed = False
     self.entity_changed = False
     self.editor_gui.reset_layerlist()
     self.map_entities = None
     self.set_selected_object(None)
     tmp_settings = list(self.settings.getSettingsFromFile("fife-rpg").keys())
     for setting in tmp_settings:
         if setting in self.editor_settings:
             self.settings.set("fife-rpg", setting,
                               self.editor_settings[setting])
         else:
             self.settings.remove("fife-rpg", setting)
     ComponentManager.clear_components()
     ComponentManager.clear_checkers()
     ActionManager.clear_actions()
     ActionManager.clear_commands()
     SystemManager.clear_systems()
     BehaviourManager.clear_behaviours()
     self.editor.delete_maps()
     self.editor.delete_objects()
     if self.project_source is not None:
         self.engine.getVFS().removeSource(self.project_source)
         self.project_source = None
     if self.project_dir is not None:
         sys.path.remove(self.project_dir)
         self.project_dir = None
     self.project = None
     for callback in self._project_cleared_callbacks:
         callback()
     self.create_world()
Ejemplo n.º 7
0
 def test_commands_dictionary(self):
     test_commands = {}
     self.assertEqual(ActionManager.get_commands(), test_commands)
     self.reg_command_func(*self.reg_command_params)
     self.assertNotEqual(ActionManager.get_commands(), test_commands)
     test_commands["Test"] = None
     self.assertEqual(ActionManager.get_commands(), test_commands)
     ActionManager.clear_commands()
     test_commands = {}
     self.assertEqual(ActionManager.get_commands(), test_commands)
Ejemplo n.º 8
0
 def test_actions_dictionary(self):
     test_actions = {}
     self.assertEqual(ActionManager.get_actions(), test_actions)
     self.reg_action_func(*self.reg_action_params)
     self.assertNotEqual(ActionManager.get_actions(), test_actions)
     test_actions["Test"] = TestAction
     self.assertEqual(ActionManager.get_actions(), test_actions)
     ActionManager.clear_actions()
     test_actions = {}
     self.assertEqual(ActionManager.get_actions(), test_actions)
Ejemplo n.º 9
0
 def test_commands_dictionary(self):
     test_commands = {}
     self.assertEqual(ActionManager.get_commands(), test_commands)
     self.reg_command_func(*self.reg_command_params)
     self.assertNotEqual(ActionManager.get_commands(), test_commands)
     test_commands["Test"] = None
     self.assertEqual(ActionManager.get_commands(), test_commands)
     ActionManager.clear_commands()
     test_commands = {}
     self.assertEqual(ActionManager.get_commands(), test_commands)
Ejemplo n.º 10
0
 def test_actions_dictionary(self):
     test_actions = {}
     self.assertEqual(ActionManager.get_actions(), test_actions)
     self.reg_action_func(*self.reg_action_params)
     self.assertNotEqual(ActionManager.get_actions(), test_actions)
     test_actions["Test"] = TestAction
     self.assertEqual(ActionManager.get_actions(), test_actions)
     ActionManager.clear_actions()
     test_actions = {}
     self.assertEqual(ActionManager.get_actions(), test_actions)
Ejemplo n.º 11
0
    def execute(self):
        """Execute the action

        Raises:
            :class:`fife_rpg.exceptions.NoSuchCommandError`
            if a command is detected that is not registered.
        """
        # Check if there are special commands and execute them
        for command_data in self.commands:
            command = command_data["Command"]
            available_commands = ActionManager.get_commands()
            if command in available_commands:
                available_commands[command](command_data)
            else:
                raise NoSuchCommandError(command)
        self.executed = True
Ejemplo n.º 12
0
    def execute(self):
        """Execute the action

        Raises:
            :class:`fife_rpg.exceptions.NoSuchCommandError`
            if a command is detected that is not registered.
        """
        # Check if there are special commands and execute them
        for command_data in self.commands:
            command = command_data["Command"]
            available_commands = ActionManager.get_commands()
            if command in available_commands:
                available_commands[command](command_data)
            else:
                raise NoSuchCommandError(command)
        self.executed = True
Ejemplo n.º 13
0
    def mousePressed(self, event):
        application = self.gamecontroller.application
        player = application.world.get_entity("PlayerCharacter")
        if event.getButton() == fife.MouseEvent.LEFT:
            map_point = application.screen_coords_to_map_coords(
                            (event.getX(), event.getY()), "actors"
                            )
            fifeagent.run(player, map_point)
        elif event.getButton() == fife.MouseEvent.RIGHT:
            game_map = application.current_map
            if game_map:
                scr_point = fife.ScreenPoint(event.getX(), event.getY())
                actor_instances = game_map.get_instances_at(
                                                    scr_point, 
                                                    game_map.get_layer("actors")
                                                    )
            else:
                actor_instances = ()
            for actor in actor_instances:
                identifier = actor.getId()
                outliner = self.gamecontroller.outliner
                if identifier in outliner.outline_ignore:
                    continue
                entity = application.world.get_entity(identifier)
                possible_actions = ActionManager.get_possible_actions(
                                                             player, 
                                                             entity) 
                actions = {}
                for name, action in possible_actions.iteritems():
                    actions[name] = action(application, player, entity)

                if actions.has_key("Look"):
                    fifeagent.approach_and_execute(player, entity,
                        callback=lambda: 
                            player.FifeAgent.instance.say(
                                    actions["Look"].execute(), 2000)
                    )
Ejemplo n.º 14
0
 def tearDown(self):
     ActionManager.clear_actions()
     ActionManager.clear_commands()
Ejemplo n.º 15
0
 def tearDown(self):
     ActionManager.clear_actions()
     ActionManager.clear_commands()