Skip to content

Commit 1291ac3

Browse files
authored
Merge branch 'master' into dependabot/go_modules/google.golang.org/protobuf-1.34.1
2 parents eb98baa + 344da0b commit 1291ac3

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
A blazing fast, feature complete and production ready Go library for parsing and analysing of Counter-Strike 2 and Counter-Strike: Global Offensive (CS:GO) demos (aka replays).
44

5-
[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://vshymanskyy.github.io/StandWithUkraine)
6-
75
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs?tab=doc)
86
[![Build Status](https://img.shields.io/github/actions/workflow/status/markus-wa/demoinfocs-golang/ci.yml?branch=master&style=flat-square)](https://github.com/markus-wa/demoinfocs-golang/actions)
97
[![codecov](https://img.shields.io/codecov/c/github/markus-wa/demoinfocs-golang?style=flat-square)](https://codecov.io/gh/markus-wa/demoinfocs-golang)

pkg/demoinfocs/common/hostage.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package common
33
import (
44
"github.com/golang/geo/r3"
55

6+
"github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/constants"
67
st "github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/sendtables"
78
)
89

@@ -54,7 +55,12 @@ func (hostage *Hostage) Health() int {
5455
// Returns nil if the hostage is not following a player.
5556
func (hostage *Hostage) Leader() *Player {
5657
if hostage.demoInfoProvider.IsSource2() {
57-
return hostage.demoInfoProvider.FindPlayerByPawnHandle(getUInt64(hostage.Entity, "m_leader"))
58+
leaderHandle := getUInt64(hostage.Entity, "m_leader")
59+
if leaderHandle != constants.InvalidEntityHandleSource2 {
60+
return hostage.demoInfoProvider.FindPlayerByPawnHandle(leaderHandle)
61+
}
62+
63+
return hostage.demoInfoProvider.FindPlayerByPawnHandle(getUInt64(hostage.Entity, "m_hHostageGrabber"))
5864
}
5965

6066
return hostage.demoInfoProvider.FindPlayerByHandle(uint64(getInt(hostage.Entity, "m_leader")))

pkg/demoinfocs/common/hostage_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"github.com/stretchr/testify/assert"
77

8+
"github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/constants"
89
st "github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/sendtables"
910
)
1011

@@ -19,6 +20,29 @@ func TestHostage_Leader(t *testing.T) {
1920
assert.Equal(t, player, hostage.Leader())
2021
}
2122

23+
func TestHostage_LeaderWithInvalidHandleS2(t *testing.T) {
24+
player := new(Player)
25+
player.EntityID = 10
26+
provider := demoInfoProviderMock{
27+
playersByHandle: map[uint64]*Player{10: player},
28+
isSource2: true,
29+
}
30+
hostage := hostageWithProperties([]fakeProp{
31+
{
32+
propName: "m_leader",
33+
value: st.PropertyValue{Any: uint64(constants.InvalidEntityHandleSource2)},
34+
isNil: false,
35+
},
36+
{
37+
propName: "m_hHostageGrabber",
38+
value: st.PropertyValue{Any: uint64(10)},
39+
isNil: false,
40+
},
41+
}, provider)
42+
43+
assert.Equal(t, player, hostage.Leader())
44+
}
45+
2246
func TestHostage_State(t *testing.T) {
2347
hostage := hostageWithProperty("m_nHostageState", st.PropertyValue{IntVal: int(HostageStateFollowingPlayer)}, demoInfoProviderMock{})
2448

@@ -34,3 +58,7 @@ func TestHostage_Health(t *testing.T) {
3458
func hostageWithProperty(propName string, value st.PropertyValue, provider demoInfoProviderMock) *Hostage {
3559
return &Hostage{Entity: entityWithProperty(propName, value), demoInfoProvider: provider}
3660
}
61+
62+
func hostageWithProperties(properties []fakeProp, provider demoInfoProviderMock) *Hostage {
63+
return &Hostage{Entity: entityWithProperties(properties), demoInfoProvider: provider}
64+
}

0 commit comments

Comments
 (0)