You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.5 KiB
103 lines
2.5 KiB
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; |
|
} |
|
|
|
}
|
|
|