Exemplo n.º 1
0
        public void Initialize(Asset asset, int assetIndex)
        {
            this.asset = asset;

            Category   = asset.custom.category;
            AssetIndex = assetIndex;

            ClickableBehaviour.Title = EnumHelper.GetEnumMemberAttributeValue(asset.custom.category);
            ClickableBehaviour.Text  = Formatter.BuildStixDataEntityDescription(asset);

            ClickableBehaviour.ActionText    = "select";
            ClickableBehaviour.PrimaryAction = () => {
                SelectionHelper.DeselectAllMitigations();

                var title           = EnumHelper.GetEnumMemberAttributeValue(asset.custom.category);
                var description     = Formatter.BuildStixDataEntityDescription(asset, true, false);
                var selectedActions = new SelectedAction[] {
                    new SelectedAction(
                        ActionType.OpenExternalReferences,
                        () => ReferencesHelper.OpenExternalReferences(asset))
                };
                HelperObjects.SelectedInfoBar.SelectEntity(title, "Asset", description, selectedActions);
            };
            ClickableBehaviour.HasSecondaryAction = ReferencesHelper.AddReferencesAsAction(asset, ClickableBehaviour);
        }
Exemplo n.º 2
0
        public void Initialize(AttackPattern attackPattern)
        {
            Label.text = attackPattern.name;

            ClickableBehaviour.Title = attackPattern.name;
            ClickableBehaviour.Text  = Formatter.BuildStixDataEntityDescription(attackPattern);

            ClickableBehaviour.HasSecondaryAction = ReferencesHelper.AddReferencesAsAction(attackPattern, ClickableBehaviour);
        }
Exemplo n.º 3
0
        public void Initialize(AttackPattern attackPattern)
        {
            AttackPattern = attackPattern;

            InjectionVector    = attackPattern.custom.injection_vector.categories.TakeRandom();
            ActivationZone     = attackPattern.custom.activation_zone.categories.TakeRandom();
            TargetedAssetIndex = AssetSockets.Assets.Select((a, i) => a.WithAssetSocketIndex(i))
                                 .Where((a) => a != null && a.custom.category == ActivationZone)
                                 .TakeRandom()
                                 .AssetSocketIndex;
            SpawnPoint = SpawnPoints.GetSpawnPoint(InjectionVector);

            transform.position = SpawnPoint.position;

            StartHealth   = Health = attackPattern.CalculateHealthFromSeverity(StartHealth);
            Health       *= State.I.PlayConfiguration.Difficulty;
            DamageToAsset = attackPattern.CalculateDamageToAssetFromImpact(DamageToAsset);

            value = StartValue + WaveSpawner.I.WaveIndex;

            // Tweak scale and speed after value to indicate which attacks are more important
            Model.localScale *= Mathf.Pow(DamageToAsset / 30f, 2f);
            Speed            *= Mathf.Pow(DamageToAsset / 30f, 2f);

            // Hover and click actions
            ClickableBehaviour.Title = attackPattern.name;
            ClickableBehaviour.Text  = Formatter.BuildStixDataEntityDescription(attackPattern);

            ClickableBehaviour.ActionText    = "select";
            ClickableBehaviour.PrimaryAction = () => {
                SelectionHelper.DeselectAllMitigations();

                var title       = attackPattern.name;
                var description = Formatter.BuildStixDataEntityDescription(attackPattern, false, false);
                SelectedAction[] selectedActions = ReferencesHelper.HasExternalReferences(attackPattern)
                    ? new SelectedAction[] {
                    new SelectedAction(
                        ActionType.OpenExternalReferences,
                        () => ReferencesHelper.OpenExternalReferences(attackPattern))
                } : null;
                HelperObjects.SelectedInfoBar.SelectEntity(title, "Mitigation", description, selectedActions);
            };
            ClickableBehaviour.HasSecondaryAction =
                ReferencesHelper.AddReferencesAsAction(attackPattern, ClickableBehaviour);
        }
Exemplo n.º 4
0
        public void Initialize(
            IPlacementArea area,
            IntVector2 gridPosition,
            IntVector2 sizeOffset,
            CourseOfAction courseOfAction)
        {
            this.courseOfAction = courseOfAction;

            placementArea    = area;
            areaGridPosition = gridPosition;
            areaSizeOffset   = sizeOffset;

            Damage = courseOfAction.GetDamage();
            Range  = courseOfAction.GetRange();
            RangeIndicator.localScale = Vector3.one * Range * 2f;
            FireRate = courseOfAction.GetFireRate();

            // Hover and click actions
            ClickableBehaviour.Title = courseOfAction.custom.mitigation;
            ClickableBehaviour.Text  = Formatter.BuildStixDataEntityDescription(courseOfAction);

            ClickableBehaviour.ActionText    = "select";
            ClickableBehaviour.PrimaryAction = () => {
                SelectionHelper.DeselectAllMitigations();
                IsSelected = true;

                var title           = courseOfAction.custom.mitigation;
                var description     = Formatter.BuildStixDataEntityDescription(courseOfAction, true, false);
                var selectedActions = new SelectedAction[] {
                    new SelectedAction(ActionType.Sell, sell),
                    new SelectedAction(
                        ActionType.OpenExternalReferences,
                        () => ReferencesHelper.OpenExternalReferences(courseOfAction))
                };
                HelperObjects.SelectedInfoBar.SelectEntity(title, "Mitigation", description, selectedActions);
            };
            ClickableBehaviour.HasSecondaryAction =
                ReferencesHelper.AddReferencesAsAction(courseOfAction, ClickableBehaviour);
        }
Exemplo n.º 5
0
        public void Initialize(CourseOfAction courseOfAction)
        {
            Value = courseOfAction.GetValue();

            Label.text = courseOfAction.custom.category;

            ClickableBehaviour.Title = courseOfAction.custom.category;
            ClickableBehaviour.Text  = Formatter.BuildStixDataEntityDescription(courseOfAction);

            ClickableBehaviour.ActionText    = "implement";
            ClickableBehaviour.PrimaryAction = () => {
                // Destroy the old ghost if it's already in the game
                var oldGhost = FindObjectOfType <GhostMitigationBehaviour>();
                if (oldGhost != null)
                {
                    oldGhost.DestroyGhost();
                }

                BuildManager.I.EnterBuildMode(courseOfAction);
                UnityHelper.Instantiate(HelperObjects.GhostMitigationPrefab);
            };
            ClickableBehaviour.HasSecondaryAction = ReferencesHelper.AddReferencesAsAction(courseOfAction, ClickableBehaviour);
        }