[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); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| int Player::GetWidth() { return _player->GetWidth(); } | ||||
| int Player::GetHeight() { return _player->GetWidth(); } | ||||
| @ -18,6 +18,8 @@ public: | ||||
| 
 | ||||
|   int GetX() { return x; } | ||||
|   int GetY() { return y; } | ||||
|   int GetWidth(); | ||||
|   int GetHeight(); | ||||
| 
 | ||||
| private: | ||||
|   float x; | ||||
|  | ||||
| @ -18,6 +18,8 @@ public: | ||||
| 
 | ||||
|   int GetWidth() const { return _width; } | ||||
|   int GetHeight() const { return _height; } | ||||
|   int GetTileWidth() const { return _tileWidth; } | ||||
|   int GetTileHeight() const { return _tileHeight; } | ||||
| 
 | ||||
| private: | ||||
|   int _width; | ||||
|  | ||||
| @ -2,10 +2,13 @@ | ||||
| #include <windows.h> | ||||
| #endif | ||||
| 
 | ||||
| #include <algorithm> | ||||
| 
 | ||||
| #include <GL/gl.h> | ||||
| #include <GL/glu.h> | ||||
| 
 | ||||
| #include "../Global/Globals.h" | ||||
| #include "../Global/Constants.h" | ||||
| #include "../System/Debug.h" | ||||
| #include "../Sprite/Sprite.h" | ||||
| #include "../Texture/Texture.h" | ||||
| @ -52,10 +55,24 @@ void Game::Render(void) { | ||||
|   glMatrixMode(GL_MODELVIEW); | ||||
|   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..
 | ||||
|   _level->Draw(_player->GetX() - 256, _player->GetY() - 128); | ||||
|   _level->Draw(xOffset, yOffset); | ||||
|   _player->Render(); | ||||
| 
 | ||||
|   glPopMatrix(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tamir Atias
						Tamir Atias