Exemple #1
0
        public Widget LoadWidget(WidgetArgs args, Widget parent, MiniYamlNode node)
        {
            if (!args.ContainsKey("modData"))
            {
                args = new WidgetArgs(args)
                {
                    { "modData", modData }
                }
            }
            ;

            var widget = NewWidget(node.Key, args);

            if (parent != null)
            {
                parent.AddChild(widget);
            }

            if (node.Key.Contains("@"))
            {
                FieldLoader.LoadField(widget, "Id", node.Key.Split('@')[1]);
            }

            foreach (var child in node.Value.Nodes)
            {
                if (child.Key != "Children")
                {
                    FieldLoader.LoadField(widget, child.Key, child.Value.Value);
                }
            }

            widget.Initialize(args);

            foreach (var child in node.Value.Nodes)
            {
                if (child.Key == "Children")
                {
                    foreach (var c in child.Value.Nodes)
                    {
                        LoadWidget(args, widget, c);
                    }
                }
            }

            var logicNode = node.Value.Nodes.FirstOrDefault(n => n.Key == "Logic");
            var logic     = logicNode == null ? null : logicNode.Value.ToDictionary();

            args.Add("logicArgs", logic);

            widget.PosInit(args);

            args.Remove("logicArgs");

            return(widget);
        }
Exemple #2
0
        public static Widget OpenWindow(string id, WidgetArgs args)
        {
            var window = WarGame.ModData.WidgetLoader.LoadWidget(args, Root, id);

            if (WindowList.Count > 0)
            {
                Root.HideChild(WindowList.Peek());
            }
            WindowList.Push(window);
            return(window);
        }
Exemple #3
0
        public Widget LoadWidget(WidgetArgs args, Widget parent, string w)
        {
            MiniYamlNode ret;

            if (!widgets.TryGetValue(w, out ret))
            {
                throw new InvalidDataException("Cannot find widget with Id '{0}' ".F(w));
            }

            return(LoadWidget(args, parent, ret));
        }
Exemple #4
0
        public void PosInit(WidgetArgs args)
        {
            if (!Logic.Any())
            {
                return;
            }

            args["widget"] = this;

            LogicObjects = Logic.Select(l => WarGame.ModData.ObjectCreator.CreateObject <ChromeLogic>(l, args)).ToArray();

            args.Remove("widget");
        }
Exemple #5
0
 static Widget NewWidget(string widgetType, WidgetArgs args)
 {
     widgetType = widgetType.Split('@')[0];
     return(WarGame.ModData.ObjectCreator.CreateObject <Widget>(widgetType + "Widget", args));
 }