Merge branch 'master' of github.com:Allanis/LibD
Conflicts: Data/Map/Ugly.tmx
This commit is contained in:
		
						commit
						87bb45cdbc
					
				| @ -28,35 +28,31 @@ | |||||||
|   <image source="../Img/OpenArt/Woodland_village_x2.png" width="512" height="64"/> |   <image source="../Img/OpenArt/Woodland_village_x2.png" width="512" height="64"/> | ||||||
|  </tileset> |  </tileset> | ||||||
|  <layer name="Ground" width="50" height="50"> |  <layer name="Ground" width="50" height="50"> | ||||||
|   <data encoding="base64" compression="zlib"> |   <data encoding="base64" compression="gzip"> | ||||||
|    eJztlF1uwjAQhK1wmKJyjVLoK7SBvhYSCneAngA4Ae1VuxKJZLnZdTY/tRHz8PklJszMziYxxiQAgLvjkRhFoCNWkM/tgtkhpxgJnfeejoPFVxI+kyYc6ThZnOGjd7KBMTmxIT6JLbEbXJ9d6Pi2+AnkI/R+gfgJ0RH0EkigH8g7NMgE2dwjT8RYwXMEmqt4Jd4UpBFkXpXlLfkotVZpaOtDyqhr1kRG5BUaVozeWfEbF/cdUkZ1e9J2N6VZpML/2e/jMtL0pG2n6/pw73W1I135KLP09ce958temp/9jOu0xoe7nxNiquBFkbM027Y+3P1cEEsF7wF8fJi/u+7u53/5kLpsM/fMhOvPg9LH0PAd43zU6aTPb1540OptMhvuu1Bnlj768qDRxd3XfGP68uB2TIK736c2AABowi8gBhQk |    H4sIAAAAAAAAC+2ZwQ2DMBAET1AM6SAtQAWQCkBK//+YR5QfnMwZr6N5zBOzw9o6IXdm1gkzJxYHtXOesSa2xLNxD28vtfPh0abHfk6OzkjtfFGd1M6GR77Hu897f+5z9KENHlrgoQUeWpT2iJhznjXoQws8tMBDCzx+RP0LXVmHPrTAQws8tMBDi1Y8zmZkKY+oGf9vfeBhNgnki/B4NOTiuUsv6XLH/ceXl8D3jvDY99cozuDwAABQ5wMVAhDqECcAAA== | ||||||
|   </data> |   </data> | ||||||
|  </layer> |  </layer> | ||||||
|  <layer name="Above" width="50" height="50"> |  <layer name="Middle" width="50" height="50"> | ||||||
|   <data encoding="base64" compression="zlib"> |   <data encoding="base64" compression="gzip"> | ||||||
|    eJztWLluFEEQbe0Q73plYrsd8AfmDrkh5SYGc2SLJSAjMAh+CsQX8CEmdIAcUS2m5Nqiqrq6Z3uWwE8qzdVd5+uangnhBDthGRvBBxwXnePXhS1yHgfqmmWuc1iQ87nwPPbHbXbPWxMEH2/NX/Q2tpTnnB+S37XguiWUxl6CjYwPOf+myv0LXQgXQS6BXAa5AnK1+5vnbWWOhZTzRXZUHWiM1Ma5To+Dw1oHFl+8+hFvDV2a7fMsjutd+Ih2sH7v4fyDYddCSZ40Hzkkzt8AfTdBboHcBrkPcdyF4z1i5wucf+2v6XrWbNAxmKeUH28cWs+I5Jzz/QHoewjyCOQxyBOQpyDPKvPPgXlK+Ul5ugNC80RzO2NHhKeez+H6BcgeyEuQTbj3Go5v2Dieey+Hh+aplpebhu/7GZsSb3meXnVynjQQXhbFsQvS9XJG8Q3heQ9Z0PJCeUV4GSReSr5Epi/VxoqjtN6zsFzvBG1NI4bwMvZHbpNiFby1gL3ew8uoajmxifmahuX3iPDeUeOgNeVx8Hojp2iv575Q7PRzrPdwmns4CeHX5F/dwntH5C33mceh7ZUkXxIO+mM0xvK+Tdc8XfsJFm+PJ3l/sA7c5kGQIfnCxQPsB+gH5+2es5/SekyD3vOwTtHpnwWJj8kPzCHuN0v6L42j9PuLQpub63+SHznQtYXrsGS+hNx32FwZw/djGk+vKfe5nHX4SnNN88t7277gH53nrU0NEu/njWzU8NSak+ulnm/0nI4an2PFHAncf++7g/PJ6ivSPsqKOTrs57gj7f09emvt8n8GJTX15nwMWP9MvDGV/nfR1hDnFNVL58RCe17QurT8N9YaQ765/oe409oq7ZFWzLFwvOd5a9BvH44he7NW4N/pvB/HkfyoQc1/41O0xW/hXss96pj43B+PBuqRcjRkXMK6+x5C8/nnqF748Kmx/pL6rQI5Xr5boa7asWPhm/GsdB+P41v2sR8NdSccsaP2fB1ItnEtWmtm7PWU8H0NNktQ6l9rnrXGGPWwekftHE/eW8bWQnepzlbx1dTrFDb+AMmMcBk= |    H4sIAAAAAAAAC+2YOQ7DMBADDfhNOXs7R5/D6Z04/v8DzCJdGkHggjLEAVguuNWOoKYxxtTKvv1P5FwEG3Rvkd1vjwNyTNgndy6KDt09ckLOyAW5JuyTOxfFDd135IE8kQF5JeyTOxfFiO438kEm5IvMCfvkzhljyoLhObUrGZ4rwZUMz5XgSobnSnAlw3N2pVk7rPuu9ATrvqs9wbrvak+w7rvaE6z7bk8YY1SOZPaqHMnuVTmS3atyJLtX5cga3az+02GgfquzUL/VWajf6ixqvAfGGGPWzQIWTLt4ECcAAA== | ||||||
|   </data> |   </data> | ||||||
|  </layer> |  </layer> | ||||||
|  <layer name="Trees" width="50" height="50"> |  <layer name="Top 1" width="50" height="50"> | ||||||
|   <data encoding="base64" compression="zlib"> |   <data encoding="base64" compression="gzip"> | ||||||
|    eJzt1jsOwjAMBuCEcgOYmVhYmFhYee48d57XgBvADeAEvR8TrmhUFDVq08hpVP2fFEWgysZO0iAEQHPcpBB3WfevcPegGp4NqONFNbwbUEcIFtTHJUMvZxRz7nGNdpRrn5Nv4Bh3QzG3Huu4UK4rjU/r9zlO57Fj3BPFPDP0x1aHKa5rf8ro04jSMWXKMUrjtwueczlfXGtQhel8ldmXIdVhOl/JvlRn2SSkOlxUqaMXFT/DdUeZVKljqNWRt39NdxSXbs53tr1M9m+s7V91R9XJtpehnTG1DqqXZd/nHHVMKO9UZrMNfR18/1/6t6K8a5nNNvQ9bXqf+3CgvEeZzQAAAAAAAAAAAAAQpi/3hxwT |    H4sIAAAAAAAAC+3YMQqAMBAEwIDP8QP+/2VWooWFhNWTYwauDLk0u5AxgBnbcs4X595w3eWY9cFes+cA6C/Rc9Vdmei5Ll159w6AWaksqcykVL536QkA/qWqI5P3VnWkboaMDv8H8gAAoIcd3uX5NRAnAAA= | ||||||
|   </data> |   </data> | ||||||
|  </layer> |  </layer> | ||||||
|  <layer name="Trees 2" width="50" height="50"> |  <layer name="Top 2" width="50" height="50"> | ||||||
|   <data encoding="base64" compression="zlib"> |   <data encoding="base64" compression="gzip"> | ||||||
|    eJzt17ERgCAMBVBYTTfQDXT/HaShofDO0wuo7zUp4eeSIikxqimnNOfev7hvKRnWD+TYSob9AzkAAIB/cFM+p/ayrVeMcFPWXrb1bWov29pDxJ5FvBExCxFvRMzCCLsMAAAAwLkD/HwNtA== |    H4sIAAAAAAAAC+2WywmCQQyEl9+yLMESrE8twPfZ91lF7cY5eBJ0IUx2IuaDYU9h9pQvpSS/wqgrZYxMujZzbKbonyFzZIEskRWyrvzLOufFBr1bZIfskQNyRE6V/1jnvDij94JcX/03vHfkUfmPda41/V7bOS8Gxv9Y57wYGv9jnUv+C4bnlK5keC6CKxmei+BKhuciu5LhuQiuZHgugisZnktXfoe131WeYO13tSdY+13tCdZ+j+oJ1n5Xe4K139WeYO339ETijcqRrF6VI9m9Kkeye1WObNWrciS7V+XIT73WfaBy5Huv+lZnob7VWUS91Vmob3UW6ludRd7qSZIkSeLLE+dNPmEQJwAA | ||||||
|   </data> |  | ||||||
|  </layer> |  | ||||||
|  <layer name="Roofs and Windows" width="50" height="50"> |  | ||||||
|   <data encoding="base64" compression="zlib"> |  | ||||||
|    eJzt1TsOwkAMRVErrILP9oEFBEio+YUaELAbXpE0iAZkmyi6R3pK55lYtsYMQzMvzBbKsvj3TX5T6t4rZa1slEqpla3z/0T3aae6e+WgHJWT0ihnp/Oy+nRRvatya+ve9X0oT6dzovv0bjqKqevVp77t7+TLfmXNZbTsuYwSvb+d7LmdOe8xc9svWXObZRz07gAAAAAAAAAAAAD47AVEdEaX |  | ||||||
|   </data> |   </data> | ||||||
|  </layer> |  </layer> | ||||||
|  <layer name="Collision" width="50" height="50"> |  <layer name="Collision" width="50" height="50"> | ||||||
|   <data encoding="base64" compression="zlib"> |   <data encoding="base64" compression="gzip"> | ||||||
|    eJztl8ESwyAIRJP//+leemA6oIC7BhvejIemlV0QNb2upir3d2TnZeYyyHi5lYHWYsaWc5ha2TpFNFZ0Inn86jCY5SGf7exbK8bMm/xs/darZ3lA1yGSR0ZzpI/cvzvy8PiIxNR8ovaaxxsrDxSM+LP9dSnfIzQ1ndWY6L70ajLy0OqP0rHOCkadGHW3YiPvHQZe/dH6R+Iw8Xiovh5VPEiifrS9m723VkF4qNDj/5AHsi+eXgvpRT47ich6sOu9Yz13vEecmAdDI3IXN03TNE3zHqz3z9GoSOa/cUVOywPVJ5m5qJ5k9XamBitarF5YzaPK+RLVP+n8a5rmnXwA7bUBUA== |    H4sIAAAAAAAAC+2YMRLAIAjA9P+f7tTNwSKWtCZ3TiKYQfRsjU2v3kAiuvDQg0fEpQ/GznWzuSNr9OB4ENGDhR4s9BjnWu2rKz09Cz3Wc3g+WOjB4lSPrLd39htej297UNGDhR4s9NhHpCdneOy4C/R4t242xPMRQY9YrYr/9mzHKo+Z+ae1qjxmY6o5yeOOIw8RkT9wASZ+pOYQJwAA | ||||||
|   </data> |   </data> | ||||||
|  </layer> |  </layer> | ||||||
|  | 
 | ||||||
