void DrawMousedOverPlayerName()
        {
            WorldRaycastResult result           = World.Raycast(new Ray(Camera.Active.Position, Camera.Active.LookVector), true, 2000f, World.OurPlayer);
            ClientPlayer       mousedOverPlayer = result.HitPlayer ? (ClientPlayer)result.PlayerResult.Player : null;

            if (mousedOverPlayer != null && mousedOverPlayer.StateInfo != null)
            {
                NetworkPlayer netPlayer = null;
                // Find the networkplayer from their character
                foreach (NetworkPlayer np in netPlayerComponent.NetPlayers)
                {
                    if (np.CharacterId.HasValue && np.CharacterId.Value == mousedOverPlayer.StateInfo.Id)
                    {
                        netPlayer = np;
                        break;
                    }
                }

                if (netPlayer != null)
                {
                    Vector2 nameSize = font.MeasureString(netPlayer.Name);
                    font.DrawString(netPlayer.Name, Renderer.ScreenWidth / 2f, Renderer.ScreenHeight / 2f - 125,
                                    Renderer.Sprites.SpriteBatch, TextAlign.Center, Color.White, new Color(0, 0, 0, 0.6f));
                }
            }
        }
示例#2
0
        public void AddLine(string text)
        {
            Vector2 textSize       = font.MeasureString(text);
            int     maxXCharacters = (int)Math.Max(CalculatedRectangle.Width / textSize.X * text.Length, 1);

            foreach (string line in text.SplitByLength(maxXCharacters))
            {
                ChatItem item = new ChatItem(Theme, LINE_HEIGHT, items.Count, line, font)
                {
                    Parent = this
                };
                items.Add(item);

                if (items.Count > MAX_LINES)
                {
                    items[0].Parent = null;
                    items.RemoveAt(0);

                    for (int k = 0; k < items.Count; k++)
                    {
                        items[k].ShiftY(-LINE_HEIGHT);
                    }
                }
            }
        }
示例#3
0
            public FeedItem(GUITheme theme, float height, int numFeed,
                            string left, Color leftColor, string middle, string right, Color rightColor,
                            BMPFont font)
                : base(UDim2.Zero, UDim2.Zero, image: null)
            {
                float leftLen  = font.MeasureString(left).X;
                float midLen   = font.MeasureString(middle).X;
                float rightLen = font.MeasureString(right).X;

                float fullLen = leftLen + midLen + rightLen + 20;
                float midX    = ((leftLen + 10) + (fullLen - rightLen - 10)) / 2f;

                Position = new UDim2(1f, -fullLen - 10, 0, 20 + (height * numFeed));
                Size     = new UDim2(0, fullLen, 0, 25);

                leftLabel = new GUILabel(UDim2.Zero, new UDim2(0, 1, 1f, 0), left, TextAlign.Left, leftColor, theme)
                {
                    Parent = this
                };
                rightLabel = new GUILabel(new UDim2(1, 0, 0, 0),
                                          new UDim2(0, 1, 1f, 0), right, TextAlign.Right, rightColor, theme)
                {
                    Parent = this
                };
                centerLabel = new GUILabel(new UDim2(0, midX, 0, 0),
                                           new UDim2(0, 1, 1f, 0), middle, TextAlign.Center, theme)
                {
                    Parent = this
                };

                leftLabel.Font   = font;
                rightLabel.Font  = font;
                centerLabel.Font = font;

                TimeLeft = 5f;
            }