Esempio n. 1
0
        public Belt(Widget parent) : base(parent)
        {
            slots = new List <BeltSlot>(SlotCount);

            int w = 0;
            int h = 0;

            var layout = new GridLayout();

            for (int i = 0; i < SlotCount; i++)
            {
                int index    = i;
                int keyIndex = (i + 1) % 10;

                var slot = new BeltSlot(this);
                slot.Label     = keyIndex.ToString();
                slot.Click    += OnSlotClick;
                slot.Drop     += OnSlotDrop;
                slot.ItemDrop += OnSlotItemDrop;
                slots.Add(slot);

                int column = layout.ColumnCount;
                layout.AddWidget(slot, 0, column);
                layout.SetColumnWidth(column, slot.Width - 1);

                w += slot.Width - 1;
                h  = Math.Max(h, slot.Height);

                Host.Hotkeys.Register(Key.Number1 + keyIndex - 1, () => Click.Raise(new BeltClickEvent(index, MouseButton.Left, 0)));
            }
            layout.Spacing = -1;
            layout.UpdateGeometry(0, 0, 0, 0);

            this.Resize(w, h);
        }
Esempio n. 2
0
        public MenuGrid(Widget parent) : base(parent)
        {
            buttons = new MenuButton[PageSize];

            root = new MenuNode();
            root.Children.CollectionChanged += (s, e) => UpdateButtons();

            // create buttons
            var layout = new GridLayout();

            for (int i = 0; i < PageSize; i++)
            {
                var button = new MenuButton(this);
                button.Click += OnButtonClick;
                buttons[i]    = button;

                int row = i / PageRows;
                int col = i % PageRows;
                layout.AddWidget(button, row, col);
                layout.SetColumnWidth(col, cellImage.Width);
            }
            layout.Spacing = -1;
            layout.UpdateGeometry(0, 0, 0, 0);

            this.Resize(cellImage.Width * PageColumns, cellImage.Height * PageRows);

            Current = root;
        }
Esempio n. 3
0
        public EscapeWindow(Widget parent) : base(parent)
        {
            btnLogout        = new Button(this, 80);
            btnLogout.Text   = "Logout";
            btnLogout.Click += () => Logout.Raise();

            btnExit        = new Button(this, 80);
            btnExit.Text   = "Exit";
            btnExit.Click += () => Exit.Raise();

            var layout = new GridLayout();

            layout.Spacing = 5;
            layout.AddWidget(btnLogout, 0, 0);
            layout.AddWidget(btnExit, 1, 0);
            layout.UpdateGeometry(0, 0, 0, 0);

            Pack();
        }
Esempio n. 4
0
        private void AddSkill(string name, string title)
        {
            var attr = session.Attributes[name];

            var image = new Image(tabAttr);

            image.Drawable = App.Resources.Get <Drawable>("gfx/hud/charsh/" + name);

            var lblName = new Label(tabAttr, Fonts.LabelText);

            lblName.Text = title + ":";

            var lblValue = new Label(tabAttr, Fonts.LabelText);

            lblValue.AutoSize = true;
            var skill = new SkillAttributeBinding(attr, lblValue);

            skill.CostChanged += UpdateCost;
            attrBindings.Add(skill);

            var btnMinus = new ImageButton(tabAttr);

            btnMinus.Image        = MinusUp;
            btnMinus.PressedImage = MinusDown;
            btnMinus.Click       += () => skill.Add(-1);
            btnMinus.MouseWheel  += arg => skill.Add(Math.Sign(arg.Delta));

            var btnPlus = new ImageButton(tabAttr);

            btnPlus.Image        = PlusUp;
            btnPlus.PressedImage = PlusDown;
            btnPlus.Click       += () => skill.Add(1);
            btnPlus.MouseWheel  += arg => skill.Add(Math.Sign(arg.Delta));

            int row = skillLayout.RowCount;

            skillLayout.AddWidget(image, row, 0);
            skillLayout.AddWidget(lblName, row, 1);
            skillLayout.AddWidget(lblValue, row, 2);
            skillLayout.AddWidget(btnMinus, row, 3);
            skillLayout.AddWidget(btnPlus, row, 4);
        }
Esempio n. 5
0
        private void AddBelief(string name, string left, string right, bool inv)
        {
            var widget = new BeliefWidget(tabBeliefs, left, right);

            widget.SliderMoved += (delta) => HandleBeliefChange(name, delta, inv);
            beliefWidgets.Add(widget);

            var label = new Label(tabBeliefs, Fonts.LabelText);

            label.TextAlign = TextAlign.Center;
            label.Text      = string.Format("{0} / {1}", left.ToTitleCase(), right.ToTitleCase());
            label.Resize(widget.Width, label.Height);

            var attr = session.Attributes[name];

            attrBindings.Add(new BeliefBinding(attr, widget, inv));

            int row = beliefLayout.RowCount;

            beliefLayout.AddWidget(label, row, 0);
            beliefLayout.AddWidget(widget, row + 1, 0);
        }
