Move dependencies code to separate class
This commit is contained in:
47
aoe/world.py
47
aoe/world.py
@@ -69,44 +69,6 @@ class World():
|
||||
self.resources[i] -= self.costs.costs[purchase][i]
|
||||
|
||||
|
||||
def _check_dependencies(self, thing):
|
||||
thing_type = type(thing)
|
||||
|
||||
if thing_type == Ages:
|
||||
self._check_age_dependencies(thing)
|
||||
else:
|
||||
if thing_type == Buildings:
|
||||
dependencies = self.building_deps.dependencies[thing]
|
||||
elif thing_type == Units:
|
||||
dependencies = self.unit_deps.dependencies[thing]
|
||||
elif thing_type == Research:
|
||||
dependencies = self.research_deps.dependencies[thing]
|
||||
self._check_non_age_dependencies(dependencies)
|
||||
|
||||
|
||||
def _check_non_age_dependencies(self, dependencies):
|
||||
for dep in dependencies:
|
||||
if dep not in self.buildings and \
|
||||
dep not in self.research and \
|
||||
not self._is_sufficient_age(dep):
|
||||
raise MissingDependencyException
|
||||
|
||||
|
||||
def _is_sufficient_age(self, age):
|
||||
if type(age) == Ages and self.age >= age:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _check_age_dependencies(self, age):
|
||||
total_buildings = 0
|
||||
for building in self.age_deps.dependencies[age].keys():
|
||||
if self.has_building(building):
|
||||
total_buildings += self.age_deps.dependencies[age][building]
|
||||
if total_buildings < self.age_deps.dependencies_counts[age]:
|
||||
raise MissingDependencyException
|
||||
|
||||
|
||||
def _schedule_next_gather_rate_decrease(self, task):
|
||||
if task in [Tasks.IDLE, Tasks.BUILD]:
|
||||
return
|
||||
@@ -252,7 +214,7 @@ class World():
|
||||
|
||||
self._check_villager_move(villagers_from_count)
|
||||
|
||||
self._check_dependencies(building)
|
||||
self.dependencies.check_dependencies(self, building)
|
||||
|
||||
self._pay_cost(building)
|
||||
self._move_villagers_to_build(villagers_from_count)
|
||||
@@ -458,7 +420,7 @@ class World():
|
||||
|
||||
|
||||
def _queue_thing(self, thing, initial_task=None):
|
||||
self._check_dependencies(thing)
|
||||
self.dependencies.check_dependencies(self, thing)
|
||||
self._pay_cost(thing)
|
||||
|
||||
self._start_producing(thing, initial_task)
|
||||
@@ -538,10 +500,7 @@ class World():
|
||||
|
||||
self.build_times = Times()
|
||||
self.costs = Costs()
|
||||
self.building_deps = BuildingDependencies()
|
||||
self.age_deps = AgeDependencies()
|
||||
self.research_deps = ResearchDependencies()
|
||||
self.unit_deps = UnitDependencies()
|
||||
self.dependencies = Dependencies()
|
||||
self.housing = Housing()
|
||||
self.production = Production()
|
||||
self.gather = Gather()
|
||||
|
||||
Reference in New Issue
Block a user