1class SCR_WeaponInfo_MultiWeaponTurret : SCR_InfoDisplayExtended
3 [
Attribute(
"",
UIWidgets.EditBox,
"Name of the turret slot from the SlotManagerComponent")]
6 [
Attribute(
"{4789C90C5591CBC7}Configs/VehicleHUD/VehicleWeaponInfo_GroupWeaponFiremodes.conf")]
10 [
Attribute(
"{8D3E102893955B15}Configs/Inventory/ItemHints/MagazineAmmoType.conf")]
13 [
Attribute(
"{09468E8C42D80502}UI/layouts/HUD/WeaponInfo/WeaponInfo_AmmoTypeIcon.layout")]
60 private static ref array<EAmmoType> s_AmmoTypes =
new array<EAmmoType>();
61 private static ref array<IEntity> s_LoadedRockets =
new array<IEntity>();
63 void SCR_WeaponInfo_MultiWeaponTurret()
65 if (s_AmmoTypes.Count() == 0)
76 Show(newTurret != null);
80 IEntity turretEntity = newTurret.GetOwner();
102 m_DataHolder.m_multiWComp = MultiFireWeaponManagerComponent.Cast(turretEntity.
FindComponent(MultiFireWeaponManagerComponent));
106 m_DataHolder.m_FireModeManager = SCR_FireModeManagerComponent.Cast(turretEntity.
FindComponent(SCR_FireModeManagerComponent));
160 array<int> weaponIds = {};
161 m_DataHolder.m_FireModeManager.GetCurrentWeaponIndices(weaponIds);
165 if (weaponIds.Contains(key.GetWeaponSlotIndex()))
189 IEntity slottedWeapon = slotComp.GetWeaponEntity();
195 if (tempWeaponComp == changedWeaponComp)
197 m_DataHolder.m_mWeaponMags[slotComp].UpdateAmmoCount(changedWeaponComp);
213 if (curSlot.GetWeaponEntity() != newWeapon)
229 if (curSlot.GetWeaponEntity())
267 if (occupant != playerEnt)
284 if (slotComp.GetWeaponEntity())
306 array<int> weaponIds = {};
307 m_DataHolder.m_FireModeManager.GetCurrentWeaponIndices(weaponIds);
308 if (weaponIds.Contains(slotComp.GetWeaponSlotIndex()))
318 IEntity weaponEntity = slotComp.GetWeaponEntity();
343 array<int> weaponIds = {};
344 m_DataHolder.m_FireModeManager.GetCurrentWeaponIndices(weaponIds);
345 if (weaponIds.Contains(slotComp.GetWeaponSlotIndex()))
355 if (slotComp.GetWeaponSlotIndex() <=
m_DataHolder.m_aWeaponslots.Count() / 2)
356 magWidget.SetZOrder(slotComp.GetWeaponSlotIndex() - (
m_DataHolder.m_aWeaponslots.Count() / 2));
358 magWidget.SetZOrder(slotComp.GetWeaponSlotIndex() - (
m_DataHolder.m_aWeaponslots.Count() / 2) +1);
369 if (weaponSlotComp.IsChamberingPossible())
401 if (weaponSlotComp.IsChamberingPossible())
424 muz.GetLoadedEntities(s_LoadedRockets);
425 foreach (
IEntity rocket : s_LoadedRockets)
449 IEntity rocket = muz.GetBarrelProjectile(muz.GetCurrentBarrelIndex());
492 SCR_RocketEjectorMuzzleComponent muz;
497 array<int> weaponIds = {};
498 m_DataHolder.m_FireModeManager.GetCurrentWeaponIndices(weaponIds);
500 if (weaponIds.Contains(slot.GetWeaponSlotIndex()))
502 muz = SCR_RocketEjectorMuzzleComponent.Cast(slot.GetCurrentMuzzle());
506 if (slot.IsChamberingPossible())
519 SCR_RocketEjectorMuzzleComponent muzzle;
531 if (slotComp.IsChamberingPossible())
533 muzzle = SCR_RocketEjectorMuzzleComponent.Cast(slotComp.GetCurrentMuzzle());
537 rocket = muzzle.GetBarrelProjectile(muzzle.GetCurrentBarrelIndex());
545 wInfo = invComp.GetUIInfo();
549 IEntity weaponEntity = slotComp.GetWeaponEntity();
557 wInfo = wComp.GetUIInfo();
560 string name = wInfo.GetName();
565 else if (
m_DataHolder.m_sWeaponNames != wInfo.GetName())
581 m_Widgets.m_wFiremodeIcon.SetVisible(
false);
582 m_Widgets.m_wFiremodeGlow.SetVisible(
false);
588 m_Widgets.m_wFiremodeIcon.GetImageSize(0, sx, sy);
597 m_Widgets.m_wFiremodeIcon.SetVisible(
true);
598 m_Widgets.m_wFiremodeGlow.SetVisible(
true);
616 if (enabledMode != fireMode)
623 m_Widgets.m_wProjectileQuantityText.SetVisible(show);
625 m_Widgets.m_wProjectileQuantityText.SetText(quantity.ToString());
639 m_Widgets.m_wOpticsText.SetText(
string.Empty);
643 string sZoom = zoom.ToString(-1,1);
644 sZoom =
string.Format(
"%1 ×", sZoom);
668 array <BaseCompartmentSlot> compartments = {};
669 compManager.GetCompartments(compartments);
670 if (compartments.IsEmpty())
673 return compartments[0].GetOccupant() == playerEnt;
681 SlotManagerComponent slotManager = SlotManagerComponent.Cast(owner.
FindComponent(SlotManagerComponent));
689 m_turretEventHandler = EventHandlerManagerComponent.Cast(initialTurret.GetOwner().FindComponent(EventHandlerManagerComponent));
716 storageInfo = weaponSlot.GetSlotInfo();
733 storageInfo = weaponSlot.GetSlotInfo();
810 SlotManagerComponent slotManager = SlotManagerComponent.Cast(owner.
FindComponent(SlotManagerComponent));
878 bool panelVisibleOverride = inADS || inInspection;
879 if (panelVisibleEvent || panelVisibleOverride)
883 bool zeroingWidgetHasText = !
m_Widgets.m_wZeroingText.GetText().IsEmpty();
884 bool zeroingVisibleEvent =
m_eWeaponStateEvent & (EWeaponFeature.ADS | EWeaponFeature.ZEROING | EWeaponFeature.MUZZLE | EWeaponFeature.WEAPON | EWeaponFeature.INSPECTION);
885 bool zeroingVisibleOverride = inADS || inInspection;
886 if (zeroingWidgetHasText && (zeroingVisibleEvent || zeroingVisibleOverride))
905class GroupWeaponFiremode
914 ref array<ref GroupWeaponFiremodeEntry> m_aFiremodes;
920 if (modeEntry.m_eMode == firemode)
922 icon.LoadImageFromSet(0, m_sImageset, modeEntry.m_Icon);
923 glow.LoadImageFromSet(0, m_sImagesetGlow, modeEntry.m_IconGlow);
949class WeaponInfoColorSet
952 ref
Color m_IconColor;
961 ref
Color m_ContrastColor;
971class SCR_MultiWeaponTurretDataHolder
1040 rootw = mag.GetRootWidget();
1042 rootw.RemoveFromHierarchy();
1048 value.DeleteWidgets();
ArmaReforgerScripted GetGame()
SCR_AIGroupInfoComponentClass IDLE
Group has no waypoints and does not engage an enemy.
void SetIconAndGlowTo(EAmmoType ammoType, notnull ImageWidget icon, notnull ImageWidget glow)
SCR_FastTravelComponentClass m_PlayerController
EventHandlerManagerComponent m_EventHandlerManager
MenuManager m_MenuManager
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
MultiFireWeaponManagerComponent m_multiWComp
enum SCR_EWeaponInfoIconState m_Turret
SCR_FireModeManagerComponent m_FireModeManager
ref map< EAmmoType, SCR_AmmoTypeIcon > m_mAmmoTypeWidgets
ref array< WeaponSlotComponent > m_aWeaponslots
TurretControllerComponent m_TurretController
EAmmoType m_eAmmoTypeFlags
ref array< Widget > m_aEmptyPylonWidgets
class GroupWeaponFiremodeEntry BaseContainerProps()] class WeaponInfoColorSet
SCR_2DSightsComponent m_Sights
ref map< WeaponSlotComponent, SCR_SingleMagazineWidgetComponent_Base > m_mWeaponMags
SCR_SightsZoomFOVInfo m_SightsZoomFOVInfo
EWeaponGroupFireMode m_eMode
Adds ability to attach an object to a slot.
proto external Managed FindComponent(typename typeName)
EAmmoType GetAmmoTypeFlags()
void SetNewState(SCR_EWeaponInfoIconState newState)
void Init(EAmmoType ammoType, SCR_AmmoTypeInfoConfig ammoTypeConfig)
void OnAmmoCountChanged(BaseWeaponComponent changedWeaponComp, BaseMuzzleComponent changedMuzzleComp, BaseMagazineComponent changedMagComp, int newAmmoCount, bool isBarrelChambered)
EWeaponFeature m_eWeaponStateEvent
void OnCompartmentEntered(IEntity vehicle, BaseCompartmentManagerComponent manager, IEntity occupant, int managerID, int slotID)
EventHandlerManagerComponent m_turretEventHandler
void RemoveEventHandlers(IEntity owner)
void OnSelectedFiregroupChange(bool hasAmmo)
const ref Color COLOR_WHITE
override bool DisplayStartDrawInit(IEntity owner)
void OnNewWeaponDetached(IEntity newWeapon)
ref SCR_MultiWeaponTurretDataHolder m_DataHolder
EAmmoType GetGenericAmmoTypes(WeaponSlotComponent weaponSlotComp)
void OnZoomChanged(float zoom, float fov)
EAmmoType GetCurrentRocketAmmoType(WeaponSlotComponent weaponSlotComp)
void OnFiremodeChangedInit()
ref SCR_FadeInOutAnimator m_ZeroingAnimator
override void DisplayStartDraw(IEntity owner)
void HighlightCurrentAmmoType()
void OnTurretReload(BaseWeaponComponent weapon, bool isFinished, TurretControllerComponent turretController)
bool IsPilot(IEntity ownerVehicle)
ref SCR_FadeInOutAnimator m_WeaponInfoPanelAnimator
override void DisplayStopDraw(IEntity owner)
ResourceName m_sAmmoTypeIconLayout
void UpdateFireModeIndicator(EWeaponGroupFireMode newFiremode)
void OnNewWeaponAttached(IEntity newWeapon)
void UpdateQuantityIndicator(EWeaponGroupFireMode fireMode, int quantity, int weaponGroupId=0)
ref SCR_WeaponInfo_MultiWeaponTurretWidgets m_Widgets
void OnFiremodeChanged(EWeaponGroupFireMode newFiremode)
const string MIXED_TEXT_LOCALIZED
EAmmoType GetAllRocketAmmoTypes(WeaponSlotComponent weaponSlotComp)
const ResourceName DEFAULT_EMPTY_PYLON_LAYOUT
void CreateMagazine(WeaponSlotComponent slotComp)
ref SCR_AmmoTypeInfoConfig m_AmmoTypeIcons
BaseWeaponManagerComponent m_WeaponManager
const string EMPTY_TEXT_LOCALIZED
void AddEventHandlers(IEntity owner)
const ref Color COLOR_ORANGE
void OnTurretChanged(TurretComponent newTurret)
const float FADEOUT_OPTICS_DELAY
const ResourceName DEFAULT_MAGAZINE_LAYOUT
void AnimateWidget_ColorFlash(Widget w, EWeaponFeature requiredFlag=-1, float speed=UIConstants.FADE_RATE_SLOW)
override void DisplayUpdate(IEntity owner, float timeSlice)
void SetCurrentAmmoType()
const float FADEOUT_PANEL_DELAY
void UpdateZoomIndicator()
void SetMagazinePositionalZOrder(WeaponSlotComponent slotComp, Widget magWidget)
void CreateEmptyPylon(WeaponSlotComponent slotComp)
ref array< EWeaponGroupFireMode > m_aShowQuantityIndicator
ref GroupWeaponFiremode m_FiremodeIconsConfig
UIInfo - allows to define UI elements.
ref SCR_MagazineIndicatorConfiguration m_MagIndicator
SCR_FieldOfViewSettings Attribute
@ HIGHLIGHTED
Entity requires player's attention.
@ DISABLED
General event switch.