public string GetStatus(string language) { if (TasksToDo.Count == 0) { return(Locale.Get("status.idle", language)); } else { switch (TasksToDo[0].TaskType) { case ETask.Building: return(string.Format(Locale.Get("status.building", language), Locale.Get("buildings." + TasksToDo[0].Destination + ".name", language))); case ETask.Creating: case ETask.Extracting: var tsk = TasksToDo[0].TaskType.ToString().ToLower(); return(string.Format(Locale.Get("status." + tsk, language), Locale.Get("resources." + TasksToDo[0].Destination + ".name", language))); case ETask.SendingMessage: string kingdom_name = KingdomsManager.FindKingdom(Guid.Parse(TasksToDo[0].Destination)).Name; return(string.Format(Locale.Get("status.sending_message", language), kingdom_name)); default: return(Locale.Get("status." + TasksToDo[0].ToString().ToLower(), language)); } } }
public static object ParseKingomd(string s) { foreach (Tuple <string, Guid> k in KingdomsManager.GetKingdomsNames()) { if (s.Contains(k.Item1.ToLower())) { return(k.Item2.ToString()); } } return(null); }
public static Tuple <bool, int> CheckKingdom(string s) { foreach (Tuple <string, Guid> k in KingdomsManager.GetKingdomsNames()) { if (s.Contains(k.Item1.ToLower())) { return(new Tuple <bool, int>(true, s.IndexOf(k.Item1.ToLower()) + k.Item1.Length)); } } return(new Tuple <bool, int>(false, 0)); }
public void CalculateTaskTime(Human h, float difficulty = 1f, string skill = null) { this.Difficulty = difficulty; switch (this.TaskType) { case ETask.Learning: Skill = skill ?? "learning"; TimeLeft = h.GetSkill(this.Destination) / h.GetSkill(Skill); break; case ETask.Building: Skill = "building"; TimeLeft = 0.3f / h.GetSkill(Skill); break; case ETask.Creating: case ETask.Extracting: Skill = skill ?? "mining"; TimeLeft = 0.05f / h.GetSkill(Skill); break; case ETask.Other: case ETask.ListeningKing: TimeLeft = float.PositiveInfinity; break; case ETask.SendingMessage: Skill = skill ?? "diplomacy"; float dist = KingdomsManager.Distance(h.KingdomId, Guid.Parse(Destination)); TimeLeft = dist / 60; break; default: Skill = skill; TimeLeft = 1; break; } TimeLeft *= Difficulty; }
public static void Main(string[] args) { var host = new WebHostBuilder() .UseContentRoot(Directory.GetCurrentDirectory()) .UseKestrel() .UseStartup <Startup>() .UseUrls("http://localhost:9797") .Build(); Console.OutputEncoding = Encoding.UTF8; Console.InputEncoding = Encoding.UTF8; DatabaseManager.Init(); ScriptManager.Init(); ContentManager.Init(); UsersManager.Init(); KingdomsManager.Init(); Console.WriteLine("Starting Nancy on http://localhost:9797"); host.Start(); int updatetime = 100 / 3, deltatime = 0; Stopwatch sw = Stopwatch.StartNew(); while (true) { UpdateQueue(); UpdateWorld(deltatime); deltatime = (int)sw.ElapsedMilliseconds; sw = Stopwatch.StartNew(); if (deltatime < updatetime) { Thread.Sleep(updatetime - deltatime); } } }
public ApiModule() { Get("/start/{userType}/{userId}", args => { Console.WriteLine(DateTime.Now.ToString() + " " + Request.Method + " " + Request.Path); UserInfo ui = new UserInfo() { Type = args.userType, ThirdPartyId = args.userId }; QueueManager.Push(new Incoming() { UserInfo = ui, Method = "start", IsWaiting = true }); return(HttpStatusCode.OK); }); Get("/map", args => { var list = new[] { new { Name = "", Position = new Point() } }.ToList(); list.Clear(); foreach (Kingdom k in KingdomsManager.GetKingdoms()) { list.Add(new { Name = k.Name, Position = k.Coordinate }); } return(JsonConvert.SerializeObject(list)); }); Get("/setlang/{userType}/{userId}/{lang}", args => { Console.WriteLine(DateTime.Now.ToString() + " " + Request.Method + " " + Request.Path); UserInfo ui = new UserInfo() { Type = args.userType, ThirdPartyId = args.userId }; QueueManager.Push(new Incoming() { UserInfo = ui, Method = "lang", IsWaiting = true, Message = new MessageInfo() { Text = args.lang, UserInfo = ui } }); return(HttpStatusCode.OK); }); Post("/message/{userType}/{userId}/", args => { Console.WriteLine(DateTime.Now.ToString() + " " + Request.Method + " " + Request.Path); var body = this.Request.Body; int length = (int)body.Length; byte[] data = new byte[length]; body.Read(data, 0, length); string encoded = Encoding.UTF8.GetString(data); Dictionary <string, string> vars = new Dictionary <string, string>(); foreach (string line in encoded.Split('\n')) { string[] arr = line.Split('='); List <byte> res = new List <byte>(); foreach (string s in arr[1].Replace("%2C", ",").Split(',')) { if (s.Length > 0) { res.Add((byte)int.Parse(s)); } } vars[arr[0]] = Encoding.Unicode.GetString(res.ToArray()); Console.WriteLine(vars[arr[0]]); } MessageInfo msg = new MessageInfo() { UserInfo = new UserInfo() { Type = args.userType, ThirdPartyId = args.userId }, Text = vars["message"] }; QueueManager.Push(new Incoming() { UserInfo = msg.UserInfo, Message = msg, Method = "message", IsWaiting = true }); return(HttpStatusCode.OK); }); Get("/message/{userType}/{userId}/{message? }", args => { Console.WriteLine(DateTime.Now.ToString() + " " + Request.Method + " " + Request.Path); MessageInfo msg = new MessageInfo() { UserInfo = new UserInfo() { Type = args.userType, ThirdPartyId = args.userId }, Text = args.message }; QueueManager.Push(new Incoming() { UserInfo = msg.UserInfo, Message = msg, Method = "message", IsWaiting = true }); return(HttpStatusCode.OK); }); Get("/get/{userType}/{userId?all}", args => { return(JsonConvert.SerializeObject(QueueManager.GetOutgoing(args.userType, args.userId))); }); }
private static void UpdateWorld(int deltatime) { KingdomsManager.UpdateKingdoms(deltatime); }