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;
}
}
}
}