diff --git a/src/animation.cpp b/src/animation.cpp index e102b6c..4b786dd 100644 --- a/src/animation.cpp +++ b/src/animation.cpp @@ -136,6 +136,9 @@ void Animation::SwitchToNextFrame() // the next frame MUST BE a sprite frame. assert(currentFrame->frame_type == ANIMFRAME_SPRITE); + + if (currentFrame == frames[0] && attachedObject) + attachedObject->OnAnimationLooped(); } //! Reset this animation back to the first frame diff --git a/src/animations.cpp b/src/animations.cpp index 7e01262..fc08372 100644 --- a/src/animations.cpp +++ b/src/animations.cpp @@ -17,6 +17,9 @@ AnimationMapping GetPlayerAnimationMappings() { animation["sliding"] = PLAYER_SLIDING_DOWN_WALL; animation["jumping"] = PLAYER_JUMPING; animation["lookup"] = PLAYER_LOOKUP; + animation["attack1"] = PLAYER_ATTACK1; + animation["attack2"] = PLAYER_ATTACK2; + animation["attack3"] = PLAYER_ATTACK3; return animation; } diff --git a/src/input.cpp b/src/input.cpp index 6b01db8..d1b07dd 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -18,6 +18,7 @@ #define DEFAULT_PLAYERKEY_P1_UP KEY_UP #define DEFAULT_PLAYERKEY_P1_DOWN KEY_DOWN #define DEFAULT_PLAYERKEY_P1_ACTION1 KEY_D +#define DEFAULT_PLAYERKEY_P1_ACTION2 KEY_F // Player 2 default game keys #define DEFAULT_PLAYERKEY_P2_JUMP KEY_E @@ -26,6 +27,7 @@ #define DEFAULT_PLAYERKEY_P2_UP KEY_HOME #define DEFAULT_PLAYERKEY_P2_DOWN KEY_END #define DEFAULT_PLAYERKEY_P2_ACTION1 KEY_3 +#define DEFAULT_PLAYERKEY_P2_ACTION2 KEY_4 // Other keys #define DEFAULT_GAMEKEY_EXIT KEY_ESC @@ -441,6 +443,7 @@ void Input::LoadDefaultKeyMappings() { gamekey_to_realkey[PLAYERKEY_UP+player1_offset] =DEFAULT_PLAYERKEY_P1_UP; gamekey_to_realkey[PLAYERKEY_DOWN+player1_offset] =DEFAULT_PLAYERKEY_P1_DOWN; gamekey_to_realkey[PLAYERKEY_ACTION1+player1_offset] =DEFAULT_PLAYERKEY_P1_ACTION1; + gamekey_to_realkey[PLAYERKEY_ACTION2+player1_offset] =DEFAULT_PLAYERKEY_P1_ACTION2; gamekey_to_realkey[PLAYERKEY_JUMP+player2_offset] =DEFAULT_PLAYERKEY_P2_JUMP; gamekey_to_realkey[PLAYERKEY_LEFT+player2_offset] =DEFAULT_PLAYERKEY_P2_LEFT; @@ -448,6 +451,7 @@ void Input::LoadDefaultKeyMappings() { gamekey_to_realkey[PLAYERKEY_UP+player2_offset] =DEFAULT_PLAYERKEY_P2_UP; gamekey_to_realkey[PLAYERKEY_DOWN+player2_offset] =DEFAULT_PLAYERKEY_P2_DOWN; gamekey_to_realkey[PLAYERKEY_ACTION1+player2_offset] =DEFAULT_PLAYERKEY_P2_ACTION1; + gamekey_to_realkey[PLAYERKEY_ACTION2+player2_offset] =DEFAULT_PLAYERKEY_P2_ACTION2; gamekey_to_realkey[GAMEKEY_EXIT] = DEFAULT_GAMEKEY_EXIT; gamekey_to_realkey[GAMEKEY_START] = DEFAULT_GAMEKEY_START; @@ -592,12 +596,14 @@ void Input::UpdateLive() { // TODO: Move this to another file. please. #define XBOX_CONTROLLER_A 0 #define XBOX_CONTROLLER_B 1 +#define XBOX_CONTROLLER_X 2 #define XBOX360_CONTROLLER_DPAD 1 // map joystick buttons to physical joystick #define JOY_BTN_JUMP XBOX_CONTROLLER_A #define JOY_BTN_ACTION1 XBOX_CONTROLLER_B +#define JOY_BTN_ACTION2 XBOX_CONTROLLER_X #define JOY_AXIS_DPAD XBOX360_CONTROLLER_DPAD //! OK, a quick hack for joysticks @@ -641,6 +647,10 @@ void Input::DoJoystickUpdateHack() { key = PLAYERKEY_ACTION1; break; + case JOY_BTN_ACTION2: + key = PLAYERKEY_ACTION2; + break; + default: // then we don't care key = -1; break; diff --git a/src/input.h b/src/input.h index 27b6e2a..af20b0d 100644 --- a/src/input.h +++ b/src/input.h @@ -4,7 +4,7 @@ #include "globals.h" //! The max number of "player keys" (e.g. JUMP, LEFT, etc) -#define PLAYERKEY_COUNT 6 +#define PLAYERKEY_COUNT 7 //! The player keys (these are NOT indices into game_key[]) //! These constants are used with a controller number @@ -15,6 +15,7 @@ #define PLAYERKEY_UP 3 #define PLAYERKEY_DOWN 4 #define PLAYERKEY_ACTION1 5 +#define PLAYERKEY_ACTION2 6 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // The logical mapping of the keys @@ -28,25 +29,27 @@ #define PLAYERKEY1_UP 3 #define PLAYERKEY1_DOWN 4 #define PLAYERKEY1_ACTION1 6 - -#define PLAYERKEY2_JUMP 7 -#define PLAYERKEY2_LEFT 8 -#define PLAYERKEY2_RIGHT 9 -#define PLAYERKEY2_UP 10 -#define PLAYERKEY2_DOWN 11 -#define PLAYERKEY2_ACTION1 12 - -#define GAMEKEY_EXIT 13 -#define GAMEKEY_START 14 -#define GAMEKEY_DEBUGPAUSE 15 -#define GAMEKEY_DEBUGSTEP 16 -#define GAMEKEY_SCREENSHOT 17 -#define GAMEKEY_TOGGLE_PHYSICS_DISPLAY 18 +#define PLAYERKEY1_ACTION2 7 + +#define PLAYERKEY2_JUMP 8 +#define PLAYERKEY2_LEFT 9 +#define PLAYERKEY2_RIGHT 10 +#define PLAYERKEY2_UP 11 +#define PLAYERKEY2_DOWN 12 +#define PLAYERKEY2_ACTION1 13 +#define PLAYERKEY2_ACTION2 14 + +#define GAMEKEY_EXIT 15 +#define GAMEKEY_START 16 +#define GAMEKEY_DEBUGPAUSE 17 +#define GAMEKEY_DEBUGSTEP 18 +#define GAMEKEY_SCREENSHOT 19 +#define GAMEKEY_TOGGLE_PHYSICS_DISPLAY 20 /* End of logical mapping */ //! The max number of defined keys -#define GAMEKEY_COUNT 19 +#define GAMEKEY_COUNT 21 enum MouseClickType { MOUSE_LEFT_BTN = 0x00000001, diff --git a/src/objectIDs.h b/src/objectIDs.h index 09d1fff..a00431e 100644 --- a/src/objectIDs.h +++ b/src/objectIDs.h @@ -28,6 +28,9 @@ enum ENGINE_OBJECTID { #define PLAYER_JUMPING 2 #define PLAYER_LOOKUP 3 #define PLAYER_SLIDING_DOWN_WALL 4 +#define PLAYER_ATTACK1 5 +#define PLAYER_ATTACK2 6 +#define PLAYER_ATTACK3 7 #define DOOR_CLOSED 0 #define DOOR_OPENING 1 diff --git a/src/objects/object.h b/src/objects/object.h index e768c02..3af5e61 100644 --- a/src/objects/object.h +++ b/src/objects/object.h @@ -236,7 +236,7 @@ class Object { // TODO: Make this take an animation code, for now it just takes the index of the animation // as defined by the order we found them in the XML file. Very prone to errors. HACKY - void PlayAnimation(uint uiIndex); + virtual void PlayAnimation(uint uiIndex); void SetDrawBounds(bool bDrawBounds) {m_bDrawBoundingBox = bDrawBounds;} @@ -358,6 +358,9 @@ class Object { //! Handle collisions with another object virtual void OnCollide(Object* obj, const b2ContactPoint* pkContactPoint); + + // When an animation we're playing loops, we get this call + virtual void OnAnimationLooped() {}; inline bool IsDead() const {return is_dead;}; inline void SetIsDead(bool bVal) {is_dead = bVal;} diff --git a/src/objects/objectPlayer.cpp b/src/objects/objectPlayer.cpp index 5a17eec..d2f3943 100644 --- a/src/objects/objectPlayer.cpp +++ b/src/objects/objectPlayer.cpp @@ -71,7 +71,13 @@ void PlayerObject::UpdateSpriteFlip() { } } -void PlayerObject::UpdateRunningAnimationSpeed() { +void PlayerObject::UpdateRunningAnimationSpeed() +{ + + // HACK? + if (m_bShouldNotSwitchAnimationsRightNow) + return; + // alter the speed of the animation based on the velocity // TRACE("vel=%f\n", fabs(vel.x)); if (fabs(GetVelX()) < 3.0f) @@ -322,7 +328,7 @@ void PlayerObject::DoCrouchingDown() { // Do things common to most every state void PlayerObject::DoCommonStuff() { - DropBombs(); + DropBombsIfNeeded(); LimitMaxHorizontalVelocityTo(10.0f); // If we're moving in a different direction than what we want to do, make us slow down faster. @@ -432,6 +438,7 @@ bool PlayerObject::Init() m_kPlayerState = FALLING; door_in_front_of_us = NULL; ring_count = 0; + m_bShouldNotSwitchAnimationsRightNow = false; return BaseInit(); } @@ -508,84 +515,45 @@ void PlayerObject::UpdateState() { } } -void PlayerObject::DropBombs() +void PlayerObject::DropBombsIfNeeded() { - if (INPUT->KeyOnce(PLAYERKEY_ACTION1, controller_num) && - m_kPlayerState != WALKING_THRU_DOOR) - { - Object* objBall = EFFECTS->TriggerEffect(this, "bomb"); - if (!objBall) - return; - - float sign = flip_x ? -1 : 1; - float strength = 0.5; - - if (GetInput(PLAYERKEY_UP, controller_num)) - objBall->SetImpulse(0.0f, strength); - - else if (GetInput(PLAYERKEY_DOWN, controller_num)) - objBall->SetImpulse(0.0f, strength*0.1); - - else - objBall->SetImpulse(sign * strength, strength / 3.0); - } - - - // ORIG PHYSICS TEST CODE: - /*if (INPUT->KeyOnce(PLAYERKEY_ACTION1, controller_num) && - m_kPlayerState != WALKING_THRU_DOOR) - { - b2Body* pkBody = PHYSICS->CreateDynamicPhysicsBox(pos.x, pos.y, 15, 10); - - float sign = flip_x ? -1 : 1; - float strength = 0.1; - - if (GetInput(PLAYERKEY_UP, controller_num)) - pkBody->ApplyImpulse(b2Vec2(0.0f, strength*1.7), pkBody->GetWorldCenter()); + if (m_kPlayerState == WALKING_THRU_DOOR) + return; - else if (GetInput(PLAYERKEY_DOWN, controller_num)) - pkBody->ApplyImpulse(b2Vec2(0.0f, strength*1.7), pkBody->GetWorldCenter()); + int iAttackAnimation = -1; - else - pkBody->ApplyImpulse(b2Vec2(sign * strength, strength / 3.0f), pkBody->GetWorldCenter()); + if (INPUT->KeyOnce(PLAYERKEY_ACTION1, controller_num)) + { + iAttackAnimation = PLAYER_ATTACK1 + Rand(0,1); + } + else if (INPUT->KeyOnce(PLAYERKEY_ACTION2, controller_num)) + { + iAttackAnimation = PLAYER_ATTACK3; } - return; - */ - - // ORIGINAL CODE: - - /* - if (INPUT->KeyOnce(PLAYERKEY_ACTION1, controller_num) && - m_kPlayerState != WALKING_THRU_DOOR) - { - int strength; - if (!GLOBALS->Value("bomb_throw_strength", strength)) - return; - - Object* objBall = EFFECTS->TriggerEffect(this, "bomb"); + if (iAttackAnimation == -1) + return; - if (!objBall) - return; + PlayAnimation(iAttackAnimation); + currentAnimation->SetSpeedMultiplier(1); + m_bShouldNotSwitchAnimationsRightNow = true; - float sign; - if (flip_x) - sign = -1; - else - sign = 1; - - if (GetInput(PLAYERKEY_UP, controller_num)) - objBall->SetVelXY(0.0f, vel.y + strength*1.7); + if (iAttackAnimation != PLAYER_ATTACK3) + return; - else if (GetInput(PLAYERKEY_DOWN, controller_num)) - objBall->SetVelXY(0.0f, vel.y - strength); + Object* objBall = EFFECTS->TriggerEffect(this, "bomb"); + if (!objBall) + return; - else - objBall->SetVelXY(sign * strength + vel.x, vel.y + 6.0f); + float sign = flip_x ? -1 : 1; + float strength = 0.4; - //objBall->SetVelXY(vel.x, 0.0f); - } - */ + if (GetInput(PLAYERKEY_UP, controller_num)) + objBall->SetImpulse(0.0f, strength); + else if (GetInput(PLAYERKEY_DOWN, controller_num)) + objBall->SetImpulse(0.0f, strength*0.1); + else + objBall->SetImpulse(sign * strength, strength / 3.0); } void PlayerObject::LimitMaxHorizontalVelocityTo( float fMaxHorizontalVelocity ) @@ -604,4 +572,17 @@ void PlayerObject::LimitMaxVerticalVelocityTo( float fMaxVerticalVelocity ) if (GetVelY() < -fMaxVerticalVelocity) SetVelY(-fMaxVerticalVelocity); +} + +void PlayerObject::OnAnimationLooped() +{ + m_bShouldNotSwitchAnimationsRightNow = false; +} + +void PlayerObject::PlayAnimation(uint uiIndex) +{ + if (m_bShouldNotSwitchAnimationsRightNow) + return; + + Object::PlayAnimation(uiIndex); } \ No newline at end of file diff --git a/src/objects/objectPlayer.h b/src/objects/objectPlayer.h index 6488652..40f3f7e 100644 --- a/src/objects/objectPlayer.h +++ b/src/objects/objectPlayer.h @@ -60,7 +60,7 @@ class PlayerObject : public Object { void LimitMaxHorizontalVelocityTo( float fMaxHorizontalVelocity ); void LimitMaxVerticalVelocityTo( float fMaxVerticalVelocity ); - void DropBombs(); + void DropBombsIfNeeded(); void DoStanding(); void DoWalking(); @@ -92,15 +92,20 @@ class PlayerObject : public Object { // If the running animation is a skateboard (only set at init time) bool on_skateboard; + bool m_bShouldNotSwitchAnimationsRightNow; + public: - bool Init(); - void Shutdown(); + virtual bool Init(); + virtual void Shutdown(); //! Load object properties from XML bool LoadPlayerProperties(XMLNode &xDef); - void Update(); - void OnCollide(Object* obj, const b2ContactPoint* pkContactPoint); + virtual void Update(); + virtual void OnCollide(Object* obj, const b2ContactPoint* pkContactPoint); + + virtual void OnAnimationLooped(); + virtual void PlayAnimation(uint uiIndex); int GetNumRings() {return ring_count;}; diff --git a/test-map.xml b/test-map.xml index 241cd9b..3d5666c 100755 --- a/test-map.xml +++ b/test-map.xml @@ -132,6885 +132,1519 @@ - 2262 + 2265 - 1329 + 1332 - + + + - 436 + 1814 - 778 + 229 - + - 378 + 1925 - 756 + 253 - + - 391 + 1824 - 738 + 349 - + - 400 + 1624 - 715 + 311 - + - 670 + 2231 - 742 + 131 - + - 535 + 2342 - 1089 + 155 - + - 139 + 2281 - 859 + 281 - + - 166 + 2224 - 535 + 303 - + - 558 + 2195 - 346 + 332 - + - 810 + 2117 - 531 + 433 - + - 441 + 2079 - 670 + 466 - - - + - 175 + 2064 - -10 + 461 - + - 362 + 2087 - -18 + 303 - + - 1077 + 2105 - 13 + 124 - + - 513 + 2028 - -38 + 80 - + - 803 + 1979 - -9 + 143 - + - 2397 + 2014 - 20 + 225 - + - 966 + 1994 - -7 + 276 - + - 2336 + 1970 - -9 + 203 - + - 1180 + 1981 - -18 + 103 - + - 1846 + 1905 - -30 + 117 - + - 1404 + 1817 - -32 + 135 - + - 2175 + 1818 - -3 + 100 - + - 1687 + 2127 - 6 + 22 - + - 1334 + 2357 - -7 + 100 - + - 944 + 2377 - -7 + 134 - + - 170 + 2399 - 19 + 285 - + - 1377 + 2389 - -29 + 381 - + + + - 403 + 2570 - -7 + 60 + + + 1 + - + + - 664 + 30 - -7 + 330 - + - 2459 + 90 - -7 + 330 - + - 2333 + 90 - -26 + 360 - + - 1359 + 90 - -23 + 390 - + - 1680 + 90 - -21 + 420 - + - 1426 + 90 - -2 + 450 - + - 1530 + 90 - 21 + 480 - + - 1403 + 90 - 12 + 510 - + - 485 + 90 - -12 + 540 - + - 2236 + 300 - 20 + 570 - + - 2063 + 300 - -13 + 600 - + - 1275 + 300 - -39 + 630 - + - 2029 + 300 - 9 + 690 - + - 1599 + 300 - -40 + 660 - + - 1964 + 300 - -17 + 720 - + - 12 + 300 - -33 + 750 - + - 185 + 300 - -14 + 780 - + - 1619 + 300 - -43 + 810 - + - 2196 + 300 - -37 + 840 - + - 1099 + 300 - 19 + 870 - + - 2141 + 360 - -19 + 870 - + - 2251 + 330 - -31 + 870 - + - 162 + 390 - 14 + 870 - + - 1753 + 420 - -36 + 870 - + - 580 + 630 - -46 + 870 - + - 2392 + 630 - 7 + 900 - + - 846 + 630 - 21 + 930 - + - 2036 + 630 - -41 + 960 - + - 1720 + 630 - 0 + 990 - + - 1282 + 630 - -28 + 1020 - + - 1771 + 420 - -26 + 1050 - + - 1320 + 420 - 45 + 1080 - + - 226 + 420 - 38 + 1110 - + - 753 + 420 - 24 + 1140 - + - 799 + 420 - 34 + 1170 - + - 327 + 420 - 37 + 1200 - + - 2426 + 420 - 34 + 1230 - + - 1600 + 420 - 47 + 1260 - + - 1577 + 780 - 50 + 1290 - + - 1292 + 780 - 42 + 1320 - + - 637 + 780 - 21 + 1350 - + - 1768 + 780 - 34 + 1380 - + - 2481 + 780 - 31 + 1410 - + - 947 + 780 - 39 + 1440 - + - 1612 + 780 - 44 + 1470 - + - 617 + 810 - 31 + 1470 - + - 2500 + 750 - 41 + 1470 - + - 352 + 780 - 48 + 1590 - + - 2269 + 780 - 30 + 1620 - + - 346 + 780 - 30 + 1650 - + - 913 + 780 - 41 + 1680 - + - 1840 + 780 - 21 + 1710 - + - 809 + 780 - 45 + 1740 - + - 938 + 780 - 36 + 1770 - - - + - 554 + 0.000000 - 28 + 4.375000 - + - + - 1262 + 840 - 27 + 2250 - + - 0 + 840 - 0 + 2280 - + - 200 + 840 - 0 + 2310 - + - 400 + 840 - 0 + 2340 - + - 600 + 870 - 0 - - - - - - - 800 - - - 0 + 2340 - + - 1000 + 900 - 0 + 2340 - + - 1200 + 900 - 0 + 2550 - + - 1400 + 900 - 0 + 2580 - + - 1600 + 900 - 0 + 2610 - + - 1800 + 900 - 0 + 2640 - + - 2000 + 630 - 0 + 2460 - + - 2200 + 1110 - 0 + 2730 - + - 2400 + 1320 - 0 + 2730 - + - 2600 + 1320 - 0 + 2760 - + - 1250 + 1320 - 290 + 2790 - - - 0.000000 - - - 1.250000 - - - + - 1300 + 930 - 290 + 2640 - - - 0.000000 - - - 1.250000 - - - + 1350 - 290 + 2700 - - - 0.000000 - - - 1.250000 - - - + - 1400 + 1380 - 290 + 2670 - - - 0.000000 - - - 1.250000 - - - + - 1450 + 1410 - 290 + 2640 - - - 0.000000 - - - 1.250000 - - - + - 1500 + 1410 - 290 + 2610 - - - 0.000000 - - - 1.250000 - - - + - 1550 + 1410 - 290 + 2580 - - - 0.000000 - - - 1.250000 - - - + - 1936 + 1440 - 2020 + 2550 - + - 1929 + 1470 - 2020 + 2520 - + - 1947 + 1470 - 2020 + 2460 - + - 2124 + 1470 - 2020 + 2490 - + - 1900 + 1470 - 2020 + 3000 - + - 1890 + 1440 - 2020 + 3030 - + - 1898 + 1200 - 2020 + 3030 - + - 1735 + 1020 - 3323 + 3060 - + - 1756 + 1020 - 3307 + 3090 - + - 1679 + 1020 - 3324 + 3120 - + - 1609 + 1020 - 3329 + 3150 - + - 1771 + 1020 - 3331 + 3180 - + - 1606 + 1020 - 3307 + 3210 - + - 1734 + 1020 - 3303 + 3240 - + - 1703 + 1020 - 3350 + 3270 - + - 1639 + 1110 - 3336 + 3180 - + - 1608 + 1140 - 3342 + 3180 - + - 30 + 1170 - 20 + 3180 - + - 600 + 1230 - 20 + 3180 - + - 1000 + 1200 - 20 + 3180 - - + - 1100 + 1260 - 20 + 3180 - - + - 1200 + 1290 - 20 + 3180 - - + - 2544 + 1230 - 20 + 3000 - + - 2544 + 1260 - 83 + 3000 - 10 + 1320 - 175 + 3180 - 40 + 1350 - 175 + 3180 - 70 + 1410 - 175 + 3180 - 100 + 1380 - 175 + 3180 - 130 + 1440 - 175 + 3180 - 200 + 1470 - 20 + 3180 - + - 300 + 1500 - 20 + 3210 - + - 350 + 1530 - 20 + 3240 - + - 400 + 1560 - 20 + 3270 - + - 325 + 1650 - 70 + 3660 - + - 375 + 1050 - 70 + 2400 - 350 + 872 - 120 + 1852 - + - 580 + 872 - 180 + 1902 - 550 + 872 - 150 + 1952 - 750 + 618 - 150 + 1994 - 800 + 618 - 200 + 2044 - 850 + 618 - 250 + 2094 - 900 + 618 - 300 + 2144 - + - 1200 + 1104 - 400 - - - - - - - 1150 - - - 350 - - - - - - - 1200 - - - 350 - - - - - - - 1100 - - - 400 - - - - - - - 1100 - - - 350 - - - - - - - 1050 - - - 350 - - - - - - - 1000 - - - 400 - - - - - - - 1000 - - - 350 - - - - - - - 1200 - - - 450 - - - - - - - 1250 - - - 475 - - - - - - - 1300 - - - 500 - - - - - - - 1350 - - - 475 - - - - - - - 1400 - - - 450 - - - - - - - 1750 - - - 400 - - - - - - - 1800 - - - 400 - - - - - - - 1850 - - - 400 - - - - - - - 1690 - - - 350 - - - - - - - 1710 - - - 340 - - - - - - - 1600 - - - 300 - - - - - - - 1650 - - - 330 - - - - - - - 1710 - - - 350 - - - - - - - 1990 - - - 350 - - - - - - - 2190 - - - 350 - - - - - - - 2200 - - - 400 - - - - - 0.000000 - - - 2.500000 - - - - - - - 2500 - - - 640 - - - - - 0.000000 - - - 4.500000 - - - - - - - 2300 - - - 600 - - - - - - - 2250 - - - 600 - - - - - - - 2500 - - - 600 - - - - - - - 2300 - - - 620 - - - - - - - 2530 - - - 1000 - - - - - - - 2530 - - - 1300 - - - - - - - 2530 - - - 1900 - - - - - - - 2530 - - - 2200 - - - - - - - 2530 - - - 2500 - - - - - - - 2530 - - - 2800 - - - - - - - 1500 - - - 2000 - - - - - - - 1500 - - - 1980 - - - - - - - 1700 - - - 1980 - - - - - - - 1900 - - - 1980 - - - - - - - 2100 - - - 1980 - - - - - - - 2200 - - - 2000 - - - - - - - - 1800 - - - 2000 - - - - - - - 1750 - - - 2000 - - - - - - - 1700 - - - 2000 - - - - - - - 1650 - - - 2000 - - - - - - - 1600 - - - 2000 - - - - - - - 1700 - - - 2050 - - - - - - - 1700 - - - 2100 - - - - - 0.000000 - - - 5.625000 - - - - - - - 1720 - - - 2400 - - - - - - - 1720 - - - 2450 - - - - - - - 1720 - - - 2500 - - - - - - - 1720 - - - 2550 - - - - - - - 1720 - - - 2600 - - - - - - - 1720 - - - 2650 - - - - - - - 1720 - - - 2700 - - - - - - - 1720 - - - 2750 - - - - - - - 1720 - - - 2800 - - - - - - - 1720 - - - 2850 - - - - - - - 1720 - - - 2900 - - - - - - - 1720 - - - 2950 - - - - - - - 1720 - - - 3000 - - - - - - - 1720 - - - 3050 - - - - - - - 1720 - - - 3100 - - - - - - - 1720 - - - 3150 - - - - - - - 1840 - - - 3000 - - - - - - - 1540 - - - 3000 - - - - - - - 1550 - - - 3000 - - - - - - - 1850 - - - 3000 - - - - - - - 1720 - - - 3800 - - - - - 0.000000 - - - 4.375000 - - - - - - - 1700 - - - 5000 - - - - - 3.125000 - - - 0.125000 - - - - - - - 2500 - - - 4500 - - - - - - 0.000000 - - - -3.125000 - - - - - - - 2550 - - - 3600 - - - - - - -1.750000 - - - 0.562500 - - - - - - - 1610 - - - 3400 - - - - - - - 1800 - - - 3400 - - - - - - - 1550 - - - 3300 - - - - - - - 1600 - - - 3300 - - - - - - - 1650 - - - 3300 - - - - - - - 1700 - - - 3300 - - - - - - - 1750 - - - 3300 - - - - - - - 1800 - - - 3300 - - - - - - - 1850 - - - 3300 - - - - - - - 1900 - - - 3300 - - - - - - - 1575 - - - 3350 - - - - - - - 1625 - - - 3350 - - - - - - - 1675 - - - 3350 - - - - - - - 1725 - - - 3350 - - - - - - - 1775 - - - 3350 - - - - - - - 1825 - - - 3350 - - - - - - - 1875 - - - 3350 - - - - - - - 1650 - - - 3400 - - - - - - - 1700 - - - 3400 - - - - - - - 1750 - - - 3400 - - - - - - - 1675 - - - 3450 - - - - - - - 1725 - - - 3450 - - - - - - - 1700 - - - 3500 - - - - - - - 1840 - - - 3400 - - - - - - - 1600 - - - 3400 - - - - - - - 1705 - - - 3400 - - - - - - - 2400 - - - 20 - - - - - - - 500 - - - 20 - - - - - - - 1518 - - - 3349 - - - - - - - 1403 - - - 3317 - - - - - - - 1373 - - - 3317 - - - - - - - 1248 - - - 3317 - - - - - - - 1218 - - - 3317 - - - - - - - 1079 - - - 3317 - - - - - - - 1050 - - - 3347 - - - - - - - 1049 - - - 3317 - - - - - - - 1050 - - - 3376 - - - - - - - 1050 - - - 3405 - - - - - - - 1129 - - - 3488 - - - - - - - 1158 - - - 3488 - - - - - - - 929 - - - 3498 - - - - - - - 729 - - - 3498 - - - - - - - 681 - - - 3468 - - - - - - - 721 - - - 3518 - - - - - - - 771 - - - 3518 - - - - - - - 1222 - - - 3413 - - - - - - - 1254 - - - 3413 - - - - - - - 1380 - - - 3412 - - - - - - - 1409 - - - 3412 - - - - - - - 2217 - - - 522 - - - - - - - 2217 - - - 592 - - - - - - - 2218 - - - 659 - - - - - - - 770 - - - 3594 - - - - - - - 717 - - - 3594 - - - - - - - 665 - - - 3569 - - - - - - - 613 - - - 3509 - - - - - - - 566 - - - 3427 - - - - - - - 542 - - - 3330 - - - - - - - 528 - - - 3197 - - - - - - - 767 - - - 3621 - - - - - - - 490 - - - 3061 - - - - - - - 520 - - - 3061 - - - - - - - 549 - - - 3061 - - - - - - - 344 - - - 3062 - - - - - - - 344 - - - 3032 - - - - - - - 374 - - - 3062 - - - - - - - 314 - - - 3062 - - - - - - - 284 - - - 3062 - - - - - - - 254 - - - 3062 - - - - - - - 314 - - - 3032 - - - - - - - 344 - - - 3003 - - - - - - - 345 - - - 2973 - - - - - - - 345 - - - 2943 - - - - - - - 344 - - - 2913 - - - - - - - 174 - - - 2895 - - - - - - - 296 - - - 2915 - - - - - - - 296 - - - 2965 - - - - - - - 246 - - - 2915 - - - - - - - 246 - - - 2965 - - - - - - - 196 - - - 2915 - - - - - - - 558 - - - 3091 - - - - - - - 484 - - - 3091 - - - - - - - 143 - - - 2915 - - - - - - - 186 - - - 2965 - - - - - - - 160 - - - 2915 - - - - - - - 285 - - - 2915 - - - - - - - 491 - - - 3091 - - - - - - - 524 - - - 3092 - - - - - - - 549 - - - 3091 - - - - - - - 543 - - - 3109 - - - - - - - 532 - - - 3092 - - - - - - - 510 - - - 3091 - - - - - - - 516 - - - 3120 - - - - - - - 521 - - - 3097 - - - - - - - 497 - - - 3104 - - - - - - - 469 - - - 3092 - - - - - - - 320 - - - 3092 - - - - - - - 546 - - - 3132 - - - - - - - 556 - - - 3099 - - - - - - - 371 - - - 3265 - - - - - - - 750 - - - 1770 - - - - - - - 600 - - - 150 - - - - - - - 837 - - - 2367 - - - - - - - 1099 - - - 2759 - - - - - - - 610 - - - 2488 - - - - - - - 1410 - - - 2671 - - - - - - - 1102 - - - 3205 - - - - - - - 1440 - - - 2880 - - - - - - - 1440 - - - 2910 - - - - - - - 1440 - - - 2940 - - - - - - - 1440 - - - 2970 - - - - - - - 1290 - - - 2970 - - - - - - - 1050 - - - 3030 - - - - - - - 1080 - - - 3030 - - - - - - - 1110 - - - 3030 - - - - - - - 930 - - - 3630 - - - - - - - 960 - - - 3630 - - - - - - - 1080 - - - 3750 - - - - - - - 1290 - - - 3840 - - - - - - - 1290 - - - 3870 - - - - - - - 1320 - - - 3900 - - - - - - - 1350 - - - 3930 - - - - - - - 1380 - - - 3960 - - - - - - - 1140 - - - 4050 - - - - - - - 840 - - - 4020 - - - - - - - 480 - - - 3930 - - - - - - - 450 - - - 3930 - - - - - - - 420 - - - 3930 - - - - - - - 360 - - - 4080 - - - - - - - 360 - - - 4050 - - - - - - - 390 - - - 4230 - - - - - - - 450 - - - 4320 - - - - - - - 390 - - - 4200 - - - - - - - 450 - - - 4350 - - - - - - - 630 - - - 4470 - - - - - - - 870 - - - 4500 - - - - - - - 1110 - - - 4440 - - - - - - - 1140 - - - 4440 - - - - - - - 1170 - - - 4440 - - - - - - - 1200 - - - 4440 - - - - - - - 1170 - - - 4470 - - - - - - - 930 - - - 3660 - - - - - - - - - 2570 - - - 60 - - - - - 1 - - - - - - - 30 - - - 330 - - - - - - - 90 - - - 330 - - - - - - - 90 - - - 360 - - - - - - - 90 - - - 390 - - - - - - - 90 - - - 420 - - - - - - - 90 - - - 450 - - - - - - - 90 - - - 480 - - - - - - - 90 - - - 510 - - - - - - - 90 - - - 540 - - - - - - - 300 - - - 570 - - - - - - - 300 - - - 600 - - - - - - - 300 - - - 630 - - - - - - - 300 - - - 690 - - - - - - - 300 - - - 660 - - - - - - - 300 - - - 720 - - - - - - - 300 - - - 750 - - - - - - - 300 - - - 780 - - - - - - - 300 - - - 810 - - - - - - - 300 - - - 840 - - - - - - - 300 - - - 870 - - - - - - - 360 - - - 870 - - - - - - - 330 - - - 870 - - - - - - - 390 - - - 870 - - - - - - - 420 - - - 870 - - - - - - - 630 - - - 870 - - - - - - - 630 - - - 900 - - - - - - - 630 - - - 930 - - - - - - - 630 - - - 960 - - - - - - - 630 - - - 990 - - - - - - - 630 - - - 1020 - - - - - - - 420 - - - 1050 - - - - - - - 420 - - - 1080 - - - - - - - 420 - - - 1110 - - - - - - - 420 - - - 1140 - - - - - - - 420 - - - 1170 - - - - - - - 420 - - - 1200 - - - - - - - 420 - - - 1230 - - - - - - - 420 - - - 1260 - - - - - - - 780 - - - 1290 - - - - - - - 780 - - - 1320 - - - - - - - 780 - - - 1350 - - - - - - - 780 - - - 1380 - - - - - - - 780 - - - 1410 - - - - - - - 780 - - - 1440 - - - - - - - 780 - - - 1470 - - - - - - - 810 - - - 1470 - - - - - - - 750 - - - 1470 - - - - - - - 780 - - - 1590 - - - - - - - 780 - - - 1620 - - - - - - - 780 - - - 1650 - - - - - - - 780 - - - 1680 - - - - - - - 780 - - - 1710 - - - - - - - 780 - - - 1740 - - - - - - - 780 - - - 1770 - - - - - 0.000000 - - - 4.375000 - - - - - - - 840 - - - 2250 - - - - - - - 840 - - - 2280 - - - - - - - 840 - - - 2310 - - - - - - - 840 - - - 2340 - - - - - - - 870 - - - 2340 - - - - - - - 900 - - - 2340 - - - - - - - 900 - - - 2550 - - - - - - - 900 - - - 2580 - - - - - - - 900 - - - 2610 - - - - - - - 900 - - - 2640 - - - - - - - 630 - - - 2460 - - - - - - - 1110 - - - 2730 - - - - - - - 1320 - - - 2730 - - - - - - - 1320 - - - 2760 - - - - - - - 1320 - - - 2790 - - - - - - - 930 - - - 2640 - - - - - - - 1350 - - - 2700 - - - - - - - 1380 - - - 2670 - - - - - - - 1410 - - - 2640 - - - - - - - 1410 - - - 2610 - - - - - - - 1410 - - - 2580 - - - - - - - 1440 - - - 2550 - - - - - - - 1470 - - - 2520 - - - - - - - 1470 - - - 2460 - - - - - - - 1470 - - - 2490 - - - - - - - 1470 - - - 3000 - - - - - - - 1440 - - - 3030 - - - - - - - 1200 - - - 3030 - - - - - - - 1020 - - - 3060 - - - - - - - 1020 - - - 3090 - - - - - - - 1020 - - - 3120 - - - - - - - 1020 - - - 3150 - - - - - - - 1020 - - - 3180 - - - - - - - 1020 - - - 3210 - - - - - - - 1020 - - - 3240 - - - - - - - 1020 - - - 3270 - - - - - - - 1110 - - - 3180 - - - - - - - 1140 - - - 3180 - - - - - - - 1170 - - - 3180 - - - - - - - 1230 - - - 3180 - - - - - - - 1200 - - - 3180 - - - - - - - 1260 - - - 3180 - - - - - - - 1290 - - - 3180 - - - - - - - 1230 - - - 3000 - - - - - - - 1260 - - - 3000 - - - - - - - 1320 - - - 3180 - - - - - - - 1350 - - - 3180 - - - - - - - 1410 - - - 3180 - - - - - - - 1380 - - - 3180 - - - - - - - 1440 - - - 3180 - - - - - - - 1470 - - - 3180 - - - - - - - 1500 - - - 3210 - - - - - - - 1530 - - - 3240 - - - - - - - 1560 - - - 3270 - - - - - - - 1650 - - - 3660 - - - - - - - 1050 - - - 2400 - - - - - - - 872 - - - 1852 - - - - - - - 872 - - - 1902 - - - - - - - 872 - - - 1952 - - - - - - - 618 - - - 1994 - - - - - - - 618 - - - 2044 - - - - - - - 618 - - - 2094 - - - - - - - 618 - - - 2144 - - - - - - - 1104 - - - 2516 - - - - - - - - - 1614 - - - -24 - - - - - - - 657 - - - -18 - - - - - - - 897 - - - -24 - - - - - - - 1278 - - - -30 - - - - - - - 1623 - - - -27 - - - - - - - 858 - - - -12 - - - - - - - 1176 - - - -18 - - - - - - - 822 - - - -30 - - - - - - - 1326 - - - -27 - - - - - - - 522 - - - -15 - - - - - - - 1602 - - - -15 - - - - - - - 822 - - - -6 - - - - - - - 852 - - - -9 - - - - - - - 786 - - - -3 - - - - - - - 627 - - - 0 - - - - - - - 561 - - - -18 - - - - - - - 1524 - - - -27 - - - - - - - 1665 - - - -12 - - - - - - - 186 - - - -27 - - - - - - - 831 - - - 0 - - - - - - - 954 - - - -12 - - - - - - - 1014 - - - -12 - - - - - - - 309 - - - -18 - - - - - - - 366 - - - -3 - - - - - - - 252 - - - -15 - - - - - - - 1257 - - - -6 - - - - - - - 354 - - - -9 - - - - - - - 186 - - - -15 - - - - - - - 54 - - - -6 - - - - - - - 1140 - - - -18 - - - - - - - 1248 - - - -3 - - - - - - - 1278 - - - -18 - - - - - - - 1164 - - - -3 - - - - - - - 243 - - - -6 - - - - - - - 984 - - - -18 - - - - - - - 1410 - - - -9 - - - - - - - 753 - - - -9 - - - - - - - 1353 - - - -9 - - - - - - - 27 - - - -6 - - - - - - - 117 - - - -15 - - - - - - - 1614 - - - 2304 - - - - - - - 957 - - - 3423 - - - - - - - 1080 - - - 3477 - - - - - - - 126 - - - 2226 - - - - - - - 1800 - - - 3003 - - - - - - - 1392 - - - 1779 - - - - - - - 1116 - - - 2118 - - - - - - - 1140 - - - 3207 - - - - - - - 1686 - - - 2115 - - - - - - - 456 - - - 1269 - - - - - - - 1272 - - - 2322 - - - - - - - 213 - - - 1218 - - - - - - - 1560 - - - 1470 - - - - - - - 870 - - - 1584 - - - - - - - 1011 - - - 1554 - - - - - - - 1011 - - - 1845 - - - - - - - 645 - - - 2520 - - - - - - - 498 - - - 1092 - - - - - - - 468 - - - 1611 - - - - - - - 1290 - - - 2601 - - - - - - - 651 - - - 2613 - - - - - - - 1098 - - - 1317 - - - - - - - 1719 - - - 1023 - - - - - - - 951 - - - 2301 - - - - - - - 255 - - - 1134 - - - - - - - 1341 - - - 2313 - - - - - - - 1299 - - - 2391 - - - - - - - 168 - - - 1869 - - - - - - - 1773 - - - 3747 - - - - - - - 699 - - - 1110 - - - - - - - 555 - - - 3222 - - - - - - - 1386 - - - 1785 - - - - - - - 1764 - - - 1461 - - - - - - - 738 - - - 2544 - - - - - - - 801 - - - 903 - - - - - - - 1545 - - - 2754 - - - - - - - 672 - - - 2532 - - - - - - - 294 - - - 1335 - - - - - - - 1146 - - - 2799 - - - - - - - 576 - - - 3423 - - - - - - - 1374 - - - 1464 - - - - - - - 1908 - - - 1350 - - - - - - - 225 - - - 1749 - - - - - - - 1089 - - - 993 - - - - - - - 1962 - - - 1194 - - - - - - - 948 - - - 1653 - - - - - - - 42 - - - 1725 - - - - - - - 1458 - - - 2562 - - - - - - - 66 - - - 3780 - - - - - - - 1344 - - - 3429 - - - - - - - 1650 - - - 2814 - - - - - - - 144 - - - 3027 - - - - - - - 939 - - - 2952 - - - - - - - 1836 - - - 2265 - - - - - - - 1407 - - - 2706 - - - - - - - 261 - - - 1098 - - - - - - - 1239 - - - 2469 - - - - - - - 303 - - - 3885 - - - - - - - 831 - - - 3528 - - - - - - - 1842 - - - 2763 - - - - - - - 1062 - - - 1845 - - - - - - - 30 - - - 1098 - - - - - - - 1290 - - - 2727 - - - - - - - 1683 - - - 1608 - - - - - - - 849 - - - 2076 - - - - - - - 453 - - - 2448 - - - - - - - 1158 - - - 2847 - - - - - - - 1086 - - - 1773 - - - - - - - 732 - - - 3873 - - - - - - - 1527 - - - 936 - - - - - - - 1467 - - - 3828 - - - - - - - 1161 - - - 858 - - - - - - - 894 - - - 3669 - - - - - - - 492 - - - 2172 - - - - - - - 1488 - - - 3408 - - - - - - - 192 - - - 864 - - - - - - - 1335 - - - 2823 - - - - - - - 174 - - - 2235 - - - - - - - 1224 - - - 768 - - - - - - - 63 - - - 1050 - - - - - - - 900 - - - 2424 - - - - - - - 504 - - - 1725 - - - - - - - 261 - - - 3186 - - - - - - - 66 - - - 2826 - - - - - - - 495 - - - 1395 - - - - - - - 672 - - - 930 - - - - - - - 699 - - - 1809 - - - - - - - 1968 - - - 1062 - - - - - - - 60 - - - 3669 - - - - - - - 903 - - - 3375 - - - - - - - 666 - - - 2271 - - - - - - - 1128 - - - 2958 - - - - - - - 1086 - - - 1053 - - - - - - - 396 - - - 1266 - - - - - - - 849 - - - 753 - - - - - - - 1830 - - - 1815 - - - - - - - 879 - - - 2985 - - - - - - - 1755 - - - 1962 - - - - - - - 462 - - - 1908 - - - - - - - 1848 - - - 2508 - - - - - - - 1194 - - - 1767 - - - - - - - 1194 - - - 2910 - - - - - - - 1593 - - - 3003 - - - - - - - 441 - - - 3720 - - - - - - - 1146 - - - 1221 - - - - - - - 108 - - - 3234 - - - - - - - 99 - - - 1704 - - - - - - - 1026 - - - 2538 - - - - - - - 1617 - - - 1410 - - - - - - - 1212 - - - 1140 - - - - - - - 951 - - - 1632 - - - - - - - 1269 - - - 2502 - - - - - - - 936 - - - 912 - - - - - - - 768 - - - 3948 - - - - - - - 222 - - - 1926 - - - - - - - 1932 - - - 3321 - - - - - - - 474 - - - 1824 - - - - - - - 846 - - - 2109 - - - - - - - 885 - - - 3786 - - - - - - - 1236 - - - 2178 - - - - - - - 1074 - - - 840 - - - - - - - 984 - - - 1227 - - - - - - - 1461 - - - 1317 - - - - - - - 1476 - - - 744 - - - - - - - 1242 - - - 870 - - - - - - - 1761 - - - 1041 - - - - - - - 1578 - - - 711 - - - - - - - 1887 - - - 693 - - - - - - - 1098 - - - 1266 - - - - - - - 573 - - - 1020 - - - - - - - 93 - - - 1047 - - - - - - - 1686 - - - 900 - - - - - - - 666 - - - 702 - - - - - - - 1833 - - - 1002 - - - - - - - 597 - - - 732 - - - - - - - 714 - - - 930 - - - - - - - 1941 - - - 1005 - - - - - - - 222 - - - 1260 - - - - - - - 15 - - - 1098 - - - - - - - 813 - - - 1266 - - - - - - - 471 - - - 741 - - - - - - - 1326 - - - 1242 - - - - - - - 711 - - - 1203 - - - - - - - 93 - - - 837 - - - - - - - 717 - - - 1122 - - - - - - - 171 - - - 1302 - - - - - - - 225 - - - 1305 - - - - - - - 1215 - - - 927 - - - - - - - 783 - - - 1164 - - - - - - - 348 - - - 1155 + 2516 +>>>>>>> .r643 +