[Fix] Scrolling is now done.
This commit is contained in:
parent
06ee0fbdda
commit
c783228588
@ -40,3 +40,6 @@ void Player::ProcessEvents(void) {
|
|||||||
_player->SetX(x);
|
_player->SetX(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Player::GetWidth() { return _player->GetWidth(); }
|
||||||
|
int Player::GetHeight() { return _player->GetWidth(); }
|
@ -18,6 +18,8 @@ public:
|
|||||||
|
|
||||||
int GetX() { return x; }
|
int GetX() { return x; }
|
||||||
int GetY() { return y; }
|
int GetY() { return y; }
|
||||||
|
int GetWidth();
|
||||||
|
int GetHeight();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float x;
|
float x;
|
||||||
|
@ -18,6 +18,8 @@ public:
|
|||||||
|
|
||||||
int GetWidth() const { return _width; }
|
int GetWidth() const { return _width; }
|
||||||
int GetHeight() const { return _height; }
|
int GetHeight() const { return _height; }
|
||||||
|
int GetTileWidth() const { return _tileWidth; }
|
||||||
|
int GetTileHeight() const { return _tileHeight; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _width;
|
int _width;
|
||||||
|
@ -2,10 +2,13 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#include <GL/glu.h>
|
#include <GL/glu.h>
|
||||||
|
|
||||||
#include "../Global/Globals.h"
|
#include "../Global/Globals.h"
|
||||||
|
#include "../Global/Constants.h"
|
||||||
#include "../System/Debug.h"
|
#include "../System/Debug.h"
|
||||||
#include "../Sprite/Sprite.h"
|
#include "../Sprite/Sprite.h"
|
||||||
#include "../Texture/Texture.h"
|
#include "../Texture/Texture.h"
|
||||||
@ -52,10 +55,24 @@ void Game::Render(void) {
|
|||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
glTranslatef(-(_player->GetX() - 256), -(_player->GetY() - 128), 0.0f);
|
float windowCenterX = ((float)WINDOW_WIDTH / 2.0f) - ((float)_player->GetWidth() / 2.0f);
|
||||||
|
float windowCenterY = ((float)WINDOW_HEIGHT / 2.0f) - ((float)_player->GetHeight() / 2.0f);
|
||||||
|
|
||||||
|
float xOffset = _player->GetX() - windowCenterX;
|
||||||
|
float yOffset = _player->GetY() - windowCenterY;
|
||||||
|
|
||||||
|
float maxXOffset = (_level->GetWidth() * _level->GetTileWidth()) - (float)WINDOW_WIDTH;
|
||||||
|
float maxYOffset = (_level->GetHeight() * _level->GetTileHeight()) - (float)WINDOW_HEIGHT;
|
||||||
|
|
||||||
|
if(xOffset < 0.0f) xOffset = 0.0f;
|
||||||
|
if(yOffset < 0.0f) yOffset = 0.0f;
|
||||||
|
if(xOffset > maxXOffset) xOffset = maxXOffset;
|
||||||
|
if(yOffset > maxYOffset) yOffset = maxYOffset;
|
||||||
|
|
||||||
|
glTranslatef(-xOffset, -yOffset, 0.0f);
|
||||||
|
|
||||||
// Render our shit..
|
// Render our shit..
|
||||||
_level->Draw(_player->GetX() - 256, _player->GetY() - 128);
|
_level->Draw(xOffset, yOffset);
|
||||||
_player->Render();
|
_player->Render();
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
Loading…
Reference in New Issue
Block a user