Exemplo n.º 1
0
            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;
        }