void AutoFill() { int donateCnt = donateOriginalConsumables.Length; int randomCnt = originalConsumables.Length; int maxCnt = items.Count - 2; //добавляем с обязательного массива всё что влезет int cnt1 = Mathf.Min(maxCnt, donateCnt); for (int i = 0; i < cnt1; i++) { var cons = donateOriginalConsumables[i]; ConsumableStack cs = new ConsumableStack(cons, cons.DefaultStats); if (cs.ConsumableStats is IStackCountConstraintable) { cs.Count = (cs.ConsumableStats as IStackCountConstraintable).MaxCount; } AddToInventory(cs); } //если осталось место, добавляем рандомно всё что в необязательном массиве int cnt2 = Mathf.Clamp(maxCnt - cnt1, 0, maxCnt); for (int i = 0; i < cnt2; i++) { Consumable cons = originalConsumables[Random.Range(0, randomCnt)]; ConsumableStack cs = new ConsumableStack(cons, cons.DefaultStats); if (cs.ConsumableStats is IStackCountConstraintable) { cs.Count = (cs.ConsumableStats as IStackCountConstraintable).MaxCount; } AddToInventory(cs); } }
public void SetSquadValues(Squad squad) { isEmpty = false; var inv = squad.Inventory; helmetStack = new EquipmentStack(inv.Helmet); bodyStack = new EquipmentStack(inv.Body); shieldStack = new EquipmentStack(inv.Shield); weaponStack = new EquipmentStack(inv.Weapon); firstConsumable = new ConsumableStack(inv.FirstConsumable); secondConsumable = new ConsumableStack(inv.SecondConsumable); inventory = new EquipmentStack[inv.Length]; for (int i = 0; i < inv.Length; i++) { inventory[i] = inv[i]; } count = squad.UnitCount; health = new float[count]; var poss = squad.UnitPositions; for (int i = 0; i < count; i++) { health[i] = poss[i].Unit.Health; } }
public ConsumableStack(ConsumableStack stack) : this() { if (stack != null) { this.Consumable = stack.consumable; this.consumableStats = stack.consumableStats; this.count = stack.count; } }
public void AddToInventory(ConsumableStack stack) { if (inventory.Count >= items.Count) { throw new System.Exception("больше нет места в инвентаре"); } inventory.Add(stack); RefreshUI(); }
static AExecutableBehaviour GetBehaviourConsumable(ConsumableStack stack, AiSquadController controller) { if (stack.Consumable is ConsumablePilumsVolley) { return(new PilumsVolleyBehaviour(controller, stack)); } else { return(null); } }
void ResetIcon(ConsumableStack stack) { if (stack.Consumable == null) { return; } var mp = stack.Consumable.MainPropertie; mp.ResetIcon(); stack.Consumable.MainPropertie = mp; }
public void RemoveFtomInventory(ConsumableStack stack) { if (!inventory.Remove( inventory.Find( (st) => { return(st.Consumable.Id == stack.Consumable.Id && st.Count == stack.Count); } ) )) { throw new System.Exception("Алё. Таких предметов в магазине нет!"); } else { RefreshUI(); } }
ConsumableStack GetConsumable(ConsumableContainer[] equipments) { ConsumableStack res = null; if (equipments.Length > 0) { float t = GameManager.Instance.CurrentLevel.WholeLevelT; float val = consumableLevelDependency.Evaluate(t); int index = Mathf.RoundToInt(consumableLevelDependency.Evaluate(t) * (equipments.Length - 1)); int l2 = equipments[index].randomConsumables.Length; var consum = equipments[index].randomConsumables[UnityEngine.Random.Range(0, l2)]; res = new ConsumableStack(consum, consum.DefaultStats); } return(res); }
public void Merge(object data) { var d = data as DSPlayerSquad; inventory = d.inventory; count = d.count; health = d.health; helmetStack = new EquipmentStack(d.Helmet); bodyStack = new EquipmentStack(d.Body); shieldStack = new EquipmentStack(d.Shield); weaponStack = new EquipmentStack(d.Weapon); firstConsumable = new ConsumableStack(d.FirstConsumable); secondConsumable = new ConsumableStack(d.SecondConsumable); //призагрузке надо пройтись по спрайтам и обновить. так как они сериальзуются по id а не по содержимому ResetIcons(); }
public void Reset() { isEmpty = true; helmetStack = null; bodyStack = null; shieldStack = null; weaponStack = null; firstConsumable = null; secondConsumable = null; inventory = null; if (Squad.playerSquadInstance != null) { count = Squad.playerSquadInstance.FULL_SQUAD_UNIT_COUNT; } else { count = 30; } health = new float[count]; }
public PilumsVolleyBehaviour(AiSquadController controller, ConsumableStack stack) : base(controller) { this.stack = stack; stack.Consumable.CallbackUsedCount += Volley_CallbackUsedCount; }
public ConsumableStack(ConsumableStack stack, int count) : this(stack) { this.count = count; }
private void Initiate() { if (typeOfSkill == Type.SKILL) { switch (skillNum) { case SkillNum.FIRS: currentSkill = playerInventory.FirstSkill; break; case SkillNum.SECOND: currentSkill = playerInventory.SecondSkill; break; } if (currentSkill.Skill != null) { img.sprite = currentSkill.Skill.MainPropertie.Icon; useType = currentSkill.Skill.UseType; } } else { switch (skillNum) { case SkillNum.FIRS: currentConsumable = playerInventory.FirstConsumable; break; case SkillNum.SECOND: currentConsumable = playerInventory.SecondConsumable; break; } if (currentConsumable.Consumable != null) { useType = currentConsumable.Consumable.UseType; img.sprite = currentConsumable.Consumable.MainPropertie.Icon; currentConsumable.Consumable.CallbackUsedCount += DecrementUsedConsumableCount; } } if ((currentSkill != null && currentSkill.Skill == null) || (currentConsumable != null && currentConsumable.Consumable == null)) { Destroy(cell); return; } else { if (typeOfSkill == Type.CONSUMABLE) { if (currentConsumable.Count < 0) { countText.enabled = false; } else { countText.text = currentConsumable.Count.ToString(StringFormats.intNumber); } } else { countText.enabled = false; } } }