From 4b08bd70afe8f70f1fce0ecd4f78cee3752643ee Mon Sep 17 00:00:00 2001 From: JavidPack Date: Sun, 18 Dec 2016 02:35:11 -0700 Subject: [PATCH] 0.1.0.1: Announcement toggle. --- ItemChecklist.csproj | 1 + ItemChecklistGlobalItem.cs | 5 ++- ItemChecklistUI.cs | 24 +++++++++++--- UIToggleHoverImageButton.cs | 62 ++++++++++++++++++++++++++++++++++++ build.txt | 2 +- closeButton.png | Bin 0 -> 18702 bytes 6 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 UIToggleHoverImageButton.cs create mode 100644 closeButton.png diff --git a/ItemChecklist.csproj b/ItemChecklist.csproj index d283424..410a3ae 100644 --- a/ItemChecklist.csproj +++ b/ItemChecklist.csproj @@ -72,6 +72,7 @@ + diff --git a/ItemChecklistGlobalItem.cs b/ItemChecklistGlobalItem.cs index 8ce009b..83cf349 100644 --- a/ItemChecklistGlobalItem.cs +++ b/ItemChecklistGlobalItem.cs @@ -35,7 +35,10 @@ namespace ItemChecklist itemChecklistPlayer.foundItem[item.type] = true; //ItemChecklist.instance.ItemChecklistUI.UpdateCheckboxes(); ItemChecklist.instance.ItemChecklistUI.UpdateNeeded(); - Main.NewText($"Congrats: You found your first {item.name}. Total Progress: {itemChecklistPlayer.totalItemsFound}/{itemChecklistPlayer.totalItemsToFind}"); + if (ItemChecklistUI.announce) + { + Main.NewText($"Congrats: You found your first {item.name}. Total Progress: {itemChecklistPlayer.totalItemsFound}/{itemChecklistPlayer.totalItemsToFind}"); + } } } } diff --git a/ItemChecklistUI.cs b/ItemChecklistUI.cs index edb9671..c85a598 100644 --- a/ItemChecklistUI.cs +++ b/ItemChecklistUI.cs @@ -16,14 +16,16 @@ namespace ItemChecklist.UI class ItemChecklistUI : UIState { public UIHoverImageButton toggleButton; + public UIToggleHoverImageButton muteButton; public UIPanel checklistPanel; //public UIList checklistList; public UIGrid checklistList; - // private FieldInfo uilistinnerlist; + // private FieldInfo uilistinnerlist; float spacing = 8f; public static bool visible = false; public static bool showCompleted = true; + public static bool announce = true; public static string hoverText = ""; ItemSlot[] itemSlots; @@ -32,7 +34,8 @@ namespace ItemChecklist.UI { // Is initialize called? (Yes it is called on reload) I want to reset nicely with new character or new loaded mods: visible = false; - // uilistinnerlist = typeof(UIList).GetField("_innerList", BindingFlags.Instance | BindingFlags.NonPublic); + // uilistinnerlist = typeof(UIList).GetField("_innerList", BindingFlags.Instance | BindingFlags.NonPublic); + announce = true; checklistPanel = new UIPanel(); checklistPanel.SetPadding(10); @@ -49,6 +52,12 @@ namespace ItemChecklist.UI //toggleButton.Top.Pixels = spacing; checklistPanel.Append(toggleButton); + muteButton = new UIToggleHoverImageButton(Main.itemTexture[ItemID.Megaphone], ItemChecklist.instance.GetTexture("closeButton"), "Toggle Messages", announce); + muteButton.OnClick += ToggleMuteButtonClicked; + muteButton.Left.Pixels = spacing * 2 + 28; + muteButton.Top.Pixels = 4; + checklistPanel.Append(muteButton); + checklistList = new UIGrid(5); checklistList.Top.Pixels = 32f + spacing; checklistList.Width.Set(-25f, 1f); @@ -86,6 +95,13 @@ namespace ItemChecklist.UI UpdateNeeded(); } + private void ToggleMuteButtonClicked(UIMouseEvent evt, UIElement listeningElement) + { + Main.PlaySound(10, -1, -1, 1); + announce = !announce; + muteButton.SetEnabled(announce); + } + private bool updateneeded; internal void UpdateNeeded() { @@ -131,13 +147,13 @@ namespace ItemChecklist.UI checklistList._items.Add(box); checklistList._innerList.Append(box); - // uilistinner.Append(box); + // uilistinner.Append(box); } } } checklistList.UpdateOrder(); checklistList._innerList.Recalculate(); -// uilistinner.Recalculate(); + // uilistinner.Recalculate(); } protected override void DrawSelf(SpriteBatch spriteBatch) diff --git a/UIToggleHoverImageButton.cs b/UIToggleHoverImageButton.cs new file mode 100644 index 0000000..9353bf9 --- /dev/null +++ b/UIToggleHoverImageButton.cs @@ -0,0 +1,62 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using Terraria.UI; +using ItemChecklist.UI; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria; +using Terraria.GameContent.UI.Elements; + +namespace Terraria.GameContent.UI.Elements +{ + public class UIToggleHoverImageButton : UIImageButton + { + private Texture2D _texture; + private Texture2D overlay; + private float _visibilityActive = 1f; + private float _visibilityInactive = 0.4f; + bool enabled; + internal string hoverText; + + public UIToggleHoverImageButton(Texture2D texture, Texture2D overlay, string hoverText, bool enabled = false) : base(texture) + { + this._texture = texture; + this.overlay = overlay; + this.Width.Set((float)this._texture.Width, 0f); + this.Height.Set((float)this._texture.Height, 0f); + this.hoverText = hoverText; + this.enabled = enabled; + } + + public void SetEnabled(bool enabled) + { + this.enabled = enabled; + } + + protected override void DrawSelf(SpriteBatch spriteBatch) + { + CalculatedStyle dimensions = base.GetDimensions(); + spriteBatch.Draw(this._texture, dimensions.Position(), Color.White * (base.IsMouseHovering ? this._visibilityActive : this._visibilityInactive)); + if (!enabled) + { + spriteBatch.Draw(this.overlay, dimensions.Position(), Color.White * (base.IsMouseHovering ? this._visibilityActive : this._visibilityInactive)); + } + if (IsMouseHovering) + { + ItemChecklistUI.hoverText = hoverText; + } + } + + public override void MouseOver(UIMouseEvent evt) + { + base.MouseOver(evt); + Main.PlaySound(12, -1, -1, 1, 1f, 0f); + } + } +} \ No newline at end of file diff --git a/build.txt b/build.txt index 67690d9..25ac9af 100644 --- a/build.txt +++ b/build.txt @@ -1,5 +1,5 @@ author = jopojelly -version = 0.1 +version = 0.1.0.1 displayName = Item Checklist homepage = https://forums.terraria.org/index.php?threads/item-checklist-in-game-100-item-collection-checklist.52786/ hideCode = false diff --git a/closeButton.png b/closeButton.png new file mode 100644 index 0000000000000000000000000000000000000000..90e5bdea0af941ad99cb2fca90f379e1a4a168a4 GIT binary patch literal 18702 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 literal 0 HcmV?d00001