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; } }