2011-10-12 17:25:01 +02:00
|
|
|
package com.massivecraft.factions.util;
|
|
|
|
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
|
2011-10-24 09:28:08 +02:00
|
|
|
import com.massivecraft.factions.Conf;
|
2011-10-12 17:25:01 +02:00
|
|
|
import com.massivecraft.factions.FPlayer;
|
|
|
|
import com.massivecraft.factions.Faction;
|
|
|
|
import com.massivecraft.factions.iface.RelationParticipator;
|
2011-10-24 02:33:30 +02:00
|
|
|
import com.massivecraft.factions.struct.FFlag;
|
2011-10-23 17:30:41 +02:00
|
|
|
import com.massivecraft.factions.struct.Rel;
|
2011-10-12 17:25:01 +02:00
|
|
|
import com.massivecraft.factions.zcore.util.TextUtil;
|
|
|
|
|
|
|
|
public class RelationUtil
|
|
|
|
{
|
|
|
|
public static String describeThatToMe(RelationParticipator that, RelationParticipator me, boolean ucfirst)
|
|
|
|
{
|
|
|
|
String ret = "";
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-23 20:50:49 +02:00
|
|
|
if (that == null)
|
|
|
|
{
|
|
|
|
return "A server admin";
|
|
|
|
}
|
|
|
|
|
2011-10-12 18:48:47 +02:00
|
|
|
Faction thatFaction = getFaction(that);
|
|
|
|
if (thatFaction == null) return "ERROR"; // ERROR
|
|
|
|
|
|
|
|
Faction myFaction = getFaction(me);
|
2012-01-18 13:01:50 +01:00
|
|
|
// if (myFaction == null) return thatFaction.getTag(); // no relation, but can show basic name or tag
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
if (that instanceof Faction)
|
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
if (me instanceof FPlayer && myFaction == thatFaction)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
|
|
|
ret = "your faction";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-10-22 16:00:24 +02:00
|
|
|
ret = thatFaction.getTag();
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
else if (that instanceof FPlayer)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
FPlayer fplayerthat = (FPlayer) that;
|
2011-10-12 17:25:01 +02:00
|
|
|
if (that == me)
|
|
|
|
{
|
|
|
|
ret = "you";
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
else if (thatFaction == myFaction)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
|
|
|
ret = fplayerthat.getNameAndTitle();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ret = fplayerthat.getNameAndTag();
|
|
|
|
}
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
if (ucfirst)
|
|
|
|
{
|
|
|
|
ret = TextUtil.upperCaseFirst(ret);
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
return "" + getColorOfThatToMe(that, me) + ret;
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-13 22:49:41 +02:00
|
|
|
public static String describeThatToMe(RelationParticipator that, RelationParticipator me)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
|
|
|
return describeThatToMe(that, me, false);
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-24 11:07:06 +02:00
|
|
|
public static Rel getRelationOfThatToMe(RelationParticipator that, RelationParticipator me)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 13:02:48 +02:00
|
|
|
return getRelationOfThatToMe(that, me, false);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-24 11:07:06 +02:00
|
|
|
public static Rel getRelationOfThatToMe(RelationParticipator that, RelationParticipator me, boolean ignorePeaceful)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
Rel ret = null;
|
|
|
|
|
2011-10-24 13:02:48 +02:00
|
|
|
Faction myFaction = getFaction(me);
|
|
|
|
if (myFaction == null) return Rel.NEUTRAL; // ERROR
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-24 13:02:48 +02:00
|
|
|
Faction thatFaction = getFaction(that);
|
|
|
|
if (thatFaction == null) return Rel.NEUTRAL; // ERROR
|
2011-10-24 11:07:06 +02:00
|
|
|
|
|
|
|
// The faction with the lowest wish "wins"
|
2011-10-24 13:02:48 +02:00
|
|
|
if (thatFaction.getRelationWish(myFaction).isLessThan(myFaction.getRelationWish(thatFaction)))
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 13:02:48 +02:00
|
|
|
ret = thatFaction.getRelationWish(myFaction);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-24 11:07:06 +02:00
|
|
|
else
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 13:02:48 +02:00
|
|
|
ret = myFaction.getRelationWish(thatFaction);
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-24 13:02:48 +02:00
|
|
|
if (myFaction.equals(thatFaction))
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
ret = Rel.MEMBER;
|
|
|
|
// Do officer and leader check
|
2011-10-24 13:02:48 +02:00
|
|
|
//P.p.log("getRelationOfThatToMe the factions are the same for "+that.getClass().getSimpleName()+" and observer "+me.getClass().getSimpleName());
|
2011-10-24 11:07:06 +02:00
|
|
|
if (that instanceof FPlayer)
|
|
|
|
{
|
|
|
|
ret = ((FPlayer)that).getRole();
|
2011-10-24 13:02:48 +02:00
|
|
|
//P.p.log("getRelationOfThatToMe it was a player and role is "+ret);
|
2011-10-24 11:07:06 +02:00
|
|
|
}
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-24 13:02:48 +02:00
|
|
|
else if (!ignorePeaceful && (thatFaction.getFlag(FFlag.PEACEFUL) || myFaction.getFlag(FFlag.PEACEFUL)))
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 11:07:06 +02:00
|
|
|
ret = Rel.TRUCE;
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-24 11:07:06 +02:00
|
|
|
return ret;
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
public static Faction getFaction(RelationParticipator rp)
|
|
|
|
{
|
|
|
|
if (rp instanceof Faction)
|
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
return (Faction) rp;
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
if (rp instanceof FPlayer)
|
|
|
|
{
|
2011-10-12 18:48:47 +02:00
|
|
|
return ((FPlayer) rp).getFaction();
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-12 17:25:01 +02:00
|
|
|
// ERROR
|
|
|
|
return null;
|
|
|
|
}
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-10-21 20:08:54 +02:00
|
|
|
public static ChatColor getColorOfThatToMe(RelationParticipator that, RelationParticipator me)
|
2011-10-12 17:25:01 +02:00
|
|
|
{
|
2011-10-24 09:28:08 +02:00
|
|
|
Faction thatFaction = getFaction(that);
|
|
|
|
if (thatFaction != null && thatFaction != getFaction(me))
|
2011-10-21 20:08:54 +02:00
|
|
|
{
|
2011-10-24 09:28:08 +02:00
|
|
|
if (thatFaction.getFlag(FFlag.FRIENDLYFIRE) == true)
|
2011-10-22 17:03:49 +02:00
|
|
|
{
|
2011-10-24 09:28:08 +02:00
|
|
|
return Conf.colorFriendlyFire;
|
2011-10-22 17:03:49 +02:00
|
|
|
}
|
|
|
|
|
2011-10-24 09:28:08 +02:00
|
|
|
if (thatFaction.getFlag(FFlag.PVP) == false)
|
2011-10-22 17:03:49 +02:00
|
|
|
{
|
2011-10-24 09:28:08 +02:00
|
|
|
return Conf.colorNoPVP;
|
2011-10-22 17:03:49 +02:00
|
|
|
}
|
2011-10-24 09:28:08 +02:00
|
|
|
}
|
2011-10-24 11:07:06 +02:00
|
|
|
return getRelationOfThatToMe(that, me).getColor();
|
2011-10-12 17:25:01 +02:00
|
|
|
}
|
|
|
|
}
|