Skip to content

Commit 7babbbe

Browse files
committed
Allow configuring monster hpbar.
1 parent 4ad9e5b commit 7babbbe

7 files changed

+100
-56
lines changed

LANGUAGE.de

+10
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ RWMENU_CUSTOMIZEDOOMABLO = "DOOMablo Einstellungen";
99

1010
RWMENU_INTERFACEOPTIONS_HEADER = "Interfaceeinstellungen";
1111
RWSETTINGS_AFFIXNAMES = "Affix Namen anzeigen";
12+
RWMENU_MONHPBAROPTIONS_HEADER = "GP-Bar Optionen";
13+
RWSETTINGS_MINWIDTH = "Mindestbreite";
14+
RWSETTINGS_HEIGHT = "Mindesthöhe";
15+
RWSETTINGS_VERTICAL_POSITION = "Vertikale Position";
16+
RWSETTINGS_BORDER_THICKNESS = "Randstärke";
17+
RWSETTINGS_MONSTER_NAME_YOFFSET = "Relative Namenposition";
18+
RWSETTINGS_MONSTER_AFFIXES_YOFFSET = "Relative Affixposition";
19+
RWSETTINGS_MONHPBARBORDER_COLOR = "Randfarbe";
20+
RWSETTINGS_MONHPBAR_COLOR = "Farbe für GP-Bar";
21+
RWSETTINGS_MONAFFIXESTEXT_COLOR = "Farbe für Affixtexte";
1222

1323
RWMENU_GAMEPLAYOPTIONS_HEADER = "Gameplayeinstellungen";
1424
RWSETTINGS_UNCLUMP = "Nebenen Artefakten vom einander springen";

LANGUAGE.default

+11
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ RWMENU_CUSTOMIZEDOOMABLO = "Customize DOOMablo";
1010
RWMENU_INTERFACEOPTIONS_HEADER = "Interface options";
1111
RWSETTINGS_AFFIXNAMES = "Show affixes' names in stats";
1212

13+
RWMENU_MONHPBAROPTIONS_HEADER = "Monster HP Bar options";
14+
RWSETTINGS_MINWIDTH = "Minimum width";
15+
RWSETTINGS_HEIGHT = "Height";
16+
RWSETTINGS_VERTICAL_POSITION = "Vertical position";
17+
RWSETTINGS_BORDER_THICKNESS = "Border thickness";
18+
RWSETTINGS_MONSTER_NAME_YOFFSET = "Name relative position";
19+
RWSETTINGS_MONSTER_AFFIXES_YOFFSET = "Affixes relative position";
20+
RWSETTINGS_MONHPBARBORDER_COLOR = "Border color";
21+
RWSETTINGS_MONHPBAR_COLOR = "HP bar color";
22+
RWSETTINGS_MONAFFIXESTEXT_COLOR = "Affixes text color";
23+
1324
RWMENU_GAMEPLAYOPTIONS_HEADER = "Gameplay options";
1425
RWSETTINGS_UNCLUMP = "Too closely dropped items jump from each other";
1526

MENUDEF.txt

+11
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,17 @@ OptionMenu "RW_Options"
2323
StaticText "$RWMENU_INTERFACEOPTIONS_HEADER", 1
2424
Option "$RWSETTINGS_AFFIXNAMES", "RwSettingsShowAffixNamesInTables", "RwOptionsYesNo"
2525

26+
StaticText "$RWMENU_MONHPBAROPTIONS_HEADER", 1
27+
Slider "$RWSETTINGS_MINWIDTH", "rwhud_hpbar_min_width", 50, 720, 1
28+
Slider "$RWSETTINGS_HEIGHT", "rwhud_hpbar_height", 3, 50, 1
29+
Slider "$RWSETTINGS_VERTICAL_POSITION", "rwhud_hpbar_y_position", 0, 1000, 1
30+
Slider "$RWSETTINGS_BORDER_THICKNESS", "rwhud_hpbar_border_thickness", 0, 10, 1
31+
Slider "$RWSETTINGS_MONSTER_NAME_YOFFSET", "rwhud_monster_name_y_offset", -100, 100, 1
32+
Slider "$RWSETTINGS_MONSTER_AFFIXES_YOFFSET", "rwhud_monster_affixes_y_offset", -100, 100, 1
33+
ColorPicker "$RWSETTINGS_MONHPBARBORDER_COLOR", "rwhud_monster_hpbar_border_color"
34+
ColorPicker "$RWSETTINGS_MONHPBAR_COLOR", "rwhud_monster_hpbar_color"
35+
ColorPicker "$RWSETTINGS_MONAFFIXESTEXT_COLOR", "rwhud_monster_affixes_text_color"
36+
2637
StaticText ""
2738
StaticText "$RWMENU_GAMEPLAYOPTIONS_HEADER", 1
2839
Option "$RWSETTINGS_UNCLUMP", "RwSettingsClumpedDropsJump", "RwOptionsYesNo"

cvarinfo.txt

