From f6391555fe8fd9a30faee29ba1fa2973dfc8b85c Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 19 Jan 2018 16:20:09 +1100 Subject: [PATCH] Add player tab list select animation, fixes #270 --- ClassicalSharp/2D/Screens/ChatScreen.cs | 2 +- ClassicalSharp/2D/Texture.cs | 1 - .../2D/Widgets/Chat/TextGroupWidget.cs | 2 +- ClassicalSharp/2D/Widgets/PlayerListWidget.cs | 24 ++++++++++++------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ClassicalSharp/2D/Screens/ChatScreen.cs b/ClassicalSharp/2D/Screens/ChatScreen.cs index e4506b110..c5dd03cbc 100644 --- a/ClassicalSharp/2D/Screens/ChatScreen.cs +++ b/ClassicalSharp/2D/Screens/ChatScreen.cs @@ -411,7 +411,7 @@ namespace ClassicalSharp.Gui.Screens { int height = normalChat.GetUsedHeight(); int y = normalChat.Y + normalChat.Height - height; - if (new Rectangle(normalChat.X, y, normalChat.Width, height).Contains(mouseX, mouseY)) + if (GuiElement.Contains(normalChat.X, y, normalChat.Width, height, mouseX, mouseY)) return HandlesChatClick(mouseX, mouseY); return false; } diff --git a/ClassicalSharp/2D/Texture.cs b/ClassicalSharp/2D/Texture.cs index 03e1935fd..b0e719a71 100644 --- a/ClassicalSharp/2D/Texture.cs +++ b/ClassicalSharp/2D/Texture.cs @@ -33,7 +33,6 @@ namespace ClassicalSharp { U2 = u2; V2 = v2; } - public Rectangle Bounds { get { return new Rectangle(X, Y, Width, Height); } } public bool IsValid { get { return ID > 0; } } public int X1 { get { return X; } set { X = (short)value; } } public int Y1 { get { return Y; } set { Y = (short)value; } } diff --git a/ClassicalSharp/2D/Widgets/Chat/TextGroupWidget.cs b/ClassicalSharp/2D/Widgets/Chat/TextGroupWidget.cs index 8d1478919..81bd3482f 100644 --- a/ClassicalSharp/2D/Widgets/Chat/TextGroupWidget.cs +++ b/ClassicalSharp/2D/Widgets/Chat/TextGroupWidget.cs @@ -139,7 +139,7 @@ namespace ClassicalSharp.Gui.Widgets { public string GetSelected(int mouseX, int mouseY) { for (int i = 0; i < Textures.Length; i++) { Texture tex = Textures[i]; - if (tex.IsValid && tex.Bounds.Contains(mouseX, mouseY)) + if (tex.IsValid && GuiElement.Contains(tex.X, tex.Y, tex.Width, tex.Height, mouseX, mouseY)) return GetUrl(i, mouseX) ?? lines[i]; } return null; diff --git a/ClassicalSharp/2D/Widgets/PlayerListWidget.cs b/ClassicalSharp/2D/Widgets/PlayerListWidget.cs index 6dfb924bf..4603dbd8b 100644 --- a/ClassicalSharp/2D/Widgets/PlayerListWidget.cs +++ b/ClassicalSharp/2D/Widgets/PlayerListWidget.cs @@ -58,9 +58,13 @@ namespace ClassicalSharp.Gui.Widgets { overview.Reposition(); overview.Render(delta); + int highlightedI = HighlightedName(game.Mouse.X, game.Mouse.Y); for (int i = 0; i < namesCount; i++) { + if (!textures[i].IsValid) continue; + Texture tex = textures[i]; - if (tex.IsValid) tex.Render(gfx); + if (i == highlightedI) tex.X += 4; + tex.Render(gfx); } } @@ -77,16 +81,20 @@ namespace ClassicalSharp.Gui.Widgets { game.EntityEvents.TabListEntryRemoved -= TabEntryRemoved; } - public string GetNameUnder(int mouseX, int mouseY) { + int HighlightedName(int mouseX, int mouseY) { for (int i = 0; i < namesCount; i++) { - Texture tex = textures[i]; - if (!tex.IsValid || IDs[i] == groupNameID) continue; + if (!textures[i].IsValid || IDs[i] == groupNameID) continue; - if (tex.Bounds.Contains(mouseX, mouseY)) { - return TabList.Entries[IDs[i]].PlayerName; - } + Texture t = textures[i]; + if (GuiElement.Contains(t.X, t.Y, t.Width, t.Height, mouseX, mouseY)) return i; } - return null; + return -1; + } + + public string GetNameUnder(int mouseX, int mouseY) { + int i = HighlightedName(mouseX, mouseY); + if (i == -1) return null; + return TabList.Entries[IDs[i]].PlayerName; }