| 458 | } |
| 459 | |
| 460 | void populateFortColumn() |
| 461 | { |
| 462 | selected_column = 0; |
| 463 | fort_activity_count = 0; |
| 464 | |
| 465 | auto last_selected_index = fort_activity_column.highlighted_index; |
| 466 | fort_activity_column.clear(); |
| 467 | fort_activity_totals.clear(); |
| 468 | dwarf_activity_values.clear(); |
| 469 | category_breakdown.clear(); |
| 470 | |
| 471 | for (auto it = work_history.begin(); it != work_history.end();) |
| 472 | { |
| 473 | auto unit = it->first; |
| 474 | if (!Units::isActive(unit)) |
| 475 | { |
| 476 | work_history.erase(it++); |
| 477 | continue; |
| 478 | } |
| 479 | |
| 480 | deque<activity_type> *work_list = &it->second; |
| 481 | ++it; |
| 482 | |
| 483 | size_t count = window_days * ticks_per_day; |
| 484 | for (auto entry = work_list->rbegin(); entry != work_list->rend() && count > 0; entry++, count--) |
| 485 | { |
| 486 | if (*entry == JOB_UNKNOWN) |
| 487 | continue; |
| 488 | |
| 489 | ++fort_activity_count; |
| 490 | |
| 491 | auto real_activity = *entry; |
| 492 | if (real_activity < 0) |
| 493 | { |
| 494 | addFortActivity(real_activity); |
| 495 | } |
| 496 | else |
| 497 | { |
| 498 | auto activity = static_cast<df::job_type>(real_activity); |
| 499 | |
| 500 | switch (activity) |
| 501 | { |
| 502 | case job_type::Eat: |
| 503 | case job_type::Drink: |
| 504 | case job_type::DrinkItem: |
| 505 | case job_type::Sleep: |
| 506 | case job_type::AttendParty: |
| 507 | case job_type::Rest: |
| 508 | case job_type::CleanSelf: |
| 509 | case job_type::DrinkBlood: |
| 510 | real_activity = JOB_LEISURE; |
| 511 | break; |
| 512 | |
| 513 | case job_type::Kidnap: |
| 514 | case job_type::StartingFistFight: |
| 515 | case job_type::SeekInfant: |
| 516 | case job_type::SeekArtifact: |
| 517 | case job_type::GoShopping: |
nothing calls this directly
no test coverage detected