diff options
Diffstat (limited to 'pkg/messages/types')
| -rw-r--r-- | pkg/messages/types/netSignOnState.go | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/pkg/messages/types/netSignOnState.go b/pkg/messages/types/netSignOnState.go index 277a6ee..55d040a 100644 --- a/pkg/messages/types/netSignOnState.go +++ b/pkg/messages/types/netSignOnState.go | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | package messages | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import ( |
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 4 | 8 | ||
| 5 | type NetSignOnState struct { | 9 | type NetSignOnState struct { |
| 6 | SignOnState int8 | 10 | SignOnState string |
| 7 | SpawnCount int32 | 11 | SpawnCount int32 |
| 8 | NumServerPlayers int32 | 12 | NumServerPlayers int32 |
| 9 | IdsLength int32 | 13 | IdsLength int32 |
| @@ -12,9 +16,45 @@ type NetSignOnState struct { | |||
| 12 | MapName string | 16 | MapName string |
| 13 | } | 17 | } |
| 14 | 18 | ||
| 19 | type SignOnState int | ||
| 20 | |||
| 21 | const ( | ||
| 22 | None SignOnState = iota // no state yet, about to connect | ||
| 23 | Challenge // client challenging server, all OOB packets | ||
| 24 | Connected // client is connected to server, netchans ready | ||
| 25 | New // just got server info and string tables | ||
| 26 | PreSpawn // received signon buggers | ||
| 27 | Spawn // ready to receive entity packets | ||
| 28 | Full // we are fully connected, first non-delta packet received | ||
| 29 | ChangeLevel // server is changing level, please wait | ||
| 30 | ) | ||
| 31 | |||
| 32 | func (signOnState SignOnState) String() string { | ||
| 33 | switch signOnState { | ||
| 34 | case None: | ||
| 35 | return "None" | ||
| 36 | case Challenge: | ||
| 37 | return "Challenge" | ||
| 38 | case Connected: | ||
| 39 | return "Connected" | ||
| 40 | case New: | ||
| 41 | return "New" | ||
| 42 | case PreSpawn: | ||
| 43 | return "PreSpawn" | ||
| 44 | case Spawn: | ||
| 45 | return "Spawn" | ||
| 46 | case Full: | ||
| 47 | return "Full" | ||
| 48 | case ChangeLevel: | ||
| 49 | return "ChangeLevel" | ||
| 50 | default: | ||
| 51 | return fmt.Sprintf("%d", int(signOnState)) | ||
| 52 | } | ||
| 53 | } | ||
| 54 | |||
| 15 | func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { | 55 | func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { |
| 16 | netSignOnState := NetSignOnState{ | 56 | netSignOnState := NetSignOnState{ |
| 17 | SignOnState: int8(reader.TryReadBits(8)), | 57 | SignOnState: SignOnState(reader.TryReadBits(8)).String(), |
| 18 | SpawnCount: int32(reader.TryReadBits(32)), | 58 | SpawnCount: int32(reader.TryReadBits(32)), |
| 19 | NumServerPlayers: int32(reader.TryReadBits(32)), | 59 | NumServerPlayers: int32(reader.TryReadBits(32)), |
| 20 | IdsLength: int32(reader.TryReadBits(32)), | 60 | IdsLength: int32(reader.TryReadBits(32)), |