posX is a value that decrease if position X of Player is higher than or equal (1280/2) - playerWidth and if Player moves right. if moves left and position X of Player is lower than or equal (1280/2) - playerWidth, posX increase.
The player and map moving formula are :
//moving right
if (posX >= (System::getFM()->getW() / 2) - getHitBoxX() && System::getSM()->GetGame()->getMoveMap())// && System::getSM()->GetGame()->getPosX() >= -1760)
{
System::getSM()->GetGame()->MoveMap(-moveSpeed, 0);
}
// player posX
else posX += moveSpeed;
moveAnim = true;
// moving left
if (posX <= (System::getFM()->getW() / 2) - getHitBoxX() && System::getSM()->GetGame()->getMoveMap() && System::getSM()->GetGame()->getPosX() < 0)
{
System::getSM()->GetGame()->MoveMap(-moveSpeed, 0);
}
else if (posX - System::getSM()->GetGame()->getPosX() + moveSpeed >= 0 && posX >= 0)
{
// player posX
posX += moveSpeed;
}
else if (posX >= 0)
{
UpdatePosX(moveSpeed + 1);
}
moveAnim = true;
Getgame returns GameplayScreen instace, move map is a method that add moveSpeed to posX of map. getMoveMap() returns boolean, if true, map can move, if false, it cannot.
Lactose, posX is always negative or 0.
Yxjmir, that's right. I gave a bad example. It's 40 because if posX = 5, still I can see only 40 block and a piece of 41, and then I add 1 to get 1 more blocks. It returns ~41.

as you can see, on the right site there are pieces of blocks.