// ToWire converts the board to the wire representation with respect to the // given faction (since the wire factions are us vs. them). func (b *Board) ToWire(out botapi.Board, faction int) error { out.SetWidth(uint16(b.Size.X)) out.SetHeight(uint16(b.Size.Y)) out.SetRound(int32(b.Round)) robots, err := botapi.NewRobot_List(out.Segment(), int32(len(b.Locs))) if err != nil { return err } if err = out.SetRobots(robots); err != nil { return err } n := 0 for loc, r := range b.Locs { outr := robots.At(n) outr.SetId(uint32(r.ID)) outr.SetX(uint16(loc.X)) outr.SetY(uint16(loc.Y)) outr.SetHealth(int16(r.Health)) if r.Faction == faction { outr.SetFaction(botapi.Faction_mine) } else { outr.SetFaction(botapi.Faction_opponent) } n++ } return nil }