// 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)) n := 0 for _, r := range b.cells { if r != nil { n++ } } robots, err := botapi.NewRobot_List(out.Segment(), int32(n)) if err != nil { return err } if err = out.SetRobots(robots); err != nil { return err } n = 0 for i, r := range b.cells { if r == nil { continue } outr := robots.At(n) outr.SetId(uint32(r.ID)) outr.SetX(uint16(i % b.Size.X)) outr.SetY(uint16(i / b.Size.X)) outr.SetHealth(int16(r.Health)) if r.Faction == faction { outr.SetFaction(botapi.Faction_mine) } else { outr.SetFaction(botapi.Faction_opponent) } n++ } return nil }