Beispiel #1
0
        private void OnNewScrollbarvalueDetailPage(float value)
        {
            GuiElementRichtext richtextElem = detailViewGui.GetRichtext("richtext");

            richtextElem.Bounds.fixedY = 3 - value;
            richtextElem.Bounds.CalcWorldBounds();
        }
Beispiel #2
0
        private void OnNewScrollbarvalueDetailPage(float value)
        {
            GuiElementRichtext richtextElem = detailViewGui.GetRichtext("richtext");

            richtextElem.Bounds.fixedY = 3 - value;
            richtextElem.Bounds.CalcWorldBounds();

            browseHistory.Peek().PosY = detailViewGui.GetScrollbar("scrollbar").CurrentYPosition;
        }
        private void UpdateStats()
        {
            EntityPlayer entity = capi.World.Player.Entity;
            GuiComposer  compo  = Composers["playerstats"];

            if (compo == null || !IsOpened())
            {
                return;
            }

            float?health;
            float?maxhealth;
            float?saturation;
            float?maxsaturation;

            getHealthSat(out health, out maxhealth, out saturation, out maxsaturation);

            float walkspeed           = entity.Stats.GetBlended("walkspeed");
            float healingEffectivness = entity.Stats.GetBlended("healingeffectivness");
            float hungerRate          = entity.Stats.GetBlended("hungerrate");
            float rangedWeaponAcc     = entity.Stats.GetBlended("rangedWeaponsAcc");
            float rangedWeaponSpeed   = entity.Stats.GetBlended("rangedWeaponsSpeed");


            if (health != null)
            {
                compo.GetDynamicText("health").SetNewText((health + " / " + maxhealth));
            }
            if (saturation != null)
            {
                compo.GetDynamicText("satiety").SetNewText((int)saturation + " / " + (int)maxsaturation);
            }

            compo.GetDynamicText("walkspeed").SetNewText((int)Math.Round(100 * walkspeed) + "%");
            compo.GetDynamicText("healeffectiveness").SetNewText((int)Math.Round(100 * healingEffectivness) + "%");
            compo.GetDynamicText("hungerrate")?.SetNewText((int)Math.Round(100 * hungerRate) + "%");
            compo.GetDynamicText("rangedweaponacc").SetNewText((int)Math.Round(100 * rangedWeaponAcc) + "%");
            compo.GetDynamicText("rangedweaponchargespeed").SetNewText((int)Math.Round(100 * rangedWeaponSpeed) + "%");

            ITreeAttribute tempTree = entity.WatchedAttributes.GetTreeAttribute("bodyTemp");

            compo.GetRichtext("bodytemp").SetNewText(getBodyTempText(tempTree), CairoFont.WhiteDetailText());
        }
Beispiel #4
0
        void initDetailGui()
        {
            ElementBounds textBounds = ElementBounds.Fixed(9, 45, 500, 30 + listHeight + 17);

            ElementBounds clipBounds  = textBounds.ForkBoundingParent();
            ElementBounds insetBounds = textBounds.FlatCopy().FixedGrow(6).WithFixedOffset(-3, -3);

            ElementBounds scrollbarBounds = clipBounds.CopyOffsetedSibling(textBounds.fixedWidth + 7, -6, 0, 6).WithFixedWidth(20);

            ElementBounds closeButtonBounds = ElementBounds
                                              .FixedSize(0, 0)
                                              .FixedUnder(clipBounds, 2 * 5 + 5)
                                              .WithAlignment(EnumDialogArea.RightFixed)
                                              .WithFixedPadding(20, 4)
                                              .WithFixedAlignmentOffset(-11, 1)
            ;
            ElementBounds backButtonBounds = ElementBounds
                                             .FixedSize(0, 0)
                                             .FixedUnder(clipBounds, 2 * 5 + 5)
                                             .WithAlignment(EnumDialogArea.LeftFixed)
                                             .WithFixedPadding(20, 4)
                                             .WithFixedAlignmentOffset(4, 1)
            ;
            ElementBounds overviewButtonBounds = ElementBounds
                                                 .FixedSize(0, 0)
                                                 .FixedUnder(clipBounds, 2 * 5 + 5)
                                                 .WithAlignment(EnumDialogArea.CenterFixed)
                                                 .WithFixedPadding(20, 4)
                                                 .WithFixedAlignmentOffset(0, 1)
            ;

            ElementBounds bgBounds = insetBounds.ForkBoundingParent(5, 40, 36, 52).WithFixedPadding(GuiStyle.ElementToDialogPadding / 2);

            bgBounds.WithChildren(insetBounds, textBounds, scrollbarBounds, backButtonBounds, closeButtonBounds);

            BrowseHistoryElement curPage = browseHistory.Peek();
            float posY = curPage.PosY;

            // 3. Finally Dialog
            ElementBounds dialogBounds = bgBounds.ForkBoundingParent().WithAlignment(EnumDialogArea.None).WithAlignment(EnumDialogArea.CenterFixed).WithFixedPosition(0, 70);

            //dialogBounds.Code = "dialogbounds";

            RichTextComponentBase[] cmps = curPage.Page.GetPageText(capi, allstacks, OpenDetailPageFor);

            int           curTab;
            ElementBounds tabBounds = ElementBounds.Fixed(-200, 35, 200, 545);

            detailViewGui?.Dispose();
            detailViewGui = capi.Gui
                            .CreateCompo("handbook-detail", dialogBounds)
                            .AddShadedDialogBG(bgBounds, true)
                            .AddDialogTitleBar(Lang.Get("Survival Handbook"), OnTitleBarClose)
                            .AddVerticalTabs(genTabs(out curTab), tabBounds, OnDetailViewTabClicked, "verticalTabs")
                            .BeginChildElements(bgBounds)
                            .BeginClip(clipBounds)
                            .AddInset(insetBounds, 3)
                            .AddRichtext(cmps, textBounds, "richtext")
                            .EndClip()
                            .AddVerticalScrollbar(OnNewScrollbarvalueDetailPage, scrollbarBounds, "scrollbar")
                            .AddSmallButton(Lang.Get("general-back"), OnButtonBack, backButtonBounds)
                            .AddSmallButton(Lang.Get("handbook-overview"), OnButtonOverview, overviewButtonBounds)
                            .AddSmallButton(Lang.Get("general-close"), OnButtonClose, closeButtonBounds)
                            .EndChildElements()
                            .Compose()
            ;

            GuiElementRichtext richtextelem = detailViewGui.GetRichtext("richtext");

            detailViewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)richtextelem.Bounds.fixedHeight
                );
            detailViewGui.GetScrollbar("scrollbar").CurrentYPosition = posY;
            OnNewScrollbarvalueDetailPage(posY);

            detailViewGui.GetVerticalTab("verticalTabs").SetValue(curTab, false);
        }