Line data Source code
1 0 : /* 2 : 3 : OOCommodities.h 4 : 5 : Commodity price and quantity manager 6 : 7 : Oolite 8 : Copyright (C) 2004-2013 Giles C Williams and contributors 9 : 10 : This program is free software; you can redistribute it and/or 11 : modify it under the terms of the GNU General Public License 12 : as published by the Free Software Foundation; either version 2 13 : of the License, or (at your option) any later version. 14 : 15 : This program is distributed in the hope that it will be useful, 16 : but WITHOUT ANY WARRANTY; without even the implied warranty of 17 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 : GNU General Public License for more details. 19 : 20 : You should have received a copy of the GNU General Public License 21 : along with this program; if not, write to the Free Software 22 : Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 23 : MA 02110-1301, USA. 24 : 25 : */ 26 : 27 : #import "OOTypes.h" 28 : 29 : 30 0 : #define MAIN_SYSTEM_MARKET_LIMIT 127 31 : 32 : // keys in trade-goods.plist 33 0 : static NSString * const kOOCommodityName = @"name"; 34 0 : static NSString * const kOOCommodityClasses = @"classes"; 35 0 : static NSString * const kOOCommodityContainer = @"quantity_unit"; 36 0 : static NSString * const kOOCommodityPeakExport = @"peak_export"; 37 0 : static NSString * const kOOCommodityPeakImport = @"peak_import"; 38 0 : static NSString * const kOOCommodityPriceAverage = @"price_average"; 39 0 : static NSString * const kOOCommodityPriceEconomic = @"price_economic"; 40 0 : static NSString * const kOOCommodityPriceRandom = @"price_random"; 41 : // next one cannot be set from file - named for compatibility 42 0 : static NSString * const kOOCommodityPriceCurrent = @"price"; 43 0 : static NSString * const kOOCommodityQuantityAverage = @"quantity_average"; 44 0 : static NSString * const kOOCommodityQuantityEconomic= @"quantity_economic"; 45 0 : static NSString * const kOOCommodityQuantityRandom = @"quantity_random"; 46 : // next one cannot be set from file - named for compatibility 47 0 : static NSString * const kOOCommodityQuantityCurrent = @"quantity"; 48 0 : static NSString * const kOOCommodityLegalityExport = @"legality_export"; 49 0 : static NSString * const kOOCommodityLegalityImport = @"legality_import"; 50 0 : static NSString * const kOOCommodityTrumbleOpinion = @"trumble_opinion"; 51 0 : static NSString * const kOOCommoditySortOrder = @"sort_order"; 52 0 : static NSString * const kOOCommodityCapacity = @"capacity"; 53 0 : static NSString * const kOOCommodityScript = @"market_script"; 54 0 : static NSString * const kOOCommodityComment = @"comment"; 55 0 : static NSString * const kOOCommodityShortComment = @"short_comment"; 56 : // next one cannot be set from file - named for compatibility 57 0 : static NSString * const kOOCommodityKey = @"key"; 58 : 59 : 60 : // keys in secondary market definitions 61 0 : static NSString * const kOOCommodityMarketType = @"type"; 62 0 : static NSString * const kOOCommodityMarketName = @"name"; 63 0 : static NSString * const kOOCommodityMarketPriceAdder = @"price_adder"; 64 0 : static NSString * const kOOCommodityMarketPriceMultiplier = @"price_multiplier"; 65 0 : static NSString * const kOOCommodityMarketPriceRandomiser = @"price_randomiser"; 66 0 : static NSString * const kOOCommodityMarketQuantityAdder = @"quantity_adder"; 67 0 : static NSString * const kOOCommodityMarketQuantityMultiplier = @"quantity_multiplier"; 68 0 : static NSString * const kOOCommodityMarketQuantityRandomiser = @"quantity_randomiser"; 69 0 : static NSString * const kOOCommodityMarketLegalityExport = @"legality_export"; 70 0 : static NSString * const kOOCommodityMarketLegalityImport = @"legality_import"; 71 0 : static NSString * const kOOCommodityMarketCapacity = @"capacity"; 72 : 73 : // values for "type" in the plist 74 0 : static NSString * const kOOCommodityMarketTypeValueDefault = @"default"; 75 0 : static NSString * const kOOCommodityMarketTypeValueClass = @"class"; 76 0 : static NSString * const kOOCommodityMarketTypeValueGood = @"good"; 77 : 78 : 79 : 80 : @class OOCommodityMarket, StationEntity; 81 : 82 0 : @interface OOCommodities: NSObject 83 : { 84 : @private 85 0 : NSDictionary *_commodityLists; 86 : 87 : 88 : } 89 : 90 0 : + (OOCommodityType) legacyCommodityType:(NSUInteger)i; 91 : 92 0 : - (OOCommodityMarket *) generateManifestForPlayer; 93 0 : - (OOCommodityMarket *) generateBlankMarket; 94 0 : - (OOCommodityMarket *) generateMarketForSystemWithEconomy:(OOEconomyID)economy andScript:(NSString *)scriptName; 95 0 : - (OOCommodityMarket *) generateMarketForStation:(StationEntity *)station; 96 : 97 0 : - (OOCreditsQuantity) samplePriceForCommodity:(OOCommodityType)commodity inEconomy:(OOEconomyID)economy withScript:(NSString *)scriptName inSystem:(OOSystemID)system; 98 : 99 0 : - (NSUInteger) count; 100 0 : - (NSArray *) goods; 101 0 : - (BOOL) goodDefined:(NSString *)key; 102 0 : - (NSString *) goodNamed:(NSString *)name; 103 0 : - (NSString *) getRandomCommodity; 104 0 : - (OOMassUnit) massUnitForGood:(NSString *)good; 105 : 106 : 107 : 108 : @end