package matteroverdrive.data.quest.logic;
import cpw.mods.fml.common.eventhandler.Event;
import matteroverdrive.api.events.MOEventTransport;
import matteroverdrive.api.quest.IQuestReward;
import matteroverdrive.api.quest.QuestStack;
import matteroverdrive.data.BlockPos;
import net.minecraft.entity.player.EntityPlayer;
import java.util.List;
import java.util.Random;
/**
* Created by Simeon on 12/30/2015.
*/
public class QuestLogicTeleport extends AbstractQuestLogic
{
BlockPos pos;
int minDistance;
int maxDistance;
public QuestLogicTeleport()
{
this(null);
}
public QuestLogicTeleport(BlockPos pos)
{
this(pos,0,0);
}
public QuestLogicTeleport(BlockPos pos,int minDistance,int maxDistance)
{
this.pos = pos;
this.minDistance = minDistance;
this.maxDistance = maxDistance;
}
@Override
public String modifyInfo(QuestStack questStack, String info)
{
return info;
}
@Override
public boolean isObjectiveCompleted(QuestStack questStack, EntityPlayer entityPlayer, int objectiveIndex)
{
return hasTeleported(questStack);
}
@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)
{
if (event instanceof MOEventTransport)
{
if (pos != null)
{
int distance = ((MOEventTransport) event).destination.getDistance(pos.x, pos.y, pos.z);
if (distance < maxDistance && distance > minDistance)
{
if (autoComplete)
questStack.markComplited(entityPlayer,false);
setTeleported(questStack);
return true;
}
}else
{
if (autoComplete)
questStack.markComplited(entityPlayer,false);
setTeleported(questStack);
return true;
}
}
return false;
}
@Override
public void onTaken(QuestStack questStack, EntityPlayer entityPlayer)
{
}
@Override
public void onCompleted(QuestStack questStack, EntityPlayer entityPlayer)
{
}
@Override
public void modifyRewards(QuestStack questStack, EntityPlayer entityPlayer, List<IQuestReward> rewards)
{
}
public void setTeleported(QuestStack questStack)
{
initTag(questStack);
getTag(questStack).setBoolean("Teleported",true);
}
public boolean hasTeleported(QuestStack questStack)
{
if (hasTag(questStack))
{
return getTag(questStack).getBoolean("Teleported");
}
return false;
}
}