Esempio n. 6
0
        private void AddBase(string name, string title)
        {
            var image = new Image(tabAttr);

            image.Drawable = App.Resources.Get <Drawable>("gfx/hud/charsh/" + name);

            var lblName = new Label(tabAttr, Fonts.LabelText);

            lblName.Text = title + ":";

            var lblValue = new Label(tabAttr, Fonts.LabelText);

            lblValue.AutoSize = true;

            int row = baseLayout.RowCount;

            baseLayout.AddWidget(image, row, 0);
            baseLayout.AddWidget(lblName, row, 1);
            baseLayout.AddWidget(lblValue, row, 2);

            var attr = session.Attributes[name];

            attrBindings.Add(new BaseAttributeBinding(attr, lblValue));
        }
Esempio n. 7
0
        public void AddOutput(Item item)
        {
            var inv = new InventoryWidget(this);

            inv.SetInventorySize(1, 1);
            var itemWidget = new ItemWidget(inv, null);

            itemWidget.Item = item;

            int column = outputLayout.ColumnCount;

            outputLayout.AddWidget(inv, 0, column);
            outputLayout.SetColumnWidth(column, 31);
            outputLayout.UpdateGeometry(50, 65, 0, 0);

            outputs.Add(inv);
        }
Esempio n. 8
0
        private void Update()
        {
            var removed = new List <int>(widgets.Keys);
            var layout  = new GridLayout();

            int i = 0;

            foreach (var buff in session.Buffs)
            {
                if (!buff.IsMajor)
                {
                    continue;
                }

                BuffWidget widget;
                if (widgets.TryGetValue(buff.Id, out widget))
                {
                    removed.Remove(buff.Id);
                }
                else
                {
                    widget           = new BuffWidget(this);
                    widgets[buff.Id] = widget;
                }

                widget.Buff = buff;
                layout.SetColumnWidth(i, cframe.Width);
                layout.AddWidget(widget, 0, i);

                if (++i >= 5)
                {
                    break;
                }
            }

            foreach (var id in removed)
            {
                var widget = widgets[id];
                widget.Dispose();
                widget.Remove();
                widgets.Remove(id);
            }

            layout.Spacing = Spacing;
            layout.UpdateGeometry(0, 0, 0, 0);
        }
Esempio n. 9
0
        private void InitAttributesTab()
        {
            tabAttr = new Container(this);
            tabAttr.Resize(400, 300);
            tabs.Add(tabAttr);

            // LP
            var lblCost = new Label(tabAttr, Fonts.LabelText);

            lblCost.Text      = "Cost:";
            lblCostValue      = new Label(tabAttr, Fonts.LabelText);
            lblCostValue.Text = "0";

            var lblExp = new Label(tabAttr, Fonts.LabelText);

            lblExp.Text      = "Learning Points:";
            lblExpValue      = new Label(tabAttr, Fonts.LabelText);
            lblExpValue.Text = "0";

            var lblExpMod = new Label(tabAttr, Fonts.LabelText);

            lblExpMod.Text = "Learning Ability:";
            lblExpModValue = new Label(tabAttr, Fonts.LabelText);

            var expMod = session.Attributes["expmod"];

            attrBindings.Add(new ExpModBinding(expMod, lblExpModValue));

            var btnBuy = new Button(tabAttr, 75);

            btnBuy.Text   = "Buy";
            btnBuy.Click += BuySkills;

            var lpLayout = new GridLayout();

            lpLayout.SetColumnWidth(0, 90);
            lpLayout.AddWidget(lblCost, 0, 0);
            lpLayout.AddWidget(lblCostValue, 0, 1);
            lpLayout.AddWidget(lblExp, 1, 0);
            lpLayout.AddWidget(lblExpValue, 1, 1);
            lpLayout.AddWidget(lblExpMod, 2, 0);
            lpLayout.AddWidget(lblExpModValue, 2, 1);
            lpLayout.AddWidget(btnBuy, 3, 0);
            lpLayout.UpdateGeometry(210, 220, 0, 0);

            // Base Attributes
            var lblBase = new Label(tabAttr, Fonts.LabelText);

            lblBase.Move(10, 10);
            lblBase.Text = "Base Attributes:";
            AddBase("str", "Strength");
            AddBase("agil", "Agility");
            AddBase("intel", "Intelligence");
            AddBase("cons", "Constitution");
            AddBase("perc", "Perception");
            AddBase("csm", "Charisma");
            AddBase("dxt", "Dexterity");
            AddBase("psy", "Psyche");
            baseLayout.UpdateGeometry(10, 40, 0, 0);

            // Skills
            var lblSkill = new Label(tabAttr, Fonts.LabelText);

            lblSkill.Move(210, 10);
            lblSkill.Text = "Skill Values:";
            AddSkill("unarmed", "Unarmed Combat");
            AddSkill("melee", "Melee Combat");
            AddSkill("ranged", "Marksmanship");
            AddSkill("explore", "Exploration");
            AddSkill("stealth", "Stealth");
            AddSkill("sewing", "Sewing");
            AddSkill("smithing", "Smithing");
            AddSkill("carpentry", "Carpentry");
            AddSkill("cooking", "Cooking");
            AddSkill("farming", "Farming");
            AddSkill("survive", "Survival");
            skillLayout.UpdateGeometry(210, 40, 0, 0);

            // Food
            foodMeter = new FoodMeter(tabAttr);
            foodMeter.Move(10, 180);
        }