+12-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,15 @@ server bool rw_start_with_shotgun = false;
66
server bool rw_start_with_smg = false;
77
server bool rw_heal_on_levelup = true;
88
server float rw_monster_hp_scaling_exponent_mod = 0.0;
9-
server float rw_settings_scrapping_time = 1.5;
9+
server float rw_settings_scrapping_time = 1.5;
10+
11+
// HP-bar variables
12+
server int rwhud_hpbar_min_width = 170;
13+
server int rwhud_hpbar_height = 20;
14+
server int rwhud_hpbar_y_position = 25;
15+
server int rwhud_hpbar_border_thickness = 3;
16+
server int rwhud_monster_name_y_offset = 0;
17+
server int rwhud_monster_affixes_y_offset = 22;
18+
server color rwhud_monster_hpbar_color = 0xAA0000;
19+
server color rwhud_monster_hpbar_border_color = 0x000000;
20+
server color rwhud_monster_affixes_text_color = 0xAA0000;

zscript.zsc

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ version "4.10.0"
1414
#include "zscript/hud/affix_related.zs"
1515
#include "zscript/hud/experience_info.zs"
1616
#include "zscript/hud/helpers.zs"
17-
#include "zscript/hud/hp_bar.zs"
17+
#include "zscript/hud/monster_hp_bar.zs"
1818
#include "zscript/hud/status_effects_info.zs"
1919
#include "zscript/hud/randomized_weapon_stats_table.zs"
2020
#include "zscript/hud/randomized_armor_stats_table.zs"

zscript/hud/hp_bar.zs

-54
This file was deleted.

zscript/hud/monster_hp_bar.zs

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
extend class MyCustomHUD {
2+
3+
void DrawCurrentTargetHPBar() {
4+
let handler = CurrentTargetHandler(EventHandler.Find('CurrentTargetHandler'));
5+
if (handler.currentTargetMonster == null || handler.currentTargetMonster.Health <= 0) {
6+
return;
7+
}
8+
9+
let plr = RwPlayer(CPlayer.mo);
10+
if (!plr) return;
11+
12+
DrawHpBarRect(handler.currentTargetMonster, handler.currentMonsterAffixator);
13+
}
14+
15+
void DrawHpBarRect(Actor currentTargetMonster, RwMonsterAffixator currAffixator) {
16+
let borderThickness2 = rwhud_hpbar_border_thickness * 2;
17+
let str = currentTargetMonster.GetTag()..String.Format(" (%d/%d)", (currentTargetMonster.health, currentTargetMonster.GetMaxHealth()));
18+
let HPBarWidth = max(rwhud_hpbar_min_width, monsterNameFont.mFont.StringWidth(str) + 2*borderThickness2);
19+
20+
// The background rectangle
21+
let w = HPBarWidth * CleanXFac_1;
22+
let h = rwhud_hpbar_height * CleanYFac_1;
23+
let x = Screen.GetWidth()/2 - w/2;
24+
let y = rwhud_hpbar_y_position * CleanYFac_1;
25+
Screen.Dim(rwhud_monster_hpbar_border_color, 0.65, x, y, w, h, STYLE_Translucent);
26+
27+
// The HP rectangle
28+
w = math.remapIntRange(currentTargetMonster.health, 0, currentTargetMonster.GetMaxHealth(), 0, (HPBarWidth - borderThickness2)) * CleanXFac_1;
29+
x += rwhud_hpbar_border_thickness * CleanXFac_1;
30+
h = (rwhud_hpbar_height - borderThickness2) * CleanYFac_1;
31+
y += rwhud_hpbar_border_thickness * CleanYFac_1;
32+
Screen.Dim(rwhud_monster_hpbar_color, 0.3, x, y, w, h, STYLE_Translucent);
33+
34+
let clr = Font.CR_WHITE;
35+
if (currAffixator) {
36+
clr = PickColorForAffixableItem(currAffixator);
37+
}
38+
39+
// Text
40+
let fontHeight = monsterNameFont.mFont.GetHeight();
41+
let textYPos = y+(h/2)-(fontHeight/2)-rwhud_hpbar_border_thickness;
42+
// DrawString(monsterNameFont, str, (0, rwhud_hpbar_y_position * CleanYFac_1), DI_SCREEN_CENTER_TOP|DI_TEXT_ALIGN_CENTER, clr);
43+
Screen.DrawText(monsterNameFont.mFont, clr,
44+
Screen.GetWidth()/2 - monsterNameFont.mFont.StringWidth(str), textYPos+rwhud_monster_name_y_offset,
45+
str, DTA_SCALEX, CleanXFac_1, DTA_SCALEY, CleanYFac_1);
46+
47+
// Affixes
48+
if (currAffixator) {
49+
let text = currAffixator.getDescriptionString();
50+
Screen.DrawText(monsterNameFont.mFont, Font.CR_GRAY,
51+
Screen.GetWidth()/2 - monsterNameFont.mFont.StringWidth(text), textYPos+rwhud_monster_affixes_y_offset,
52+
text, DTA_SCALEX, CleanXFac_1, DTA_SCALEY, CleanYFac_1, DTA_COLOR, 0xFF000000 | rwhud_monster_affixes_text_color);
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)