Example #1
0
File: bot.py Project: Madiy/Purple
    def resetPath(self, dangerous_train, line_idx, position, speed):
        nearest_backstep_point, current_edge = self.getTrainPosition(
            line_idx, position, speed * (-1))
        self.train_point_idx = self.getTrainPosition(line_idx, position, speed)

        endpoint = self.selected_path[-1]
        nxgraph = self.graph.nxgraph.copy()
        nxgraph.remove_edge(current_edge.points[0], current_edge.points[1])
        self.selected_path = nx.dijkstra_path(nxgraph, nearest_backstep_point,
                                              endpoint, "length")
        self.selected_path = [nearest_backstep_point] + self.selected_path
        additional_path_len = 0
        if current_edge.points[0] == nearest_backstep_point:
            additional_path_len = position
        else:
            additional_path_len = current_edge.weight - position

        self.selected_path_len = nx.dijkstra_path_length(
            nxgraph, nearest_backstep_point, endpoint,
            "length") + additional_path_len
        speed = -1 * speed
        server_interface.ServerInterface().moveTrain(line_idx, speed,
                                                     self.train_info['idx'])
        self.old_speed = speed
        return
Example #2
0
File: bot.py Project: Madiy/Purple
    def rideByPath(self):
        position = self.train_info['position']
        line_idx = self.train_info['line_idx']
        speed = self.train_info['speed']
        nearest_point, current_position_by_edges = self.getTrainPosition(
            line_idx, position, speed)
        if (nearest_point == current_position_by_edges.points[0] and position
                == 0) or (nearest_point == current_position_by_edges.points[1]
                          and position == current_position_by_edges.weight):
            if len(self.selected_path
                   ) != 0 and self.selected_path[0] == nearest_point:
                self.selected_path.remove(nearest_point)

            if len(self.selected_path) == 0:
                town = self.database.getPlayerInfo()['town']
                if town['point_idx'] != nearest_point:
                    if self.train_info['goods'] == self.train_info[
                            'goods_capacity']:
                        self.callToReturn(self.priority)
                    else:
                        self.goToNearestPostOrWait()
                else:
                    self.is_complited = True
                return
            nearest_edge, speed = self.getNearestEdge(nearest_point)
            server_interface.ServerInterface().moveTrain(
                nearest_edge.idx, speed, self.train_info['idx'])
            self.old_speed = speed
            return
Example #3
0
File: bot.py Project: Madiy/Purple
    def callToReturn(self, priority=1):
        self.priority = priority
        position = self.train_info['position']
        line_idx = self.train_info['line_idx']
        speed = self.train_info['speed']
        nearest_point, current_position_by_edges = self.getTrainPosition(
            line_idx, position, speed)

        town = self.database.getPlayerInfo()['town']
        self.getShortestPathByEndpoints([town])
        next_point = self.selected_path[0]
        if next_point == nearest_point:
            self.selected_path.remove(next_point)
            next_point = self.selected_path[0]

        nearest_edge, speed = self.getNearestEdge(nearest_point)

        server_interface.ServerInterface().moveTrain(nearest_edge.idx, speed,
                                                     self.train_info['idx'])
        self.old_speed = speed
Example #4
0
 def __new__(cls):
     if not hasattr(cls, 'instance'):
         cls.instance = super(ServerData, cls).__new__(cls)
         cls.instance.server_interface = server_interface.ServerInterface()
         cls.instance.fullUpdate()
     return cls.instance