public void RegisterMainPackageStates(IStatePackage package) { MainLoopPackage.PackageCache.Add(MainLoopPackage.MainPackageStates.Help, package); }
public void RegisterMainPackageStates(IStatePackage package) { MainLoopPackage.PackageCache.Add(MainLoopPackage.MainPackageStates.Login, package); MainLoopPackage.PackageCache.Add(MainLoopPackage.MainPackageStates.Logout, package); }
static void Main(string[] args) { _args = args; _lineSb = new StringBuilder(); // Parse Args and determine if this is a CLI or Console mode. if (args.Length > 0 && !_argsRead) { _isCLI = true; foreach (var a in args) { _lineSb.Append(a + " "); } _line = _lineSb.ToString(); _argsRead = true; _args = new string[0]; } else { _readLine = true; _argsRead = true; } // Init PlayFab Service Settings PlayFabService.Init(); // Load Settings File PlayFabService.Load(); // Create main loop var mainLoopPackage = new MainLoopPackage(); // Out put to screen some fancy playfab jazz Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Green; Console.Write(".oO={ "); Console.ForegroundColor = ConsoleColor.White; Console.Write("PlayFab Power Tools CLI"); Console.ForegroundColor = ConsoleColor.Green; Console.Write(" }=Oo."); Console.ForegroundColor = ConsoleColor.White; // if this is a console app then we want to show them how to get help. if (!_isCLI) { Console.WriteLine(""); Console.WriteLine("Type: 'Help' for a list of commands"); Console.WriteLine(""); Console.Write(">"); } else { Console.WriteLine(""); Console.WriteLine(""); } // Load all the packages that process commands var statePkgInterface = typeof(IStatePackage); var pkgTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(s => s.GetTypes()) .Where(eachPkgType => statePkgInterface.IsAssignableFrom(eachPkgType) && eachPkgType.Name != "IStatePackage"); // foreach package we need to register with MainLoop foreach (var eachPkgType in pkgTypes) { var packageType = (IStatePackage)Activator.CreateInstance(eachPkgType); packageType.RegisterMainPackageStates(packageType); } // This is the main program loop. do { // if we are a console app, read the command that is entered. if (_args.Length == 0 && _readLine) { if (!_isTypedTextHidden) { // Read the line input from the console. _line = Console.ReadLine(); } else { // Read the line in a different way. ConsoleKeyInfo key; do { key = Console.ReadKey(true); if (key.Key != ConsoleKey.Enter) { var s = key.KeyChar.ToString(); _lineSb.Append(s); } } while (key.Key != ConsoleKey.Enter); _line = _lineSb.ToString(); } } // Set read line to true, not it will only be false if we came from a CLI. _readLine = true; // Set the state for the package based on what was entered. mainLoopPackage.SetState(_line); // get the correct package for the state we are in _currentPackage = mainLoopPackage.GetPackage(); // process the package state _isTypedTextHidden = _currentPackage.SetState(_line); // do package loop, which contains logic to do stuff. var loopReturn = _currentPackage.Loop(); // if this is a CLI then we just want to exit. if (!_isCLI) { // Prompt or exit. if (!loopReturn) { Console.Write(">"); } else { _line = null; } } else { _line = null; } } while (_line != null); // Always save before we completely exit. PlayFabService.Save(); }
public void RegisterMainPackageStates(IStatePackage package) { PackageCache.Add(MainPackageStates.Idle, package); PackageCache.Add(MainPackageStates.Exit, package); }