Пример #1
0
    void BumpUpgradeSelection(int adjust)
    {
        int newIndex = CurrentUpgradeSelection + adjust;
        int count    = 0;

        for (int i = CurrentUpgradeSelection + adjust; ; i += adjust)
        {
            if (i < 0)
            {
                i = selections.Count - 1;
            }
            else if (i >= selections.Count)
            {
                i = 0;
            }
            IUpgradeable ug = Game.Instance.playerShip.GetUpgradeable((PlayerShip.UpgradeType)i);
            if (ug.CanUpgrade())
            {
                CurrentUpgradeSelection = i;
                break;
            }
            count++;

            if (count >= selections.Count)
            {
                CurrentUpgradeSelection = (int)PlayerShip.UpgradeType.NoUpgrades;
                break;
            }
        }
    }
Пример #2
0
        private void ChangeStateRPC(bool enabled)
        {
            if (Upgrade)
            {
                UpgradePreview.SetActive(enabled);

                if (enabled)
                {
                    m_upgradeableTarget = null;
                }
            }
            else
            {
                if (enabled)
                {
                    CreatePreview();
                }
                else
                {
                    m_target = null;
                    if (m_weaponOnSocket != null)
                    {
                        Destroy(m_weaponOnSocket.gameObject);
                    }
                }
            }

            if (PhotonNetwork.IsMasterClient && enabled == false)
            {
                StartCoroutine(Respawn());
            }

            ChangeState?.Invoke(enabled);
            Collider.enabled = enabled;
        }
    public void UISetUpgrade(TMP_Dropdown tmp)
    {
        int    index = tmp.value;
        string val   = tmp.options[index].text;

        _upgradeable = GameStateBehaviour.Instance.upgradeDict[val];
        RefreshShownValues();
    }
Пример #4
0
 public void SetChangeableObject(IUpgradeable changeableObject)
 {
     if (changeableObject as IUpgradeable != null)
     {
         InstalledFacility = changeableObject as IUpgradeable;
     }
     IsFree = false;
 }
Пример #5
0
    public static void UpgradeRequest(Type type, IUpgradeable instance)
    {
        var baseUpgrades = FindObjectsOfType <BaseUpgrade>().Where(x => x.GetUserType() == type && x.GetIndex() == instance.UpgradeIndex);

        foreach (BaseUpgrade upgrade in baseUpgrades)
        {
            upgrade.UpgradeInstance(instance);
        }
    }
Пример #6
0
 ///
 /// Upgrade the ship and the specified upgradeble.
 ///
 public void Upgrade(IUpgradeable upgradeable)
 {
     // full health recovery
     this.health = this.maxHealth;
     if (upgradeable.CanUpgrade())
     {
         upgradeable.Upgrade();
     }
     Game.Instance.ShowMessage(UItext.MessageType.RankUp, Game.Instance.ExplorationCount.ToString());
 }
Пример #7
0
    void DisplayUpgradeWindow(IUpgradeable upgradeable)
    {
        // Clear listeners
        UpgradeButton.GetComponentInChildren <Button>().onClick.RemoveAllListeners();
        // Add a listener that tries to upgrade
        UpgradeButton.GetComponentInChildren <Button>().onClick.AddListener(() => TryToUpgrade(upgradeable));

        UpgradeButton.transform.GetChild(0).Find("Price").GetComponent <TMPro.TextMeshProUGUI>().text = upgradeable.GetUpgradeCost().ToString();

        //Move and display the upgrade button next to the object
        UpgradeButton.SetActive(true);
        UpgradeButton.transform.position = selected.transform.position + new Vector3(0, -1, 0);
    }
Пример #8
0
    void UpdateStarsAndSelections()
    {
        for (int i = 0; i < selections.Count; i++)
        {
            selections[i].GetComponent <Image>().enabled =
                i == (int)Game.Instance.playerShip.CurrentUpgradeType;

            PlayerShip.UpgradeType ut = (PlayerShip.UpgradeType)i;
            IUpgradeable           ug = Game.Instance.playerShip.GetUpgradeable(ut);

            stars[i].enabled    = ug.HasMaxUpgrade();
            upgrades[i].enabled = !(ug is PlayerShip.NonUpgradeable);
        }
    }
Пример #9
0
        private void OnTriggerEnter(Collider other)
        {
            var targetView = other.GetComponent <PhotonView>();

            if (targetView == null || !targetView.IsMine)
            {
                return;
            }

            m_target            = other.GetComponent <IPickable>();
            m_upgradeableTarget = other.GetComponent <IUpgradeable>();

            TriggerEntered?.Invoke();
        }
Пример #10
0
        private int GetUpgradedLevel(IUpgradeable i_upgrade)
        {
            int upgradedLevel = i_upgrade.Value + 1;

            if (upgradedLevel > i_upgrade.MaxLevel)
            {
                upgradedLevel = i_upgrade.MaxLevel;
            }
            else if (upgradedLevel < 0)
            {
                upgradedLevel = 0;
            }

            return(upgradedLevel);
        }
