Releases: 1ForeverHD/TopbarPlus
v3.0.2
Changes
- Fixed an issue when pressing VirtualController toggle key when VirtualController is disabled https://devforum.roblox.com/t/post/1017485/1420 & https://devforum.roblox.com/t/post/1017485/1327
- Fixed duplication bug caused from calling
player:LoadCharacter
when localscripts where located under a PlayerGui https://devforum.roblox.com/t/post/1017485/1363 - Fixed some errors which occurred when destroying multiple icons https://devforum.roblox.com/t/post/1017485/1417
v3.0.1
Changes
- Introduced
fromSource
- this is where the behaviour originated, values include"User"
,"OneClick"
,"AutoDeselect"
,"HideParentFeature"
,"Overflow"
https://devforum.roblox.com/t/post/1017485/1383 - Introduced
sourceIcon
- the icon (often itself) which is responsible for performing the action - Changed
icon:select(fromInput)
toicon:select(fromSource, sourceIcon)
- Changed
icon:deselect(fromInput)
toicon:deselect(fromSource, sourceIcon)
fromSource
andsourceIcon
are also now passed in eventsselected
,deselected
andtoggled
- Fixed Classic Theme Y offset #97 offset https://devforum.roblox.com/t/post/1017485/1356
- Fixed rounded corners https://devforum.roblox.com/t/post/1017485/1359
- Improved wally support (removed some incorrect files, cleaned up, etc)
- Updated playground from Script with Local Context to just a LocalScript
v3.0.0
Say hello to v3.0.0! 👋
🖼️ A design overhaul to match the new topbar...
Icons, captions, dropdowns, menus... everything! v3 aims to mirror the topbar so you can seamlessly build upon it.
👴 ...but with inbuilt support for the old topbar
Not all clients see the new topbar... yet. v3 solves this by listening for differences and adapting to a classic design accordingly.
📝 A complete codebase rewrite and re-organization
Readability and performance have been the driving reasons behind this. By outsourcing logic to UIComponents and reorganizing instances into more appropriate containers the Icon and IconController have collectively shrunk from >3000 lines of code to ~1000.
🎨 An easier system to modify icon appearance and behavior
You're no longer limited to predefined settings... you can modify... anything! 🥳 The way you modify icons has also changed to be more straightforward. More info on that here.
📦 TopbarPlus is now a package
No more faff when updating... just right-click the package, update and bam, all set! 💪 More details here.
🗃️ TopbarPlus now supports Wally
You can find that here!
🎮 Improved support for gamepads and mobile devices
Pretty much the title, lots of small improvements to make navigating icons on different devices that much easier.
⚖️ Overflow upgrade
Overflows now become horizontal menus instead of vertical dropdowns. More about that here.
📖 Brand new documentation
Happy reading! You can find the v3 documentation here.
📝 MIT -> Mozilla Public License v2.0
You can use TopbarPlus free of charge. All you need to do is provide credit back to this resource (such as link to its devforum post) and to open source any significant changes you make to the package.
❤️ Backwards compatibility with the majority of methods from v2
The majority of v2 methods and features have been built into v3 to make for an easy transition. You can find a full breakdown of these changes below.
Changes since v2.9.1
Note: 'Changed' means the methods behavior was altered in some way (such as its parameters, how it functions, etc) while 'Renamed' means only the name or module changed.
- Added method
Icon:getInstance
- Added method
Icon:modifyChildTheme
- Added method
Icon:setTextSize
- Added method
Icon:setTextFont
- Added method
Icon:oneClick
- Added method
Icon:setCaptionHint
- Added variable
Icon.highlightKey
- Changed method
icon:setTheme
toicon:modifyTheme
- Changed method
icon:setImageYScale
toicon:setImageScale
- Changed method
icon:setXSize
toicon:setWidth
- Changed method
icon:give
toicon:addToJanitor
- Changed method
icon:join
toicon:joinDropdown
andicon:joinMenu
- Changed event
icon.hoverStarted
toicon.viewingStarted
- Changed event
icon.hoverEnded
toicon.viewingEnded
- Changed function
IconController.setGameTheme
toIcon.modifyBaseTheme
- Changed function
IconController.getIcons
toIcon.getIcons
- Changed function
IconController.getIcon
toIcon.getIcon
- Renamed method
icon:disableStateOverlay
toicon:disableOverlay
- Renamed method
icon:setLeft
toicon:align("Left")
- Renamed method
icon:setMid
toicon:align("Center")
- Renamed method
icon:setRight
toicon:align("Right")
- Renamed function
IconController.setDisplayOrder
toIcon.setDisplayOrder
- Renamed function
IconController.setTopbarEnabled
toIcon.setTopbarEnabled
- Removed method
icon:setTip
(explanation on this here) - Removed method
icon:set
- Removed method
icon:get
- Removed method
icon:getToggleState
- Removed method
convertLabelToNumberSpinner
- Removed method
icon:setLabelYScale
- Removed method
icon:setBaseZIndex
- Removed method
icon:setSize
- Removed method
icon:setYSize
- Removed method
icon:setTopPadding
- Removed event
icon.userSelected
- Removed event
icon.userDeselected
- Removed event
icon.userToggled
- Removed event
icon.dropdownOpened
- Removed event
icon.dropdownClosed
- Removed event
icon.menuOpened
- Removed event
icon.menuClosed
- Removed property
icon.accountForWhenDisabled
- Removed property
icon.hovering
- Removed property
icon.tipText
- Removed property
icon.captionText
- Removed property
icon.dropdownIcons
- Removed property
icon.menuIcons
- Removed property
icon.dropdownOpen
- Removed property
icon.menuOpen
- Removed property
icon.topPadding
- Removed property
icon.targetPosition
- Removed function
IconController.setGap
- Removed function
IconController.setLeftOffset
- Removed function
IconController.setRightOffset
- Removed function
IconController.updateTopbar
- Removed function
IconController.clearIconOnSpawn
(v3 now checks if your scripts are located within a ScreenGui with 'ResetOnSpawn' set totrue
and responds accordingly. This was probably the most asked about thing in v2 so super happy to finally have this resolved!) - Removed function
IconController.disableHealthbar
- Removed function
IconController.disableControllerOption
- Removed all IconController properties
- Removed module IconController
Contributors
@xhayper for multiple improvements to the repository, help introducing wally, code cleanup, and ongoing help with luau typechecks and luau autocompletes
@iamEvanYT for the initial hybrid support for the new topbar
@LordMerc for help with the documentation and general feedback
@ValiantWind for help with testing and feedback
@lolmansReturn for help retrieving values in features such as captions
@medallyon for help setting up Wally
@CAZ-H for help with clamping objects within screen bounds
@howmanysmall for the package Janitor
@stravant for the package GoodSignal
Thank you to the many contributors of v3.0.0 and everyone who has provided feedback and reports over the last three months 🙏
v2.9.1
Improved
- Improved the size adapting of captions and tips when their texts are changed via localization
- Improved the size adapting of icon labels, in particular for the selected state
Fixed
- Fixed a bug preventing the icon cell resizing when deselected for icons with an image but only selected text
v2.9.0
Added
- Added
icon:debounce(seconds)
. This is shorthand foricon:lock() task.wait(seconds) icon:unlock()
- Added
IconController.disableControllerOption(bool)
- Added controller selection support
Improved
- Improved the scrolling behaviour of menus and dropdowns (scrolling is no longer blocked by other scrolling items)
- Improved menu and dropdown selection when using a controller so that menu/dropdown icons are no longer skipped when the maxIconsBeforeScroll is less than the total icons within the feature
- Updated internals of localization support so that only the source language is scraped
v2.8.0
Added
- Added Localization compatability. Icons will now update their properties (such as width) when new localized text is found or detected. This also accounts for switching languages live in-game. This resolves #38
- Added RichText compatability to Captions and Tips
- Added
IconController.voiceChatEnabled
(defaultfalse
) which now must be set to true by game developers if their experience uses VoiceChat This is also accompanied by a warning to inform developers of this. This resolves the issue outlined here: https://devforum.roblox.com/t/topbarplus-v277/1017485/681?u=foreverhd - Added
icon:autoDeselect(bool)
as a shorthand alternative to:setProperty("deselectWhenOtherIconSelected", bool)
- Added
icon:call(func)
as a more appropriate alternative toicon:give(object)
- Added
icon:setXSize(XOffset, iconState)
- Added
icon:setYSize(YOffset, iconState)
- Added
forcedIconSizeX
andforcedIconSizeY
theme settings - Added
icon.userSelected
event - Added
icon.userDeselected
event - Added
icon.userToggled
event - Added a variable for script and script.Parent to Icon and IconController. This resolves #47
Improved
- Updated Contributing docs page to mention that you don't need to open issues for smaller contributions like single-line fixes
- Improved the internal behaviour of
:setSize
- Improved the behaviour of
:lock
so that the overlaps now disappear and so that:select
and:deselect
can still work (now only the user-input is disabled). This resolves #42
Fixed
- Fixed an offset bug that occurred when CoreGuis PlayerList and Backpack were disabled (but not EmotesMenu) while R6. More details here: https://devforum.roblox.com/t/topbarplus-v277/1017485/684?u=foreverhd
- Fixed an error when setting the base ZIndex of an icon. More details here: https://devforum.roblox.com/t/topbarplus-v277/1017485/679?u=foreverhd
- Fixed a bug preventing dropdown icons from updating: This resolves #32 and https://devforum.roblox.com/t/topbarplus-v277/1017485/348?u=foreverhd
- Fixed a font-clipping issue by using ContentText instead and updating the icon whenever its font is changed. This resolves #60 and resolves #54
- Fixed a bug which caused the Playerlist to re-appear when toggling right-set dropdowns even if the Playerlist CoreGui was previously disabled. This resolves #57
Removed
- Removed the documentation within Icon and IconController, and removed the module-docs.yml action. This was not as beneficial as first assumed.
- Removed
forcedIconSize
theme setting
v2.7.7
Added
- Added basic compatability for VR devices. This includes different behaviour for when the Roblox menu is toggled. Credit to @cl1ents for help with this.
Improved
- Improved RichText compatability so that icons now account for the ContentText instead of Text when determining width.
- Updated the third-party documents page which now explains that third-party applications no-longer need to do anything. TopbarPlus now handles multi-package logic internally.
Fixed
- Fixed some third-party require logic within Icon and IconController. If more than one TopbarPlus package is required within an experience the first-required package will become the 'lead' package. No other package will run afterwards, only a reference to the lead package is returned. This prevents two-packages from running at once (such as when using HD Admin, SuperBiz Catalog, etc which also have their own TopbarPlus package).
- Fixed additional third-party require logic that would occur when the IconController was required before the Icon.
v2.7.6
Added
- Checks to account for the new obtrusive 'Voice Chat Beta' icon.
- Mouse-click detection for controller mode hide/show toggle. Credit to @Lucke0051 for this.
Fixed
- A bug with overflows caused by changing the Workspace.CurrentCamera. Credit to @Lucke0051 for this.
v2.7.5
Improved
- The roblox hover cursor now appears when hovering over Icon buttons.
v2.7.4
Fixed
- A bug with ResetOnRespawn where the :give() function would call right away and when destroyed for functions, which only triggered after two resets
- Items like captions and tips not being destroyed when active with ResetOnSpawn.
Improved
- The fake healthbar behaviour, so that it appears now only when an icon is set to the right.
- Reduced the likelihood of two healthbars appearing simultaneously.