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); }
public OInt this[BattleBonus type] { get { return((OInt)this.bonus[type]); } set { this.bonus[type] = (OShort)value; } }
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)); }
// ОБРАБОТКА ДЕЙСТВИЙ С БОНУСАМИ 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); } }
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(); } }
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))); }