Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion LastTowerDefense/CMakelists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ include_directories("../ExternalLibs/Assimp/include"
set(CMAKE_BINARY_DIR "../")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})

add_executable(LastTowerDefense "src/Enemy.cpp"
add_executable(LastTowerDefense "src/LoadScreen.cpp"
"src/Enemy.cpp"
"src/Floor.cpp"
"src/Game.cpp"
"src/GameObject.cpp"
Expand Down
1 change: 1 addition & 0 deletions LastTowerDefense/include/Game.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,5 @@ class Game : public GameState
void LoadModels(const std::map<std::string, std::string>& models);
void LoadEnemies(const std::vector<std::string>& pathFileModels);
void LoadMusic();
static void InitResources();
};
45 changes: 45 additions & 0 deletions LastTowerDefense/include/LoadScreen.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#pragma once
#include "Base/GameState.h"
#include "Base/GameStateManager.h"
#include "Graphic/Mesh.h"
#include "Graphic/Shader.h"
#include "Base/ShaderManager.h"
#include "Base/ResourceManager.h"
#include "Graphic/Model.h"
#include "Graphic/Skybox.h"
#include "Player.h"
#include "Enemy.h"
#include "Floor.h"
#include "Level.h"
#include "Wall.h"
#include "Physics/Physics.h"
#include "Graphic/GUI.h"
#include "Graphic/GUILine.h"
#include "Audio/AudioPlayer.h"
#include "Audio/MusicPlayer.h"
#include <vector>
using std::thread;

class LoadScreen : public GameState
{
private:
static bool isFinish;
thread* load;
Graphic::GUI* loadGUI;
Platform* platform;
Camera* camera;
GameStateManager* manager;
ResourceManager* resourceManager;
ShaderManager* shaderManager;
Skybox *skybox;
public:
LoadScreen();
~LoadScreen();
static void Loading();
void Init() override;
void Draw() override;
bool Input(std::map<int, bool> keys) override;
bool MouseInput(int x, int y, bool leftbutton);
void Update(unsigned int delta) override;
void Close() override;
};
28 changes: 17 additions & 11 deletions LastTowerDefense/src/Game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,38 @@ Game::~Game()
{
}

void Game::Init()
void Game::InitResources()
{
physics = Physics::GetPtr();
physics->InitPhysics();
std::cout << " Menu Init" << std::endl;
this->platform = Platform::GetPtr();
this->manager = GameStateManager::GetPtr();
resourceManager = ResourceManager::GetPtr();
auto resourceManager = ResourceManager::GetPtr();
resourceManager->Add(ResourceType::Model3d, "floor");
resourceManager->Add(ResourceType::Model3d, "floor2");
resourceManager->Add(ResourceType::Model3d, "floor3");
resourceManager->Add(ResourceType::Model3d, "container");
resourceManager->Add(ResourceType::Model3d, "pina_pose");
resourceManager->Add(ResourceType::Model3d, "wall");

resourceManager->Add(ResourceType::Texture, "pina");
resourceManager->Add(ResourceType::Texture, "brick");
resourceManager->Add(ResourceType::Texture, "ContainerAlbedo");

resourceManager->Add(ResourceType::Music, "funnysong");
resourceManager->Add(ResourceType::Sound, "laser_shot");

resourceManager->Add(ResourceType::ImageUI, "montanas");
resourceManager->Add(ResourceType::ImageUI, "montanas1");
resourceManager->Add(ResourceType::ImageUI, "montanas2");
resourceManager->Add(ResourceType::ImageUI, "montanas3");

resourceManager->Wait();
}

void Game::Init()
{
resourceManager = ResourceManager::GetPtr();
physics = Physics::GetPtr();
physics->InitPhysics();
std::cout << " Menu Init" << std::endl;
this->platform = Platform::GetPtr();
this->manager = GameStateManager::GetPtr();

resourceManager->Load();

Expand Down Expand Up @@ -75,7 +80,7 @@ void Game::Init()
skybox = new Skybox(skyboxFaces);

weaponUI = new Graphic::GUI((Graphic::IGUILayer*)resourceManager->GetElement("montanas2"), player->GetCamera(), shaderManager);
playerUI = new Graphic::GUI((Graphic::IGUILayer*)resourceManager->GetElement("montanas"), player->GetCamera(), shaderManager);
playerUI = new Graphic::GUI((Graphic::IGUILayer*)resourceManager->GetElement("montanas1"), player->GetCamera(), shaderManager);
new Graphic::GUI((Graphic::IGUILayer*)resourceManager->GetElement("montanas3"), player->GetCamera(), shaderManager);

std::vector<std::string> pathsEnemies = {
Expand All @@ -99,7 +104,7 @@ void Game::LoadEnemies(const std::vector<std::string>& pathFileModels)
void Game::LoadMusic()
{
auto asset = (MusicPlayer*)ResourceManager::GetPtr()->GetElement("funnysong");
asset->PlayMusic();
//asset->PlayMusic();
}

void Game::LoadShaders()
Expand Down Expand Up @@ -145,6 +150,7 @@ void Game::DrawEnemies()

void Game::Update(unsigned int delta)
{
shaderManager->initShader(player->GetCamera());
floor->Update(delta);
level->Update(delta);
wall->Update(delta);
Expand Down
78 changes: 78 additions & 0 deletions LastTowerDefense/src/LoadScreen.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#include "LoadScreen.h"
#include "Game.h"
#include <iostream>
#include <glm.hpp>
#include <time.h>
#include <gtc\matrix_transform.hpp>
#include <gtc\type_ptr.hpp>

bool LoadScreen::isFinish = false;
LoadScreen::LoadScreen()
{

}

LoadScreen::~LoadScreen()
{

}

void LoadScreen::Loading()
{
Game::InitResources();
isFinish = true;
}

void LoadScreen::Init()
{
this->platform = Platform::GetPtr();
this->manager = GameStateManager::GetPtr();
resourceManager = ResourceManager::GetPtr();
resourceManager->Add(ResourceType::ImageUI, "LoadingScreen");

resourceManager->Wait();
resourceManager->Load();

shaderManager = ShaderManager::getPtr();

camera = new Camera(glm::vec3(10, 10.7, 100.6f), glm::vec3(0.0f, 1.0f, 0.0f), 3.0f, 3.0f, 355.0f, 0.1f);
shaderManager->initShader(camera);

shaderManager->LoadShaders("gui", "Assets/Shaders/gui.vert", "Assets/Shaders/gui.frag");
loadGUI = new Graphic::GUI((Graphic::IGUILayer*)resourceManager->GetElement("LoadingScreen"), camera, shaderManager);

load = new thread(&LoadScreen::Loading);
}

void LoadScreen::Draw()
{

}

void LoadScreen::Update(unsigned int delta)
{
if (load->joinable() && isFinish)
{
resourceManager->RemoveLoadResource();
manager->RealaseState();
manager->SetState(new Game());
load->join();
}
}

bool LoadScreen::MouseInput(int x, int y, bool leftbutton)
{
return false;
}

bool LoadScreen::Input(std::map<int, bool> keys)
{
return false;
}

void LoadScreen::Close()
{
delete loadGUI;
//Graphic::GUIOverlay::GetPtr()->Remove(loadGUI); Error draro de Link...
std::cout << " Close Init" << std::endl;
}
4 changes: 3 additions & 1 deletion LastTowerDefense/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
#include "Base/GameStateManager.h"
#include "Game.h"
#include "LoadScreen.h"

int main(int argc, char* argv[])
{
GameStateManager* manager = GameStateManager::GetPtr();
manager->SetState(new Game());
manager->SetState(new LoadScreen());
//manager->SetState(new Game());
manager->GameLoop();
return 0;
}
22 changes: 18 additions & 4 deletions PlayEngine/Base/ResourceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
ResourceManager* ResourceManager::ptr = nullptr;
unsigned long ResourceManager::CounterImageUI = 0;
size_t ResourceManager::handleCount = 0;
size_t ResourceManager::loadResourceKey = 0;

ResourceManager* ResourceManager::GetPtr()
{
Expand All @@ -26,6 +27,14 @@ ResourceManager* ResourceManager::GetPtr()
return ptr;
}


void ResourceManager::RemoveLoadResource()
{
loadResource->Clear();
resourceMap->erase(loadResourceKey);
delete loadResource;
}

ResourceManager::ResourceManager()
{
resourceMap = new std::map<size_t, Resource*>;
Expand Down Expand Up @@ -155,7 +164,14 @@ unsigned int ResourceManager::AddResource(ResourceType type, const std::string&
}
else if (type == ResourceType::ImageUI)
{
resource = new Graphic::ImageUI(CounterImageUI++, name, path);
//resource = new Graphic::ImageUI(CounterImageUI++, name, path);
Graphic::ImageUI* image = new Graphic::ImageUI(CounterImageUI++, name, path);
resource = image;
if (name == "LoadingScreen")
{
loadResourceKey = handleCount;
loadResource = image;
}
}
else if (type == ResourceType::LineUI)
{
Expand All @@ -182,6 +198,4 @@ void ResourceManager::Load()
auto model = (i->second);
model->Load();
}
}


}
5 changes: 5 additions & 0 deletions PlayEngine/Base/ShaderManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ ShaderManager* ShaderManager::ptr;

ShaderManager::ShaderManager() : currentShader(nullptr)
{
camera = nullptr;
LoadShaders("default", vShaderDefault, fShaderDefault);
}

Expand Down Expand Up @@ -44,6 +45,10 @@ GLint ShaderManager::GetSpecularIntensityLocation()

glm::mat4 ShaderManager::GetViewMatrix()
{
if (!camera)
{
return glm::mat4(1);
}
return camera->calculateViewMatrix();
}

Expand Down
1 change: 1 addition & 0 deletions PlayEngine/Graphic/Texture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ namespace Graphic
printf("Failed to find: %s\n", path.c_str());
return false;
}
return true;
}

Resource* Texture::Load()
Expand Down
8 changes: 6 additions & 2 deletions PlayEngine/include/Base/ResourceManager.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once
#include "../Export.h"
#include "Graphic/GUI_IMAGE.h"
#include "Graphic/Model.h"
#include "Audio/AudioPlayer.h"
#include "Audio/MusicPlayer.h"
Expand Down Expand Up @@ -35,8 +36,10 @@ class PLAYENGINE ResourceManager
public:
std::mutex mu;
private:
static size_t handleCount;
static unsigned long CounterImageUI;
static size_t handleCount;
static size_t loadResourceKey;
Graphic::ImageUI* loadResource;
std::list<std::thread*> pool;
std::map<size_t, Resource*>* resourceMap;
std::map<std::string, std::string> paths;
Expand All @@ -47,8 +50,9 @@ class PLAYENGINE ResourceManager
void PathsReader(std::string path, bool force = false);
std::string GetPath(ResourceType type,const std::string &name);
public:

bool const GetLoadFinish();
static ResourceManager* GetPtr();
void RemoveLoadResource();
void ClearResources();
void GetSafeOpenIds(unsigned int& a);
size_t GetSize();
Expand Down
2 changes: 0 additions & 2 deletions PlayEngine/include/Physics/Physics.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"
#include "BulletCollision/CollisionShapes/btCollisionShape.h"
#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
#include "examples/CommonGUIHelperInterface.h"
#include "LinearMath/btTransform.h"
#include "LinearMath/btHashMap.h"

Expand All @@ -20,7 +19,6 @@ class PLAYENGINE Physics
btConstraintSolver* m_solver;
btDefaultCollisionConfiguration* m_collisionConfiguration;
btDiscreteDynamicsWorld* m_dynamicsWorld;
GUIHelperInterface* m_guiHelper;
static Physics* ptr;
public:
static Physics* GetPtr();
Expand Down