Ejemplo n.º 1
0
 def build_defense_item(self, defense, planet = None):
     self.logger.info("building %s %s on planet %s" % (defense[1], defense[0], planet.name))
     self.logger.info("Writing data to form")
     self.br.select_form(name='form')
     self.br.form.new_control('text','menge',{'value': defense[1]})
     self.br.form.fixup()
     self.br['menge'] = defense[1]
     self.br.form.new_control('text','type',{'value':defense[0]})
     self.br.form.fixup()
     self.br['type'] = defense[0]
     self.br.form.new_control('text','modus',{'value':'1'})
     self.br.form.fixup()
     self.br['modus'] = '1'
     self.logger.info("Submitting build defense request")
     util.submit_request(self.br)
Ejemplo n.º 2
0
    def send_fleet(self, origin_planet, coordinates, mission, ships, resources = None):
        """
        Missions:
            15 - Expedition,
            7 - Colonization,
            8 - Recycle,
            3 - Transport,
            4 - Transfer,
            6 - Spy,
            5 - Defend planet,
            1 - Attack,
            2 - Alliance attack,
            9 - Destroy star
        """
        if resources == None:
            resources = general.Resources(0, 0)

        if origin_planet.coordinates == coordinates:
            self.logger.error("Origin and destination are the same")
            return FleetResult.WrongParameters

        url = self.url_provider.get_page_url('fleet', origin_planet)
        resp = self.browser.open(url)

        try:
            self.browser.select_form(name='shipsChosen')
        except mechanize.FormNotFoundError:
            self.logger.error('The planet has no available ships')
            return FleetResult.NoAvailableShips

        # set ships to send
        soup = BeautifulSoup(resp.read(), "lxml")
        for ship, amount in ships.iteritems():
            self.logger.info("Adding %d %s to the mission fleet" % (amount, ship.name))
            control_name = "am" + str(ship.id)
            control = self.browser.form.find_control(control_name)
            # If there is no available ships exit
            if control.readonly == False:
                self.browser[control_name] = str(amount)
            else:
                self.logger.warning("Not enough %s to send" % ship.name)
                return FleetResult.NoAvailableShips
        util.submit_request(self.browser)

        # set target planet
        self.browser.select_form(name='details')
        self.browser["galaxy"] = coordinates.split(':')[0]
        self.browser["system"] = coordinates.split(':')[1]
        self.browser["position"] = coordinates.split(':')[2]
        util.submit_request(self.browser)

        # set mission and resouces to send
        self.browser.select_form(name='sendForm')
        self.browser.form.find_control('mission').readonly = False
        self.browser["mission"] = str(mission)
        self.browser["metal"] = str(resources.metal)
        self.browser["crystal"] = str(resources.crystal)
        self.browser["deuterium"] = str(resources.deuterium)
        util.submit_request(self.browser)
        self.logger.info("Sending %s %s from planet %s to coordinates %s" %
            (self.get_ships_list(ships), ("carrying %s" % resources) if resources != None else "", origin_planet.name, coordinates))
        return FleetResult.Success