//----------------------------------------------------------------------- bool CC4::OnActionSelectDetonator(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if(activationMode == eAAM_OnPress) { bool projectile = false; IFireMode* pFM = GetFireMode(GetCurrentFireMode()); if(pFM) { EntityId projectileId = pFM->GetProjectileId(); if(projectileId && g_pGame->GetWeaponSystem()->GetProjectile(projectileId)) projectile = true; } //If there is some projectile we can switch if(projectile) SelectDetonator(); } return true; }
//------------------------------------------------------------------------ void CC4::Select(bool select) { if(select) { bool outOfAmmo = OutOfAmmo(false); bool projectile = false; IFireMode *pFM = GetFireMode(GetCurrentFireMode()); if(pFM) { EntityId projectileId = pFM->GetProjectileId(); if(projectileId && g_pGame->GetWeaponSystem()->GetProjectile(projectileId)) projectile = true; } if(outOfAmmo && projectile) { SelectDetonator(); return; } else if(outOfAmmo) { Select(false); CActor *pOwner=GetOwnerActor(); if(!pOwner) return; EntityId fistsId = pOwner->GetInventory()?pOwner->GetInventory()->GetItemByClass(CItem::sFistsClass):0; if(fistsId) pOwner->SelectItem(fistsId,true); return; } } CWeapon::Select(select); }