Skip to content

Commit e229bb9

Browse files
committed
#52 Raw, Fennec: guess the firebomb type
1 parent 63ec3ac commit e229bb9

File tree

2 files changed

+57
-14
lines changed

2 files changed

+57
-14
lines changed

src/themes/fennec/radar/grenade/grenade-projectile/grenade-projectile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export default {
4040
grenadeIconName() {
4141
switch (this.grenade.type) {
4242
case 'decoy': return 'decoy'
43-
case 'firebomb': return 'molotov' // TODO need to find out when this is incgrenade
43+
case 'firebomb': return this.grenade.firebombType || 'molotov'
4444
case 'flashbang': return 'flashbang'
4545
case 'frag': return 'hegrenade'
4646
case 'smoke': return 'smokegrenade'

src/themes/raw/gsi/parse-grenades.js

+56-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
11
import { gsiState, players } from '/hud/core/state.js'
22
import { parsePosition } from '/hud/gsi/parse-position.js'
33

4-
const additionalGrenadeData = (grenade) => {
4+
const cachedFirebombTypes = {}
5+
6+
const getFirebombType = (grenadeId, owner) => {
7+
const ownerActiveGrenade = owner?.grenades?.find((nade) => nade.isActive)
8+
9+
if (! ownerActiveGrenade) {
10+
return cachedFirebombTypes[grenadeId]
11+
}
12+
13+
if (ownerActiveGrenade.name === 'weapon_incgrenade') {
14+
cachedFirebombTypes[grenadeId] = 'incgrenade'
15+
return 'incgrenade'
16+
}
17+
18+
if (ownerActiveGrenade.name === 'weapon_molotov') {
19+
cachedFirebombTypes[grenadeId] = 'molotov'
20+
return 'molotov'
21+
}
22+
}
23+
24+
const additionalGrenadeData = (grenade, grenadeId, owner) => {
525
switch (grenade.type) {
626
case 'inferno':
727
return {
@@ -11,6 +31,11 @@ const additionalGrenadeData = (grenade) => {
1131
}))
1232
}
1333

34+
case 'firebomb':
35+
return {
36+
firebombType: getFirebombType(grenadeId, owner),
37+
}
38+
1439
case 'decoy':
1540
case 'smoke':
1641
return {
@@ -21,19 +46,37 @@ const additionalGrenadeData = (grenade) => {
2146
}
2247
}
2348

24-
export const parseGrenades = () => Object.entries(gsiState.grenades).map(([id, grenade]) => {
25-
const velocity = parsePosition(grenade.velocity)
49+
export const parseGrenades = () => {
50+
const firebombGrenadeIds = new Set()
51+
52+
const grenades = Object.entries(gsiState.grenades).map(([id, grenade]) => {
53+
const velocity = parsePosition(grenade.velocity)
54+
const owner = players.find((player) => player.steam64Id === grenade.owner)
2655

27-
return {
28-
id,
29-
velocity,
56+
if (grenade.type === 'firebomb') {
57+
firebombGrenadeIds.add(id)
58+
}
3059

31-
isDetonated: velocity && velocity[0] === 0 && velocity[1] === 0 && velocity[2] === 0,
32-
lifeTimeSec: Number(grenade.lifetime),
33-
owner: players.find((player) => player.steam64Id === grenade.owner),
34-
position: parsePosition(grenade.position),
35-
type: grenade.type,
60+
return {
61+
id,
62+
owner,
63+
velocity,
3664

37-
...additionalGrenadeData(grenade),
65+
isDetonated: velocity && velocity[0] === 0 && velocity[1] === 0 && velocity[2] === 0,
66+
lifeTimeSec: Number(grenade.lifetime),
67+
position: parsePosition(grenade.position),
68+
type: grenade.type,
69+
70+
...additionalGrenadeData(grenade, id, owner),
71+
}
72+
})
73+
74+
for (const id in cachedFirebombTypes) {
75+
if (! firebombGrenadeIds.has(id)) {
76+
delete cachedFirebombTypes[id]
77+
console.log('deleting', id)
78+
}
3879
}
39-
})
80+
81+
return grenades
82+
}

0 commit comments

Comments
 (0)