примерно так :)
pub fn get_action<'a>(
&mut self,
player_view: &model::PlayerView,
mut debug_interface: Option<&'a mut DebugInterface>,
) -> model::Action {
unsafe {
MAP_SIZE = player_view.map_size;
}
let mut tick = TickStrategy {
debug: RefCell::new(None), // RefCell::new(debug_interface),
actions: RefCell::new(model::Action {
entity_actions: std::collections::HashMap::new(),
}),
s: State::new(player_view, self.pers_cells.clone()),
used_units: HashSet::new(),
reserve: 0,
w: self.global.clone(),
stayed: HashSet::new(),
movies: RefCell::new(vec![]),
used_points: RefCell::new(HashSet::new()),
blocked_points: RefCell::new(Default::default()),
mining_pos: HashSet::new(),
};
//tick.build_turret(&mut self.turret_builder);
self.global = tick.do_war();
tick.recover_houses();
self.builder =
tick.build(self.builder.clone());
tick.do_mining();
tick.build_range();
tick.build_mele();
tick.build_worker();
tick.fix_collisions();
tick.actions.into_inner()
}