Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace ChatMin.CommandPatern
- {
- public class Invoker
- {
- private Command _command;
- public Receiver _receiver;
- private SocketClass socket;
- public Invoker()
- {
- _receiver=new Receiver();
- }
- public void SetCommand(SocketClass socket,string rawText)
- {
- var switchCommand = GetSwitchCommand(rawText);
- var parameters= GetParams(rawText);
- this._command = new CommandFactory().GetCommand(rawText,parameters,switchCommand);
- this.socket = socket;
- }
- public void ExecuteCommand()
- {
- _receiver.Execute(socket,_command);
- }
- private string GetSwitchCommand(string rawText)
- {
- var commandArray = GetParams(rawText);
- return MenuCommand.commands.FirstOrDefault(f => commandArray[0].Contains(f))?.ToLower();
- }
- private List<string> GetParams(string rawText)
- {
- var cmds = Regex.Match(rawText, @":(!.+?)\r\n").Groups[1].Value;
- var parameters = cmds.Split(new Char[] { ' ' }).ToList();
- return parameters;
- }
- }
- public class CommandFactory
- {
- public Command GetCommand(string rawText,List<string> parameters,string switchCommand)
- {
- if (parameters.Count == 0) return new NotFound();
- parameters.RemoveAt(0);
- switch (switchCommand)
- {
- case "!join":
- return new Join().CheckCommandParams(parameters);
- case "!say":
- return new Say().CheckCommandParams(rawText,parameters);
- default:
- return new NotFound();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement