/*
* This file is part of Matter Overdrive
* Copyright (c) 2015., Simeon Radivoev, All rights reserved.
*
* Matter Overdrive is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Matter Overdrive is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>.
*/
package matteroverdrive.data.quest;
import matteroverdrive.api.quest.IQuestLogic;
import matteroverdrive.api.quest.QuestStack;
import matteroverdrive.util.MOStringHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import java.util.Random;
/**
* Created by Simeon on 11/19/2015.
*/
public class RandomQuestText extends GenericQuest
{
int variationsCount;
public RandomQuestText(IQuestLogic questLogic, String title, int variationsCount,int xpReward)
{
super(questLogic, title,xpReward);
this.variationsCount = variationsCount;
}
@Override
public void initQuestStack(Random random, QuestStack questStack, EntityPlayer entityPlayer)
{
super.initQuestStack(random,questStack,entityPlayer);
NBTTagCompound data = questStack.getTagCompound();
if (data == null)
{
data = new NBTTagCompound();
questStack.setTagCompound(data);
}
data.setShort("Variation",(short) random.nextInt(variationsCount));
}
@Override
public boolean areQuestStacksEqual(QuestStack questStackOne, QuestStack questStackTwo)
{
if (questStackOne == null && questStackTwo == null)
{
return true;
}else
{
if (questStackOne.getTagCompound() == null && questStackTwo.getTagCompound() == null)
{
return super.areQuestStacksEqual(questStackOne,questStackTwo);
}else if (questStackOne.getTagCompound() != null && questStackTwo.getTagCompound() != null)
{
return super.areQuestStacksEqual(questStackOne,questStackTwo) && questStackOne.getTagCompound().getShort("Variation") == questStackTwo.getTagCompound().getShort("Variation");
}else
{
return false;
}
}
}
public int getVariation(QuestStack questStack)
{
if (questStack.getTagCompound() != null)
{
return questStack.getTagCompound().getShort("Variation");
}
return 0;
}
@Override
public String getTitle(QuestStack questStack)
{
return questLogic.modifyTitle(questStack,MOStringHelper.translateToLocal("quest." + title + "." + getVariation(questStack) + ".title"));
}
@Override
public String getTitle(QuestStack questStack,EntityPlayer entityPlayer)
{
return questLogic.modifyTitle(questStack,replaceVariables(MOStringHelper.translateToLocal("quest." + title + "." + getVariation(questStack) + ".title"),entityPlayer));
}
@Override
public String getInfo(QuestStack questStack, EntityPlayer entityPlayer)
{
return questLogic.modifyInfo(questStack,replaceVariables(MOStringHelper.translateToLocal("quest." + title + "." + getVariation(questStack) + ".info"),entityPlayer));
}
@Override
public String getObjective(QuestStack questStack, EntityPlayer entityPlayer, int objectiveIndex)
{
return questLogic.modifyObjective(questStack,entityPlayer,replaceVariables(MOStringHelper.translateToLocal("quest." + title + "." + getVariation(questStack) + ".objective."+objectiveIndex),entityPlayer),objectiveIndex);
}
}