/// <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; } } } }
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; } } }
/// <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); }
/// <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(); }
/// <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; } } } }
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(); }
public void Index() { InventoryItemController controller = new InventoryItemController(); ViewResult result = controller.ListItems() as ViewResult; Assert.IsNotNull(result); }
//拖拽子功能 /// <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); } }
// 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; } }
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(); } }
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(); }
/// <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"); }
/// <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; }
// 拆分材料 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); } } } }
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(); } }
/// <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); } } } } }
// 合并材料代码 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(); } }
/// <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); } }
/// <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; } } } }
// 父物体会调用,算是个回调 // 逻辑大概是,子物体发送消息调用父物体的函数 // 父物体接收到消息之后进行调用该函数进行合成处理 // 类似回调 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; } }
/// <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); }
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)); }
/// <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; }