| 876 | } |
| 877 | |
| 878 | void UpdateAllItems() |
| 879 | { |
| 880 | InItemControlLoop = true; |
| 881 | |
| 882 | int itemNumber = NextItemActive; |
| 883 | while (itemNumber != NO_VALUE) |
| 884 | { |
| 885 | auto& item = g_Level.Items[itemNumber]; |
| 886 | itemNumber = item.NextActive; |
| 887 | |
| 888 | if (!Objects.CheckID(item.ObjectNumber)) |
| 889 | continue; |
| 890 | |
| 891 | if (g_GameFlow->LastFreezeMode != FreezeMode::None && !Objects[item.ObjectNumber].AlwaysActive) |
| 892 | continue; |
| 893 | |
| 894 | if (item.AfterDeath <= ITEM_DEATH_TIMEOUT) |
| 895 | { |
| 896 | if (Objects[item.ObjectNumber].control) |
| 897 | Objects[item.ObjectNumber].control(item.Index); |
| 898 | |
| 899 | TestVolumes(item.Index); |
| 900 | ProcessEffects(&item); |
| 901 | |
| 902 | if (item.AfterDeath > 0 && item.AfterDeath < ITEM_DEATH_TIMEOUT && !(Wibble & 3)) |
| 903 | item.AfterDeath++; |
| 904 | if (item.AfterDeath == ITEM_DEATH_TIMEOUT) |
| 905 | KillItem(item.Index); |
| 906 | } |
| 907 | else |
| 908 | { |
| 909 | KillItem(item.Index); |
| 910 | } |
| 911 | } |
| 912 | |
| 913 | InItemControlLoop = false; |
| 914 | KillMoveItems(); |
| 915 | } |
| 916 | |
| 917 | void UpdateAllEffects() |
| 918 | { |
no test coverage detected