コード例 #1
0
        static MarkGOContainer InitializeContainer(CombatHUDMarkDisplay markDisplay)
        {
            // We can't patch Init (probably compiled to a point we can't patch it) so create the objects here.
            Mod.Log.Debug?.Write($"CHUDMD:I invoked");
            GameObject sensorsMark = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetSensorsMark, CombatHUDMarkDisplayConsts.SensorsMarkGOId);
            GameObject visualsMark = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetVisualsMark, CombatHUDMarkDisplayConsts.VisualsMarkGOId);

            GameObject taggedMark            = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetTaggedMark, CombatHUDMarkDisplayConsts.TaggedMarkGOid);
            GameObject narcedMark            = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetNarcedMark, CombatHUDMarkDisplayConsts.NarcedMarkGOId);
            GameObject activeProbePingedMark = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetActiveProbePingedMark, CombatHUDMarkDisplayConsts.ActiveProbePingedMarkGOId);

            GameObject stealthMark     = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetStealthMark, CombatHUDMarkDisplayConsts.StealthMarkGOId);
            GameObject mimeticMark     = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetMimeticMark, CombatHUDMarkDisplayConsts.MimeticMarkGOId);
            GameObject ecmShieldedMark = CreateMark(markDisplay.transform.parent.gameObject, Mod.Config.Icons.TargetECMShieldedMark, CombatHUDMarkDisplayConsts.ECMShieldedMarkGOId);

            MarkGOContainer container = new MarkGOContainer
            {
                SensorsMark           = sensorsMark,
                VisualsMark           = visualsMark,
                TaggedMark            = taggedMark,
                NarcedMark            = narcedMark,
                StealthMark           = stealthMark,
                MimeticMark           = mimeticMark,
                ECMShieldedMark       = ecmShieldedMark,
                ActiveProbePingedMark = activeProbePingedMark
            };

            ModState.MarkContainerRefs[markDisplay] = container;
            Mod.Log.Debug?.Write($"Created reference from instance {markDisplay} to container: {container}");

            // Set the parent's (Marks GO) scale to 300y
            GameObject marksGO = markDisplay.transform.parent.gameObject;

            RectTransform marksRT      = marksGO.GetComponent <RectTransform>();
            Vector2       newSizeDelta = marksRT.sizeDelta;

            newSizeDelta.y    = 300f;
            marksRT.sizeDelta = newSizeDelta;

            Vector3 newLocalPos = marksGO.transform.localPosition;

            newLocalPos.y += 100f;
            marksGO.transform.localPosition = newLocalPos;

            return(container);
        }
コード例 #2
0
        static void UpdateSensorAndVisualsIcons(MarkGOContainer container, AbstractActor displayedActor, AbstractActor lastActivated, bool isPlayer)
        {
            // Sensors and Visuals are only shown for non-local players
            if (!isPlayer)
            {
                // Check sensors
                bool hasSensorLock = SensorLockHelper.CalculateSharedLock(displayedActor, lastActivated) > SensorScanType.NoInfo;
                container.SensorsMark.SetActive(true);
                SVGImage sensorsImage = container.SensorsMark.GetComponent <SVGImage>();
                if (hasSensorLock)
                {
                    Mod.Log.Debug?.Write($" - Can sensors detect target, setting icon to green.");
                    sensorsImage.color = Color.green;
                }
                else
                {
                    Mod.Log.Debug?.Write($" - Can not sensors detect target, setting icon to red.");
                    sensorsImage.color = Color.red;
                }

                bool canSpotTarget = VisualLockHelper.CanSpotTarget(lastActivated, lastActivated.CurrentPosition,
                                                                    displayedActor, displayedActor.CurrentPosition, displayedActor.CurrentRotation, ModState.Combat.LOS);
                SVGImage visualsImage = container.VisualsMark.GetComponent <SVGImage>();
                container.VisualsMark.SetActive(true);
                if (canSpotTarget)
                {
                    Mod.Log.Debug?.Write($" - Can spot target, setting icon to green.");
                    visualsImage.color = Color.green;
                }
                else
                {
                    Mod.Log.Debug?.Write($" - Cannot spot target, setting icon to red.");
                    visualsImage.color = Color.red;
                }
            }
            else
            {
                container.SensorsMark.SetActive(false);
                container.VisualsMark.SetActive(false);
            }
        }