29
29
#include " PreRTS.h" // This must go first in EVERY cpp file int the GameEngine
30
30
31
31
#include " Common/GameType.h"
32
+ #include " Common/GameEngine.h"
32
33
#include " Common/MessageStream.h"
33
34
#include " Common/Player.h"
34
35
#include " Common/PlayerList.h"
@@ -366,15 +367,19 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
366
367
367
368
Int spin = msg->getArgument ( 1 )->integer ;
368
369
370
+ // TheSuperHackers @tweak The camera zoom is now decoupled from the render update.
371
+ const Real fpsRatio = (Real)BaseFps / TheGameEngine->getUpdateFps ();
372
+ const Real zoomHeight = 10 .0f * fpsRatio;
373
+
369
374
if (spin > 0 )
370
375
{
371
376
for ( ; spin > 0 ; spin--)
372
- TheTacticalView->zoomIn ( );
377
+ TheTacticalView->zoom ( -zoomHeight );
373
378
}
374
379
else
375
380
{
376
381
for ( ;spin < 0 ; spin++ )
377
- TheTacticalView->zoomOut ( );
382
+ TheTacticalView->zoom ( +zoomHeight );
378
383
}
379
384
}
380
385
@@ -408,7 +413,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
408
413
// The scaling is based on the current logic rate, this provides a consistent scroll speed at all GameClient FPS
409
414
// This also fixes scrolling within replays when fast forwarding due to the uncapped FPS
410
415
// When the FPS is in excess of the expected frame rate, the ratio will reduce the offset of the cameras movement
411
- const Real logicToFpsRatio = TheGlobalData-> m_framesPerSecondLimit / TheDisplay-> getCurrentFPS ();
416
+ const Real fpsRatio = (Real)BaseFps / TheGameEngine-> getUpdateFps ();
412
417
413
418
switch (m_scrollType)
414
419
{
@@ -437,27 +442,27 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
437
442
// TheSuperHackers @info calculate the length of the vector to obtain the movement speed before the vector is normalized
438
443
float vecLength = vec.length ();
439
444
vec.normalize ();
440
- offset.x = TheGlobalData->m_horizontalScrollSpeedFactor * logicToFpsRatio * vecLength * vec.x * SCROLL_MULTIPLIER * TheGlobalData->m_keyboardScrollFactor ;
441
- offset.y = TheGlobalData->m_verticalScrollSpeedFactor * logicToFpsRatio * vecLength * vec.y * SCROLL_MULTIPLIER * TheGlobalData->m_keyboardScrollFactor ;
445
+ offset.x = TheGlobalData->m_horizontalScrollSpeedFactor * fpsRatio * vecLength * vec.x * SCROLL_MULTIPLIER * TheGlobalData->m_keyboardScrollFactor ;
446
+ offset.y = TheGlobalData->m_verticalScrollSpeedFactor * fpsRatio * vecLength * vec.y * SCROLL_MULTIPLIER * TheGlobalData->m_keyboardScrollFactor ;
442
447
}
443
448
break ;
444
449
case SCROLL_KEY:
445
450
{
446
451
if (scrollDir[DIR_UP])
447
452
{
448
- offset.y -= TheGlobalData->m_verticalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
453
+ offset.y -= TheGlobalData->m_verticalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
449
454
}
450
455
if (scrollDir[DIR_DOWN])
451
456
{
452
- offset.y += TheGlobalData->m_verticalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
457
+ offset.y += TheGlobalData->m_verticalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
453
458
}
454
459
if (scrollDir[DIR_LEFT])
455
460
{
456
- offset.x -= TheGlobalData->m_horizontalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
461
+ offset.x -= TheGlobalData->m_horizontalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
457
462
}
458
463
if (scrollDir[DIR_RIGHT])
459
464
{
460
- offset.x += TheGlobalData->m_horizontalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
465
+ offset.x += TheGlobalData->m_horizontalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
461
466
}
462
467
}
463
468
break ;
@@ -467,19 +472,19 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
467
472
UnsignedInt width = TheDisplay->getWidth ();
468
473
if (m_currentPos.y < edgeScrollSize)
469
474
{
470
- offset.y -= TheGlobalData->m_verticalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
475
+ offset.y -= TheGlobalData->m_verticalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
471
476
}
472
477
if (m_currentPos.y >= height-edgeScrollSize)
473
478
{
474
- offset.y += TheGlobalData->m_verticalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
479
+ offset.y += TheGlobalData->m_verticalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
475
480
}
476
481
if (m_currentPos.x < edgeScrollSize)
477
482
{
478
- offset.x -= TheGlobalData->m_horizontalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
483
+ offset.x -= TheGlobalData->m_horizontalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
479
484
}
480
485
if (m_currentPos.x >= width-edgeScrollSize)
481
486
{
482
- offset.x += TheGlobalData->m_horizontalScrollSpeedFactor * logicToFpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
487
+ offset.x += TheGlobalData->m_horizontalScrollSpeedFactor * fpsRatio * SCROLL_AMT * TheGlobalData->m_keyboardScrollFactor ;
483
488
}
484
489
}
485
490
break ;
0 commit comments