Exemplo n.º 1
0
// UnmarshalJSON implements the json.Unmarshaler interface for Player, allowing us
// to segregate GameStats from metadata (SteamID, Name, Activity).
func (p *Player) UnmarshalJSON(b []byte) error {
	var intermed playerIntermediate

	err := json.Unmarshal(b, &intermed)

	if err != nil {
		return err
	}

	gameStats := &GameStats{
		Kills:          intermed.Kills,
		Deaths:         intermed.Kills,
		Assists:        intermed.Assists,
		LastHits:       intermed.LastHits,
		Denies:         intermed.Denies,
		KillStreak:     intermed.KillStreak,
		Team:           intermed.Team,
		ReliableGold:   intermed.ReliableGold,
		UnreliableGold: intermed.UnreliableGold,
		GPM:            intermed.GPM,
		XPM:            intermed.XPM,
	}

	if structs.IsZero(*gameStats) {
		gameStats = nil
	}

	*p = Player{
		SteamID:   intermed.SteamID,
		Name:      intermed.Name,
		Activity:  intermed.Activity,
		GameStats: gameStats,
	}

	return nil
}
Exemplo n.º 2
0
func (opts *MountOptions) IsZero() bool {
	return structs.IsZero(opts)
}