public static T Get <T>() where T : IService { IService service; if (services.TryGetValue(typeof(T), out service)) { return((T)service); } throw new Exception("Service " + typeof(T) + " not registered yet!"); }
internal ModelContainer GetPackage(ModelContainer inputPackage) { if (ServiceDictionary.TryGetValue(inputPackage.TypePacket, out IGenerateResponseContainer generateResponseContainer)) { Loger.Log("Server " + (Context.Player == null ? " " : Context.Player.Public.Login.PadRight(5)) + " " + generateResponseContainer.GetType().Name); return(generateResponseContainer.GenerateModelContainer(inputPackage, Context)); } Loger.Log("Server " + (Context.Player == null ? " " : Context.Player.Public.Login.PadRight(5)) + $" Response for type {inputPackage.TypePacket} not found"); return(new ModelContainer() { TypePacket = 0 }); }
internal static Tuple <Type, Type, Type> GetServiceTypes(Type entityType) { var attributes = entityType.GetCustomAttributes().Where(a => typeof(EntityAttribute).IsAssignableFrom(a.GetType())); Tuple <Type, Type, Type> ret = null; foreach (var att in attributes) { ServiceDictionary.TryGetValue(att.GetType(), out ret); if (ret != null) { return(ret); } } return(ServiceDictionary.DefaultValue); }
internal ModelContainer GetPackage(ModelContainer inputPackage) { if (ServiceDictionary.TryGetValue(inputPackage.TypePacket, out IGenerateResponseContainer generateResponseContainer)) { var name = generateResponseContainer.GetType().Name; Loger.Log("Server " + (Context.Player == null ? " " : Context.Player.Public.Login.PadRight(5)) + " " + name + (name == "PlayInfo" ? $" dMS={(Context.Player.LastUpdateTime - Context.Player.WLastUpdateTime).TotalMilliseconds} " + $"dTicks={Context.Player.Public.LastTick - Context.Player.WLastTick} " + $"dValue={Context.Player.DeltaMarketValue} " + $"dPawn={Context.Player.DeltaMarketValuePawn} " : "")); return(generateResponseContainer.GenerateModelContainer(inputPackage, Context)); } Loger.Log("Server " + (Context.Player == null ? " " : Context.Player.Public.Login.PadRight(5)) + $" Response for type {inputPackage.TypePacket} not found"); return(new ModelContainer() { TypePacket = 0 }); }