package ru.alastar.game;
import java.util.ArrayList;
import ru.alastar.main.net.ConnectedClient;
import ru.alastar.main.net.Server;
import ru.alastar.main.net.responses.AddToContainerResponse;
import ru.alastar.main.net.responses.RemoveFromContainerResponse;
public class Inventory implements IContainer
{
public int entityId, maxItems;
public ArrayList<Item> items;
public Inventory(int i, int m)
{
this.entityId = i;
this.maxItems = m;
this.items = new ArrayList<Item>();
}
public Inventory(int i, int m, ArrayList<Item> its)
{
this.entityId = i;
this.maxItems = m;
this.items = its;
}
@Override
public void AddItem(Item i)
{
ConnectedClient c;
if (!items.contains(i))
{
Item st = getSameTypeItem(i.caption);
if (st == null)
{
if (items.size() + 1 <= maxItems)
{
items.add(i);
AddToContainerResponse r = new AddToContainerResponse();
r.name = "inv";
r.amount = i.amount;
r.captiion = i.caption;
r.id = i.id;
if (Server.getEntity(entityId) != null)
{
c = Server.getClient(Server.getEntity(entityId));
if (c != null)
Server.SendTo(c.connection, r);
}
} else
{
Server.warnEntity(Server.getEntity(entityId),
"Your backpack is full!");
}
} else
{
// Main.Log("[INVENTORY]",
// "Items stack exists! Adding items to it. Stack size: " +
// st.amount + ". Adding " + i.amount);
st.amount += i.amount;
// Main.Log("[INVENTORY]", "Added! Now its " + st.amount);
AddToContainerResponse r = new AddToContainerResponse();
r.name = "inv";
r.amount = st.amount;
r.captiion = st.caption;
r.id = st.id;
if (Server.getEntity(entityId) != null)
{
c = Server.getClient(Server.getEntity(entityId));
if (c != null)
Server.SendTo(c.connection, r);
}
Server.DestroyItem(i);
}
}
}
@Override
public void RemoveItem(Item i)
{
if (items.contains(i))
items.remove(i);
RemoveFromContainerResponse r = new RemoveFromContainerResponse();
r.name = "inv";
r.id = i.id;
Server.SendTo(Server.getClient(Server.getEntity(entityId)).connection,
r);
}
@Override
public void RemoveItem(int i)
{
for (Item it : items)
{
if (it.id == i)
{
items.remove(it);
RemoveFromContainerResponse r = new RemoveFromContainerResponse();
r.name = "inv";
r.id = it.id;
Server.SendTo(
Server.getClient(Server.getEntity(entityId)).connection,
r);
break;
}
}
}
@Override
public Item getItem(int i)
{
for (Item it : items)
{
if (it.id == i)
{
return it;
}
}
return null;
}
public Item getSameTypeItem(String s)
{
for (Item it : items)
{
if (it.caption.equals(s))
{
return it;
}
}
return null;
}
@Override
public boolean haveItem(int i)
{
for (Item it : items)
{
if (it.id == i)
{
return true;
}
}
return false;
}
@Override
public ArrayList<Item> getItems()
{
return items;
}
public Item getItem(String s)
{
for (Item it : items)
{
if (it.caption.equals(s))
{
return it;
}
}
return null;
}
public void consume(Item item)
{
if (item.amount <= 1)
{
Server.DestroyItem(this, item);
RemoveFromContainerResponse r = new RemoveFromContainerResponse();
r.name = "inv";
r.id = item.id;
Server.SendTo(
Server.getClient(Server.getEntity(entityId)).connection, r);
} else
{
--item.amount;
AddToContainerResponse r = new AddToContainerResponse();
r.name = "inv";
r.id = item.id;
r.amount = item.amount;
r.attrs = item.attributes.values;
r.captiion = item.caption;
Server.SendTo(
Server.getClient(Server.getEntity(entityId)).connection, r);
}
}
}