undeadzeratul / hideous-helmet-extended Goto Github PK
View Code? Open in Web Editor NEWA Customizable HUD for Hideous Destructor! Requires HUDCore, and supports Hideous Helmet
License: GNU General Public License v3.0
A Customizable HUD for Hideous Destructor! Requires HUDCore, and supports Hideous Helmet
License: GNU General Public License v3.0
Forgot to wire up these CVARs with the presets, so currently they'll just need to be positioned manually.
Since the original mod is public domain, instead of simply using FDA's updated version separately, integrating it as an entire HUD Element (or at least wiring up the CVARs for it) would give another optional HUD Element to play with.
Ideally the CVARs already listed in the mod should stay the same so players don't have to reconfigure them in HHX. In fact, the existing menus can even stay, and a link to them can even be provided in the HUD Element Options submenu.
I can see someone wanting to show more than 3 items in their inventory wheel, maybe even less? Either way adding a configurable amount of items to show would be a nice bit of configurability
Currently there are two kinds of Presets capable of being produced: static HUDs and Helmet-specific HUDs. These two kinds of presets really should be separated or at least have two sets of presets to control which CVARs get adjusted when used.
Currently, here's how I'm thinking the existing presets could be split up:
NOTE: The default values of the CVARs should be Vanilla HDest positioning if they currently are not. This would imply that a "Vanilla" Preset is accomplished simply by resetting all CVARs to their default value, except if the player wants a Hideous Helmet experience, in which the elements would need to all require the helmet. Since that is normally left up to the player's discretion even in HHelmet itself, I'm currently planning on simply resetting the values.
Given this separation, I'm thinking of two methods:
The first solution would give each HUD more "character" in that the mod provides stylized Classic Doom HUDs, as well as more diegetic Helmet HUDs. The second would allow players to have more explicit control over whether they want the Alpha HUD but only for their helmet, or if they always want the UDV layout as they don't run with HHelmet.
This will be a bit more involved, but should be able to leverage the BaseStatCounter
nonetheless. Basically follow the math used in determining how much time the player has left to stay underwater, and from there calculate the percent of air they have left. If UaS is installed, should take the respirator into account as well.
Some various improvements I've found whilst making my preset for this:
Currently all of the text associated with most HUD elements is completely static and not modifiable at all, the most notable example of this is the armor durability text, which cannot be moved at all and in my case covers up a bit of my inventory wheel. Having the ability to control where this text and others like it is placed on my screen would be incredibly helpful.
This just makes making a HUD preset without having to load every single one of the addons supported possible. Makes thing easier to create with.
Sprites that just are lines that go across the entire screen that can be toggled to properly align certain Hud elements, like having a centered health bar, et cetera. Like the previous one, makes development easier.
I'd like to see some more options pertaining to the compass, like shifting the position text separately from the compass and having an angle marker, like how Cozi's Hideous Helmet fork did it, as some options to the vanilla compass to make it a bit more customizable.
Similar to the Berserk & Stim Counters, this HUD Element will simply display the total amount of Blues in the player's system.
Basically what was included in TedTweaks' addon, being able to show the shieldcore graphic along with the amount of shields the player has would be really helpful.
This HUD Element could either be on its own or bundled as part of the "equipment" HUD Element, although its only in ID Doom that the shieldcore is a helmet.
The HUD Elements as they exist today were taken as a 1-to-1 mapping of the existing HUDCore & HHelmet elements. However, with the namespace properties (along with simply overriding the existing to effectively no-op their implementations and then provide our own), it should be easy enough to simply re-arrange the HUD Elements into functionally similar groups.
The AmmoCounters
, Inventory
, and FullInventory
HUDElements
all do similar things, iterating through the player's inventory and rendering the items to the screen, especially the AmmoCounters
& FullInventory
HUDElements
. I can see these 3 being consolidated into 2 new elements, InventorySelector
and Inventory
. The former will focus on rendering the three items in the selection "wheel" whereas the latter will render the grid of inventory items.
Alongside the idea of a grid of graphics to display the player's inventory, it might be worth making a base "Grid-like" HUDElement
class to control how to render individual entries in a grid with wrapping and offsets. This would also be useful with the WeaponStash
HUDElement
.
Along with the rest of the HUD Elements, the user should be allowed to move the help text anywhere they'd like, as well as hopefully scale or change the opacity of the text itself.
It would be nice to adjust not only the position and scale of an existing HUD Element, but if it's possible, the Alpha/Transparency of that element would be nice, as well.
Looks like the Blood Bag might need to have its own counter and/or override, as currently its icon isn't moveable and can overlap other configured elements.
Not sure how these slipped by, but the Ugly as Sin Hunger and Thirst stats can be tracked, assuming they're available without hard casting a class and causing a hard dependency somewhere.
There's starting to be quite a few of these "X Counter" HUD Elements, that all do pretty much the same thing in the same way. By refactoring out the common logic into an abstract class, it should be easier to make new ones in the future.
Similar to all the other counter HUD Elements, having something that shows the amount (or even percentage) of fatigue could be useful to some people, and since it's just a property on the HDPlayerPawn, should be straightforward to add.
Currently the full inventory element simply shows what items you have on you, not how many of each you have, like how the Ammo Counters do. Only the Inventory Wheel does this.
It's possible someone may want to not use the wheel and instead just use the FullInventory Element as their selection interface, or even just display it in a panel all the time, and thus being able to see the number of a given item is more useful in this regard.
The question would be, should the counter be tied to a config? Should this same config exist on the Wheel? The Ammo Counters?
It seems I misunderstood a bit how graphics are rendered and how their offsets are calculated, leading to some odd behavior in some cases with the Armour HUD Element and its individual pieces.
I'll need to make new Graphic
entries in a separate TEXTURES lump to define each Armour piece's graphical offset (defaulting to (0, 0)
) so that things can be programmatically consistent yet reskins can adjust individual textures as needed to properly align them.
This will also cause a slight adjustment to the CVARs as things will probably need to be shifted around, but in the end hopefully this makes things a bit more consistent to players and reskins.
Mostly for debugging but also possibly for themed runs? (Zikshadow would like silly amounts of them for a Terminator-styled HUD)
Whatever mod adds these would be a good place to look: https://cdn.discordapp.com/attachments/524684262621052938/857003413141585930/gzdoom_2021-06-23_03-46-43-42.mp4
Will require caligari87/Ugly-as-Sin#209 to be merged before it can work, as it needs a UI-scoped service to check if the player has an active respirator first, but otherwise should be simple enough to implement.
As per the suggestion on the Discord Server, Cozi's fork of Hideous Helmet had a Stimpack Counter that should be able to be ported over into a separate HUD Element.
Similar to TedTweaks' Shieldcore HUD Element, this should display the stimpack graphic along with the amount of stim the player has in their system.
Oopsie poopsie, should've known extending off of the HHelmet class would cause issues, but this is the first time it's been brought to my attention ๐คท
I should just have to reimplement a dummy HUDElement with the same namespace and then do nothing.
Looks like I ran into a bad case of copy paste and a bunch of the menu options use uz_hhx_ammoCounters_enabled
as their check to be enabled.
With enough effort & time, the HCItemOverrides
class should let me do what I need, similar to how the Stat Counters were made using a BaseCounter
class and extending it from there. A core BaseWeaponStatus
that has all the necessary hooks, methods, getters, etc. to draw every piece of the main/"standard" templates should suffice for the 80% of the weapons out there, then override the methods in the remaining 20% with whatever custom layout they use.
Another Counter, this time tracking the HDPlayerPawn's "stunned" property.
Looks like I need to add some safety checks somewhere to prevent array index out of bounds errors
Basically taking inspiration from Arcterezion's HUD, adding a set of shoulder sprites to render under the mugshot that would angle left/right based on the frames where the mugshot also faces left/right.
Might also look into swapping out graphics based on equipped armor(s).
Similar to Ted Tweaks' own replacement wherein the Radsuit's normal green overlay was replaced with a custom graphic, this HUD Element will render its own graphic.
I would prefer it if the overlay rendered under the "helmet" background, but that would require the element have a Z-Layer lower than the entire HUD background, which may not be desired. I'll have to investigate how to alter that down the road but at least for now it'd be nice to have a but of a more diegetic radsuit
Similar to how the Radsuit overlay is set up, the current UDVBGA
and UDVBGB
should actually be 320x200 res images, and a new set of UDVBG*WD
should be added for 320x180 (16x9 ratio) and gave the current images be renamed to UDVBG*HD
for full 1920x1080 (16x9 ratio) resolution.
This way people who want the standard resolution can use them (which will be the default in the presets) but as always they can choose whatever graphic they want.
As reported on the Discord Server, it seems the Ugly as Sign Gyro Stabilizer doesn't render its text to the screen? Will have to look into how that's being done and port that logic into its own HUD Element.
Possibly also tie into the hd_debug
CVAR? Just some way to be able to see all HUD elements for positioning, debugging, etc.
Mostly to see if the rendering order can be altered, but also to swap out the goggle mask graphic if desired.
Seems I missed this one with all the stat counters, should be easy to add once I figure out where to grab the value from
As per the suggestion on the Discord Server, Cozi's fork of Hideous Helmet had a Berserk Counter that should be able to be ported over into a separate HUD Element.
Similar to TedTweaks' Shieldcore HUD Element, this should display the berserk graphic along with the amount of zerk the player has in their system.
At its simplest, it should just need to count the amount of Mercbucks items in the player's inventory, but depending on how it calculates total currency, it might need to also account for 7mm, assembly cores, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.