Example #1
0
    def get_job(self):
        pos = self.position.to_tuple()

        # try to get away with a random job (with normal forest density this works > 99% of the time)
        for i in xrange(
                min(5, self._building_index.get_num_buildings_in_range(pos))):
            provider = self._building_index.get_random_building_in_range(pos)
            if provider is not None and self.check_possible_job_target(
                    provider):
                job = self.check_possible_job_target_for(
                    provider, self._required_resource_id)
                if job is not None and self.check_move(
                        job.object.loading_area):
                    return job

        jobs = JobList(self, JobList.order_by.random)
        # try all possible jobs
        for provider in self.home_island.get_building_index(
                self._required_resource_id).get_buildings_in_range(pos):
            if self.check_possible_job_target(provider):
                job = self.check_possible_job_target_for(
                    provider, self._required_resource_id)
                if job is not None:
                    jobs.append(job)

        return self.get_best_possible_job(jobs)
Example #2
0
	def get_job(self):
		pos = self.position.to_tuple()

		# try to get away with a random job (with normal forest density this works > 99% of the time)
		for i in xrange(min(5, self._building_index.get_num_buildings_in_range(pos))):
			provider = self._building_index.get_random_building_in_range(pos)
			if provider is not None and self.check_possible_job_target(provider):
				job = self.check_possible_job_target_for(provider, self._required_resource_id)
				if job is not None:
					path = self.check_move(job.object.loading_area)
					if path:
						job.path = path
						return job

		# NOTE: only use random job for now, see how it's working it
		# it speeds up animal.search_job by a third (0.00321 -> 0.00231)
		# and animal.get_job by 3/4 (0.00231 -> 0.00061)
		return None

		jobs = JobList(self, JobList.order_by.random)
		# try all possible jobs
		for provider in self.home_island.get_building_index(self._required_resource_id).get_buildings_in_range(pos):
			if self.check_possible_job_target(provider):
				job = self.check_possible_job_target_for(provider, self._required_resource_id)
				if job is not None:
					jobs.append(job)

		return self.get_best_possible_job(jobs)
Example #3
0
	def get_job(self):
		jobs = JobList(self, JobList.order_by.random)
		collectable_resources = self.get_needed_resources()

		# iterate over all possible providers and needed resources
		# and save possible job targets
		reach = Circle(self.position, self.walking_range)
		for provider in self.home_island.get_providers_in_range(reach):
			if self.check_possible_job_target(provider):
				for res in collectable_resources:
					job = self.check_possible_job_target_for(provider, res)
					if job is not None:
						jobs.append(job)

		return self.get_best_possible_job(jobs)
Example #4
0
    def get_job(self):
        jobs = JobList(self, JobList.order_by.random)
        collectable_resources = self.get_needed_resources()

        # iterate over all possible providers and needed resources
        # and save possible job targets
        position_rect = Rect.init_from_topleft_and_size(
            self.position.x, self.position.y, 0, 0)
        reach = RadiusRect(position_rect, self.walking_range)
        for provider in self.home_island.get_providers_in_range(reach):
            if self.check_possible_job_target(provider):
                for res in collectable_resources:
                    job = self.check_possible_job_target_for(provider, res)
                    if job is not None:
                        jobs.append(job)

        return self.get_best_possible_job(jobs)
Example #5
0
	def get_job(self):
		pos = self.position.to_tuple()

		# try to get away with a random job (with normal forest density this works > 99% of the time)
		for i in xrange(min(5, self._building_index.get_num_buildings_in_range(pos))):
			provider = self._building_index.get_random_building_in_range(pos)
			if provider is not None and self.check_possible_job_target(provider):
				job = self.check_possible_job_target_for(provider, self._required_resource_id)
				if job is not None and self.check_move(job.object.loading_area):
					return job

		jobs = JobList(self, JobList.order_by.random)
		# try all possible jobs
		for provider in self.home_island.get_building_index(self._required_resource_id).get_buildings_in_range(pos):
			if self.check_possible_job_target(provider):
				job = self.check_possible_job_target_for(provider, self._required_resource_id)
				if job is not None:
					jobs.append(job)

		return self.get_best_possible_job(jobs)