private void packCoordinates(LandTile tile, int index) {
   // lat and lon rounded to 2 decimal places
   int packedLatLon = 0;
   int roundedLat = Math.round(tile.getLatitude() * 100);
   int roundedLon = Math.round(tile.getLongitude() * 100);
   // pack lat onto first 16 bits, lon onto next 16 bits
   packedLatLon |= (roundedLat << 0);
   packedLatLon |= (roundedLon << 16);
   PACKED_TILE_COORDINATES[index] = packedLatLon;
 }
  private void packRatings(LandTile tile, int index) {
    // 3 bytes to store 12 crop ratings
    byte packedRating1 = 0;
    byte packedRating2 = 0;
    byte packedRating3 = 0;

    for (int i = 0; i < 4; i++) {
      packedRating1 |= (tile.getCropRatings()[i].ordinal() << (6 - 2 * i));
      packedRating2 |= (tile.getCropRatings()[i + 4].ordinal() << (6 - 2 * i));
      packedRating3 |= (tile.getCropRatings()[i + 8].ordinal() << (6 - 2 * i));
    }

    int realIndex = index * 3;
    PACKED_CROP_RATINGS[realIndex] = packedRating1;
    PACKED_CROP_RATINGS[realIndex + 1] = packedRating2;
    PACKED_CROP_RATINGS[realIndex + 2] = packedRating3;
  }