forked from MagicBane/Server
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.
181 lines
5.5 KiB
181 lines
5.5 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.devcmd; |
|
|
|
import engine.Enum.GameObjectType; |
|
import engine.gameManager.ChatManager; |
|
import engine.gameManager.DbManager; |
|
import engine.objects.*; |
|
|
|
import java.util.ArrayList; |
|
|
|
public abstract class AbstractDevCmd { |
|
|
|
protected final ArrayList<String> cmdStrings; |
|
private AbstractGameObject tr; |
|
private String rsult; |
|
|
|
public AbstractDevCmd(String cmdString) { |
|
super(); |
|
this.cmdStrings = new ArrayList<>(); |
|
this.addCmdString(cmdString); |
|
this.rsult = ""; |
|
} |
|
|
|
/* |
|
* Misc tools/helpers |
|
*/ |
|
protected static Building getTargetAsBuilding(PlayerCharacter pc) { |
|
int targetType = pc.getLastTargetType().ordinal(); |
|
int targetID = pc.getLastTargetID(); |
|
if (targetType == GameObjectType.Building.ordinal()) { |
|
Building b = (Building) DbManager |
|
.getFromCache(GameObjectType.Building, targetID); |
|
if (b == null) { |
|
ChatManager.chatSystemError( |
|
pc, |
|
"Command Failed. Could not find building of ID " |
|
+ targetID); |
|
return null; |
|
} |
|
return b; |
|
} else { |
|
return null; |
|
} |
|
} |
|
|
|
protected static Mob getTargetAsMob(PlayerCharacter pc) { |
|
int targetType = pc.getLastTargetType().ordinal(); |
|
int targetID = pc.getLastTargetID(); |
|
if (targetType == GameObjectType.Mob.ordinal()) { |
|
Mob b = Mob.getMob(targetID); |
|
if (b == null) { |
|
ChatManager.chatSystemError(pc, |
|
"Command Failed. Could not find Mob of ID " + targetID); |
|
return null; |
|
} |
|
return b; |
|
} else { |
|
return null; |
|
} |
|
} |
|
|
|
protected static NPC getTargetAsNPC(PlayerCharacter pc) { |
|
int targetType = pc.getLastTargetType().ordinal(); |
|
int targetID = pc.getLastTargetID(); |
|
if (targetType == GameObjectType.NPC.ordinal()) { |
|
NPC b = NPC.getFromCache(targetID); |
|
if (b == null) { |
|
ChatManager.chatSystemError(pc, |
|
"Command Failed. Could not find NPC of ID " + targetID); |
|
return null; |
|
} |
|
return b; |
|
} else { |
|
return null; |
|
} |
|
} |
|
|
|
/** |
|
* This function is called by the DevCmdManager. Method splits argString |
|
* into a String array and then calls the subclass specific _doCmd method. |
|
*/ |
|
|
|
public void doCmd(PlayerCharacter pcSender, String argString, |
|
AbstractGameObject target) { |
|
String[] args = argString.split(" "); |
|
|
|
if (pcSender == null) { |
|
return; |
|
} |
|
|
|
if (args.length > 0 && args[0].equalsIgnoreCase("?")) { |
|
this.sendHelp(pcSender); |
|
this.sendUsage(pcSender); |
|
} else { |
|
this.tr = target; |
|
this._doCmd(pcSender, args, target); |
|
} |
|
} |
|
|
|
protected abstract void _doCmd(PlayerCharacter pcSender, String[] args, |
|
AbstractGameObject target); |
|
|
|
/** |
|
* Returns the string sent to the client that displays how to use this |
|
* command. |
|
*/ |
|
|
|
public final String getUsageString() { |
|
return "Usage: " + this._getUsageString(); |
|
} |
|
|
|
protected abstract String _getUsageString(); |
|
|
|
/** |
|
* Returns the string sent to the client that displays what this command |
|
* does. |
|
*/ |
|
|
|
public final String getHelpString() { |
|
return this.getMainCmdString() + ": " + this._getHelpString(); |
|
} |
|
|
|
protected abstract String _getHelpString(); |
|
|
|
public final ArrayList<String> getCmdStrings() { |
|
return cmdStrings; |
|
} |
|
|
|
public final String getMainCmdString() { |
|
return this.cmdStrings.get(0); |
|
} |
|
|
|
protected void addCmdString(String cmdString) { |
|
String lowercase = cmdString.toLowerCase(); |
|
this.cmdStrings.add(lowercase); |
|
} |
|
|
|
public AbstractGameObject getTarget() { |
|
return this.tr; |
|
} |
|
|
|
public void setTarget(AbstractGameObject ago) { |
|
this.tr = ago; |
|
} |
|
|
|
public String getResult() { |
|
return this.rsult; |
|
} |
|
|
|
public void setResult(String result) { |
|
this.rsult = result; |
|
} |
|
|
|
/* |
|
* Helper functions |
|
*/ |
|
protected void sendUsage(PlayerCharacter pc) { |
|
this.throwbackError(pc, this.getUsageString()); |
|
} |
|
|
|
protected void sendHelp(PlayerCharacter pc) { |
|
this.throwbackError(pc, this.getHelpString()); |
|
} |
|
|
|
protected void throwbackError(PlayerCharacter pc, String msgText) { |
|
ChatManager.chatSystemError(pc, msgText); |
|
} |
|
|
|
protected void throwbackInfo(PlayerCharacter pc, String msgText) { |
|
ChatManager.chatSystemInfo(pc, msgText); |
|
} |
|
|
|
}
|
|
|