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

◆ GetMagazineToReload()

EntityAI ManBase::GetMagazineToReload ( EntityAI weapon)
inlineprotected

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

4745 {
4746 Weapon_Base weapon_base = Weapon_Base.Cast(weapon);
4747 WeaponManager weapon_manager = GetWeaponManager();
4748 EntityAI magazine_to_reload;
4749
4750 EntityAI ammo_magazine; //magazine
4751 int last_ammo_magazine_count;
4752 int ammo_magazine_count;
4753
4754 EntityAI ammo_pile; //ammo pile
4755 int last_ammo_pile_count;
4756 int ammo_pile_count;
4757
4758 //Get all magazines in (player) inventory
4759 for (int att_i = 0; att_i < GetInventory().AttachmentCount(); ++att_i)
4760 {
4761 EntityAI attachment = GetInventory().GetAttachmentFromIndex(att_i);
4762 ref CargoBase attachment_cargo = attachment.GetInventory().GetCargo();
4763
4764 if (attachment_cargo)
4765 {
4766 for (int cgo_i = 0; cgo_i < attachment_cargo.GetItemCount(); ++cgo_i)
4767 {
4768 EntityAI cargo_item = attachment_cargo.GetItem(cgo_i);
4769
4770 //check for proper magazine
4771 if (cargo_item.IsMagazine())
4772 {
4773 Magazine magazine = Magazine.Cast(cargo_item);
4774 ammo_pile_count = magazine.GetAmmoCount();
4775
4776 //magazines (get magazine with max ammo count)
4777 if (weapon_manager.CanAttachMagazine(weapon_base, magazine) || weapon_manager.CanSwapMagazine(weapon_base, magazine))
4778 {
4779 if (ammo_pile_count > 0)
4780 {
4781 if (last_ammo_magazine_count == 0)
4782 {
4783 ammo_magazine = magazine;
4784 last_ammo_magazine_count = ammo_pile_count;
4785 }
4786 else
4787 {
4788 if (last_ammo_magazine_count < ammo_pile_count)
4789 {
4790 ammo_magazine = magazine;
4791 last_ammo_magazine_count = ammo_pile_count;
4792 }
4793 }
4794 }
4795 }
4796 //bullets (get ammo pile with min ammo count)
4797 else if (weapon_manager.CanLoadBullet(weapon_base, magazine))
4798 {
4799 if (ammo_pile_count > 0)
4800 {
4801 if (last_ammo_pile_count == 0)
4802 {
4803 ammo_pile = magazine;
4804 last_ammo_pile_count = ammo_pile_count;
4805 }
4806 else
4807 {
4808 if (last_ammo_pile_count > ammo_pile_count)
4809 {
4810 ammo_pile = magazine;
4811 last_ammo_pile_count = ammo_pile_count;
4812 }
4813 }
4814 }
4815 }
4816 }
4817 }
4818 }
4819 }
4820
4821 //prioritize magazine
4822 if (ammo_magazine)
4823 {
4824 return ammo_magazine;
4825 }
4826
4827 return ammo_pile;
4828 }
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().