Beispiel #1
0
    public bool SubtractBonusFromUnit(BattleBonus BB)
    {
        int chkInd = -1;
        int minVol = 0;

        for (int i = 0; i < bu.getFullBonuses.Count; ++i)
        {
            if (bu.getFullBonuses[i].unitBonus == BB)
            {
                chkInd = i;
                break;
            }
        }
        if (chkInd == -1)
        {
            return(false);
        }

        minVol = currBonuses[chkInd].currnetCount - 1;
        if (minVol > 0)
        {
            myBonuse mb = new myBonuse();
            mb.unitBonus        = BB;
            mb.currnetCount     = minVol;
            currBonuses[chkInd] = mb;
        }
        else
        {
            currBonuses.RemoveAt(chkInd);
        }


        return(true);
    }
Beispiel #2
0
 public OInt this[BattleBonus type]
 {
     get
     {
         return((OInt)this.bonus[type]);
     }
     set
     {
         this.bonus[type] = (OShort)value;
     }
 }
Beispiel #3
0
 public OInt this[BattleBonus type]
 {
     get
     {
         return(this.bonus[type]);
     }
     set
     {
         this.bonus[type] = value;
     }
 }
 public OInt this[BattleBonus type]
 {
     get
     {
         return(this.values[(int)type]);
     }
     set
     {
         this.values[(int)type] = value;
     }
 }
    private IEnumerator _AnimateBonus(BattleBonus bonus, int newVal, Vector3 startPos, Vector3 dir)
    {
        TextMesh text = (TextMesh)Instantiate(BonusTextPrefab);

        text.transform.position = startPos;
        text.transform.rotation = Quaternion.LookRotation(-Vector3.up, -transform.forward);

        text.text = bonus.Name + '\n'
                    + bonus.Type + (bonus.Value > 0?"+":"-") + bonus.Value.ToString();
        Color c = new Color(1f, 0.5f, 0.5f, 0f);

        if (bonus.Type != BonusType.Dmg && bonus.Value >= 0)
        {
            c = new Color(0.5f, 0.5f, 1f, 0f);
        }
        else if (bonus.Type == BonusType.Dmg && bonus.Value <= 0)
        {
            c = new Color(0.5f, 0.5f, 1f, 0f);
        }

        float t = 0f;

        Vector3 targetPos = text.transform.position + dir.normalized / 2f;

        while (t < 2f)
        {
            text.transform.position = Vector3.Lerp(text.transform.position, targetPos, Time.deltaTime * 5f);
            t += Time.deltaTime;

            c.a        = Mathf.Clamp(Mathf.Abs(t - 1f) + 1f, 0f, 0.75f);
            text.color = c;

            yield return(null);
        }

        if (bonus.Type == BonusType.Att)
        {
            StartCoroutine(FlyParticleFromTo(text.transform.position, Att.transform.position));
            Att.text = "Att: " + newVal.ToString();
        }
        if (bonus.Type == BonusType.Def)
        {
            StartCoroutine(FlyParticleFromTo(text.transform.position, Def.transform.position));
            Def.text = "Def: " + newVal.ToString();
        }
        if (bonus.Type == BonusType.Dmg)
        {
            StartCoroutine(FlyParticleFromTo(text.transform.position, Dmg.transform.position));
            Dmg.text = "Dmg: " + newVal.ToString();
        }

        Destroy(text.gameObject);
    }
    public void AwardBonus(PlayerController player, BattleBonus bonus, Vector3 startPos)
    {
        if (!bonusDB.ContainsKey(player))
        {
            bonusDB.Add(player, new List <BattleBonus>());
        }

        bonusDB[player].Add(bonus);

        player.BonusUI.AnimateBonus(bonus, GetStatSum(player, bonus.Type), startPos, -player.BattleSpot.up);

        StartCoroutine(PulseAndIncreaseBattlingStat(player, bonus));
    }
