// 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 }
func (opts *MountOptions) IsZero() bool { return structs.IsZero(opts) }