|
|
|
package engine.devcmd.cmds;
|
|
|
|
|
|
|
|
import engine.Enum.GameObjectType;
|
|
|
|
import engine.InterestManagement.WorldGrid;
|
|
|
|
import engine.devcmd.AbstractDevCmd;
|
|
|
|
import engine.gameManager.DbManager;
|
|
|
|
import engine.objects.AbstractGameObject;
|
|
|
|
import engine.objects.Guild;
|
|
|
|
import engine.objects.NPC;
|
|
|
|
import engine.objects.PlayerCharacter;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Dev command to set the guild of targeted npc.
|
|
|
|
* Argument is a valid guild UID
|
|
|
|
*/
|
|
|
|
public class SetGuildCmd extends AbstractDevCmd {
|
|
|
|
|
|
|
|
|
|
|
|
public SetGuildCmd() {
|
|
|
|
super("setguild");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
|
|
|
AbstractGameObject target) {
|
|
|
|
|
|
|
|
NPC targetNPC;
|
|
|
|
Guild targetGuild;
|
|
|
|
|
|
|
|
if (validateUserInput(pcSender, target, args) == false) {
|
|
|
|
this.sendUsage(pcSender);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Valid arguments, attempt to set guild of NPC.
|
|
|
|
|
|
|
|
targetNPC = getTargetAsNPC(pcSender);
|
|
|
|
targetGuild = Guild.getGuild(Integer.parseInt(args[0]));
|
|
|
|
|
|
|
|
DbManager.NPCQueries.SET_PROPERTY(targetNPC, "npc_guildID", args[0]);
|
|
|
|
targetNPC.setGuild(targetGuild);
|
|
|
|
|
|
|
|
// Refresh loaded game object
|
|
|
|
|
|
|
|
WorldGrid.updateObject(targetNPC, pcSender);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected String _getUsageString() {
|
|
|
|
return "' /setguild [UID]";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected String _getHelpString() {
|
|
|
|
return "Assigns NPC to a given guild";
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean validateUserInput(PlayerCharacter pcSender, AbstractGameObject currTarget, String[] userInput) {
|
|
|
|
|
|
|
|
Guild tempGuild;
|
|
|
|
|
|
|
|
// Incorrect number of arguments
|
|
|
|
|
|
|
|
if (userInput.length != 1)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
// No target
|
|
|
|
|
|
|
|
if (currTarget == null) {
|
|
|
|
throwbackError(pcSender, "Requires an NPC be targeted");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Target must be an NPC
|
|
|
|
|
|
|
|
if (currTarget.getObjectType() != GameObjectType.NPC) {
|
|
|
|
throwbackError(pcSender, "Invalid object. Must be an NPC");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Argument must parse as a int.
|
|
|
|
|
|
|
|
try {
|
|
|
|
Integer.parseInt(userInput[0]);
|
|
|
|
} catch (NumberFormatException | NullPointerException e) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Argument must return a valid guild
|
|
|
|
|
|
|
|
tempGuild = Guild.getGuild(Integer.parseInt(userInput[0]));
|
|
|
|
|
|
|
|
if (tempGuild == null) {
|
|
|
|
throwbackError(pcSender, "Invalid Guild UID");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|