package matteroverdrive.data.quest.logic;
import cpw.mods.fml.common.eventhandler.Event;
import matteroverdrive.api.quest.IQuestReward;
import matteroverdrive.api.quest.QuestStack;
import matteroverdrive.entity.player.AndroidPlayer;
import matteroverdrive.init.MatterOverdriveItems;
import matteroverdrive.util.MOStringHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import java.util.List;
import java.util.Random;
/**
* Created by Simeon on 12/24/2015.
*/
public class QuestLogicBecomeAndroid extends AbstractQuestLogic
{
boolean talkToComplete;
@Override
public String modifyInfo(QuestStack questStack, String info)
{
return info;
}
@Override
public int modifyObjectiveCount(QuestStack questStack, EntityPlayer entityPlayer, int count)
{
if (isObjectiveCompleted(questStack,entityPlayer,0))
{
return 2;
}
return 1;
}
@Override
public boolean isObjectiveCompleted(QuestStack questStack, EntityPlayer entityPlayer, int objectiveIndex)
{
if (objectiveIndex == 0)
{
boolean[] hasParts = new boolean[4];
int[] slots = new int[4];
for (int i = 0; i < entityPlayer.inventory.getSizeInventory(); i++)
{
if (entityPlayer.inventory.getStackInSlot(i) != null && entityPlayer.inventory.getStackInSlot(i).getItem() == MatterOverdriveItems.androidParts)
{
int damage = entityPlayer.inventory.getStackInSlot(i).getItemDamage();
if (damage < hasParts.length)
{
hasParts[damage] = true;
slots[damage] = i;
}
}
}
for (boolean hasPart : hasParts)
{
if (!hasPart)
{
return false;
}
}
return true;
}
return false;
}
@Override
public String modifyObjective(QuestStack questStack, EntityPlayer entityPlayer, String objective, int objectiveIndex)
{
return objective;
}
@Override
public void initQuestStack(Random random, QuestStack questStack)
{
}
@Override
public boolean onEvent(QuestStack questStack, Event event, EntityPlayer entityPlayer)
{
return false;
}
@Override
public void onTaken(QuestStack questStack, EntityPlayer entityPlayer)
{
}
@Override
public void onCompleted(QuestStack questStack, EntityPlayer entityPlayer)
{
boolean[] hasParts = new boolean[4];
int[] slots = new int[4];
for (int i = 0; i < entityPlayer.inventory.getSizeInventory();i++)
{
if(entityPlayer.inventory.getStackInSlot(i) != null && entityPlayer.inventory.getStackInSlot(i).getItem() == MatterOverdriveItems.androidParts)
{
int damage = entityPlayer.inventory.getStackInSlot(i).getItemDamage();
if (damage < hasParts.length)
{
hasParts[damage] = true;
slots[damage] = i;
}
}
}
for (boolean hasPart : hasParts) {
if (!hasPart) {
if (!entityPlayer.worldObj.isRemote) {
ChatComponentText componentText = new ChatComponentText(EnumChatFormatting.GOLD + "<Mad Scientist>" + EnumChatFormatting.RED + MOStringHelper.translateToLocal("entity.mad_scientist.line.fail." + entityPlayer.getRNG().nextInt(4)));
componentText.setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED));
entityPlayer.addChatMessage(componentText);
}
return;
}
}
if (!entityPlayer.worldObj.isRemote) {
for (int slot : slots) {
entityPlayer.inventory.decrStackSize(slot, 1);
}
}
AndroidPlayer.get(entityPlayer).startConversion();
entityPlayer.closeScreen();
}
@Override
public void modifyRewards(QuestStack questStack, EntityPlayer entityPlayer, List<IQuestReward> rewards)
{
}
public QuestLogicBecomeAndroid setTalkToComplete(boolean talkToComplete)
{
this.talkToComplete = talkToComplete;
return this;
}
}