Advertisement
coolman_bg84

Untitled

Apr 5th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.87 KB | None | 0 0
  1. namespace ChatMin.CommandPatern
  2. {
  3.     public class Invoker
  4.     {
  5.         private Command _command;
  6.         public Receiver _receiver;
  7.         private SocketClass socket;
  8.  
  9.         public Invoker()
  10.         {
  11.             _receiver=new Receiver();
  12.            
  13.         }
  14.         public void SetCommand(SocketClass socket,string rawText)
  15.         {
  16.             var switchCommand = GetSwitchCommand(rawText);
  17.             var parameters= GetParams(rawText);
  18.             this._command = new CommandFactory().GetCommand(rawText,parameters,switchCommand);
  19.             this.socket = socket;
  20.         }
  21.         public void ExecuteCommand()
  22.         {
  23.              _receiver.Execute(socket,_command);
  24.         }
  25.  
  26.         private string GetSwitchCommand(string rawText)
  27.         {
  28.             var commandArray = GetParams(rawText);
  29.            
  30.             return MenuCommand.commands.FirstOrDefault(f => commandArray[0].Contains(f))?.ToLower();
  31.         }
  32.  
  33.         private List<string> GetParams(string rawText)
  34.         {
  35.             var cmds = Regex.Match(rawText, @":(!.+?)\r\n").Groups[1].Value;
  36.             var parameters = cmds.Split(new Char[] { ' ' }).ToList();
  37.            
  38.             return parameters;
  39.         }
  40.     }
  41.  
  42.     public class CommandFactory
  43.     {
  44.         public Command GetCommand(string rawText,List<string> parameters,string switchCommand)
  45.         {
  46.            
  47.             if (parameters.Count == 0) return new NotFound();
  48.  
  49.             parameters.RemoveAt(0);
  50.  
  51.             switch (switchCommand)
  52.             {
  53.                 case "!join":
  54.                     return new Join().CheckCommandParams(parameters);
  55.  
  56.                 case "!say":
  57.                     return new Say().CheckCommandParams(rawText,parameters);
  58.  
  59.                 default:
  60.                     return new NotFound();
  61.                      
  62.             }
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement