Esempio n. 1
0
 /// <summary>
 /// 从合成槽将物品放回背包
 /// </summary>
 public void AddItems(List <GameObject> list)
 {
     for (int i = 0; i < list.Count; i++)
     {
         RectTransform tempTransform = list[i].GetComponent <RectTransform>();
         for (int j = 0; j < slotLists.Count; j++)
         {
             Transform bagTemp = slotLists[j].GetComponent <Transform>().Find("InVentoryItem");
             if (bagTemp != null)
             {
                 InventoryItemController bagCtrl   = bagTemp.gameObject.GetComponent <InventoryItemController>();
                 InventoryItemController craftCtrl = list[i].GetComponent <InventoryItemController>();
                 if (bagCtrl.Id == craftCtrl.Id)
                 {
                     bagCtrl.InitNum(craftCtrl.Num + bagCtrl.Num);
                     GameObject.Destroy(list[i]);
                     break;
                 }
             }
             else
             {
                 tempTransform.SetParent(slotLists[j].GetComponent <Transform>());
                 tempTransform.localPosition = Vector3.zero;
                 tempTransform.GetComponent <InventoryItemController>().ResetSpriteSize(tempTransform, 85, 85);
                 break;
             }
         }
     }
 }
Esempio n. 2
0
    public void ObjectToJson(List <GameObject> inventoryItems, string fileName)
    {
        List <InventoryItem> target = new List <InventoryItem>();

        for (int i = 0; i < inventoryItems.Count; i++)
        {
            Transform     tempTransform = inventoryItems[i].transform.Find("InventoryItem");
            InventoryItem tempI         = null;
            if (tempTransform != null)
            {
                InventoryItemController iic = tempTransform.GetComponent <InventoryItemController>();
                if (iic != null)
                {
                    tempI = new InventoryItem(iic.ItemID, iic.ImageName, iic.Number, iic.ItemBar);
                }
                else
                {
                    tempI = new InventoryItem(0, "", 0, 0);
                }
            }
            else
            {
                tempI = new InventoryItem(0, "", 0, 0);
            }
            target.Add(tempI);
        }

        string str = JsonMapper.ToJson(target);

        File.Delete(Application.dataPath + @"\Resources\Json\" + fileName);
        StreamWriter sw = new StreamWriter(Application.dataPath + @"\Resources\Json\" + fileName);

        sw.Write(str);
        sw.Close();
    }
    public void SetItem(Item newItem, InventoryItemController newUiItem)
    {
        item = newItem;
        Sprite sprite = newItem.icon;

        foreach (WearableController wearableController in FindObjectsOfType <WearableController>())
        {
            wearableController.GetComponent <Selectable>().interactable = true;
        }
        foreach (var categorySlot in FindObjectsOfType <CategoryController>())
        {
            categorySlot.GetComponent <Selectable>().interactable = true;
        }
        _itemIcon.sprite = sprite;
        GetComponent <Selectable>().Select();
        ChangingItem = null;
        FindObjectOfType <WeightBarController>().UpdateBar();
        if (uiItem != null)
        {
            uiItem.SetNotInUse();
        }
        uiItem = newUiItem;
        newUiItem.SetInUse();
        //_defaultSprite = image.sprite;
        _image.sprite = _defaultSprite;
    }
    public override void EnterHighlight()
    {
        GameObject selectedItem = InventoryItemController.GetSelectedItem();

        // If we have a selected item, and we can equip, highlight green
        if (selectedItem && !isOccupied && CanEquip(selectedItem))
        {
            image.color = SlotColorHighlights.Green;
        }
        // If we have a selected item and are occupied and can equip, highlight yellow
        else if (selectedItem && isOccupied && CanEquip(selectedItem))
        {
            image.color = SlotColorHighlights.Yellow;
        }
        // else we have a selected item and cannot equip, highlight red
        else if (selectedItem && !CanEquip(selectedItem))
        {
            image.color = SlotColorHighlights.Red;
        }
        else if (!selectedItem)
        {
            if (isOccupied)
            {
                image.color = SlotColorHighlights.Yellow;
            }
            else
            {
                image.color = initialColor;
            }
        }
    }
Esempio n. 5
0
    /// <summary>
    /// 重置图谱槽的时候将里面已经填充的物体合并填充回背包
    /// </summary>
    public void ResetSlotItem()
    {
        GameObject tempV = null;
        InventoryItemController tempController = null;
        // 用来合并合成面板中同类的东西的临时字典
        Dictionary <int, GameObject> map = new Dictionary <int, GameObject>();

        for (int i = 0; i < slotItems.Count; i++)
        {
            Transform temp = slotItems[i].transform.Find("InventoryItem");
            if (temp != null)
            {
                // 字典中查询到的值
                // 当前的物体的控制器
                tempController = temp.GetComponent <InventoryItemController>();
                // 如果字典中有该类型的物体
                if (map.TryGetValue(tempController.ItemID, out tempV))
                {
                    tempV.GetComponent <InventoryItemController>().ChangeNum(tempController.Number);
                    GameObject.Destroy(tempController.gameObject);
                }
                // 字典中没有该类型的物体
                else
                {
                    map.Add(tempController.ItemID, tempController.gameObject);
                }
                tempController = null;
            }
        }


        InventoryPanelController.Instance.AddItem(map);
    }
Esempio n. 6
0
    /// <summary>
    /// 背包数据存档.
    /// </summary>
    public void ObjectToJson(List <GameObject> slotsList)
    {
        List <InventoryItem> tempList = new List <InventoryItem>(slotsList.Count);

        // 遍历物品槽数据.
        for (int i = 0; i < slotsList.Count; ++i)
        {
            Transform tempTransform = slotsList[i].GetComponent <Transform>().Find("InventoryItem");

            if (tempTransform != null)
            {
                InventoryItemController iic  = tempTransform.GetComponent <InventoryItemController>();
                InventoryItem           item = new InventoryItem(iic.ItemId, iic.GetComponent <Image>().sprite.name,
                                                                 iic.ItemNum, iic.ItemBar);
                tempList.Add(item);
            }
        }

        // 转换为Json数据.
        string jsonStr  = JsonMapper.ToJson(tempList);
        string jsonPath = Application.persistentDataPath + "/JsonData/InventoryJsonData.txt";

        // 更新Json文件.
        File.Delete(jsonPath);
        StreamWriter sw = new StreamWriter(jsonPath);

        sw.Write(jsonStr);
        sw.Close();
    }
Esempio n. 7
0
 /// <summary>
 ///  初始化枪械的函数
 ///  需要使用 Json 数据来进行初始化
 /// </summary>
 private void InitGun(GameObject obj, InventoryItemController iic)
 {
     if (obj.name == "Stone Hatchet")
     {
         StoneHatchetControl gcb = obj.GetComponent <StoneHatchetControl>();
         for (int i = 0; i < gunData.Count; i++)
         {
             if (gunData[i].Name == obj.name)
             {
                 gcb.Id             = gunData[i].Id;
                 gcb.Damage         = gunData[i].Damage;
                 gcb.IIc            = iic;
                 gcb.MaxDurage      = iic.Number * gunData[i].Durage;
                 gcb.SignaleDurable = gunData[i].Durage;
                 gcb.Durable        = iic.Number * gunData[i].Durage;
             }
         }
     }
     else
     {
         GunControlBase gcb = obj.GetComponent <GunControlBase>();
         for (int i = 0; i < gunData.Count; i++)
         {
             if (gunData[i].Name == obj.name)
             {
                 gcb.Id             = gunData[i].Id;
                 gcb.Damage         = gunData[i].Damage;
                 gcb.IIc            = iic;
                 gcb.MaxDurage      = iic.Number * gunData[i].Durage;
                 gcb.SignaleDurable = gunData[i].Durage;
                 gcb.Durable        = iic.Number * gunData[i].Durage;
             }
         }
     }
 }
Esempio n. 8
0
 void Awake()
 {
     _instance     = this;
     equipScale    = GameObject.Find("UI Root/Knapsack/EquipContainer").GetComponent <TweenScale>();
     medicineScale = GameObject.Find("UI Root/Knapsack/MedicineContainer").GetComponent <TweenScale>();
     materialScale = GameObject.Find("UI Root/Knapsack/MaterialContainer").GetComponent <TweenScale>();
     otherScale    = GameObject.Find("UI Root/Knapsack/OtherContainer").GetComponent <TweenScale>();
 }
 public void ClearItem()
 {
     uiItem?.SetNotInUse();
     _itemIcon.sprite = _blankSprite;
     item             = null;
     uiItem           = null;
     FindObjectOfType <WeightBarController>().UpdateBar();
 }
Esempio n. 10
0
        public void Index()
        {
            InventoryItemController controller = new InventoryItemController();

            ViewResult result = controller.ListItems() as ViewResult;

            Assert.IsNotNull(result);
        }
Esempio n. 11
0
 //拖拽子功能
 /// <summary>
 /// 组合物品
 /// </summary>
 private void GroupMaterials(InventoryItemController ctrl)
 {
     ctrl.InitNum(ctrl.Num + num);
     if (ctrl.Num > 64)
     {
         Debug.Log("hhh");
         CreateAndSettleNewItem(ctrl.Num - 64);
         ctrl.InitNum(64);
     }
     GameObject.Destroy(gameObject);
 }
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("DING DING DING DING");
        GameObject item = InventoryItemController.GetSelectedItem();

        if (item)
        {
            // If an item is on the cursor and we drop it in the dropzone...
            item.GetComponent <InventoryItemController>().DropItem(inventoryOwner);
        }
    }
Esempio n. 13
0
 // Make highlighting virtual so we can override it if we need to like in Equips.
 public virtual void EnterHighlight()
 {
     // If we have a selected item, highlight
     if (InventoryItemController.GetSelectedItem() && !isOccupied)
     {
         image.color = SlotColorHighlights.Green;
     }
     else if (isOccupied)
     {
         image.color = SlotColorHighlights.Yellow;
     }
 }
Esempio n. 14
0
        private void AddEmpowerment_Click(object sender, EventArgs e)
        {
            this._controllerE.AddNewEmpowerment();
            IList inventoryItems = new ArrayList();

            inventoryItems.Add(new InventoryItem(""
                                                 , "", "", ""));
            InventoryItemController controller = new InventoryItemController(foradd, inventoryItems);

            controller.LoadView();
            firstAdd = true;
            foradd.ShowDialog();
        }
    public override void HandlePointerClick()
    {
        GameObject selectedItem = InventoryItemController.GetSelectedItem();

        if (selectedItem == null || CanEquip(selectedItem))
        {
            base.HandlePointerClick();
        }
        else
        {
            Debug.Log("You can't do that you idiot");
        }
    }
 void Start()
 {
     uIController            = GameObject.Find("UIController").GetComponent <UIController>();
     inventoryItemController = GameObject.Find("InventoryItemController").GetComponent <InventoryItemController>();
     inventoryItemController.SetupInventoryItemController();
     uIController.SetUpUIController();
     GameObject.FindGameObjectWithTag("Player").GetComponent <ShipInventory>().SetupShipInventory();
     GameObject[] ports = GameObject.FindGameObjectsWithTag("Port");
     foreach (GameObject port in ports)
     {
         Debug.Log("Setting up " + port.name);
         port.GetComponent <Port>().SetupPort();
     }
 }
Esempio n. 17
0
        public async Task Setup()
        {
            dbc = new MyDbContext(@"Data Source=(localdb)\DABServer;Initial Catalog=PantryPassion;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            uut = new InventoryItemController(dbc);
            await dbc.Database.EnsureDeletedAsync();

            dbc.Database.EnsureCreated();
            new SeedData(dbc);
            //login:
            var user = dbc.User.First();

            user.AccessJWTToken = AccountsController.HashJwt(jwt);
            dbc.SaveChanges();
        }
Esempio n. 18
0
 /// <summary>
 /// 当背后的UI不为空的时候调用的函数
 /// </summary>
 private void BackNotNullJudge(GameObject back)
 {
     // 为背包的空槽
     if (back.tag == "InventorySlot")
     {
         m_RectTransform.SetParent(back.transform);
         IsInventory = true;
     }
     // 为合成物品的空槽
     else if (back.tag == "CraftingSlot" &&
              back.GetComponent <CraftingSlotController>().ItemId == itemId &&
              back.GetComponentInChildren <InventoryItemController>() == null)
     {
         InventoryPanelController.Instance.SendAddSlotItem(gameObject, true);
         m_RectTransform.SetParent(back.transform);
         IsInventory = false;
     }
     // 为非空槽(不管是背包还是合成槽)
     else if (back.tag == "InventoryItem")
     {
         InventoryItemController backTempController = back.GetComponent <InventoryItemController>();
         // 如果 ID 相等直接执行合并代码
         if (backTempController.itemId == itemId)
         {
             MergeMaterial(backTempController);
             if (!backTempController.isInventory)
             {
                 InventoryPanelController.Instance.SendAddSlotItem(null, false);
             }
         }
         // 如果都在背包里面就执行交换代码
         else if (backTempController.IsInventory && IsInventory)
         {
             m_RectTransform.SetParent(backTempController.gameObject.transform.parent);
             backTempController.gameObject.transform.SetParent(preParent);
             backTempController.gameObject.transform.localPosition = Vector3.zero;
         }
         // 直接就返回之前的状态
         else
         {
             JudgeMergeOrNot();
         }
     }
     // 为UI界面的无用槽
     else
     {
         JudgeMergeOrNot();
     }
 }
 /// <summary>
 /// 合成完毕
 /// </summary>
 private void CraftingOK()
 {
     for (int i = 0; i < materialsList.Count; i++)
     {
         InventoryItemController iic = materialsList[i].GetComponent <InventoryItemController>();
         if (iic.Num == 1)
         {
             GameObject.Destroy(materialsList[i]);
         }
         else
         {
             iic.Num--;
         }
     }
     StartCoroutine("ResetMap");
 }
Esempio n. 20
0
    /// <summary>
    /// 合成完毕, 材料消耗, 回归背包.
    /// </summary>
    private void CraftingOK()
    {
        for (int i = 0; i < materialsList.Count; ++i)
        {
            // 材料消耗.
            InventoryItemController iic = materialsList[i].GetComponent <InventoryItemController>();
            iic.ItemNum -= 1;

            if (iic.ItemNum == 0)
            {
                GameObject.Destroy(iic.gameObject);
            }
        }

        // 材料回归.
        Invoke("ResetMaterials", 1);
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        DraggedObject = this;
        if (eventData == null || eventData.button != PointerEventData.InputButton.Left)
            return;

        oldLocalPosition = transform.localPosition;
        oldLocalRotation = transform.localRotation;
        oldLocalScale = transform.localScale;
        transformParent = transform.parent;
        transform.SetParent(GetComponentInParent<Canvas>().transform, true);
        Controller.CursorManager.SetCursor();
        Controller.CursorManager.FreezeCursorTexture();
        Controller.DescriptionController.SetDescription("", false);
        Controller.DescriptionController.FreezeForItemUse();
        Controller.KeyboardInputDisabled = true;
    }
Esempio n. 22
0
    // 拆分材料
    private void BreakMaterial()
    {
        // 射线检测相关的
        RaycastHit rayhit;
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        Physics.Raycast(ray, out rayhit);
        // 是不是检测到物体,并且这个物体的标签是合成槽
        if (rayhit.transform != null && rayhit.transform.tag == "CraftingSlot")
        {
            GameObject target = rayhit.transform.gameObject;

            // 判断是不是同类型的合成槽
            if (target.GetComponent <CraftingSlotController>().ItemId == itemId)
            {
                InventoryItemController childController = target.GetComponentInChildren <InventoryItemController>();
                // 如果子物体带有这个,说明合成槽不是空的,则执行else 语句
                // 否则复制一份出来进行初始化作为合成槽新物品
                if (childController == null)
                {
                    GameObject item = GameObject.Instantiate(gameObject, target.transform);
                    item.name       = gameObject.name;
                    childController = item.GetComponent <InventoryItemController>();
                    item.transform.localPosition = Vector3.zero;
                    ResizeImage(item.GetComponent <RectTransform>(), 70, 70);
                    childController.isDragging  = false;
                    childController.isInventory = false;
                    childController.InitSingleItem(itemId, m_Image.sprite, 1, itemBar);
                    item.GetComponent <CanvasGroup>().blocksRaycasts = true;
                    MinusNum();
                    // 更新合成槽管理的 List
                    InventoryPanelController.Instance.SendAddSlotItem(item, true);
                }
                else
                {
                    if (MinusNum())
                    {
                        childController.Number      = int.Parse(childController.m_Text.text) + 1;
                        childController.isInventory = false;
                    }
                    // 更新合成槽管理的 List
                    InventoryPanelController.Instance.SendAddSlotItem(null, false);
                }
            }
        }
    }
Esempio n. 23
0
        private void EditEmp_Click(object sender, EventArgs e)
        {
            if (this.grdEmpowerment.SelectedItems.Count > 0 /*&& firstAdd*/)
            {
                this._controllerE.SelectedEmpowermentChanged(Convert.ToInt32(this.grdEmpowerment.SelectedItems[0].Text));
                IList inventoryItems = new ArrayList();
                //inventoryItems.Add(new InventoryItem ("","","",""));
                foreach (InventoryItem inv in _controllerE.SelectedEmpowermentItem.InventoryItems)
                {
                    inventoryItems.Add(inv);
                }
                InventoryItemController controller = new InventoryItemController(foradd, inventoryItems);
                controller.LoadView();

                // foradd.Visible = false;
                foradd.ShowDialog();
            }
        }
Esempio n. 24
0
 /// <summary>
 /// 向槽里放置一个物品
 /// </summary>
 private void PutOneInSlot(GameObject targetSlot)
 {
     //槽里有物品
     if (targetSlot.tag == "InVentoryItem")
     {
         InventoryItemController tempCtrl = targetSlot.GetComponent <InventoryItemController>();
         //槽里物品id与当前拖拽物品id一致
         if (tempCtrl.Id == id)
         {
             tempCtrl.InitNum(tempCtrl.Num + 1);     //槽内物品数量加一
             InitNum(num - 1);                       //拖拽中物品数量减一
             if (num == 0)
             {
                 GameObject.Destroy(gameObject);
             }
         }
     }
     //槽里没有物品且可放置(合成槽有放置规则)
     else if (targetSlot.tag == "InVentorySlot" || (targetSlot.tag == "CraftingSlot" && targetSlot.GetComponent <CraftingSlotController>().IsOpen&& id == targetSlot.GetComponent <CraftingSlotController>().Id))
     {
         if (targetSlot.GetComponent <Transform>().Find("InVentoryItem") == null)
         {
             GameObject go = GameObject.Instantiate(gameObject, targetSlot.GetComponent <RectTransform>());
             //复制物品
             InitNewItem(go, 1, targetSlot.tag);         //创建新的数量为1的物品放进槽中
             InitNum(num - 1);                           //拖拽中物品数量减一
             InventoryPanelController.Instance.SendDargMaterialItem(go);
         }
         else if (targetSlot.GetComponent <Transform>().Find("InVentoryItem") != null)
         {
             InventoryItemController tempCtrl = targetSlot.GetComponent <Transform>().Find("InVentoryItem").GetComponent <InventoryItemController>();
             //槽里物品id与当前拖拽物品id一致
             if (tempCtrl.Id == id)
             {
                 tempCtrl.InitNum(tempCtrl.Num + 1);     //槽内物品数量加一
                 InitNum(num - 1);                       //拖拽中物品数量减一
                 if (num == 0)
                 {
                     GameObject.Destroy(gameObject);
                 }
             }
         }
     }
 }
Esempio n. 25
0
 // 合并材料代码
 private void MergeMaterial(InventoryItemController target)
 {
     // 防止 ID 不同或者自身赋值而触发丢失材料的现象
     if (target.itemId == itemId && target.transform != gameObject.transform)
     {
         int num       = target.Number;
         int targetNum = num + Number;
         target.Number = targetNum;
         if (preParent.tag == "CraftingSlot")
         {
             InventoryPanelController.Instance.SendAddSlotItem(null, false);
         }
         GameObject.Destroy(gameObject);
     }
     else
     {
         ReturnOldParent();
     }
 }
Esempio n. 26
0
    /// <summary>
    /// 初始化复制的物品
    /// </summary>
    /// <param name="go"></param>
    private void InitNewItem(GameObject go, int num, string tag)
    {
        InventoryItemController tempCtrl = go.GetComponent <InventoryItemController>();
        RectTransform           rect     = go.GetComponent <RectTransform>();

        rect.localPosition = Vector3.zero;  //位置初始化
        tempCtrl.InitId(id);                //id初始化
        tempCtrl.InitName();                //名称初始化,去掉clone
        tempCtrl.InitNum(num);              //数量文本初始化
        tempCtrl.GetComponent <CanvasGroup>().blocksRaycasts = true;
        if (tag == "InVentorySlot")
        {
            tempCtrl.ResetSpriteSize(go.GetComponent <RectTransform>(), 85, 85);
        }
        else
        {
            tempCtrl.ResetSpriteSize(go.GetComponent <RectTransform>(), 70, 62);
        }
    }
Esempio n. 27
0
 /// <summary>
 /// 将字典中的物品加入背包,传过来的字典应该是没有相同项的
 /// 进行两次遍历,第一次先查找里面有没有同类的东西,第二次再查找空的背包槽
 /// 当然这里的背包存储的物品的个数没有上限
 /// </summary>
 /// <param name="items"></param>
 public void AddItem(Dictionary <int, GameObject> items)
 {
     // 第一次遍历,找出背包槽中和字典中ID一样的物体合并
     for (int i = 0; i < slotList.Count; i++)
     {
         Transform  tempTransform = slotList[i].transform.Find("InventoryItem");
         GameObject tempGameObject;
         if (tempTransform != null)
         {
             InventoryItemController tempInventory = tempTransform.GetComponent <InventoryItemController>();
             if (items.TryGetValue(tempInventory.ItemID, out tempGameObject))
             {
                 tempInventory.ChangeNum(tempGameObject.GetComponent <InventoryItemController>().Number);
                 items.Remove(tempInventory.ItemID);
                 GameObject.Destroy(tempGameObject);
             }
         }
     }
     // 如果一次遍历无法达到目标
     if (items.Count > 0)
     {
         // 寻找背包槽中的空槽放入字典中的第一个物品就可以
         for (int i = 0; i < slotList.Count; i++)
         {
             Transform tempTransform = slotList[i].transform.Find("InventoryItem");
             if (tempTransform == null && items.Count > 0)
             {
                 // 遍历中没法改变其中的值,但是直接 break 是可以的
                 foreach (var k in items)
                 {
                     k.Value.transform.SetParent(slotList[i].transform);
                     k.Value.GetComponent <InventoryItemController>().IsInventory = true;
                     items.Remove(k.Key);
                     break;
                 }
             }
             if (items.Count <= 0)
             {
                 break;
             }
         }
     }
 }
Esempio n. 28
0
    // 父物体会调用,算是个回调
    // 逻辑大概是,子物体发送消息调用父物体的函数
    // 父物体接收到消息之后进行调用该函数进行合成处理
    // 类似回调
    public void CraftingSlotItem(int addNumber)
    {
        // 子物体如果有该组件说明不为空,否则为空
        InventoryItemController m_Controller = bg_Transform.GetComponentInChildren <InventoryItemController>();

        if (m_Controller == null)
        {
            GameObject target = GameObject.Instantiate <GameObject>(craftingItem, bg_Transform);
            target.name = "InventoryItem";
            RectTransform rectTransform = target.GetComponent <RectTransform>();
            rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 185.2f);
            rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 184.2f);
            target.GetComponent <InventoryItemController>().InitSingleItem(itemId, itemImage.sprite, addNumber, haveBar);
        }
        else
        {
            m_Controller.Number += addNumber;
        }
    }
Esempio n. 29
0
    /// <summary>
    ///  创建枪械的函数
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>

    public GameObject CreateGun(string str, InventoryItemController iic)
    {
        GameObject res = null;

        if (str == "Building")
        {
            res      = GameObject.Instantiate(buildModel, m_Transform);
            res.name = str;
            res.AddComponent <Building>();
        }
        else if (objectDic.TryGetValue(str, out res))
        {
            res      = GameObject.Instantiate(objectDic[str], m_Transform);
            res.name = str;
            InitGun(res, iic);
        }


        return(res);
    }
Esempio n. 30
0
    public virtual void GenerateItems()
    {
        _spawnedItems    = new List <InventoryItemController>();
        _itemPanelHeight = _inventoryItemPrefab.GetComponent <RectTransform>().rect.height;
        for (var i = 0; i < _items.Count; i++)
        {
            Item          item                   = _items[i];
            GameObject    inventoryItem          = Instantiate(_inventoryItemPrefab, _content);
            RectTransform inventoryItemTransform = inventoryItem.GetComponent <RectTransform>();
            inventoryItemTransform.localPosition = new Vector3(0, (i) * _itemPanelHeight * -1, 0);
            InventoryItemController ic = inventoryItem.GetComponent <InventoryItemController>();
            ic.Item         = item;
            ic._parentPanel = this;
            _spawnedItems.Add(ic);
        }

        var rectTransform = _content.GetComponent <RectTransform>();

        rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x,
                                              _itemPanelHeight * (_spawnedItems.Count == 0 ? 1 : _spawnedItems.Count));
    }
