DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ GetMagazineToReload()

EntityAI ManBase::GetMagazineToReload ( EntityAI weapon)
inlineprotected

См. определение в файле PlayerBase.c строка 4754

4755 {
4756 Weapon_Base weapon_base = Weapon_Base.Cast(weapon);
4757 WeaponManager weapon_manager = GetWeaponManager();
4758 EntityAI magazine_to_reload;
4759
4760 EntityAI ammo_magazine; //magazine
4761 int last_ammo_magazine_count;
4762 int ammo_magazine_count;
4763
4764 EntityAI ammo_pile; //ammo pile
4765 int last_ammo_pile_count;
4766 int ammo_pile_count;
4767
4768 //Get all magazines in (player) inventory
4769 for (int att_i = 0; att_i < GetInventory().AttachmentCount(); ++att_i)
4770 {
4771 EntityAI attachment = GetInventory().GetAttachmentFromIndex(att_i);
4772 ref CargoBase attachment_cargo = attachment.GetInventory().GetCargo();
4773
4774 if (attachment_cargo)
4775 {
4776 for (int cgo_i = 0; cgo_i < attachment_cargo.GetItemCount(); ++cgo_i)
4777 {
4778 EntityAI cargo_item = attachment_cargo.GetItem(cgo_i);
4779
4780 //check for proper magazine
4781 if (cargo_item.IsMagazine())
4782 {
4783 Magazine magazine = Magazine.Cast(cargo_item);
4784 ammo_pile_count = magazine.GetAmmoCount();
4785
4786 //magazines (get magazine with max ammo count)
4787 if (weapon_manager.CanAttachMagazine(weapon_base, magazine) || weapon_manager.CanSwapMagazine(weapon_base, magazine))
4788 {
4789 if (ammo_pile_count > 0)
4790 {
4791 if (last_ammo_magazine_count == 0)
4792 {
4793 ammo_magazine = magazine;
4794 last_ammo_magazine_count = ammo_pile_count;
4795 }
4796 else
4797 {
4798 if (last_ammo_magazine_count < ammo_pile_count)
4799 {
4800 ammo_magazine = magazine;
4801 last_ammo_magazine_count = ammo_pile_count;
4802 }
4803 }
4804 }
4805 }
4806 //bullets (get ammo pile with min ammo count)
4807 else if (weapon_manager.CanLoadBullet(weapon_base, magazine))
4808 {
4809 if (ammo_pile_count > 0)
4810 {
4811 if (last_ammo_pile_count == 0)
4812 {
4813 ammo_pile = magazine;
4814 last_ammo_pile_count = ammo_pile_count;
4815 }
4816 else
4817 {
4818 if (last_ammo_pile_count > ammo_pile_count)
4819 {
4820 ammo_pile = magazine;
4821 last_ammo_pile_count = ammo_pile_count;
4822 }
4823 }
4824 }
4825 }
4826 }
4827 }
4828 }
4829 }
4830
4831 //prioritize magazine
4832 if (ammo_magazine)
4833 {
4834 return ammo_magazine;
4835 }
4836
4837 return ammo_pile;
4838 }
class LogManager EntityAI
override WeaponManager GetWeaponManager()
Определения PlayerBase.c:1859
bool CanLoadBullet(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)
Определения WeaponManager.c:200
bool CanAttachMagazine(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)
Определения WeaponManager.c:91
bool CanSwapMagazine(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)
Определения WeaponManager.c:132

Перекрестные ссылки WeaponManager::CanAttachMagazine(), WeaponManager::CanLoadBullet(), WeaponManager::CanSwapMagazine() и GetWeaponManager().

Используется в QuickReloadWeapon().