🛠️ Cowzy Friday: Wrapping Up the Toolbar UI
- Wesley Chartrand
- Apr 25
- 3 min read
Hey everyone, and welcome back to another Cowzy Friday update! This week sees a set of major tasks completed for Cowzy Town. I've wrapped up a huge chunk of our toolbar panel interface. While there’s still more work ahead, this completes a massive foundation for how players will interact with buildings, systems, and info in-game. Let’s break it all down.
Scalable Toolbar Panel
At the heart of our UI is a scalable toolbar panel built to grow alongside Cowzy.
We’ve architected this so new buttons are easy to add and hook up to gameplay functionality.

Blueprint Dispatchers: Clean and Scalable Communication
Event Dispatchers make the magic happen here as they are key part of our communication pipeline:
WBP_ToolbarWidgetButton → WBP_ToolbarOptionPanel → WBP_ToolbarButtonPanel
Each widget receives events cleanly, allowing us to update the HUD and trigger our relevant preview mode (in this case, our Build Prieview). It’s fast, lightweight, and super scalable. If we ever want to add a new WBP_ToolbarWidgetButton, all we need to do is add it to our WBP_ToolbarOptionPanel and add all of our relevant Dispatch calls.

Animations for Feedback
Every WBP_ToolbarWidgetButton has animations built-in to the parent calls, WBP_ToolbarWidget, so we can easily create other children of WBP_ToolbarWidget in the future.
We ended up with a funny issue where pressing the mouse down or releasing the mouse button caused an Event OnMouseLeave or Event OnMouseEnter, respectively, in the UI. Turns out this is an actual Unreal Engine issue and we resolved this by checking if our Mouse was down and/or had a bool set to check if we have unhovered at any point.

Defining Buttons with DataTables
To support flexibility, we’ve defined a DataTable that contains the relevant information for our building. Each entry defines:
The image/icon for each toolbar state
What building class should be loaded into the preview system
All relevant info for the info panel popup such as resource costs
Each WBP_ToolbarButton contains a BuildingType enum which we can check for in the table. This allows us to easily setup new buttons and our previewer handles all of the actual logic!
ℹ️ Hover-Based Info Panel
We’ve implemented a contextual info panel using a MenuAnchor on every WBP_ToolbarWidgetButton. When hovering over a button, a popup appears showing:
The building’s name
Its cost (wood, stone, etc.)
A short description
This panel pulls directly from the DT_BuildingData table using the enum in the WBP_ToolbarWidgetButton that defines that building is used! In the future, we'll likely need a separate info panel for more generic panels or simply find a way to reuse our current one!

✅ Wrapping Up a major task
Bringing all this together means we now have a fully interactive, animated, and scalable toolbar UI that supports our demo goals. It wasn’t a small task—getting all the pieces working cleanly took time, and a lot of frustration, but it’s a huge step forward.
🐄 What’s Next for Cowzy Town?
With the toolbar in a mostly complete state, it’s time to shift focus back to core gameplay by focusing on the stars of Cowzy Town: the cows. I've spent some time defining cows and how the Cow Management Core Pillar functions.
Here’s what’s coming up:
Implementing the game day system (not quite day/night but getting there) that defines what villagers and cows do each day.
Getting into our Cows, what they do, and how they do it!
Expanding villager and cow behavior to fit into daily routines.
Defining what happens during the day, such as milk creation from cows, and stacking towards the end day event where the town resets for the next day!
Thanks for reading another Cowzy Friday update, and thank you so much for joining me on this cozy, cow-filled dev journey. 🐄🏡🧀🧀🧀🧀🧀
Comentarios