| 2437 | } |
| 2438 | |
| 2439 | void cFodder::Camera_Acceleration_Set() { |
| 2440 | |
| 2441 | if (mSquad_Leader == INVALID_SPRITE_PTR || mSquad_Leader == 0) |
| 2442 | return; |
| 2443 | |
| 2444 | int16 DistanceX = mSquad_Leader->field_0 + 0x40; |
| 2445 | int16 DistanceY = mSquad_Leader->field_4 + 0x10; |
| 2446 | |
| 2447 | DistanceX -= mCameraX >> 16; |
| 2448 | DistanceY -= mCameraY >> 16; |
| 2449 | |
| 2450 | if (mCamera_Speed_Reset_X && DistanceX > 0x90 && DistanceX < 0xCF) { // 90 / A2 = Amiga |
| 2451 | mCamera_Speed_Reset_X = false; |
| 2452 | mCamera_AccelerationX = 0; |
| 2453 | } |
| 2454 | |
| 2455 | if (mCamera_Speed_Reset_Y && DistanceY > 0x60 && DistanceY < 0x87) { // 64 / 8F = Amiga |
| 2456 | mCamera_Speed_Reset_Y = false; |
| 2457 | mCamera_AccelerationY = 0; |
| 2458 | } |
| 2459 | //loc_1234F |
| 2460 | if (DistanceX <= 0x40) { |
| 2461 | mCamera_AccelerationX = (mCamera_AccelerationX & 0xFFFF) | -CAMERA_PAN_TO_SQUAD_ACCELERATION; // (-2 << 16); |
| 2462 | mCamera_Speed_Reset_X = true; |
| 2463 | } |
| 2464 | //loc_12362 |
| 2465 | if (DistanceX >= getCameraWidth() + 64) { |
| 2466 | mCamera_AccelerationX = (mCamera_AccelerationX & 0xFFFF) | CAMERA_PAN_TO_SQUAD_ACCELERATION; // (2 << 16); |
| 2467 | mCamera_Speed_Reset_X = true; |
| 2468 | } |
| 2469 | |
| 2470 | if (DistanceY <= 0x10) { |
| 2471 | mCamera_AccelerationY = (mCamera_AccelerationY & 0xFFFF) | -CAMERA_PAN_TO_SQUAD_ACCELERATION; // (-2 << 16); |
| 2472 | mCamera_Speed_Reset_Y = true; |
| 2473 | } |
| 2474 | |
| 2475 | if (DistanceY >= (getCameraHeight() - 9)) { |
| 2476 | mCamera_AccelerationY = (mCamera_AccelerationY & 0xFFFF) | CAMERA_PAN_TO_SQUAD_ACCELERATION; // (2 << 16); |
| 2477 | mCamera_Speed_Reset_Y = true; |
| 2478 | } |
| 2479 | } |
| 2480 | |
| 2481 | void cFodder::Mission_Sprites_Handle() { |
| 2482 |
nothing calls this directly
no outgoing calls
no test coverage detected