Пример #1
0
 public void AddElements(ElementInventory inventory)
 {
     foreach (var elem in inventory)
     {
         AddElement(elem.Key, elem.Value);
     }
 }
Пример #2
0
    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;
        }
    }
Пример #3
0
    /// <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();
        }
    }
Пример #4
0
    // Start is called before the first frame update
    void Start()
    {
        Elements.Init();

        composition = new ElementInventory(initialConditions);

        //reactions = new List<int>();
    }
Пример #5
0
    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();
        }
    }
Пример #6
0
    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);
    }
Пример #7
0
    /// <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);
        }
    }
Пример #8
0
    /// <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 = "";
        }
    }
Пример #9
0
    /// <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;
                }
            }
        }
    }
Пример #10
0
 protected abstract void SetInventory(ElementInventory inventory);
Пример #11
0
 protected override void SetInventory(ElementInventory inventory)
 {
     this.inventory = inventory;
 }
Пример #12
0
 protected override void SetInventory(ElementInventory inventory)
 {
     GameModel.PlayerInventory = inventory;
 }
Пример #13
0
    // 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);
    }