using Microsoft.AspNetCore.Components; namespace BlazorApp1.Components { public partial class InventoryItem : ItemDisplay { [Parameter] public int Index { get; set; } [Parameter] public Item Item { get; set; } [Parameter] public bool NoDrop { get; set; } [Parameter] public int nbElem { get; set; } [CascadingParameter] public Inventory Parent { get; set; } public void setItem(Item item) { Parent.InventoryItems[this.Index] = item; } public void setNbElement(int nbElement) { Parent.InventoryNbElems[this.Index] = nbElement; } public void changeState() { StateHasChanged(); } public Item getItem() { return Parent.InventoryItems[this.Index]; } public int getNbElement() { return Parent.InventoryNbElems[this.Index]; } public String getTypeID() { return "InventoryItem"; } internal void OnDragEnter() { if (NoDrop) { return; } } internal void OnDragLeave() { if (NoDrop) { return; } } internal void OnDrop() { if (NoDrop) { return; } if (Parent.InventoryItems[this.Index] is not null) { if (Parent.InventoryItems[this.Index].Equals(Parent.CurrentDragItem)) { if (Parent.InventoryNbElems[this.Index] < Parent.InventoryItems[this.Index].StackSize && Parent.CurrentEllement.getTypeID() == "ListItem") { Parent.InventoryNbElems[this.Index]++; } else if (Parent.InventoryNbElems[this.Index] + Parent.CurrentEllement.getNbElement() > Parent.InventoryItems[this.Index].StackSize && Parent.CurrentEllement.getTypeID() == "InventoryItem") { int tmp = Parent.InventoryNbElems[this.Index] + Parent.CurrentEllement.getNbElement(); Parent.InventoryNbElems[this.Index] = Parent.InventoryItems[this.Index].StackSize; Parent.CurrentEllement.setNbElement(tmp - Parent.InventoryItems[this.Index].StackSize); } else if (Parent.CurrentEllement.getTypeID() == "InventoryItem") { Parent.InventoryNbElems[this.Index] += Parent.CurrentEllement.getNbElement(); Parent.CurrentEllement.setNbElement(0); Parent.CurrentEllement.setItem(null); } else { int indice = -1; for (int i = 0; i < 40; i++) { if (Parent.InventoryItems[this.Index].Equals(Parent.InventoryItems[i]) && Parent.InventoryNbElems[i] < Parent.InventoryItems[i].StackSize) { Parent.InventoryNbElems[i]++; indice = -1; break; } else if (Parent.InventoryItems[i] is null && indice == -1) { indice = i; } } if (indice != -1) { Parent.InventoryItems[indice] = Parent.InventoryItems[this.Index]; Parent.InventoryNbElems[indice] = 1; } } } else { if (Parent.CurrentEllement.getTypeID() == "InventoryItem") { int tmp = Parent.InventoryNbElems[this.Index]; Parent.InventoryNbElems[this.Index] = Parent.CurrentEllement.getNbElement(); Parent.CurrentEllement.setNbElement(tmp); Item tmpI = Parent.InventoryItems[this.Index]; Parent.InventoryItems[this.Index] = Parent.CurrentEllement.getItem(); Parent.CurrentEllement.setItem(tmpI); } } } else { Item tmp = Parent.InventoryItems[this.Index]; int tmpNb = Parent.InventoryNbElems[this.Index]; Parent.InventoryItems[this.Index] = Parent.CurrentDragItem; Parent.InventoryNbElems[this.Index] = Parent.CurrentEllement.getNbElement(); if (Parent.CurrentEllement.getTypeID() == "InventoryItem") { InventoryItem invItem = (InventoryItem)Parent.CurrentEllement; Parent.InventoryItems[Parent.CurrentEllement.getIndex()] = tmp; Parent.InventoryNbElems[Parent.CurrentEllement.getIndex()] = tmpNb; Parent.CurrentEllement = invItem; } else if (Parent.CurrentEllement.getTypeID() == "ListItem") { } } Parent.CurrentEllement.changeState(); StateHasChanged(); Parent.StateChange(); } private void OnDragStart() { Parent.CurrentDragItem = Parent.InventoryItems[this.Index]; Parent.CurrentEllement = this; } public int getIndex() { return Index; } } }