package dekk.pw.pokemate.tasks;
import com.pokegoapi.api.pokemon.HatchedEgg;
import com.pokegoapi.api.pokemon.Pokemon;
import com.pokegoapi.exceptions.LoginFailedException;
import com.pokegoapi.exceptions.RemoteServerException;
import dekk.pw.pokemate.Context;
import dekk.pw.pokemate.PokeMateUI;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
class HatchEgg extends Task implements Runnable{
private static final Logger logger = LogManager.getLogger(HatchEgg.class);
HatchEgg(final Context context) {
super(context);
}
@Override
public void run() {
try {
List<HatchedEgg> eggs = context.getInventories().getHatchery().queryHatchedEggs();
eggs.forEach(egg -> {
Pokemon hatchedPokemon = null;
hatchedPokemon = context.getInventories().getPokebank().getPokemonById(egg.getId());
String details = String.format("candy: %s exp: %s stardust: %s", egg.getCandy(), egg.getExperience(), egg.getStardust());
if (hatchedPokemon == null) {
PokeMateUI.toast("Hatched egg " + egg.getId() + " " + details, "Hatched egg!", "icons/items/egg.png");
context.setConsoleString("HatchEgg", "Hatched egg " + egg.getId() + " " + details);
} else {
PokeMateUI.toast("Hatched " + hatchedPokemon.getPokemonId() + " with " + hatchedPokemon.getCp() + " CP " + " - " + details,
"Hatched egg!",
"icons/items/egg.png");
context.setConsoleString("HatchEgg", "Hatched " + hatchedPokemon.getPokemonId() + " with " + hatchedPokemon.getCp() + " CP " + " - " + details);
}
});
} catch (LoginFailedException e) {
logger.error("Login Failed", e);
} catch (RemoteServerException e) {
context.setConsoleString("HatchEgg", "Server Error");
logger.error("Remote Server Exception", e);
} finally {
context.addTask(new HatchEgg(context));
}
}
}