Пример #11
0
    void TryToUpgrade(IUpgradeable upgradeable)
    {
        // If we have enough money
        if (upgradeable.CanUpgrade() && PlayerData.Instance.CanAfford(upgradeable.GetUpgradeCost()))
        {
            //Spend the money
            PlayerData.Instance.Spend(upgradeable.GetUpgradeCost());

            //Upgrade
            upgradeable.Upgrade();

            var cost = upgradeable.GetUpgradeCost();
            var text = cost >= 0 ? cost.ToString() : "-";
            UpgradeButton.transform.GetChild(0).Find("Price").GetComponent <TMPro.TextMeshProUGUI>().text = text;
        }
    }
Пример #12
0
        /// <summary>
        /// Called from Controller, if target available proceed.
        /// </summary>
        internal void PickUp()
        {
            if (m_target == null || m_upgradeableTarget == null)
            {
                return;
            }

            if (Upgrade)
            {
                m_upgradeableTarget?.Upgrade();
            }
            else
            {
                m_target?.PickUp(m_weapon);
            }

            m_target            = null;
            m_upgradeableTarget = null;

            m_photonView.RPC("ChangeStateRPC", RpcTarget.All, false);
            PickedWeapon?.Invoke();
        }
 public void SetUpgrade(IUpgradeable upgrade)
 {
     _upgradeable = upgrade;
     RefreshShownValues();
 }
Пример #14
0
 /// <summary>
 /// Checks if the given <paramref name="upgrade"/> is compatible
 /// with the object.
 /// </summary>
 /// <param name="obj">Calling object.</param>
 /// <param name="upgrade">Upgrade to check for compatibility.</param>
 /// <returns>True if upgrade is compatible, false if not.</returns>
 public static bool IsUpgradeCompatible(this IUpgradeable obj, IUpgrade upgrade)
 {
     return(upgrade.ValidObjects.Contains(obj.GetType()));
 }
Пример #15
0
 private void OnTriggerExit(Collider other)
 {
     m_target            = null;
     m_upgradeableTarget = null;
     TriggerExited?.Invoke();
 }
Пример #16
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="parent">The object this UpgradeContainer is
 /// built-in.</param>
 /// <param name="amountSlots">Amount of slots of the <see cref="UpgradeSlots"/>.</param>
 public UpgradeContainer(IUpgradeable parent, int amountSlots = 1)
 {
     _parent       = parent ?? throw new ArgumentNullException(nameof(parent));
     _upgradeSlots = new IUpgrade[amountSlots];
 }
Пример #17
0
 public void UpgradeInstance(IUpgradeable instance)
 {
     instance.Upgrade(upgradeType, Level, maxLevel);
 }
Пример #18
0
    void Update()
    {
        totalExplored.text = game.ExplorationCount.ToString();

        var player = Game.Instance.playerShip;

        if (player)
        {
            hpBar.fillAmount = player.health / (float)player.maxHealth;
        }
        else
        {
            hpBar.fillAmount = 0;
        }

        int gridNum = Game.Instance.GetCurrentGrid();

        textCurrentSector.text = "Sector: " + Game.Instance.GetSectorName(gridNum);

        // text
        if (!_showingText && _messageQueue.Count > 0)
        {
            // show the next message
            textForPlayer.text    = _messageQueue.Dequeue();
            textForPlayer.enabled = true;
            textForPlayer.transform.parent.gameObject.SetActive(true);

            if (notificationSound)
            {
                Game.Instance.effectsAudioSource.PlayOneShot(notificationSound);
            }

            _textTimerCounter = 0;
            _showingText      = true;
        }
        else if (_showingText)
        {
            if (_textTimerCounter >= textTimer)
            {
                textForPlayer.enabled = false;
                textForPlayer.transform.parent.gameObject.SetActive(false);
                textForPlayer.text = string.Empty;
                _showingText       = false;
                _textTimerCounter  = 0;
            }
            _textTimerCounter += Time.deltaTime;
        }
        //

        for (int i = 0; i < juices.Count; i++)
        {
            juices[i].enabled = (i + 1) <= WarpCount;
        }

        if (CurrentUpgradeSelection != (int)PlayerShip.UpgradeType.NoUpgrades)
        {
            // if (Input.GetButtonDown("Upgrade Selection Down"))
            // {
            //     BumpUpgradeSelection(-1);
            // }

            // if (Input.GetButtonDown("Upgrade Selection Up"))
            // {
            //     BumpUpgradeSelection(1);
            // }

            float axVal = Input.GetAxis("Upgrade Selection");
            if (axVal != _lastSelectionX)
            {
                if (axVal < 0)
                {
                    BumpUpgradeSelection(-1);
                }
                else if (axVal > 0)
                {
                    BumpUpgradeSelection(1);
                }
                _lastSelectionX = axVal;
            }

            UpdateStarsAndSelections();

            // Automatically bump the upgrade if current is not upgradeable.
            IUpgradeable upgradeable = Game.Instance.playerShip.GetUpgradeable();
            if (!upgradeable.CanUpgrade())
            {
                BumpUpgradeSelection(1);
            }
        }
        else
        {
            // Try to find a new thing we can upgrade.
            BumpUpgradeSelection(1);
            UpdateStarsAndSelections();
        }
    }