def initialize_side_positioning(side: BattleSide):
formation_settings = side.get_formation()
if formation_settings.formation == BattleFormation.LINE:
formation = LineFormation(side, formation_settings)
else:
raise Exception(
"Formation {} not known".format(formation_settings.formation)
)
formation.make_formation()
for coords, contub in formation.output_formation():
contub.x_offset_to_formation = coords.x
contub.z_offset_to_formation = coords.z
contub.starting_x_pos = coords.x if side.z else -coords.x
contub.starting_z_pos = coords.z + 10 if side.z else -coords.z - 10
contub.save()
for unit in side.battleunit_set.all()\
.annotate(avg_x=Avg('battlecontubernium__starting_x_pos'))\
.annotate(avg_z=Avg('battlecontubernium__starting_z_pos')):
unit.starting_x_pos = math.floor(unit.avg_x)
unit.starting_z_pos = math.floor(unit.avg_z)
unit.save()
set_contubernia_starting_pos(unit)
评论列表
文章目录