Exemple #1
0
        public virtual void Initialize(WidgetArgs args)
        {
            var parentBounds = (Parent == null)
                ? new Rectangle(0, 0, WarGame.Renderer.Resolution.Width, WarGame.Renderer.Resolution.Height)
                : Parent.Bounds;

            var substitutions = args.ContainsKey("substitutions") ? new Dictionary <string, int>((Dictionary <string, int>)args["substitutions"])
                : new Dictionary <string, int>();

            substitutions.Add("WINDOW_RIGHT", WarGame.Renderer.Resolution.Width);
            substitutions.Add("WINDOW_BOTTOM", WarGame.Renderer.Resolution.Height);
            substitutions.Add("PARENT_RIGHT", parentBounds.Width);
            substitutions.Add("PARENT_LEFT", parentBounds.Left);
            substitutions.Add("PARENT_TOP", parentBounds.Top);
            substitutions.Add("PARENT_BOTTOM", parentBounds.Height);

            var width  = Evaluator.Evaluate(Width, substitutions);
            var height = Evaluator.Evaluate(Height, substitutions);

            substitutions.Add("WIDTH", width);
            substitutions.Add("HEIGHT", height);

            Bounds = new Rectangle(Evaluator.Evaluate(X, substitutions),
                                   Evaluator.Evaluate(Y, substitutions),
                                   width,
                                   height);
        }
Exemple #2
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);
        }