using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Diagnostics; using SnowLight.Config; using System.Windows.Forms; using SnowLightV3.Forms; using SnowLight.Storage; using SnowLight.Game.Sessions; using System.Timers; namespace SnowLight { public static class Input { /// /// Uses invoking thread (usually main thread) as input listener. /// /// private static void TimerRespetos() { if ((int)ConfigManager.GetValue("respect.enabled") == 1) { System.Timers.Timer eTimer = new System.Timers.Timer(); eTimer.Elapsed += new ElapsedEventHandler(respetos); eTimer.Interval = (int)ConfigManager.GetValue("respect.interval"); eTimer.Enabled = true; GC.KeepAlive(eTimer); } } private static void respetos(object source, ElapsedEventArgs e) { using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET respect_credit_humans = " + (int)ConfigManager.GetValue("respect.amount")); } } private static void TimerCredits() { if ((int)ConfigManager.GetValue("credits.enabled") == 1) { System.Timers.Timer iTimer = new System.Timers.Timer(); iTimer.Elapsed += new ElapsedEventHandler(Credits); iTimer.Interval = (int)ConfigManager.GetValue("credits.interval"); iTimer.Enabled = true; GC.KeepAlive(iTimer); } } private static void Credits(object source, ElapsedEventArgs e) { using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = credits_balance + " + (int)ConfigManager.GetValue("credits.amount")); } } private static void TimerConsola() { System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed += new ElapsedEventHandler(Title); aTimer.Interval = 1000; aTimer.Enabled = true; GC.KeepAlive(aTimer); } private static void Title(object source, ElapsedEventArgs e) { TimeSpan Uptime = DateTime.Now - Program.ServerStarted; List OnlineUsers = SessionManager.ConnectedUserData.Values.ToList(); Console.Title = "SnowLight V3 | Tiempo Online: " + Uptime.Seconds + " Segundos, " + Uptime.Minutes + " Minutos, " + Uptime.Hours + " Horas y " + Uptime.Days + " Días | " + "Usuarios Conectados: " + OnlineUsers.Count + ""; } public static void Listen() { while (Program.Alive) { Program.ServerStarted = DateTime.Now; TimerCredits(); TimerRespetos(); TimerConsola(); if (Console.ReadKey(true).Key == ConsoleKey.Enter) { Console.Write("$" + Environment.UserName.ToLower() + "@SnowLight> "); string Input = Console.ReadLine(); if (Input.Length > 0) { ProcessInput(Input.Split(' ')); } } } } /// /// Handles command line input. /// /// Arguments split by space character public static void ProcessInput(string[] Args) { switch (Args[0].ToLower()) { case "ayuda": MessageBox.Show("Estos son los comandos disponibles:\nstop -> Cierra el Emulador\nalert -> Permite mandar una alerta a todo el Hotel desde el Emulador\nautopoweroff -> Permite programar un auto-apagado del Emulador\nextras -> muestra unos extras que te ayudarán con la administracíon del Hotel\ninfo -> Muestra información sobre el Emulador\nstabilityoptions -> Muestra opciones para mejorar el rendimiento\nedituser -> Permite editar un usuario\nutilidades -> Muestra algunas utilidades para el manejo del Hotel\ncls -> Borra todo lo escrito en la Consola"); //Console.WriteLine("");"); break; case "stop": Program.Stop(); return; case "alert": Application.Run(new Alert()); break; case "autopoweroff": Application.Run(new AutoPower_Off()); break; case "extras": Application.Run(new Extras()); break; case "info": Application.Run(new Info()); break; case "stabilityoptions": Application.Run(new StabilityOptions()); break; case "edituser": Application.Run(new UserEdit()); break; case "utilidades": Application.Run(new Utilidades()); break; case "cls": Output.ClearStream(); break; case "reload_catalog": using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { SnowLight.Game.Catalog.CatalogManager.RefreshCatalogData(MySqlClient); } break; default: Output.WriteLine("'" + Args[0].ToLower() + "' no es un comando. Si no sabes los comandos que hay, di ayuda.", OutputLevel.Warning); break; } } } }