public static IModule ReadModule(NBTag tag) { string moduleID = tag["ID"].GetString(); if (!FactoriesById.ContainsKey(moduleID)) { return(null); } IModuleFactory factory = GetFactoryByID(moduleID); IModule module = factory.GetInstance(); if (tag.Contains("Properties")) { } module.ReadSettings(tag["Settings"]); return(module); }
void IModule.WriteSettings(NBTag tag) { }
void IModule.ReadSettings(NBTag tag) { }
public static void ReadModuleProperties(IModule module, NBTag tag) { IModuleFactory factory = GetFactoryByType(module.GetType()); foreach (PropertyInfo p in factory.ModuleType.GetProperties()) { if (!tag.Contains(p.Name)) { continue; } if (p.PropertyType == typeof(byte)) { p.SetValue(module, tag.GetByte(), null); } else if (p.PropertyType == typeof(short)) { p.SetValue(module, tag.GetShort(), null); } else if (p.PropertyType == typeof(int)) { p.SetValue(module, tag.GetInt(), null); } else if (p.PropertyType == typeof(long)) { p.SetValue(module, tag.GetLong(), null); } else if (p.PropertyType == typeof(float)) { p.SetValue(module, tag.GetFloat(), null); } else if (p.PropertyType == typeof(double)) { p.SetValue(module, tag.GetDouble(), null); } else if (p.PropertyType == typeof(byte[])) { p.SetValue(module, tag.GetBytes(), null); } else if (p.PropertyType == typeof(string)) { p.SetValue(module, tag.GetString(), null); } else if (p.PropertyType == typeof(bool)) { p.SetValue(module, tag.GetBool(), null); } else if (p.PropertyType == typeof(Color)) { p.SetValue(module, tag.GetColor(), null); } else if (p.PropertyType == typeof(Point)) { p.SetValue(module, tag.GetBool(), null); } else if (p.PropertyType == typeof(PointF)) { p.SetValue(module, tag.GetPointF(), null); } else { throw new NotSupportedException("Unknown property type."); } } }