Esempio n. 31
0
    /// <summary>
    /// 合成结束后进行合成槽物品数量的减少,合成辅助函数
    /// </summary>
    private void CraftingOk(int number)
    {
        // 父物体回调这个函数进行合成
        m_CraftingController.CraftingSlotItem(number);

        for (int i = 0; i < materialsList.Count; i++)
        {
            InventoryItemController m_Controller = materialsList[i].GetComponent <InventoryItemController>();
            int tempN = m_Controller.Number - number;
            if (tempN <= 0)
            {
                GameObject.Destroy(materialsList[i]);
                materialsList.RemoveAt(i);
                i--;
            }
            else
            {
                m_Controller.MinusNum(number);
            }
        }
        UpdateCraftingBtn();
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        if (eventData == null || eventData.button != PointerEventData.InputButton.Left)
            return;
        Controller.CursorManager.UnfreezeCursorTexture();
        Controller.DescriptionController.UnfreezeForItemUse();
        Controller.DescriptionController.SetDescription("", false);

        transform.SetParent(transformParent, true);
        transform.localPosition = oldLocalPosition;
        transform.localRotation = oldLocalRotation;
        transform.localScale = oldLocalScale;

        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

        if (hit.collider != null)
        {
            var usable = hit.collider.GetComponent<ItemUsableArea>();
            if (usable)
            {
                //    usable.Use(ItemId);
            }
        }

        if (DraggedOver != null)
            DraggedOver.Use(ItemId);

        DraggedObject = null;
        DraggedOver = null;
        Controller.KeyboardInputDisabled = false;
    }