Informace o stavu munice je vykreslena v pravém horním rohu. Zde je naznačena právě využívaná zbraň a stav zásoby munice ve zbrani. Při stisku tlačítka myši dojde k pomyslnému výstřelu. Úbytek nábojnic je symbolizován prázdnými nábojnicemi z levé strany. Při vystřílení všech nábojnic je možné přebít stisknutím klávesy R, zásoba munice je neomezená. Při přebíjení dojde ke zmizení zaměřovacího kříže a uživateli je zobrazena ikona zásobníku a animace načítání ve středu obrazovky.
See the Pen HUD_Munition by Filip Mička (@Filda360) on CodePen.
Ukázka výsledného HUD prvku zobrazující stav munice v CodePen
Tento HUD prvek byl implementován pomocí HTML elementů.
V těle HTML dokumentu byly vytvořeny kontejnery pro ukazatel stavu munice v pravém horním rohu (munitionBox) a indikátory nabíjení ve střední části (reloadingBox).
Kontejner munitionBox obsahuje ikonu použité zbraně a ikonu nábojnice.
Kontejnery reloadingBox obsahují ikonu pro nabíjení a ikonu pro načítání.
Vše je pomocí CSS stylů nastylizováno do požadovaného vzhledu a umístění.
Při stisknutí tlačítka na myši dojde k zachycení této události pomocí listeneru.
Pokud je v zásobníku alespoň jeden náboj, dojde k dekrementaci proměnné munitionInMagazine o 1 a následně je volána funkce drawMunition.
Ve funkci drawMunition dochází nejdříve k vyčištění celého kontejneru munitionBox, následně je do kontejneru opět přidána ikona používané zbraně.
V cyklech jsou poté vytvářeny a zároveň stylizovány elementy obrázků prázdných a plných nábojnic,
které jsou přidávány do kontejneru. Nakonec je aktualizován obsah elementu nesoucí číselný popis stavu munice.
Při vyhodnocování stisknutých pohybových kláves ve funkci move je také vyhodnocováno, zda uživatel nestiskl klávesu R.
Pokud došlo ke stisknutí, dojde k volání funkce reloadMagazine.
Ve funkci reloadMagazine dochází nejprve k zavolání funkce hideReticle.
Tato funkce slouží pro skrytí zaměřovacího kříže.
Následně jsou zobrazeny ikony pro nabíjení (nastavením vlastnosti display na hodnotu inline) a je spuštěna animace načítání.
Délka animace (rotace) je nastavena konstantou reloadingTime.
Rotace je v CSS stylech nastavena od -40° do 320° z důvodu startu a konce indikátoru načítání ve vrchní poloze.
Po skončení animace je hodnota proměnné munitionInMagazine nastavena na hodnotu magazineCapacity,
ikony pro přebíjení jsou skryty (nastavením vlastnosti display na hodnotu none) a je opět volána funkce drawMunition pro překreslení ukazatele stavu munice.
[1] ikona nábojnice, upravená: https://icons8.com/icon/oRjkxhu4hBGm/bullet
[2] ikona revolveru: https://icons8.com/icon/116964/firing-gun
[3] ikona zásobníku: https://icons8.com/icon/15004/rifle-magazine
[4] ikona načítání: https://icons8.com/icon/SvmNQZxbfM9l/loading-circle