| 308 | } |
| 309 | |
| 310 | static void remove_soldier_entity_link(df::historical_figure* hf, df::squad* squad) |
| 311 | { |
| 312 | int32_t start_year = -1; |
| 313 | for (size_t i = 0; i < hf->entity_links.size(); i++) |
| 314 | { |
| 315 | df::histfig_entity_link* link = hf->entity_links[i]; |
| 316 | if (link->getType() != df::enums::histfig_entity_link_type::SQUAD) |
| 317 | continue; |
| 318 | |
| 319 | auto squad_link = strict_virtual_cast<df::histfig_entity_link_squadst>(link); |
| 320 | if (squad_link == nullptr || squad_link->squad_id != squad->id) |
| 321 | continue; |
| 322 | |
| 323 | hf->entity_links.erase(hf->entity_links.begin() + i); |
| 324 | start_year = squad_link->start_year; |
| 325 | |
| 326 | delete squad_link; |
| 327 | break; |
| 328 | } |
| 329 | |
| 330 | if (start_year == -1) |
| 331 | return; |
| 332 | |
| 333 | auto former_squad = df::allocate<df::histfig_entity_link_former_squadst>(); |
| 334 | former_squad->squad_id = squad->id; |
| 335 | former_squad->entity_id = squad->entity_id; |
| 336 | former_squad->start_year = start_year; |
| 337 | former_squad->end_year = *df::global::cur_year; |
| 338 | former_squad->link_strength = 100; |
| 339 | |
| 340 | hf->entity_links.push_back(former_squad); |
| 341 | |
| 342 | // Unassigning a normal soldier does not seem to generate an event record. |
| 343 | } |
| 344 | |
| 345 | static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squad) |
| 346 | { |
no test coverage detected