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();
|
||||||
|
|
||||||
@ -52,8 +53,8 @@ Level::~Level() {
|
|||||||
_warps.clear();
|
_warps.clear();
|
||||||
|
|
||||||
if(_collisions) {
|
if(_collisions) {
|
||||||
delete[] _collisions;
|
delete[] _collisions;
|
||||||
_collisions = NULL;
|
_collisions = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_bgm) {
|
if(_bgm) {
|
||||||
@ -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