public void OnCurrentPlayerChanged()
 {
     this.m_additionalOverloadedCrystalsOwedThisTurn = this.m_additionalOverloadedCrystalsOwedNextTurn;
     this.m_additionalOverloadedCrystalsOwedNextTurn = 0;
     if (this.m_additionalOverloadedCrystalsOwedThisTurn > 0)
     {
         this.m_overloadLocksAreShowing = true;
     }
     else
     {
         this.m_overloadLocksAreShowing = false;
     }
     for (int i = 0; i < this.m_permanentCrystals.Count; i++)
     {
         ManaCrystal crystal = this.m_permanentCrystals[i];
         if (crystal.IsOverloaded())
         {
             crystal.UnlockOverload();
         }
         if (crystal.IsOwedForOverload())
         {
             this.m_overloadLocksAreShowing = true;
             crystal.PayOverload();
         }
         else if (this.m_additionalOverloadedCrystalsOwedThisTurn > 0)
         {
             crystal.PayOverload();
             this.m_additionalOverloadedCrystalsOwedThisTurn--;
         }
     }
 }
    private void LoadCrystalCallback(string actorName, GameObject actorObject, object callbackData)
    {
        this.m_numCrystalsLoading--;
        if (this.m_manaCrystalWidth <= 0f)
        {
            if (UniversalInputManager.UsePhoneUI != null)
            {
                this.m_manaCrystalWidth = 0.33f;
            }
            else
            {
                this.m_manaCrystalWidth = actorObject.transform.FindChild("Gem_Mana").GetComponent <Renderer>().bounds.size.x;
            }
        }
        LoadCrystalCallbackData data      = callbackData as LoadCrystalCallbackData;
        ManaCrystal             component = actorObject.GetComponent <ManaCrystal>();

        if (data.IsTempCrystal)
        {
            component.MarkAsTemp();
            this.m_temporaryCrystals.Add(component);
        }
        else
        {
            this.m_permanentCrystals.Add(component);
            if (data.IsTurnStart)
            {
                if (this.m_additionalOverloadedCrystalsOwedThisTurn > 0)
                {
                    component.PayOverload();
                    this.m_additionalOverloadedCrystalsOwedThisTurn--;
                }
            }
            else if (this.m_additionalOverloadedCrystalsOwedNextTurn > 0)
            {
                component.state = ManaCrystal.State.USED;
                component.MarkAsOwedForOverload();
                this.m_additionalOverloadedCrystalsOwedNextTurn--;
            }
            base.StartCoroutine(this.UpdatePermanentCrystalStates());
        }
        if (UniversalInputManager.UsePhoneUI != null)
        {
            component.transform.parent        = this.manaGemBone.transform.parent;
            component.transform.localRotation = this.manaGemBone.transform.localRotation;
            component.transform.localScale    = this.manaGemBone.transform.localScale;
        }
        else
        {
            component.transform.parent = base.transform;
        }
        component.transform.localPosition = Vector3.zero;
        component.PlayCreateAnimation();
        SoundManager.Get().LoadAndPlay("mana_crystal_add", base.gameObject);
        this.UpdateLayout();
    }
Esempio n. 3
0
        public void SpendMana_ManaCrystalIsChargedAndUsed_CrystalIsChargedThenLosesChargeAndReturnsCorrectType()
        {
            ManaCrystal m = new ManaCrystal(Mana.Divine);

            m.Charge();
            Assert.IsTrue(m.IsCharged);
            Mana type = m.Spend();

            Assert.IsTrue(type == Mana.Divine);
            Assert.IsFalse(m.IsCharged);
        }
 private void DestroyTempManaCrystal()
 {
     if (this.m_temporaryCrystals.Count > 0)
     {
         int         index   = this.m_temporaryCrystals.Count - 1;
         ManaCrystal crystal = this.m_temporaryCrystals[index];
         this.m_temporaryCrystals.RemoveAt(index);
         crystal.GetComponent <ManaCrystal>().Destroy();
         this.UpdateLayout();
     }
 }
 private void DestroyManaCrystal()
 {
     if (this.m_permanentCrystals.Count > 0)
     {
         int         index   = 0;
         ManaCrystal crystal = this.m_permanentCrystals[index];
         this.m_permanentCrystals.RemoveAt(index);
         crystal.GetComponent <ManaCrystal>().Destroy();
         this.UpdateLayout();
         base.StartCoroutine(this.UpdatePermanentCrystalStates());
     }
 }
    public int GetSpendableManaCrystals()
    {
        int num = 0;

        for (int i = 0; i < this.m_temporaryCrystals.Count; i++)
        {
            ManaCrystal crystal = this.m_temporaryCrystals[i];
            if (crystal.state == ManaCrystal.State.READY)
            {
                num++;
            }
        }
        for (int j = 0; j < this.m_permanentCrystals.Count; j++)
        {
            ManaCrystal crystal2 = this.m_permanentCrystals[j];
            if ((crystal2.state == ManaCrystal.State.READY) && !crystal2.IsOverloaded())
            {
                num++;
            }
        }
        return(num);
    }
    public void MarkCrystalsOwedForOverload(int numCrystals)
    {
        if (numCrystals > 0)
        {
            this.m_overloadLocksAreShowing = true;
        }
        int num = 0;

        for (int i = 0; numCrystals != num; i++)
        {
            if (i == this.m_permanentCrystals.Count)
            {
                this.m_additionalOverloadedCrystalsOwedNextTurn += numCrystals - num;
                break;
            }
            ManaCrystal crystal = this.m_permanentCrystals[i];
            if (!crystal.IsOwedForOverload())
            {
                crystal.MarkAsOwedForOverload();
                num++;
            }
        }
    }