Fix TypeRank
This commit is contained in:
parent
58903a998e
commit
0937e12b21
@ -48,9 +48,6 @@ public class CmdFactionsRank extends FactionsCommand
|
||||
private Rel targetRank = null;
|
||||
private Rel rank = null;
|
||||
|
||||
// This one is permanent
|
||||
private TypeRank rankReader = new TypeRank();
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
@ -62,7 +59,7 @@ public class CmdFactionsRank extends FactionsCommand
|
||||
|
||||
// Parameters
|
||||
this.addParameter(TypeMPlayer.get(), "player");
|
||||
this.addParameter(rankReader, "action", "show");
|
||||
this.addParameter(TypeRank.get(), "action", "show");
|
||||
this.addParameter(TypeFaction.get(), "faction", "their");
|
||||
|
||||
// Requirements
|
||||
@ -141,7 +138,7 @@ public class CmdFactionsRank extends FactionsCommand
|
||||
// Rank if any passed.
|
||||
if (this.argIsSet(1))
|
||||
{
|
||||
this.rankReader.setStartRank(targetRank);
|
||||
this.setParameterType(1, TypeRank.get(targetRank));
|
||||
rank = this.readArg();
|
||||
}
|
||||
|
||||
@ -235,7 +232,7 @@ public class CmdFactionsRank extends FactionsCommand
|
||||
// Don't change their rank to something they already are.
|
||||
if (target.getRole() == rank)
|
||||
{
|
||||
throw new MassiveException().addMsg("%s <b>is already %s<b>.", target.describeTo(msender), rank.getColor() + rank.getDescPlayerOne());
|
||||
throw new MassiveException().addMsg("%s <b>is already %s.", target.describeTo(msender), rank.getDescPlayerOne());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,16 @@
|
||||
package com.massivecraft.factions.cmd.type;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.massivecore.collections.MassiveMap;
|
||||
import com.massivecraft.massivecore.collections.MassiveSet;
|
||||
import com.massivecraft.massivecore.command.type.enumeration.TypeEnum;
|
||||
import com.massivecraft.massivecore.util.MUtil;
|
||||
|
||||
public class TypeRank extends TypeEnum<Rel>
|
||||
{
|
||||
@ -29,31 +35,51 @@ public class TypeRank extends TypeEnum<Rel>
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
// Because of the caching in TypeAbstractChoice, we want only one of each instance.
|
||||
|
||||
// Can be used to promote and demote.
|
||||
public static TypeRank get(Rel rank) { return new TypeRank(rank); }
|
||||
// Null instance, doesn't allow promote and demote.
|
||||
private static final TypeRank i = new TypeRank(null);
|
||||
public static TypeRank get() { return i; }
|
||||
|
||||
// Cached instances, does allow promote and demote.
|
||||
private static final Map<Rel, TypeRank> instances;
|
||||
static
|
||||
{
|
||||
Map<Rel, TypeRank> result = new MassiveMap<>();
|
||||
for (Rel rel : Rel.values())
|
||||
{
|
||||
if ( ! rel.isRank()) continue;
|
||||
result.put(rel, new TypeRank(rel));
|
||||
}
|
||||
result.put(null, i);
|
||||
instances = Collections.unmodifiableMap(result);
|
||||
}
|
||||
public static TypeRank get(Rel rank) { return instances.get(rank); }
|
||||
|
||||
// Constructor
|
||||
public TypeRank(Rel rank)
|
||||
{
|
||||
super(Rel.class);
|
||||
if (rank != null && ! rank.isRank()) throw new IllegalArgumentException(rank + " is not a valid rank");
|
||||
this.startRank = rank;
|
||||
|
||||
// Do setAll with only ranks.
|
||||
List<Rel> all = MUtil.list(Rel.values());
|
||||
for (Iterator<Rel> it = all.iterator(); it.hasNext(); )
|
||||
{
|
||||
if ( ! it.next().isRank()) it.remove();
|
||||
}
|
||||
|
||||
// Can not be used to promote and demote.
|
||||
private static TypeRank i = new TypeRank();
|
||||
public static TypeRank get() { return i; }
|
||||
public TypeRank()
|
||||
{
|
||||
this(null);
|
||||
this.setAll(all);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private Rel startRank;
|
||||
// This must be final, for caching in TypeAbstractChoice to work.
|
||||
private final Rel startRank;
|
||||
public Rel getStartRank() { return this.startRank; }
|
||||
public void setStartRank(Rel startRank) { this.startRank = startRank; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
|
Loading…
Reference in New Issue
Block a user