コード例 #1
0
 private void ElementActionHandle(SystemElementController controller, VirusValue virus)
 {
     if (gameObject.activeInHierarchy)
     {
         UpdateView();
     }
 }
コード例 #2
0
    private void PlayUnhackEffect(SystemElementController systemElementController, VirusValue virus)
    {
        if (unhackParticles != null)
        {
            unhackParticles.transform.position = systemElementController.transform.position;

            Gradient gradient   = new Gradient();
            Color    startColor = systemElementController.SystemElement.OwnerVirus.Color;
            gradient.SetKeys(
                new GradientColorKey[]
            {
                new GradientColorKey(startColor, 0.0f), new GradientColorKey(Color.white, 0.3f)
            },
                new GradientAlphaKey[]
            {
                new GradientAlphaKey(1.0f, 0.0f), new GradientAlphaKey(1.0f, 0.8f)
            }
                );

            var col = hackParticles.colorOverLifetime;
            col.enabled = true;
            col.color   = gradient;

            unhackParticles.Play();
        }
    }
コード例 #3
0
    private void ShowSystemElementView(SystemElementController elementController)
    {
        SystemElement      systemElement = elementController.SystemElement;
        ISystemElementView selectedView;

        if (systemElement.IsDestroyed)
        {
            selectedView = systemElementDestroyedView;
        }
        else if (systemElement.IsHacked)
        {
            selectedView = systemElementHackedView;
        }
        else
        {
            selectedView = systemElementView;
        }

        if (currentView != null && currentView != selectedView)
        {
            currentView.Hide();
        }

        currentView = selectedView;
        currentView.Show(elementController);
    }
コード例 #4
0
    private void PlayHackEffect(SystemElementController systemElementController, VirusValue virus)
    {
        if (hackParticles != null)
        {
            hackParticles.transform.position = systemElementController.transform.position;

            //ParticleSystem.MinMaxGradient gradient = hackParticles.colorOverLifetime.color;
            //gradient.colorMin = Color.white;
            //gradient.colorMax = virus.Value.Color;
            Gradient gradient = new Gradient();
            gradient.SetKeys(
                new GradientColorKey[]
            {
                new GradientColorKey(Color.white, 0.0f), new GradientColorKey(virus.Value.Color, 0.3f)
            },
                new GradientAlphaKey[]
            {
                new GradientAlphaKey(1.0f, 0.0f), new GradientAlphaKey(1.0f, 0.8f)    //, new GradientAlphaKey(0.0f, 1.0f)
            }
                );

            var col = hackParticles.colorOverLifetime;
            col.enabled = true;
            col.color   = gradient;

            hackParticles.Play();
        }
    }
コード例 #5
0
    private void CheckOccupationLimit(SystemElementController hackedElement, VirusValue virus)
    {
        float occupation = elementList.PercentageOccupation(virus.Value);

        if (occupation >= OccupationLimit)
        {
            onGameOver.Invoke();
        }
    }
コード例 #6
0
    public void Show(SystemElementController elementController)
    {
        this.elementController = elementController;
        systemElement          = elementController.SystemElement;

        UpdateView();

        gameObject.SetActive(true);
        fader.Fade(1f);
    }
コード例 #7
0
    public void UpdateView(SystemElementController elementController, int actionPoints)
    {
        var systemElement = elementController.SystemElement;

        bool buttonState = actionPoints >= systemElement.HackCost && elementController.CanPerformAction;

        hackButton.SetEnabled(buttonState);
        buttonState = actionPoints >= systemElement.DestroyCost && elementController.CanPerformAction;
        destroyButton.SetEnabled(buttonState);
    }
コード例 #8
0
 private void PlayDestroyEffect(SystemElementController systemElementController, VirusValue virus)
 {
     if (destroyParticles != null)
     {
         destroyParticles.transform.position = systemElementController.transform.position;
         //int elementSize = systemElementController.SystemElement.Size;
         //destroyParticles.transform.localScale.Set();
         destroyParticles.Play();
     }
 }
コード例 #9
0
    public void OnElementDestroyed(SystemElementController elementController, VirusValue virus)
    {
        var element     = elementController.SystemElement;
        var control     = element.Control;
        int elementSize = element.Size;

        ElementsByControl[control].Remove(element);
        ControlElementSizes[control] -= elementSize;
        totalElementSize             -= elementSize;
    }
コード例 #10
0
    public void Hide()
    {
        if (gameObject.activeInHierarchy)
        {
            fader.Fade(0f);
        }

        elementController = null;
        systemElement     = null;
    }
コード例 #11
0
 private void PlayAdd(SystemElementController systemElementController, VirusValue virus)
 {
     if (hack)
     {
         bonusText.text = "+" + systemElementController.SystemElement.HackReward;
     }
     else
     {
         bonusText.text = "+" + systemElementController.SystemElement.DestroyReward;
     }
     animator.SetTrigger(addAnimationId);
 }
コード例 #12
0
    public void Show(SystemElementController elementController)
    {
        this.elementController = elementController;
        systemElement          = elementController.SystemElement;

        nameText.text = systemElement.Name;

        playerImage.color = systemElement.OwnerVirus.Color;
        playerText.text   = systemElement.OwnerVirus.Name;

        gameObject.SetActive(true);
        fader.Fade(1f);
    }
コード例 #13
0
    public void HackElement(SystemElementController elementController)
    {
        var element = elementController.SystemElement;
        var player  = virus.Value;

        player.ActionPoints -= element.HackCost;
        element.IsHacked     = true;
        element.OwnerVirus   = player;

        elementController.HackView(player.Color);

        hackElement.Invoke(elementController, virus);
    }
コード例 #14
0
    public void OnElementGenerated(GeneratedElementInfo elementInfo)
    {
        SystemElement systemElement = InstantiateSystemElement(ref elementInfo);

        systemElementList.Value.Add(systemElement);

        SystemElementController elementController = Instantiate(systemElementPrefab, transform);

        elementController.transform.position = elementInfo.Position;
        elementController.SystemElement      = systemElement;
        elementController.Tiles  = elementInfo.Tiles;
        systemElement.Controller = elementController;
    }
コード例 #15
0
    public void UnhackElement(SystemElementController elementController)
    {
        var element = elementController.SystemElement;
        var player  = virus.Value;

        player.ActionPoints -= element.UnhackCost;

        unhackElement.Invoke(elementController, virus);

        element.IsHacked   = false;
        element.OwnerVirus = null;

        elementController.UnhackView();
    }
コード例 #16
0
    public void DestroyElement(SystemElementController elementController)
    {
        var element = elementController.SystemElement;
        var player  = virus.Value;

        player.ActionPoints    -= element.DestroyCost;
        player.MaxActionPoints += element.DestroyReward;

        element.IsDestroyed = true;
        element.IsHacked    = false;
        element.OwnerVirus  = player;

        elementController.DestroyView();

        destroyElement.Invoke(elementController, virus);
    }
コード例 #17
0
 public void OnElementHacked(SystemElementController controller, VirusValue virus)
 {
     pointsPerTurn.Value += controller.SystemElement.HackReward;
 }
コード例 #18
0
 private void OnElementHacked(SystemElementController controller, VirusValue virus)
 {
     UpdateView();
 }
コード例 #19
0
 private void UpdateTextElement(SystemElementController systemElementController, VirusValue virus)
 {
     UpdateText();
 }
コード例 #20
0
 private void ManageButton(Button button, SystemElementController elementController, int actionPoints, int cost)
 {
     button.interactable = actionPoints >= cost && elementController.CanPerformAction;
 }