Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DoomStatusBar : BaseStatusBar
- {
- HUDFont mHUDFont;
- HUDFont mIndexFont;
- HUDFont mAmountFont;
- InventoryBarState diparms;
- override void Init()
- {
- Super.Init();
- SetSize(32, 320, 200);
- // Create the font used for the fullscreen HUD
- Font fnt = "HUDFONT_DOOM";
- mHUDFont = HUDFont.Create(fnt, fnt.GetCharWidth("0"), true, 1, 1);
- fnt = "INDEXFONT_DOOM";
- mIndexFont = HUDFont.Create(fnt, fnt.GetCharWidth("0"), true);
- mAmountFont = HUDFont.Create("INDEXFONT");
- diparms = InventoryBarState.Create();
- }
- override void DrawAutomapHUD(double ticFrac)
- {
- // This uses the normal automap HUD but just changes the highlight color.
- DoDrawAutomapHUD(Font.CR_GREY, Font.CR_UNTRANSLATED);
- }
- override void Draw (int state, double TicFrac)
- {
- Super.Draw (state, TicFrac);
- if (state == HUD_StatusBar)
- {
- BeginStatusBar();
- DrawMainBar (TicFrac);
- }
- else if (state == HUD_Fullscreen)
- {
- BeginHUD();
- DrawFullScreenStuff ();
- }
- }
- protected void DrawMainBar (double TicFrac)
- {
- DrawImage("STBAR", (0, 168), DI_ITEM_OFFSETS);
- DrawImage("STTPRCNT", (90, 171), DI_ITEM_OFFSETS);
- DrawImage("STTPRCNT", (221, 171), DI_ITEM_OFFSETS);
- Inventory a1 = GetCurrentAmmo();
- if (a1 != null) DrawString(mHUDFont, FormatNumber(a1.Amount, 3), (44, 171), DI_TEXT_ALIGN_RIGHT|DI_NOSHADOW);
- DrawString(mHUDFont, FormatNumber(CPlayer.health, 3), (90, 171), DI_TEXT_ALIGN_RIGHT|DI_NOSHADOW);
- DrawString(mHUDFont, FormatNumber(GetArmorAmount(), 3), (221, 171), DI_TEXT_ALIGN_RIGHT|DI_NOSHADOW);
- bool locks[6];
- String image;
- for(int i = 0; i < 6; i++) locks[i] = CPlayer.mo.CheckKeys(i + 1, false, true);
- // key 1
- if (locks[1] && locks[4]) image = "STKEYS6";
- else if (locks[1]) image = "STKEYS0";
- else if (locks[4]) image = "STKEYS3";
- DrawImage(image, (239, 171), DI_ITEM_OFFSETS);
- // key 2
- if (locks[2] && locks[5]) image = "STKEYS7";
- else if (locks[2]) image = "STKEYS1";
- else if (locks[5]) image = "STKEYS4";
- else image = "";
- DrawImage(image, (239, 181), DI_ITEM_OFFSETS);
- // key 3
- if (locks[0] && locks[3]) image = "STKEYS8";
- else if (locks[0]) image = "STKEYS2";
- else if (locks[3]) image = "STKEYS5";
- else image = "";
- DrawImage(image, (239, 191), DI_ITEM_OFFSETS);
- int amt1, maxamt;
- [amt1, maxamt] = GetAmount("Clip");
- DrawString(mIndexFont, FormatNumber(amt1, 3), (288, 173), DI_TEXT_ALIGN_RIGHT);
- DrawString(mIndexFont, FormatNumber(maxamt, 3), (314, 173), DI_TEXT_ALIGN_RIGHT);
- [amt1, maxamt] = GetAmount("Shell");
- DrawString(mIndexFont, FormatNumber(amt1, 3), (288, 179), DI_TEXT_ALIGN_RIGHT);
- DrawString(mIndexFont, FormatNumber(maxamt, 3), (314, 179), DI_TEXT_ALIGN_RIGHT);
- [amt1, maxamt] = GetAmount("RocketAmmo");
- DrawString(mIndexFont, FormatNumber(amt1, 3), (288, 185), DI_TEXT_ALIGN_RIGHT);
- DrawString(mIndexFont, FormatNumber(maxamt, 3), (314, 185), DI_TEXT_ALIGN_RIGHT);
- [amt1, maxamt] = GetAmount("Cell");
- DrawString(mIndexFont, FormatNumber(amt1, 3), (288, 191), DI_TEXT_ALIGN_RIGHT);
- DrawString(mIndexFont, FormatNumber(maxamt, 3), (314, 191), DI_TEXT_ALIGN_RIGHT);
- if (deathmatch || teamplay)
- {
- DrawString(mHUDFont, FormatNumber(CPlayer.FragCount, 3), (138, 171), DI_TEXT_ALIGN_RIGHT);
- }
- else
- {
- DrawImage("STARMS", (104, 168), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(2)? "STYSNUM2" : "STGNUM2", (111, 171), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(3)? "STYSNUM3" : "STGNUM3", (123, 171), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(4)? "STYSNUM4" : "STGNUM4", (135, 171), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(5)? "STYSNUM5" : "STGNUM5", (111, 181), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(6)? "STYSNUM6" : "STGNUM6", (123, 181), DI_ITEM_OFFSETS);
- DrawImage(CPlayer.HasWeaponsInSlot(7)? "STYSNUM7" : "STGNUM7", (135, 181), DI_ITEM_OFFSETS);
- }
- if (multiplayer)
- {
- DrawImage("STFBANY", (143, 168), DI_ITEM_OFFSETS|DI_TRANSLATABLE);
- }
- if (CPlayer.mo.InvSel != null && !level.NoInventoryBar)
- {
- DrawInventoryIcon(CPlayer.mo.InvSel, (160, 198));
- if (CPlayer.mo.InvSel.Amount > 1)
- {
- DrawString(mAmountFont, FormatNumber(CPlayer.mo.InvSel.Amount), (175, 198-mIndexFont.mFont.GetHeight()), DI_TEXT_ALIGN_RIGHT, Font.CR_GOLD);
- }
- }
- else
- {
- DrawTexture(GetMugShot(5), (143, 168), DI_ITEM_OFFSETS);
- }
- if (isInventoryBarVisible())
- {
- DrawInventoryBar(diparms, (48, 169), 7, DI_ITEM_LEFT_TOP);
- }
- }
- protected void DrawFullScreenStuff ()
- {
- Vector2 iconbox = (40, 20);
- // Draw health
- let berserk = CPlayer.mo.FindInventory("PowerStrength");
- DrawImage(berserk? "PSTRA0" : "MEDIA0", (20, -2));
- DrawString(mHUDFont, FormatNumber(CPlayer.health, 3), (44, -20));
- let armor = CPlayer.mo.FindInventory("BasicArmor");
- if (armor != null)
- {
- DrawInventoryIcon(armor, (20, -22));
- DrawString(mHUDFont, FormatNumber(armor.Amount, 3), (44, -40));
- }
- Inventory ammotype1, ammotype2;
- [ammotype1, ammotype2] = GetCurrentAmmo();
- int invY = -20;
- if (ammotype1 != null)
- {
- DrawInventoryIcon(ammotype1, (-14, -4));
- DrawString(mHUDFont, FormatNumber(ammotype1.Amount, 3), (-30, -20), DI_TEXT_ALIGN_RIGHT);
- invY -= 20;
- }
- if (ammotype2 != null && ammotype2 != ammotype1)
- {
- DrawInventoryIcon(ammotype2, (-14, invY + 17));
- DrawString(mHUDFont, FormatNumber(ammotype2.Amount, 3), (-30, invY), DI_TEXT_ALIGN_RIGHT);
- invY -= 20;
- }
- if (!isInventoryBarVisible() && !level.NoInventoryBar && CPlayer.mo.InvSel != null)
- {
- DrawInventoryIcon(CPlayer.mo.InvSel, (-14, invY + 17));
- DrawString(mHUDFont, FormatNumber(CPlayer.mo.InvSel.Amount, 3), (-30, invY), DI_TEXT_ALIGN_RIGHT);
- }
- if (deathmatch)
- {
- DrawString(mHUDFont, FormatNumber(CPlayer.FragCount, 3), (-3, 1), DI_TEXT_ALIGN_RIGHT, Font.CR_GOLD);
- }
- // Draw the keys. This does not use a special draw function like SBARINFO because the specifics will be different for each mod
- // so it's easier to copy or reimplement the following piece of code instead of trying to write a complicated all-encompassing solution.
- Vector2 keypos = (-10, 2);
- int rowc = 0;
- double roww = 0;
- for(let i = CPlayer.mo.Inv; i != null; i = i.Inv)
- {
- if (i is "Key" && i.Icon.IsValid())
- {
- DrawTexture(i.Icon, keypos, DI_SCREEN_RIGHT_TOP|DI_ITEM_LEFT_TOP);
- Vector2 size = TexMan.GetScaledSize(i.Icon);
- keypos.Y += size.Y + 2;
- roww = max(roww, size.X);
- if (++rowc == 3)
- {
- keypos.Y = 2;
- keypos.X -= roww + 2;
- roww = 0;
- rowc = 0;
- }
- }
- }
- if (isInventoryBarVisible())
- {
- DrawInventoryBar(diparms, (0, 0), 7, DI_SCREEN_CENTER_BOTTOM, HX_SHADOW);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement