From 1c37fb634408bf455d06a42efa80b8321edcfeca Mon Sep 17 00:00:00 2001 From: Tamir Atias Date: Sun, 22 Apr 2012 18:34:25 +0300 Subject: [PATCH] [Add] Warps. [Add] Map is now centered when smaller than screen size. --- Bin/VC10/VC10.vcxproj | 6 +++ Bin/VC10/VC10.vcxproj.filters | 6 +++ Data/Img/OpenArt/woodland_indoor_0.png | Bin 0 -> 1050923 bytes Data/Map/Ugly.tmx | 9 +++- Data/Map/house.tmx | 38 +++++++++++++++ src/Actor/Actor.cpp | 13 ++++-- src/Actor/Actor.h | 8 +++- src/Actor/NPC.cpp | 2 +- src/Actor/NPC.h | 2 +- src/Actor/Player.cpp | 13 +++++- src/Actor/Player.h | 2 +- src/Level/Level.cpp | 39 ++++++++++++++-- src/Level/Level.h | 15 ++++-- src/Level/Warp.cpp | 11 +++++ src/Level/Warp.h | 39 ++++++++++++++++ src/Main/Game.cpp | 62 +++++++++++++++++-------- src/Main/Game.h | 4 +- src/Math/Rect.h | 18 +++++++ 18 files changed, 247 insertions(+), 40 deletions(-) create mode 100644 Data/Img/OpenArt/woodland_indoor_0.png create mode 100644 Data/Map/house.tmx create mode 100644 src/Level/Warp.cpp create mode 100644 src/Level/Warp.h diff --git a/Bin/VC10/VC10.vcxproj b/Bin/VC10/VC10.vcxproj index 6107e44..0d589d9 100644 --- a/Bin/VC10/VC10.vcxproj +++ b/Bin/VC10/VC10.vcxproj @@ -99,6 +99,7 @@ + @@ -182,6 +183,11 @@ {b4a2ecf2-d1e0-4e73-a59f-bcce49c37cc6} + + + Document + + diff --git a/Bin/VC10/VC10.vcxproj.filters b/Bin/VC10/VC10.vcxproj.filters index 8424bb1..c44ee77 100644 --- a/Bin/VC10/VC10.vcxproj.filters +++ b/Bin/VC10/VC10.vcxproj.filters @@ -195,6 +195,9 @@ UI + + Level + @@ -317,5 +320,8 @@ UI + + Level + \ No newline at end of file diff --git a/Data/Img/OpenArt/woodland_indoor_0.png b/Data/Img/OpenArt/woodland_indoor_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d176d81d1d7bc6a925cb2d44a51ac2e66260c44a GIT binary patch literal 1050923 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 z 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 literal 0 HcmV?d00001 diff --git a/Data/Map/Ugly.tmx b/Data/Map/Ugly.tmx index 0444e8e..c7240e3 100644 --- a/Data/Map/Ugly.tmx +++ b/Data/Map/Ugly.tmx @@ -57,11 +57,18 @@ eJztl8ESwyAIRJP//+leemA6oIC7BhvejIemlV0QNb2upir3d2TnZeYyyHi5lYHWYsaWc5ha2TpFNFZ0Inn86jCY5SGf7exbK8bMm/xs/darZ3lA1yGSR0ZzpI/cvzvy8PiIxNR8ovaaxxsrDxSM+LP9dSnfIzQ1ndWY6L70ajLy0OqP0rHOCkadGHW3YiPvHQZe/dH6R+Iw8Xiovh5VPEiifrS9m723VkF4qNDj/5AHsi+eXgvpRT47ich6sOu9Yz13vEecmAdDI3IXN03TNE3zHqz3z9GoSOa/cUVOywPVJ5m5qJ5k9XamBitarF5YzaPK+RLVP+n8a5rmnXwA7bUBUA== - + + + + + + + + diff --git a/Data/Map/house.tmx b/Data/Map/house.tmx new file mode 100644 index 0000000..b384d25 --- /dev/null +++ b/Data/Map/house.tmx @@ -0,0 +1,38 @@ + + + + + + + + + + + eJy10dEJgDAMBNDrCI5gZtFOou4/gvGvHHc1flh4EEJC4dIANALRUxYBps9WAabPQoDpV1R3xxdUvxlzC6pn/3CeQTXv8Y04N5ehumc1vy+zzN3zb9W7Pba0pz7Zde9IZ7omMzc2PRZ3 + + + + + eJxjYEAFzAz4gRwQywOxApR/DojPA/EFIBYmoFcPiPWB2ADKvwfE94H4AQF92PS+A+L3ROjDpvcfEP8nUu8oYGBoAeJWIG7Do2YpGgaBg0A8BYinAvE0ID5Mgp0gvUugZi0jUe9QAwA5/BXY + + + + + eJxjYBheQAWIVcnUawLEplR0CzLgAWJeMvXKALEsFd1CT7AciDuAuGugHTKIAQBabAK+ + + + + + eJxjZGRgYCQRgwCpetD1IgNc4vjUIJtHql5c8oQArjCgtl5iw54YfcQCWugdKPcQaz419eKLL0JqAIUTAME= + + + + + + + + + + + + diff --git a/src/Actor/Actor.cpp b/src/Actor/Actor.cpp index 6abb573..ea1bd76 100644 --- a/src/Actor/Actor.cpp +++ b/src/Actor/Actor.cpp @@ -4,7 +4,7 @@ #include "../Sound/SoundEffect.h" #include "../Level/Level.h" -Actor::Actor(const Level* level) { +Actor::Actor(Level* level) { _level = level; _stepSFX[0] = sfxManager.Load("../Data/SFX/step_cloth1.wav"); @@ -13,9 +13,10 @@ Actor::Actor(const Level* level) { _stepSFX[3] = sfxManager.Load("../Data/SFX/step_cloth4.wav"); _lastStepSFXPlayed = -1; - _velocity = 4.0f; - _direction = FRONT; - _preventMovement = NONE; + _velocity = 4.0f; + _direction = FRONT; + _preventMovement = NONE; + _distanceTraveled = 0; x = 0.0f; y = 0.0f; @@ -62,6 +63,10 @@ void Actor::Update(float dt) { float collisionYOffset = GetMaxHeight() / 2.0f; if(x != oldX || y != oldY) { + float dx = x - oldX; + float dy = y - oldY; + _distanceTraveled += sqrtf(dx*dx + dy*dy); + if(_level->CheckCollision(x, y + collisionYOffset, GetAnimation()->GetMaxWidth(), GetAnimation()->GetMaxHeight() - collisionYOffset)) { x = oldX; y = oldY; diff --git a/src/Actor/Actor.h b/src/Actor/Actor.h index 3ca3b1f..831caf4 100644 --- a/src/Actor/Actor.h +++ b/src/Actor/Actor.h @@ -24,9 +24,11 @@ public: HURT }; - Actor(const Level* level); + Actor(Level* level); ~Actor(void); + void SetLevel(Level* level) { _level = level; } + void LoadSprites(const String& basename); virtual void Update(float dt); @@ -50,7 +52,7 @@ protected: AnimatingSprite* GetAnimation(void); - const Level* _level; + Level* _level; float _velocity; @@ -62,6 +64,8 @@ protected: Facing _direction; Facing _preventMovement; + float _distanceTraveled; + float x; float y; diff --git a/src/Actor/NPC.cpp b/src/Actor/NPC.cpp index 673b8fe..cc76dac 100644 --- a/src/Actor/NPC.cpp +++ b/src/Actor/NPC.cpp @@ -1,6 +1,6 @@ #include "NPC.h" -NPC::NPC(const Level* level) : Actor(level) { +NPC::NPC(Level* level) : Actor(level) { } NPC::~NPC(void) { diff --git a/src/Actor/NPC.h b/src/Actor/NPC.h index f5b3d61..222dc57 100644 --- a/src/Actor/NPC.h +++ b/src/Actor/NPC.h @@ -4,7 +4,7 @@ class NPC : public Actor { public: - NPC(const Level* level); + NPC(Level* level); ~NPC(void); void Update(float dt); diff --git a/src/Actor/Player.cpp b/src/Actor/Player.cpp index 4df4aaa..c420d04 100644 --- a/src/Actor/Player.cpp +++ b/src/Actor/Player.cpp @@ -1,7 +1,10 @@ #include "Player.h" #include "../IO/Input.h" +#include "../Level/Level.h" +#include "../Level/Warp.h" +#include "../Main/Game.h" -Player::Player(const Level* level) : Actor(level) { +Player::Player(Level* level) : Actor(level) { _direction = Actor::RIGHT; } @@ -10,6 +13,14 @@ Player::~Player(void) { void Player::Update(float dt) { Actor::Update(dt); + + if(_distanceTraveled > 32.0f) { + Warp* warp = _level->CheckWarp(x, y, GetMaxWidth(), GetMaxHeight()); + if(warp) { + _level->GetGame()->Warp(warp->GetTargetMap(), warp->GetTargetX(), warp->GetTargetY()); + _distanceTraveled = 0; + } + } } void Player::Render(void) { diff --git a/src/Actor/Player.h b/src/Actor/Player.h index 7c0d20e..0f4c599 100644 --- a/src/Actor/Player.h +++ b/src/Actor/Player.h @@ -9,7 +9,7 @@ class Level; class Player : public Actor{ public: - Player(const Level* level); + Player(Level* level); ~Player(void); void Update(float dt); diff --git a/src/Level/Level.cpp b/src/Level/Level.cpp index e2f7ffe..123da3a 100644 --- a/src/Level/Level.cpp +++ b/src/Level/Level.cpp @@ -4,10 +4,12 @@ #include "Level.h" #include "Layer.h" #include "Tileset.h" +#include "Warp.h" #include "../Sound/Music.h" #include "../System/Debug.h" #include "../TMXParser/Tmx.h" #include "../Actor/NPC.h" +#include "../Math/Rect.h" #ifdef _WIN32 #ifndef strcasecmp @@ -18,7 +20,8 @@ #endif #endif -Level::Level() { +Level::Level(Game* game) { + _game = game; _width = 0; _height = 0; _tileWidth = 0; @@ -41,7 +44,12 @@ Level::~Level() { for(std::list::iterator i = _npcs.begin(); i != _npcs.end(); ++i) { delete (*i); } - _npcs.end(); + _npcs.clear(); + + for(std::list::iterator i = _warps.begin(); i != _warps.end(); ++i) { + delete (*i); + } + _warps.clear(); if(_collisions) { delete[] _collisions; @@ -134,6 +142,15 @@ bool Level::Load(const std::string& filename) { npc->SetXY(tmxObject->GetX(), tmxObject->GetY()); _npcs.push_back(npc); } + else if(!strncasecmp(tmxObject->GetName().c_str(), "Warp", 4)) { + Warp* warp = new Warp(); + warp->SetXY(tmxObject->GetX(), tmxObject->GetY()); + warp->SetWidthHeight(tmxObject->GetWidth(), tmxObject->GetHeight()); + warp->SetTargetMap(tmxObject->GetProperties().GetLiteralProperty("map").c_str()); + warp->SetTargetX(tmxObject->GetProperties().GetNumericProperty("x") * 32); + warp->SetTargetY(tmxObject->GetProperties().GetNumericProperty("y") * 32); + _warps.push_back(warp); + } } } @@ -172,8 +189,8 @@ void Level::Draw(int xOffset, int yOffset) { } bool Level::CheckCollision(float x, float y, float w, float h) const { - if(x < 0.0f || x > (float)(_width * _tileWidth) || - y < 0.0f || y > (float)(_height * _tileHeight)) { + if(x < 0.0f || x >= (float)((_width - 1) * _tileWidth) || + y < 0.0f || y >= (float)((_height - 1) * _tileHeight)) { return true; } @@ -222,3 +239,17 @@ bool Level::CheckCollision(float x, float y, float w, float h) const { return false; } + +Warp* Level::CheckWarp(float x, float y, float w, float h) const { + Rect objectArea(x, y, w, h); + for(std::list::const_iterator i = _warps.cbegin(); i != _warps.cend(); ++i) { + Warp* warp = (*i); + Rect warpArea( + warp->GetX(), warp->GetY(), + warp->GetWidth(), warp->GetHeight()); + if(warpArea.CollidesWith(objectArea)) { + return warp; + } + } + return NULL; +} \ No newline at end of file diff --git a/src/Level/Level.h b/src/Level/Level.h index f3ddf8e..7e6da0a 100644 --- a/src/Level/Level.h +++ b/src/Level/Level.h @@ -3,31 +3,37 @@ #include #include +class Game; class Layer; class Tileset; class Music; class NPC; +class Warp; class Level { public: - Level(); - ~Level(); + Level(Game* game); + ~Level(void); bool Load(const std::string& filename); - void PlayBGM(); + void PlayBGM(void); void Update(float dt); void Draw(int xOffset, int yOffset); + Game* GetGame() { return _game; } + int GetWidth() const { return _width; } int GetHeight() const { return _height; } int GetTileWidth() const { return _tileWidth; } int GetTileHeight() const { return _tileHeight; } - bool CheckCollision(float x, float y, float w, float h) const; + bool CheckCollision(float x, float y, float w, float h) const; + Warp* CheckWarp(float x, float y, float w, float h) const; private: + Game* _game; int _width; int _height; int _tileWidth; @@ -35,6 +41,7 @@ private: std::list _layers; std::list _tilesets; std::list _npcs; + std::list _warps; Music* _bgm; bool* _collisions; }; diff --git a/src/Level/Warp.cpp b/src/Level/Warp.cpp new file mode 100644 index 0000000..9700968 --- /dev/null +++ b/src/Level/Warp.cpp @@ -0,0 +1,11 @@ +#include "Warp.h" + +Warp::Warp(void) { + x = 0; + y = 0; + w = 0; + h = 0; + _targetMap = ""; + _targetX = 0; + _targetY = 0; +} diff --git a/src/Level/Warp.h b/src/Level/Warp.h new file mode 100644 index 0000000..ed78330 --- /dev/null +++ b/src/Level/Warp.h @@ -0,0 +1,39 @@ +#pragma once + +#include "../System/String.h" +#include "../Math/Vec2.h" + +class Warp { +public: + Warp(void); + + int GetX(void) const { return x; } + int GetY(void) const { return y; } + int GetWidth(void) const { return w; } + int GetHeight(void) const { return h; } + void SetX(int x) { this->x = x; } + void SetY(int y) { this->y = y; } + void SetXY(int x, int y) { SetX(x); SetY(y); } + void SetWidth(int w) { this->w = w; } + void SetHeight(int h) { this->h = h;} + void SetWidthHeight(int w, int h) { SetWidth(w); SetHeight(h); } + + const String& GetTargetMap() const { return _targetMap;} + void SetTargetMap(const String& targetMap) { _targetMap = targetMap; } + + int GetTargetX(void) const { return _targetX; } + int GetTargetY(void) const { return _targetY; } + void SetTargetX(int targetX) { _targetX = targetX; } + void SetTargetY(int targetY) { _targetY = targetY; } + void SetTargetXY(int targetX, int targetY) { SetTargetX(targetX); SetTargetY(targetY); } + +private: + int x; + int y; + int w; + int h; + + String _targetMap; + int _targetX; + int _targetY; +}; diff --git a/src/Main/Game.cpp b/src/Main/Game.cpp index 91e50e8..06c92fc 100644 --- a/src/Main/Game.cpp +++ b/src/Main/Game.cpp @@ -22,11 +22,8 @@ #include "TitleScreen.h" Game::Game(void) { - _level = new Level(); + _level = new Level(this); _player = new Player(_level); - _NPC = new NPC(_level); - - _NPC->SetXY(30.0f, 30.0f); _testFont = new Font(); @@ -72,7 +69,6 @@ void Game::Render(void) { void Game::Shutdown(void) { Debug::logger->message("\n ----- Cleaning Engine -----"); delete _testFont; - delete _NPC; delete _player; delete _level; if(_inGameMenu) { @@ -103,6 +99,23 @@ void Game::OnResize(int width, int height) { glLoadIdentity(); } +void Game::Warp(const String& mapName, int x, int y) { + Level* newLevel = new Level(this); + + if(!newLevel->Load(mapName.GetPointer())) { + delete newLevel; + return; + } + + delete _level; + _level = newLevel; + + _player->SetXY(x, y); + _player->SetLevel(_level); + + _level->PlayBGM(); +} + void Game::UpdateTitle(float dt) { _titleScreen->Update(dt); @@ -144,7 +157,6 @@ void Game::UpdateGame(float dt) { } } else { _player->Update(dt); - _NPC->Update(dt); _level->Update(dt); } } @@ -166,26 +178,39 @@ void Game::RenderGame(void) { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - float windowCenterX = ((float)windowWidth / 2.0f) - ((float)_player->GetMaxWidth() / 2.0f); - float windowCenterY = ((float)windowHeight / 2.0f) - ((float)_player->GetMaxHeight() / 2.0f); + float xOffset; + float yOffset; - float xOffset = _player->GetX() - windowCenterX; - float yOffset = _player->GetY() - windowCenterY; + int levelWidthPixels = _level->GetWidth() * _level->GetTileWidth(); + int levelHeightPixels = _level->GetHeight() * _level->GetTileHeight(); - float maxXOffset = (_level->GetWidth() * _level->GetTileWidth()) - (float)windowWidth; - float maxYOffset = (_level->GetHeight() * _level->GetTileHeight()) - (float)windowHeight; + if(levelWidthPixels < windowWidth && levelHeightPixels < windowHeight) { + xOffset = levelWidthPixels / 2 - windowWidth / 2; + yOffset = levelHeightPixels / 2 - windowHeight / 2; + glTranslatef((int)-xOffset, (int)-yOffset, 0.0f); + } + else + { + float windowCenterX = ((float)windowWidth / 2.0f) - ((float)_player->GetMaxWidth() / 2.0f); + float windowCenterY = ((float)windowHeight / 2.0f) - ((float)_player->GetMaxHeight() / 2.0f); - if(xOffset < 0.0f) xOffset = 0.0f; - if(yOffset < 0.0f) yOffset = 0.0f; - if(xOffset > maxXOffset) xOffset = maxXOffset; - if(yOffset > maxYOffset) yOffset = maxYOffset; + xOffset = _player->GetX() - windowCenterX; + yOffset = _player->GetY() - windowCenterY; - glTranslatef((int)-xOffset, (int)-yOffset, 0.0f); + float maxXOffset = (float)(levelWidthPixels - windowWidth); + float maxYOffset = (float)(levelHeightPixels - windowHeight); + + 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((int)-xOffset, (int)-yOffset, 0.0f); + } // Render our shit.. _level->Draw(xOffset, yOffset); _player->Render(); - _NPC->Render(); _testFont->SetColor(0.0f, 1.0f, 1.0f, 1.0f); _testFont->RenderText( _player->GetX() - 5, @@ -214,7 +239,6 @@ void Game::NewGame(void) { _level->PlayBGM(); _player->LoadSprites("Player"); - _NPC->LoadSprites("Player"); _testFont->Load("../Data/Font/Fairydust.ttf", 16); _testFont->SetColor(0.0f, 1.0f, 1.0f, 1.0f); diff --git a/src/Main/Game.h b/src/Main/Game.h index 4f056c1..995efc1 100644 --- a/src/Main/Game.h +++ b/src/Main/Game.h @@ -1,6 +1,5 @@ #pragma once #include "../IO/Input.h" -#include "../Actor/NPC.h" #include "../Actor/Player.h" #include "../Font/Font.h" @@ -24,6 +23,8 @@ public: void OnResize(int width, int height); + void Warp(const String& mapName, int x, int y); + bool IsRunning() { return _running; } void SetRunning(bool running) { _running = running; } @@ -40,7 +41,6 @@ private: Font* _testFont; Player* _player; - NPC* _NPC; Level* _level; TitleScreen* _titleScreen; diff --git a/src/Math/Rect.h b/src/Math/Rect.h index bf7d281..31eb3b1 100644 --- a/src/Math/Rect.h +++ b/src/Math/Rect.h @@ -1,5 +1,7 @@ #pragma once +#include "Vec2.h" + struct Rect { float x; @@ -14,4 +16,20 @@ struct Rect this->w = w; this->h = h; } + + bool CollidesWith(const Rect& other) const { + if(x > (other.x + other.w)) + return false; + + if(y > (other.y + other.h)) + return false; + + if((x + w) < other.x) + return false; + + if((y + h) < other.y) + return false; + + return true; + } };