00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "Player.h"
00010
00011
00012 @implementation Player
00013
00014 - (id) init {
00015 self = [super init];
00016 if (self != nil) {
00017 status = PLAYER_FREE;
00018 previousStatus = PLAYER_FREE;
00019 previousFlags = 0;
00020 playerId = -1;
00021 team = nil;
00022 ship = nil;
00023 mapChars = nil;
00024 name = nil;
00025 position.x = -1000;
00026 position.y = -1000;
00027 me = NO;
00028 name = @"??";
00029 login = @"??";
00030 monitor = @"??";
00031 stats = [[PlayerStats alloc] init];
00032 dir = 0;
00033 speed = 0;
00034 damage = 0;
00035 shield = 0;
00036 cloakphase = 0;
00037 ntorp = 0;
00038 nplasmatorp = 0;
00039 hostile = 0;
00040 swar = 0;
00041 kills = 0;
00042 planet = nil;
00043 playerLock = nil;
00044 armies = 0;
00045 fuel = 0;
00046 explode = 0;
00047 etemp = 0;
00048 wtemp = 0;
00049 whydead = 0;
00050 whodead = 0;
00051 tractor = nil;
00052 }
00053 return self;
00054 }
00055
00056 - (id) initWithPlayerId:(int)player {
00057 self = [self init];
00058 if (self != nil) {
00059 playerId = player;
00060 }
00061 return self;
00062 }
00063
00064 - (Planet*) planetLock {
00065 return planet;
00066 }
00067
00068 - (NSString *) statusString {
00069 switch (status) {
00070 case PLAYER_FREE:
00071 return @"PLAYER_FREE";
00072 break;
00073 case PLAYER_OUTFIT:
00074 return @"PLAYER_OUTFIT";
00075 break;
00076 case PLAYER_ALIVE:
00077 return @"PLAYER_ALIVE";
00078 break;
00079 case PLAYER_EXPLODE:
00080 return @"PLAYER_EXPLODE";
00081 break;
00082 case PLAYER_DEAD:
00083 return @"PLAYER_DEAD";
00084 break;
00085 default:
00086 return @"Unknown";
00087 break;
00088 }
00089 }
00090
00091 - (int) previousFlags {
00092 return previousFlags;
00093 }
00094
00095 - (void) setPreviousFlags:(int) flag {
00096 previousFlags = flag;
00097 }
00098
00099 - (int) previousStatus {
00100 return previousStatus;
00101 }
00102
00103 - (void) setPreviousStatus:(int) stat {
00104 previousStatus = stat;
00105 }
00106
00107 - (void) setPlanetLock:(Planet *)planetInLock {
00108 planet = planetInLock;
00109 }
00110
00111 - (id) playerLock {
00112 return playerLock;
00113 }
00114
00115 - (void) setPlayerLock:(id) playerInLock {
00116 playerLock = playerInLock;
00117 }
00118
00119 - (int) hostile {
00120 return hostile;
00121 }
00122
00123 - (void) setTorps:(NSMutableArray*) newTorps {
00124 torps = newTorps;
00125 }
00126
00127 - (void) setIsMe:(bool)newMe {
00128 me = newMe;
00129 }
00130
00131 - (NSMutableArray*) torps {
00132 return torps;
00133 }
00134
00135 - (int) phaserId {
00136 return playerId;
00137 }
00138
00139 - (int) plasmaId {
00140 return playerId;
00141 }
00142
00143 - (int) damage {
00144 return damage;
00145 }
00146
00147 - (int) playerId {
00148 return playerId;
00149 }
00150
00151 - (int) stickyWar {
00152 return swar;
00153 }
00154
00155 - (int) shield {
00156 return shield;
00157 }
00158
00159 - (bool) friendlyToPlayer:(Player*) other {
00160 return(([team bitMask] & ([other stickyWar] | [other hostile])) == 0 && ([[other team] bitMask] & (swar | hostile)) == 0);
00161 }
00162
00163 - (void) updateHostile: (int) newhostile
00164 stickyWar: (int) newSWar
00165 armies: (int) newArmies
00166 flags: (int) newFlags
00167 damage: (int) newDamage
00168 shieldStrenght: (int) newShield
00169 fuel: (int) newFuel
00170 engineTemp: (int) newETemp
00171 weaponsTemp: (int) newWTemp
00172 whyDead: (int) newWhyDead
00173 whoKilledMe: (int) newWhoDead
00174 thisIsMe: (bool) newIsMe {
00175
00176 hostile = newhostile;
00177 swar = newSWar;
00178 armies = newArmies;
00179 flags = newFlags;
00180 damage = newDamage;
00181 shield = newShield;
00182 fuel = newFuel;
00183 etemp = newETemp;
00184 wtemp = newWTemp;
00185 whydead = newWhyDead;
00186 whodead = newWhoDead;
00187 me = newIsMe;
00188 }
00189
00190 - (void) updateHostile: (int) newhostile
00191 stickyWar: (int) newSWar
00192 armies: (int) newArmies
00193 flags: (int) newFlags
00194 whyDead: (int) newWhyDead
00195 whoKilledMe: (int) newWhoDead
00196 thisIsMe: (bool) newIsMe {
00197
00198 hostile = newhostile;
00199 swar = newSWar;
00200 armies = newArmies;
00201 flags = newFlags;
00202 whydead = newWhyDead;
00203 whodead = newWhoDead;
00204 me = newIsMe;
00205 }
00206
00207 - (void) updateDamage: (int) newDamage
00208 shieldStrenght: (int) newShield
00209 fuel: (int) newFuel
00210 engineTemp: (int) newETemp
00211 weaponsTemp: (int) newWTemp
00212 thisIsMe: (bool) newIsMe {
00213 damage = newDamage;
00214 shield = newShield;
00215 fuel = newFuel;
00216 etemp = newETemp;
00217 wtemp = newWTemp;
00218 me = newIsMe;
00219 }
00220
00221 - (void) setStickyWar:(int)newSWar {
00222 swar =newSWar;
00223 }
00224
00225 - (int) flags {
00226 return flags;
00227 }
00228
00229 - (Ship*)ship {
00230 return ship;
00231 }
00232
00233 - (void) setName:(NSString*)newName {
00234 [name release];
00235 name = newName;
00236 [name retain];
00237 }
00238
00239 - (void) setLogin:(NSString*)newLogin {
00240 [login release];
00241 login = newLogin;
00242 [login retain];
00243 }
00244
00245 - (void) setMonitor:(NSString*)newMonitor {
00246 [monitor release];
00247 monitor = newMonitor;
00248 [monitor retain];
00249 }
00250
00251 - (Team*)team {
00252 return team;
00253 }
00254
00255 - (void) setHostile:(int)newhostile {
00256 hostile = newhostile;
00257 }
00258
00259 - (int) status {
00260 return status;
00261 }
00262
00263 - (void) setStatus:(int)newStatus {
00264 status = newStatus;
00265 }
00266
00267 - (void) setExplode:(int)newExplode {
00268 explode = newExplode;
00269 }
00270
00271 - (PlayerStats *) stats {
00272 return stats;
00273 }
00274
00275 - (void) setFlags:(int)newFlags {
00276 flags = newFlags;
00277 }
00278
00279 - (bool) isMe {
00280 return me;
00281 }
00282
00283 - (void) setTractorTarget:(Player *)new {
00284 tractor = new;
00285 }
00286
00287 - (Player *) tractorTarget {
00288 return tractor;
00289 }
00290
00291 - (void) setShip:(Ship *)newShip {
00292 ship = newShip;
00293 }
00294
00295 - (void) setPlasmaCount:(int)nrOfPlasmas {
00296 nplasmatorp = nrOfPlasmas;
00297 }
00298
00299 - (void) setTorpCount:(int)nrOfTorps {
00300 ntorp = nrOfTorps;
00301 }
00302
00303 - (void) setKills:(int)kill {
00304 kills = kill;
00305 }
00306
00307 - (void) setTeam:(Team *)newTeam {
00308 team = newTeam;
00309
00310 [mapChars release];
00311 mapChars = [team mapCharsForPlayerWithId:playerId];
00312 [mapChars retain];
00313 }
00314
00315 - (int)wins {
00316 if ([ship type] == SHIP_SB) {
00317 return [stats starbaseKills];
00318 } else {
00319 return [stats kills];
00320 }
00321 }
00322
00323 - (int)losses {
00324 if ([ship type] == SHIP_SB) {
00325 return [stats starbaseLosses];
00326 } else {
00327 return [stats losses];
00328 }
00329 }
00330
00331 - (int)maxKills {
00332 if ([ship type] == SHIP_SB) {
00333 return [stats starbaseMaxKills];
00334 } else {
00335 return [stats maxKills];
00336 }
00337 }
00338
00339 - (NSString*)name {
00340 return name;
00341 }
00342
00343 - (NSString*)nameWithRank {
00344 char hasKilled = ' ';
00345 if (kills >= 1) {
00346 hasKilled = '+';
00347 }
00348
00349 return [NSString stringWithFormat: @"%c%@ %@ (%@)",
00350 hasKilled, [[stats rank] abbrev], name, mapChars];
00351 }
00352
00353
00354 - (NSString*)longNameWithKillIndicator {
00355 char hasKilled = ' ';
00356 if (kills >= 1) {
00357 hasKilled = '+';
00358 }
00359
00360 return [NSString stringWithFormat: @"%c%@ (%@)",
00361 hasKilled, name, mapChars];
00362 }
00363
00364 - (NSString*)longName {
00365
00366 return [NSString stringWithFormat: @"%@ (%@)", name, mapChars];
00367 }
00368
00369 - (NSString *) mapChars {
00370 return mapChars;
00371 }
00372
00373 - (NSString *) mapCharsWithKillIndicator {
00374 char hasKilled = ' ';
00375 if (kills >= 1) {
00376 hasKilled = '+';
00377 }
00378
00379 return [NSString stringWithFormat: @"%c%@",
00380 hasKilled, mapChars];
00381 }
00382
00383 - (void) increasePlasmaCount {
00384 nplasmatorp++;
00385 }
00386
00387 - (void) decreasePlasmaCount {
00388 nplasmatorp--;
00389 }
00390
00391 - (void) increaseTorpCount {
00392 ntorp++;
00393 }
00394
00395 - (void) decreaseTorpCount {
00396 ntorp--;
00397 }
00398
00399 - (int) hull {
00400
00401 return [ship maxDamage] - damage;
00402 }
00403
00404 - (int) fuel {
00405 return fuel;
00406 }
00407
00408 - (int) speed {
00409 return speed;
00410 }
00411
00412 - (int) engineTemp {
00413 return etemp;
00414 }
00415
00416 - (int) weaponTemp {
00417 return wtemp;
00418 }
00419
00420 - (int) kills {
00421 return kills;
00422 }
00423
00424 - (int) maxArmiesForKills {
00425
00426 int maxMe = 0;
00427 if ([ship type] == SHIP_AS) {
00428 maxMe = 3*kills;
00429 } else {
00430 maxMe = 2*kills;
00431 }
00432 return maxMe;
00433 }
00434
00435 - (int) maxArmies {
00436
00437 int maxShip = [ship maxArmies];
00438
00439
00440 int maxMe = [self maxArmiesForKills];
00441
00442
00443 return (maxShip > maxMe ? maxMe : maxShip);
00444 }
00445
00446 - (int) maxSpeed {
00447
00448 int maxspeed = ([ship maxSpeed] + 2) -
00449 (([ship maxSpeed] + 1) * ((float) damage / (float) ([ship maxDamage])));
00450
00451
00452 if (maxspeed > [ship maxSpeed]) {
00453 maxspeed = [ship maxSpeed];
00454 }
00455 if (maxspeed < 0) {
00456 maxspeed = 0;
00457 }
00458 return maxspeed;
00459 }
00460
00461 - (int) maxTorps {
00462
00463
00464 return [ship maxTorps];
00465 }
00466
00467 - (int) armies {
00468 return armies;
00469 }
00470
00471 - (int) cloakPhase {
00472 return cloakphase;
00473 }
00474
00475 - (void) increaseCloakPhase {
00476 cloakphase++;
00477 }
00478
00479 - (void) decreaseCloakPhase {
00480 cloakphase--;
00481 }
00482
00483 - (int) availableTorps {
00484
00485
00486 int maxTorps = [self maxTorps];
00487
00488
00489 int freeSlots = ntorp;
00490
00491 return (maxTorps > freeSlots ? freeSlots : maxTorps);
00492 }
00493
00494 - (int) availablePhaserShots {
00495
00496
00497 return fuel / 1000;
00498 }
00499
00500 - (int) maxPhaserShots {
00501
00502
00503 return [ship maxFuel] / 1000;
00504 }
00505
00506 @end