|  <objectgroup name="Events" width="50" height="50"> |  <objectgroup name="Events" width="50" height="50"> | ||||||
|   <object name="NPC!!!" type="NPC" x="544" y="320" width="32" height="32"> |   <object name="NPC!!!" type="NPC" x="544" y="320" width="32" height="32"> | ||||||
|    <properties> |    <properties> | ||||||
|  | |||||||
| @ -28,11 +28,12 @@ Level::Level(Game* game) { | |||||||
|   _tileHeight = 0; |   _tileHeight = 0; | ||||||
|   _bgm = NULL; |   _bgm = NULL; | ||||||
|   _collisions = NULL; |   _collisions = NULL; | ||||||
|  |   _middleLayer = -1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Level::~Level() { | Level::~Level() { | ||||||
|   for(std::list<Layer*>::iterator i = _layers.begin(); i != _layers.end(); ++i) { |   for(int i = 0; i < _layers.size(); i++) { | ||||||
|     delete (*i); |     delete _layers.at(i); | ||||||
|   } |   } | ||||||
|   _layers.clear(); |   _layers.clear(); | ||||||
| 
 | 
 | ||||||
| @ -41,8 +42,8 @@ Level::~Level() { | |||||||
|   } |   } | ||||||
|   _tilesets.clear(); |   _tilesets.clear(); | ||||||
| 
 | 
 | ||||||
|   for(std::list<NPC*>::iterator  i = _npcs.begin(); i != _npcs.end(); ++i) { |   for(int i = 0; i < _npcs.size(); i++) { | ||||||
|     delete (*i); |     delete _npcs.at(i); | ||||||
|   } |   } | ||||||
|   _npcs.clear(); |   _npcs.clear(); | ||||||
| 
 | 
 | ||||||
| @ -106,6 +107,9 @@ bool Level::Load(const std::string& filename) { | |||||||
|       } |       } | ||||||
|       continue; |       continue; | ||||||
|     } |     } | ||||||
|  |     else if(!strcasecmp(tmxLayer->GetName().c_str(), "middle")) { | ||||||
|  |       _middleLayer = i; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     Layer* layer = new Layer( |     Layer* layer = new Layer( | ||||||
|       tmxLayer->GetWidth(), tmxLayer->GetHeight(), |       tmxLayer->GetWidth(), tmxLayer->GetHeight(), | ||||||
| @ -132,6 +136,10 @@ bool Level::Load(const std::string& filename) { | |||||||
|     _layers.push_back(layer); |     _layers.push_back(layer); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   if(_middleLayer == -1) { | ||||||
|  |     _middleLayer = int(std::floor(float(_layers.size()) / 2.0f)); // <-- nasty
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   for(int i = 0; i < map.GetNumObjectGroups(); i++) { |   for(int i = 0; i < map.GetNumObjectGroups(); i++) { | ||||||
|     const Tmx::ObjectGroup* tmxGroup = map.GetObjectGroup(i); |     const Tmx::ObjectGroup* tmxGroup = map.GetObjectGroup(i); | ||||||
|     for(int j = 0; j < tmxGroup->GetNumObjects(); j++) { |     for(int j = 0; j < tmxGroup->GetNumObjects(); j++) { | ||||||
| @ -171,20 +179,33 @@ void Level::PlayBGM() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Level::Update(float dt) { | void Level::Update(float dt) { | ||||||
|   for(std::list<Layer*>::iterator i = _layers.begin(); i != _layers.end(); ++i) { |   for(int i = 0; i < _layers.size(); i++) { | ||||||
|     (*i)->Update(dt); |     _layers.at(i)->Update(dt); | ||||||
|   } |   } | ||||||
|   for(std::list<NPC*>::iterator i = _npcs.begin(); i != _npcs.end(); ++i) { |   for(int i = 0; i < _npcs.size(); i++) { | ||||||
|     (*i)->Update(dt); |     _npcs.at(i)->Update(dt); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Level::Draw(int xOffset, int yOffset) { | void Level::DrawBackground(int xOffset, int yOffset, float playerY) { | ||||||
|   for(std::list<Layer*>::iterator i = _layers.begin(); i != _layers.end(); ++i) { |   for(int i = 0; i < (_middleLayer + 1); i++) { | ||||||
|     (*i)->Draw(xOffset, yOffset); |     _layers.at(i)->Draw(xOffset, yOffset); | ||||||
|   } |   } | ||||||
|   for(std::list<NPC*>::iterator i = _npcs.begin(); i != _npcs.end(); ++i) { |   for(int i = 0; i < _npcs.size(); i++) { | ||||||
|     (*i)->Render(); |     NPC* npc = _npcs.at(i); | ||||||
|  |     if(npc->GetY() <= playerY) | ||||||
|  |       npc->Render(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Level::DrawForeground(int xOffset, int yOffset, float playerY) { | ||||||
|  |   for(int i = (_middleLayer + 1); i < _layers.size(); i++) { | ||||||
|  |     _layers.at(i)->Draw(xOffset, yOffset); | ||||||
|  |   } | ||||||
|  |   for(int i = 0; i < _npcs.size(); i++) { | ||||||
|  |     NPC* npc = _npcs.at(i); | ||||||
|  |     if(npc->GetY() > playerY) | ||||||
|  |       npc->Render(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| #pragma once  | #pragma once  | ||||||
| 
 | 
 | ||||||
| #include <string> | #include <string> | ||||||
|  | #include <vector> | ||||||
| #include <list> | #include <list> | ||||||
| 
 | 
 | ||||||
| class Game; | class Game; | ||||||
| @ -20,7 +21,8 @@ public: | |||||||
|   void PlayBGM(void); |   void PlayBGM(void); | ||||||
| 
 | 
 | ||||||
|   void Update(float dt); |   void Update(float dt); | ||||||
|   void Draw(int xOffset, int yOffset); |   void DrawBackground(int xOffset, int yOffset, float playerY); | ||||||
|  |   void DrawForeground(int xOffset, int yOffset, float playerY); | ||||||
| 
 | 
 | ||||||
|   Game* GetGame() { return _game; } |   Game* GetGame() { return _game; } | ||||||
| 
 | 
 | ||||||
| @ -38,10 +40,11 @@ private: | |||||||
|   int _height; |   int _height; | ||||||
|   int _tileWidth; |   int _tileWidth; | ||||||
|   int _tileHeight; |   int _tileHeight; | ||||||
|   std::list<Layer*> _layers; |   std::vector<Layer*> _layers; | ||||||
|   std::list<Tileset*> _tilesets; |   std::list<Tileset*> _tilesets; | ||||||
|   std::list<NPC*> _npcs; |   std::vector<NPC*> _npcs; | ||||||
|   std::list<Warp*> _warps; |   std::list<Warp*> _warps; | ||||||
|   Music* _bgm; |   Music* _bgm; | ||||||
|   bool* _collisions; |   bool* _collisions; | ||||||
|  |   int _middleLayer; | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -45,15 +45,9 @@ Game::~Game(void) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Game::Init(void) { | bool Game::Init(void) { | ||||||
|   glEnable(GL_DEPTH_TEST); |  | ||||||
|   glDepthFunc(GL_LEQUAL); |  | ||||||
| 
 |  | ||||||
|   glEnable(GL_BLEND); |   glEnable(GL_BLEND); | ||||||
|   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||||
| 
 | 
 | ||||||
|   glEnable(GL_ALPHA_TEST); |  | ||||||
|   glAlphaFunc(GL_GREATER, 0.1f); |  | ||||||
| 
 |  | ||||||
|   // Return success.
 |   // Return success.
 | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| @ -63,7 +57,7 @@ void Game::Prepare(float dt) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Game::Render(void) { | void Game::Render(void) { | ||||||
|   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |   glClear(GL_COLOR_BUFFER_BIT); | ||||||
|   if(_inTitleScreen) { |   if(_inTitleScreen) { | ||||||
|     RenderTitle(); |     RenderTitle(); | ||||||
|   } else { |   } else { | ||||||
| @ -172,12 +166,6 @@ void Game::RenderTitle(void) { | |||||||
|   glMatrixMode(GL_MODELVIEW); |   glMatrixMode(GL_MODELVIEW); | ||||||
|   glLoadIdentity(); |   glLoadIdentity(); | ||||||
| 
 | 
 | ||||||
|   glDisable(GL_DEPTH_TEST); |  | ||||||
|   glDisable(GL_ALPHA_TEST); |  | ||||||
| 
 |  | ||||||
|   glEnable(GL_BLEND); |  | ||||||
|   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |  | ||||||
| 
 |  | ||||||
|   _titleScreen->Render(); |   _titleScreen->Render(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -216,8 +204,9 @@ void Game::RenderGame(void) { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Render our shit..
 |   // Render our shit..
 | ||||||
|   _level->Draw(xOffset, yOffset); |   _level->DrawBackground(xOffset, yOffset, _player->GetY()); | ||||||
|   _player->Render(); |   _player->Render(); | ||||||
|  |   _level->DrawForeground(xOffset, yOffset, _player->GetY()); | ||||||
|   _testFont->SetColor(0.0f, 1.0f, 1.0f, 1.0f); |   _testFont->SetColor(0.0f, 1.0f, 1.0f, 1.0f); | ||||||
|   _testFont->RenderText( |   _testFont->RenderText( | ||||||
|     _player->GetX() - 5, |     _player->GetX() - 5, | ||||||
| @ -228,14 +217,11 @@ void Game::RenderGame(void) { | |||||||
|     _player->GetY() - _testFont->GetLineSkip() - 2, |     _player->GetY() - _testFont->GetLineSkip() - 2, | ||||||
|     "<Misteress of Magic>"); |     "<Misteress of Magic>"); | ||||||
| 
 | 
 | ||||||
|   glLoadIdentity(); |  | ||||||
| 
 |  | ||||||
|   glDisable(GL_DEPTH_TEST); |  | ||||||
|   glDisable(GL_ALPHA_TEST); |  | ||||||
|   RenderHUD(); |   RenderHUD(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Game::RenderHUD(void) { | void Game::RenderHUD(void) { | ||||||
|  |   glLoadIdentity(); | ||||||
|   if(_inGameMenuShown) { |   if(_inGameMenuShown) { | ||||||
|     _inGameMenu->Render(); |     _inGameMenu->Render(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -56,7 +56,6 @@ int main(int argc, char** argv) { | |||||||
|   SDL_GL_SetAttribute(SDL_GL_RED_SIZE,            5); |   SDL_GL_SetAttribute(SDL_GL_RED_SIZE,            5); | ||||||
|   SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,          5); |   SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,          5); | ||||||
|   SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,           5); |   SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,           5); | ||||||
|   SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,          16); |  | ||||||
|   SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,        1); |   SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,        1); | ||||||
| 
 | 
 | ||||||
|   flags = SDL_OPENGL | SDL_HWSURFACE | SDL_RESIZABLE; |   flags = SDL_OPENGL | SDL_HWSURFACE | SDL_RESIZABLE; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Rtch90
						Rtch90