package dekk.pw.pokemate.tasks;
import com.pokegoapi.exceptions.LoginFailedException;
import com.pokegoapi.exceptions.RemoteServerException;
import dekk.pw.pokemate.Config;
import dekk.pw.pokemate.Context;
import dekk.pw.pokemate.PokeMate;
import dekk.pw.pokemate.PokeMateUI;
import dekk.pw.pokemate.util.StringConverter;
import dekk.pw.pokemate.util.Time;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.text.SimpleDateFormat;
import java.util.Date;
import static POGOProtos.Inventory.Item.ItemIdOuterClass.ItemId;
/**
* Created by TimD on 7/22/2016.
*/
class DropItems extends Task implements Runnable {
private static final Logger logger = LogManager.getLogger(DropItems.class);
DropItems(final Context context) {
super(context);
}
@Override
public void run() {
StringBuilder removedItemsString = new StringBuilder();
try {
Config.getDroppedItems().forEach( (itemToDrop, minAmount) -> {
ItemId id = ItemId.valueOf(itemToDrop);
try {
int countToDrop = context.getApi().getInventories().getItemBag().getItem(id).getCount() - minAmount;
if (countToDrop > 0) {
context.getApi().getInventories().getItemBag().removeItem(id, countToDrop);
String removedItem = "Removed " + StringConverter.titleCase(id.name()) + "(x" + countToDrop + ")";
removedItemsString.append(removedItem + " ");
PokeMateUI.toast(removedItem, "Items removed!", "icons/items/" + id.getNumber() + ".png");
}
} catch (LoginFailedException e) {
logger.error("Login Failed", e);
context.setConsoleString("DropItems", "Login Failed.");
} catch (RemoteServerException e) {
context.setConsoleString("DropItems", "Server Error.");
logger.error("Remote Server Exception", e);
}
});
} finally {
if (!removedItemsString.toString().equals(""))
context.setConsoleString("DropItems", removedItemsString.toString());
context.addTask(new DropItems(context));
}
}
}