Пример #1
0
    private void Awake()
    {
        Instance      = this;
        WeaponSubject = new WeaponSubject();
        ItemSubject   = new ItemSubject();
        newSlots      = new List <GameObject>();

        WeaponSubject.Attach(new WeaponObserver(a =>
        {
            if (a.isNewItemNotify)
            {
                var newSlot = WeaponSlot.weaponSlots.Where(slot => { return(slot.gameObject.activeSelf == false); }).First();
                if (newSlot != null)
                {
                    newSlots.Add(newSlot.gameObject);
                    newSlot.Init(a.NewItem);
                    a.isNewItemNotify = false;
                }
            }
        }));

        //WeaponSubject.Notify();

        gameObject.SetActive(false);
    }
Пример #2
0
    private void Start()
    {
        subject = ItemWindow.Instance.ItemSubject;
        var button = gameObject.GetComponent <Button>();

        subject.Attach(new ItemObserver(a => {
            var childImage = gameObject.transform.GetChild(0).GetComponent <Image>();
            if (a.SelectedItem[slotNum] != null)
            {
                childImage.sprite = setImage;
                childImage.color  = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            }
            else
            {
                a.itemCount--;
                childImage.sprite = null;
                childImage.color  = new Color(1.0f, 1.0f, 1.0f, 0.0f);
            }
        }));

        button.onClick.AddListener(() => {
            if (subject.SelectedItem[slotNum] == null)
            {
            }
            else
            {
                StartCoroutine(subject.SelectedItem[slotNum].ItemFunction());
                subject.SelectedItem[slotNum] = null;
                subject.Notify();
            }
        });
    }
Пример #3
0
        public async Task <IActionResult> PutSubjectItem(long id, ItemSubject item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
Пример #4
0
        public async Task <ActionResult <ItemSubject> > PostSubjectItem(ItemSubject item)
        {
            if (item == null)
            {
                return(BadRequest());
            }

            _context.SubjectItems.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetSubjetItem), new { id = item.Id }, item));
        }
Пример #5
0
    /// <summary>
    /// Sets the stack, but limits based on subject MaxStack
    /// </summary>
    /// <param name="newSubjectID"></param>
    /// <param name="newStackSize"></param>
    /// <param name="masterSubjectList"></param>
    /// <returns></returns>
    public bool SetStack(int newSubjectID, int newStackSize, MasterSubjectList masterSubjectList)
    {
        ItemSubject newSubject = masterSubjectList.GetSubject(newSubjectID, typeof(ItemSubject)) as ItemSubject;

        if (newSubject != null)
        {
            subjectID = newSubjectID;
            stackSize = Math.Min(newStackSize, newSubject.MaxStack);
            return(true);
        }
        else
        {
            return(false);
        }
    }
Пример #6
0
    /// <summary>
    /// Copy an existing ItemSubject.
    /// </summary>
    public override Subject Copy()
    {
        ItemSubject newItemSubject = new ItemSubject();

        newItemSubject.subjectID       = subjectID;
        newItemSubject.name            = name;
        newItemSubject.description     = description;
        newItemSubject.icon            = icon;
        newItemSubject.prefab          = prefab;
        newItemSubject.relatedSubjects = relatedSubjects;

        newItemSubject.buildDirections = buildDirections;
        newItemSubject.maxStack        = maxStack;
        return(newItemSubject);
    }
Пример #7
0
    /// <summary>
    /// Adds to the stack, limits based on the subject MaxStack
    /// </summary>
    /// <param name="newSubjectID"></param>
    /// <param name="newStackSize"></param>
    /// <param name="masterSubjectList"></param>
    /// <returns></returns>
    public int Add(int newSubjectID, int newStackSize, MasterSubjectList masterSubjectList)
    {
        if (newSubjectID != subjectID)
        {
            return(newStackSize);                           //reject entire amount
        }
        ItemSubject newSubject = masterSubjectList.GetSubject(newSubjectID) as ItemSubject;

        if (newSubject != null)
        {
            int tempStack = stackSize + newStackSize;
            stackSize    = Math.Min(tempStack, newSubject.MaxStack);
            newStackSize = Math.Max(0, tempStack - newSubject.MaxStack);
        }
        return(newStackSize);
    }
Пример #8
0
    /// <summary>
    /// Adds to the stack, limits based on the subject MaxStack
    /// </summary>
    /// <param name="addedInvItem"></param>
    /// <param name="masterSubjectList"></param>
    /// <returns></returns>
    public int Add(InventoryItem addedInvItem, MasterSubjectList masterSubjectList)
    {
        if (addedInvItem.subjectID != subjectID)
        {
            return(addedInvItem.stackSize);                                     //reject entire amount
        }
        ItemSubject newSubject = masterSubjectList.GetSubject(addedInvItem.subjectID) as ItemSubject;

        if (newSubject != null)
        {
            int tempStack = stackSize + addedInvItem.stackSize;
            stackSize = Math.Min(tempStack, newSubject.MaxStack);
            addedInvItem.stackSize = Math.Max(0, tempStack - newSubject.MaxStack);
        }
        return(addedInvItem.stackSize);
    }