Beispiel #7
0
    // ОБРАБОТКА ДЕЙСТВИЙ С БОНУСАМИ

    public void CreateBonusForDirectUnit(string bonusName, string squadName, int num, int buildNum)
    {
        BattleBonus BB = null;

        BB = ResourceController.instance.allBattleBonuses.Find(x => x.getBonusName == bonusName);

        if (BB != null)
        {
            float       productSpeed = BB.getBonusRecruitTime;
            ProductTask pt           = new ProductTask(bonusName, num, productSpeed, ProductionController.ProductType.bonusProd);
            pt.SetBonusInfo(squadName, buildNum);

            ProductionController.instance.AddNewProduct(pt);
        }
    }
Beispiel #8
0
    public void AddProducingBonus(string name, int val)
    {
        BattleBonus bb = ResourceController.instance.allBattleBonuses.Find(x => x.getBonusName == name);
        ProdMods    PM = new ProdMods();

        PM.prodBonus = bb;
        PM.val       = val;
        //PM.specName = "";
        PM.specName = bb.getBonusName;
        producingBonuses.Add(PM);
        if (producingBonuses.Count == 1) // Только началось заполнение
        {
            // Составляем задачу и обращаемся к Production Controller
            MakeNewProduct();
        }
    }
Beispiel #9
0
    public bool AddBonusToUnit(BattleBonus BB, int bonusNum)
    {
        // Check if we can add this bonus to unit
        int chkInd = -1;
        int maxVol = 0;

        for (int i = 0; i < bu.getFullBonuses.Count; ++i)
        {
            if (bu.getFullBonuses[i].unitBonus == BB)
            {
                chkInd = i;
                maxVol = bu.getFullBonuses[i].bonusMaxCount;
                break;
            }
        }
        if (chkInd == -1)
        {
            return(false);
        }

        int ind = -1;

        for (int i = 0; i < currBonuses.Count; ++i)
        {
            if (currBonuses[i].unitBonus == BB)
            {
                ind = i;
                break;
            }
        }
        if (ind != -1)
        {
            myBonuse mb = new myBonuse();
            mb.unitBonus     = BB;
            mb.currnetCount  = Mathf.Max(currBonuses[ind].currnetCount + bonusNum, maxVol);
            currBonuses[ind] = mb;
        }
        else
        {
            myBonuse mb = new myBonuse();
            mb.unitBonus    = BB;
            mb.currnetCount = Mathf.Max(bonusNum, maxVol);;
            currBonuses.Add(mb);
        }

        return(true);
    }
    IEnumerator PulseAndIncreaseBattlingStat(PlayerController player, BattleBonus bonus)
    {
        float t = 0f;

        int      newVal = GetStatSum(player, bonus.Type);
        TextMesh mesh   = null;

        if (bonus.Type == BonusType.Att)
        {
            mesh = player.BattlingCard.AttText;
        }
        if (bonus.Type == BonusType.Def)
        {
            mesh = player.BattlingCard.DefText;
        }
        if (bonus.Type == BonusType.Dmg)
        {
            mesh = player.BattlingCard.DmgText;
        }

        mesh.text = mesh == player.BattlingCard.DmgText ? "-" + newVal.ToString() : newVal.ToString();

        if (mesh != player.BattlingCard.DmgText)
        {
            mesh.color = new Color(0.5f, 0.5f, 1f);
        }

        while (t < 1f)
        {
            t = Mathf.MoveTowards(t, 1f, Time.deltaTime * 3f);

            float size = 1f + Mathf.Sin(Mathf.PI * t);

            mesh.transform.localScale = new Vector3(size, size, size);

            yield return(null);
        }
    }
 public Coroutine AnimateBonus(BattleBonus bonus, int newVal, Vector3 startPos, Vector3 dir)
 {
     return(StartCoroutine(_AnimateBonus(bonus, newVal, startPos, dir)));
 }