00001 // 00002 // Ship.m 00003 // MacTrek 00004 // 00005 // Created by Aqua on 22/04/2006. 00006 // Copyright 2006 Luky Soft. All rights reserved. 00007 // 00008 00009 #import "Ship.h" 00010 00011 00012 @implementation Ship 00013 00014 - (id) init { 00015 self = [super init]; 00016 if (self != nil) { 00017 abbrev = nil; 00018 phaserdamage = 0; 00019 maxspeed = 0; 00020 maxfuel = 0; 00021 maxshield = 0; 00022 maxdamage = 0; 00023 maxegntemp = 0; 00024 maxwpntemp = 0; 00025 maxarmies = 0; 00026 width = 0; 00027 height = 0; 00028 type = 0; 00029 torpspeed = 0; 00030 phaserfuse = 0; 00031 } 00032 return self; 00033 } 00034 00035 - (id) initWithType:(int)shiptype { 00036 self = [self init]; 00037 if (self != nil) { 00038 type = shiptype; 00039 00040 switch (type) { 00041 case SHIP_SC: 00042 abbrev = [NSString stringWithString:@"SC"]; 00043 phaserdamage = 75; 00044 torpspeed = 16; 00045 maxspeed = 12; 00046 maxfuel = 5000; 00047 maxarmies = 2; 00048 maxshield = 75; 00049 maxdamage = 75; 00050 maxwpntemp = 1000; 00051 maxegntemp = 1000; 00052 width = 20; 00053 height = 20; 00054 phaserfuse = 10; 00055 break; 00056 case SHIP_DD: 00057 abbrev = [NSString stringWithString:@"DD"]; 00058 phaserdamage = 85; 00059 torpspeed = 14; 00060 maxspeed = 10; 00061 maxfuel = 7000; 00062 maxarmies = 5; 00063 maxshield = 85; 00064 maxdamage = 85; 00065 maxwpntemp = 1000; 00066 maxegntemp = 1000; 00067 width = 20; 00068 height = 20; 00069 phaserfuse = 10; 00070 break; 00071 case SHIP_CA: 00072 abbrev = [NSString stringWithString:@"CA"]; 00073 phaserdamage = 100; 00074 torpspeed = 12; 00075 maxspeed = 9; 00076 maxfuel = 10000; 00077 maxarmies = 10; 00078 maxshield = 100; 00079 maxdamage = 100; 00080 maxwpntemp = 1000; 00081 maxegntemp = 1000; 00082 width = 20; 00083 height = 20; 00084 phaserfuse = 10; 00085 break; 00086 case SHIP_BB: 00087 abbrev = [NSString stringWithString:@"BB"]; 00088 phaserdamage = 105; 00089 torpspeed = 12; 00090 maxspeed = 8; 00091 maxfuel = 14000; 00092 maxarmies = 6; 00093 maxshield = 130; 00094 maxdamage = 130; 00095 maxwpntemp = 1000; 00096 maxegntemp = 1000; 00097 width = 20; 00098 height = 20; 00099 phaserfuse = 10; 00100 break; 00101 case SHIP_AS: 00102 abbrev = [NSString stringWithString:@"AS"]; 00103 phaserdamage = 80; 00104 torpspeed = 16; 00105 maxspeed = 8; 00106 maxfuel = 6000; 00107 maxarmies = 20; 00108 maxshield = 80; 00109 maxdamage = 200; 00110 maxwpntemp = 1000; 00111 maxegntemp = 1200; 00112 width = 20; 00113 height = 20; 00114 phaserfuse = 10; 00115 break; 00116 case SHIP_SB: 00117 abbrev = [NSString stringWithString:@"SB"]; 00118 phaserdamage = 120; 00119 torpspeed = 14; 00120 maxfuel = 60000; 00121 maxarmies = 25; 00122 maxshield = 500; 00123 maxdamage = 600; 00124 maxspeed = 2; 00125 maxwpntemp = 1300; 00126 maxegntemp = 1000; 00127 width = 20; 00128 height = 20; 00129 phaserfuse = 4; 00130 break; 00131 case SHIP_GA: 00132 abbrev = [NSString stringWithString:@"GA"]; 00133 phaserdamage = 100; 00134 torpspeed = 13; 00135 maxspeed = 9; 00136 maxfuel = 12000; 00137 maxarmies = 12; 00138 maxshield = 140; 00139 maxdamage = 120; 00140 maxwpntemp = 1000; 00141 maxegntemp = 1000; 00142 width = 20; 00143 height = 20; 00144 phaserfuse = 10; 00145 break; 00146 case SHIP_AT: 00147 abbrev = [NSString stringWithString:@"AT"]; 00148 phaserdamage = 10000; 00149 torpspeed = 30; 00150 maxspeed = 60; 00151 maxfuel = 12000; 00152 maxarmies = 1000; 00153 maxshield = 30000; 00154 maxdamage = 30000; 00155 maxwpntemp = 10000; 00156 maxegntemp = 10000; 00157 width = 28; 00158 height = 28; 00159 phaserfuse = 1; 00160 break; 00161 default: 00162 abbrev = [NSString stringWithString:@"??"]; 00163 NSLog(@"Ship.initWithType: unknown %d", type); 00164 break; 00165 } 00166 [abbrev retain]; 00167 } 00168 return self; 00169 } 00170 00171 - (void) setTorpSpeed: (int) newSpeed { 00172 torpspeed = newSpeed; 00173 } 00174 00175 - (void) setPhaserDamage: (int) newPhaserDamage { 00176 phaserdamage = newPhaserDamage; 00177 } 00178 00179 - (int) phaserDamage { 00180 return phaserdamage; 00181 } 00182 00183 - (int) phaserRange { 00184 return 6000*phaserdamage/100; 00185 } 00186 00187 - (void) setMaxSpeed: (int) newMaxSpeed { 00188 maxspeed = newMaxSpeed; 00189 } 00190 00191 - (void) setMaxFuel: (int) newMaxFuel { 00192 maxfuel = newMaxFuel; 00193 } 00194 00195 - (void) setMaxShield: (int) newMaxShield { 00196 maxshield = newMaxShield; 00197 } 00198 00199 - (void) setMaxDamage: (int) newMaxDamage { 00200 maxdamage = newMaxDamage; 00201 } 00202 00203 - (void) setMaxWeaponTemp: (int) newMaxWeaponTemp { 00204 maxwpntemp = newMaxWeaponTemp; 00205 } 00206 00207 - (void) setMaxEngineTemp: (int) newMaxEngineTemp { 00208 maxegntemp = newMaxEngineTemp; 00209 } 00210 00211 - (void) setWidth: (int) newWidth { 00212 width = newWidth; 00213 } 00214 00215 - (void) setHeight: (int) newHeight { 00216 height = newHeight; 00217 } 00218 00219 // original netrek sizes are scaled at a factor 40 fix! 00220 - (NSSize) size { 00221 return NSMakeSize(width*40, height*40); 00222 } 00223 00224 - (NSSize) explosionSize { 00225 if (type == SHIP_SB) { 00226 return NSMakeSize(width*40*2, height*40*2); 00227 } else { 00228 return NSMakeSize(width*40, height*40); 00229 } 00230 } 00231 00232 - (int) type { 00233 return type; 00234 } 00235 00236 - (int) maxDamage { 00237 return maxdamage; 00238 } 00239 00240 - (int) maxPhaserFuse { 00241 // always 100 % though it might depend on shiptype... 00242 return 100; 00243 } 00244 00245 - (NSString*)longName { 00246 return [NSString stringWithFormat:@"[%@]", abbrev]; 00247 } 00248 00249 - (int) maxShield { 00250 return maxshield; 00251 } 00252 00253 - (int) maxHull { 00254 return maxdamage; 00255 } 00256 00257 - (int) maxFuel { 00258 return maxfuel; 00259 } 00260 00261 - (int) maxSpeed { 00262 return maxspeed; 00263 } 00264 00265 - (int) maxEngineTemp { 00266 return maxegntemp; 00267 } 00268 00269 - (int) maxWeaponTemp { 00270 return maxwpntemp; 00271 } 00272 00273 - (int) maxArmies { 00274 return maxarmies; 00275 } 00276 00277 - (void) setMaxArmies: (int) newMaxArmies { 00278 maxarmies = newMaxArmies; 00279 } 00280 00281 - (int) maxTorps { 00282 // $$ ok very bad this should have been TORP_MAX, but for some crasy reason 00283 // i cant get it imported 00284 return 8; 00285 } 00286 00287 @end