public HUDToast ShowToast(string id, string text, int size, Color background, Color foreground, float lifetime)
        {
            lock (_toasts)
            {
                while (_toasts.Count >= MAX_TOAST_COUNT)
                {
                    _toasts[0].Alive = false;
                    _toasts.RemoveAt(0);
                }

                if (id != null)
                {
                    foreach (var xtoast in _toasts)
                    {
                        if (xtoast.ToastID == id)
                        {
                            xtoast.Reset(text, background, foreground, lifetime);
                            return(xtoast);
                        }
                    }
                }

                float px = HUDToast.PAD_BOTTOM;
                foreach (var xtoast in _toasts)
                {
                    xtoast.PositionY.SetForce(px);
                    px += xtoast.Height + HUDToast.PAD_VERT;
                }

                var toast = new HUDToast(id, lifetime, px);

                toast.Text             = text;
                toast.Alignment        = HUDAlignment.BOTTOMCENTER;
                toast.RelativePosition = new FPoint(0, px);
                toast.FontSize         = size;
                toast.Font             = DefaultFont;
                toast.TextColor        = foreground;
                toast.Background       = HUDBackgroundDefinition.CreateSimpleBlur(background, size / 4f);
                toast.TextPadding      = new FSize(size / 5f, size / 5f);
                toast.MaxWidth         = Width * 0.8f;
                toast.WordWrap         = HUDWordWrap.WrapByWordTrusted;

                AddElement(toast);
                _toasts.Add(toast);
                return(toast);
            }
        }
Exemple #2
0
        public void CopyToast(GameHUD phud)
        {
            bool postreset = _toasts.Any();

            foreach (var t in phud._toasts)
            {
                var copy = HUDToast.Copy(t);
                AddElement(copy);
                _toasts.Add(copy);
            }

            if (postreset)
            {
                float px = HUDToast.PAD_BOTTOM;
                foreach (var xtoast in _toasts)
                {
                    xtoast.PositionY.SetForce(px);
                    px += xtoast.Height + HUDToast.PAD_VERT;
                }
            }
        }