public void AddElements(ElementInventory inventory) { foreach (var elem in inventory) { AddElement(elem.Key, elem.Value); } }
public void WindowFunction(int windowId) { GUILayout.BeginVertical(); ElementInventory deltas = new ElementInventory(); foreach (var elem in player.GetInventory()) { GUILayout.BeginHorizontal(); GUILayout.Label(elem.Key.ToString() + " " + ((int)elem.Key).ToString()); GUILayout.Label(elem.Value.ToString()); if (GUILayout.Button("Donate")) { deltas[elem.Key] = elem.Value; } GUILayout.EndHorizontal(); } foreach (var delta in deltas) { player.GetInventory()[delta.Key] = 0; star.AddElement(delta.Key, delta.Value); } GUILayout.EndVertical(); if (GUILayout.Button("Close")) { playerInvGui.isShowing = false; } }
/// <summary> /// Добавить объект в инвентарь /// </summary> /// <param name="id">ID Добавляемого объекта</param> /// <param name="count">Количество объектов</param> public void TakeItem(int id, int count) { ElementInventory qitem = WeaponDataManagerScript.instance.GetElementInventory(id); // if (mainWeaponSlot.id == 0 && qitem.mainWeapon != 0) { int usebl = WeaponDataManagerScript.instance.GetElementInventory(qitem.id).mainWeapon; PlayerManager.instance.InstantMainWeapon(usebl); mainWeaponSlot.id = qitem.id; mainWeaponSlot.count = count; } else { SearchForSameItem(qitem, count); } if (UIManager.instance.backGroundActive) { UpdateInventory(); } }
// Start is called before the first frame update void Start() { Elements.Init(); composition = new ElementInventory(initialConditions); //reactions = new List<int>(); }
public override void Attack() { // Если есть патроны, стреляем ElementInventory usebl = WeaponDataManagerScript.instance.GetElementInventory(Inventory.instance.mainAmmunitionSlot.id); if (usebl.ammoType == AmmoType.bullet && Inventory.instance.mainAmmunitionSlot.count > 0) { Inventory.instance.mainAmmunitionSlot.count--; Shot(); } }
void Short() { ElementInventory usebl = WeaponDataManagerScript.instance.GetElementInventory(Inventory.instance.mainAmmunitionSlot.id); if (usebl.ammoType == AmmoType.arrow && Inventory.instance.mainAmmunitionSlot.count > 0) { Inventory.instance.mainAmmunitionSlot.count--; Instantiate(Elements.arrow, Elements.bowPoint.position, Elements.bowPoint.rotation); } //Inventory.instance.throwingWeaponSlot.count = throwingAmmunition; //UIManager.instance.SetMainAmmo(throwingAmmunition); }
/// <summary> /// Функция для слота боеприпасов /// </summary> public void MainAmmoSlotDragAndDrop() { ElementInventory usebl = WeaponDataManagerScript.instance.GetElementInventory(currentItem.id); if (currentItem.id > 0 && cellCurrentID != -1 && usebl.ammoType != AmmoType.now) { DragAndDropWeaponSlot(mainAmmunitionSlot); } else if (mainAmmunitionSlot.id != 0 && cellCurrentID == -1) // Снять снаряжение { TakeItem(mainAmmunitionSlot.id, mainAmmunitionSlot.count); mainAmmunitionSlot.itemGameObj.GetComponentInChildren <Text>().text = ""; mainAmmunitionSlot.id = 0; UpdateEquipmentSlots(mainAmmunitionSlot); } }
/// <summary> /// Добавление ячейки с элементом /// </summary> /// <param name="id"></param> /// <param name="item"></param> /// <param name="count"></param> void AddItem(int id, ElementInventory item, int count) { items[id].id = item.id; // Задаем номер items[id].count = count; // Задаем количество items[id].itemGameObj.GetComponent <Image>().sprite = item.img; // Задаем изображение items[id].element = item; // Добавляем ссылку на содержимое ячейки if (count > 1 && item.id != 0) // Если Объект в ячейке не 1 и ячейка не пустая { items[id].itemGameObj.GetComponentInChildren <Text>().text = count.ToString(); // Показать количество объектов } else { items[id].itemGameObj.GetComponentInChildren <Text>().text = ""; } }
/// <summary> /// Добавление элемента в свободную ячейку, или добавление нужного количества объектов в ячейку с таким-же объектом /// </summary> /// <param name="item"></param> /// <param name="count"></param> void SearchForSameItem(ElementInventory item, int count) { for (int i = 0; i < maxCount; i++) { if (items[i].id == item.id) { if (items[i].count < 128) { items[i].count += count; if (items[i].count > 128) { count = items[i].count - 128; items[i].count = 64; } else { count = 0; i = maxCount; } } } } if (count > 0) { for (int i = 0; i < maxCount; i++) { if (items[i].id == 0) { AddItem(i, item, count); i = maxCount; } } } }
protected abstract void SetInventory(ElementInventory inventory);
protected override void SetInventory(ElementInventory inventory) { this.inventory = inventory; }
protected override void SetInventory(ElementInventory inventory) { GameModel.PlayerInventory = inventory; }
// Update is called once per frame void FixedUpdate() { var numReactions = 0; tTime = Time.time + 1.0f; float fusionChance = 0.001f; var mass = GetTotalMass(); var deltas = new ElementInventory(); foreach (var comp in composition) { var element = comp.Key; var count = comp.Value; if (Elements.activations[element] < mass) { var selfFusionProduct = (int)element * 2; if (Enum.IsDefined(typeof(Element), selfFusionProduct) && UnityEngine.Random.value < fusionChance / Time.fixedDeltaTime) { var product = (Element)selfFusionProduct; var numToFuse = Mathf.CeilToInt(count * fusionChance); if (!deltas.ContainsKey(element)) { deltas[element] = 0; } if (!deltas.ContainsKey(product)) { deltas[product] = 0; } deltas[element] -= numToFuse * 2; deltas[product] += numToFuse; numReactions += numToFuse; } var hChance = 0.3f; var hFusionProduct = (int)element + 1; if (Enum.IsDefined(typeof(Element), hFusionProduct) && UnityEngine.Random.value < (fusionChance * hChance) / Time.fixedDeltaTime) { var product = (Element)hFusionProduct; var numToFuse = Mathf.CeilToInt(count * fusionChance); if (!deltas.ContainsKey(element)) { deltas[element] = 0; } if (!deltas.ContainsKey(product)) { deltas[product] = 0; } deltas[element] -= numToFuse * 2; deltas[product] += numToFuse; numReactions += numToFuse; } } } AddElements(deltas); reactionsLive += numReactions; var scale = mass / 1000.0f + ((numReactions * 50.0f) / (mass / 100.0f)); transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(scale, scale, scale), Time.fixedDeltaTime); }