//ici on ajoute en donnée l'item public void AddItem(InvPrefab item) { Boolean exist = false; //on verifie qu'il n'existe pas déja un tableau de l'item foreach (List <InvPrefab> l in lItems) { if (l[0].Name.Equals(item.Name)) { l.Add(item); ItemRemplace(this, new InvEventArgs(item)); item.OnPickup(); exist = true; break; } } //sinon on l'ajoute a un slot libre if (lItems.Count < SLOTS && !exist) { List <InvPrefab> nouveau = new List <InvPrefab>(); nouveau.Add(item); lItems.Add(nouveau); item.OnPickup(); if (ItemAdded != null) { ItemAdded(this, new InvEventArgs(item)); } } }
//ici on ajoute en UI private void Inventory_ItemAdded(object sender, InvEventArgs e) { InvPrefab item = e.Item; Transform inventoryPanel = transform.Find("Inventory pannel"); foreach (Transform slot in inventoryPanel) { Transform comp = slot.GetChild(0).GetChild(0); Image image = comp.GetComponent <Image>(); ItemDragHandler itemDragHandler = comp.GetComponent <ItemDragHandler>(); Text label = comp.GetChild(0).GetComponent <Text>(); if (!image.enabled) { image.enabled = true; image.sprite = item.Image; int txt = inventaire.nombreItem(e.Item); label.text = txt.ToString(); itemDragHandler.Item = item; break; } } }
//Initialisation avec des prefab qui seront choisit pour completer la quête public void Awake() { inventaire.ItemRemplace += Inventory_ItemRemplace; inventaire.ItemAdded += Inventory_ItemAdded; Transform parent = transform.Find("Inventory pannel"); for (int i = 0; i < 9; i++) { GameObject ob = Instantiate(Resources.Load("slot", typeof(object))) as GameObject; ob.transform.SetParent(parent); } for (int i = 0; i < 3; i++) { InvPrefab obj = Instantiate(Resources.Load("Cube", typeof(Cube))) as InvPrefab; if (obj != null) { inventaire.AddItem(obj); } } // GameObject obj = GameObject.Instantiate((GameObject)Resources.Load("Cube.prefab")); // si l'instanciation a réussi on ajoute }
public void OnDrop(PointerEventData eventData) { RectTransform invPanel = transform as RectTransform; if (!RectTransformUtility.RectangleContainsScreenPoint(invPanel, Input.mousePosition)) { InvPrefab item = eventData.pointerDrag.gameObject.GetComponent <ItemDragHandler>().Item; inventaire.RemoveItem(item); } }
public int nombreItem(InvPrefab item) { foreach (List <InvPrefab> l in lItems) { if (l[0].Name.Equals(item.Name)) { return(l.Count); } } return(0); }
public void RemoveItem(InvPrefab item) { foreach (List <InvPrefab> l in lItems) { if (l[0].Name.Equals(item.Name)) { print(l.Count); if (l.Count > 1) { l.RemoveAt(l.Count - 1); if (ItemRemoved != null) { ItemRemplace(this, new InvEventArgs(l[l.Count - 1])); print("remplace"); } break; } else { lItems.Remove(l); if (ItemRemoved != null) { print("suppr"); ItemRemoved(this, new InvEventArgs(item)); } break; } } } item.OnDrop(); ///////////////////////////// Collider collider = (item as MonoBehaviour).GetComponent <Collider>(); if (collider != null) { collider.enabled = true; } }
public InvEventArgs(InvPrefab item){ Item = item; }