private void calculatePrices() {
    //
    //  Typically speaking, exports have their value halved and imports have
    //  their price doubled if it's coming from offworld.  Anything coming from
    //  another sector of your own planet has much milder cost differences, and
    //  your homeworld will also cut you some slack, at least initially.
    //
    //  In addition, prices improve for exports particularly valued by your
    //  partners (and worsen if already abundant,) and vice versa for imports.
    //  Finally, the value of exports decreases, and of imports increases, with
    //  volume, but this is only likely to be significant for larger
    //  settlements.
    //  TODO:  Charge more for smuggler vessels, and less for Spacers.
    //  TODO:  Implement trade with settlements on the same planet(?)
    
    //
    //  TODO:  Have price levels be global for the settlement as a whole, rather
    //  than calculated at specific structures.  Vendors make money by charging
    //  more in general.
    
    for (Service type : ALL_COMMODITIES) {
      ///final boolean offworld = true ; //For now.
      float
        basePrice = 1 * type.basePrice,
        importMul = 2 + (shortages.amountOf(type) / 1000f),
        exportDiv = 2 + (surpluses.amountOf(type) / 1000f) ;
      
      for (System system : partners) {
        if (Visit.arrayIncludes(system.goodsMade, type)) {
          basePrice *= 0.75f ;
          if (system == homeworld) importMul /= 1.50f ;
        }
        if (Visit.arrayIncludes(system.goodsNeeded, type)) {
          basePrice *= 1.5f ;
          if (system == homeworld) exportDiv *= 0.75f ;
        }
      }
      
      if (homeworld != null) {
        final float sizeBonus = base.communitySpirit() ;
        importMul *= (1 - sizeBonus) ;
        exportDiv = (1 * sizeBonus) + (exportDiv * (1 - sizeBonus)) ;
      }
      
      importPrices.put(type, basePrice * importMul) ;
      exportPrices.put(type, basePrice / exportDiv) ;
    }
  }