public override object NodeToType(Type type, YamlNode node, YamlObjectSerializer serializer) { var mapping = (YamlMappingNode)node; var nodeType = mapping.GetNode("type"); switch (nodeType.AsString()) { case SpriteLayerToggle.NAME: var keyString = mapping.GetNode("key").AsString(); object key; if (_reflectionManager.TryParseEnumReference(keyString, out var @enum)) { key = @enum; } else { key = keyString; } var layer = mapping.GetNode("layer").AsInt(); return(new SpriteLayerToggle(key, layer)); default: var visType = _reflectionManager.LooseGetType(nodeType.AsString()); if (!typeof(AppearanceVisualizer).IsAssignableFrom(visType)) { throw new InvalidOperationException(); } var vis = (AppearanceVisualizer)Activator.CreateInstance(visType); vis.LoadData(mapping); return(vis); } }
private void CreateInventory() { var type = ReflectionManager.LooseGetType(_templateName); DebugTools.Assert(type != null); InventoryInstance = DynamicTypeFactory.CreateInstance <Inventory>(type !); }
private void OpenInterface(BoundInterfaceMessageWrapMessage wrapped) { var data = _interfaceData[wrapped.UiKey]; // TODO: This type should be cached, but I'm too lazy. var type = _reflectionManager.LooseGetType(data.ClientType); var boundInterface = (BoundUserInterface)Activator.CreateInstance(type, this, wrapped.UiKey); boundInterface.Open(); _openInterfaces[wrapped.UiKey] = boundInterface; }