예제 #1
0
 @Override
 public void encode() {
   calculateMassAndFuelCapacity();
   byte[] data;
   if (isFullDesign) {
     data = new byte[4 + 13 + 4 * slotCount + nameBytes.length];
   } else {
     data = new byte[6 + nameBytes.length];
   }
   if (isFullDesign) data[0] = 7;
   else data[0] = 3;
   data[1] = 1;
   data[1] |= designNumber << 2;
   if (isTransferred) data[1] |= 0x80;
   if (isStarbase) data[1] |= 0x40;
   data[2] = (byte) hullId;
   data[3] = (byte) pic;
   int index;
   if (isFullDesign) {
     Util.write16(data, 4, armor);
     data[6] = (byte) slotCount;
     Util.write16(data, 7, turnDesigned);
     Util.write32(data, 9, totalBuilt);
     Util.write32(data, 13, totalRemaining);
     index = 17;
     for (Slot slot : slots) {
       Util.write16(data, index, slot.category);
       index += 2;
       data[index++] = (byte) slot.itemId;
       data[index++] = (byte) slot.count;
     }
   } else {
     Util.write16(data, 4, mass);
     index = 6;
   }
   System.arraycopy(nameBytes, 0, data, index, nameBytes.length);
   setDecryptedData(data, data.length);
   setData(data, data.length);
   encrypted = false;
 }