refactoring some stuff
This commit is contained in:
parent
a5d475aec1
commit
12cdefff38
|
@ -55,12 +55,13 @@ SET(SOURCES
|
||||||
|
|
||||||
# framework sources
|
# framework sources
|
||||||
src/framework/framebuffer.cpp
|
src/framework/framebuffer.cpp
|
||||||
|
src/framework/font.cpp
|
||||||
src/framework/fonts.cpp
|
src/framework/fonts.cpp
|
||||||
src/framework/textureloader.cpp
|
src/framework/textureloader.cpp
|
||||||
src/framework/texture.cpp
|
src/framework/texture.cpp
|
||||||
src/framework/texturemanager.cpp
|
src/framework/textures.cpp
|
||||||
src/framework/configmanager.cpp
|
src/framework/configs.cpp
|
||||||
src/framework/resourcemanager.cpp
|
src/framework/resources.cpp
|
||||||
src/framework/engine.cpp
|
src/framework/engine.cpp
|
||||||
src/framework/graphics.cpp
|
src/framework/graphics.cpp
|
||||||
src/framework/logger.cpp
|
src/framework/logger.cpp
|
||||||
|
|
|
@ -22,24 +22,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "configmanager.h"
|
#include "configs.h"
|
||||||
#include "resourcemanager.h"
|
#include "resources.h"
|
||||||
|
|
||||||
#include <yaml-cpp/yaml.h>
|
#include <yaml-cpp/yaml.h>
|
||||||
|
|
||||||
ConfigManager g_config;
|
Configs g_config;
|
||||||
|
|
||||||
ConfigManager::ConfigManager()
|
bool Configs::load(const std::string& fileName)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager::~ConfigManager()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ConfigManager::load(const std::string& fileName)
|
|
||||||
{
|
{
|
||||||
m_fileName = fileName;
|
m_fileName = fileName;
|
||||||
|
|
||||||
|
@ -72,7 +62,7 @@ bool ConfigManager::load(const std::string& fileName)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::save()
|
void Configs::save()
|
||||||
{
|
{
|
||||||
if(!m_fileName.empty()) {
|
if(!m_fileName.empty()) {
|
||||||
YAML::Emitter out;
|
YAML::Emitter out;
|
||||||
|
@ -81,27 +71,27 @@ void ConfigManager::save()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::setValue(const std::string &key, const std::string &value)
|
void Configs::setValue(const std::string &key, const std::string &value)
|
||||||
{
|
{
|
||||||
m_confsMap[key] = value;
|
m_confsMap[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::setValue(const std::string &key, const char *value)
|
void Configs::setValue(const std::string &key, const char *value)
|
||||||
{
|
{
|
||||||
m_confsMap[key] = value;
|
m_confsMap[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::setValue(const std::string &key, int value)
|
void Configs::setValue(const std::string &key, int value)
|
||||||
{
|
{
|
||||||
setValue(key, convertType<std::string, int>(value));
|
setValue(key, convertType<std::string, int>(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::setValue(const std::string &key, float value)
|
void Configs::setValue(const std::string &key, float value)
|
||||||
{
|
{
|
||||||
setValue(key, convertType<std::string, float>(value));
|
setValue(key, convertType<std::string, float>(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigManager::setValue(const std::string &key, bool value)
|
void Configs::setValue(const std::string &key, bool value)
|
||||||
{
|
{
|
||||||
if(value)
|
if(value)
|
||||||
setValue(key,"true");
|
setValue(key,"true");
|
||||||
|
@ -109,7 +99,7 @@ void ConfigManager::setValue(const std::string &key, bool value)
|
||||||
setValue(key,"false");
|
setValue(key,"false");
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string &ConfigManager::getString(const std::string &key)
|
const std::string &Configs::getString(const std::string &key)
|
||||||
{
|
{
|
||||||
auto iter = m_confsMap.find(key);
|
auto iter = m_confsMap.find(key);
|
||||||
if(iter == m_confsMap.end()) {
|
if(iter == m_confsMap.end()) {
|
||||||
|
@ -120,7 +110,7 @@ const std::string &ConfigManager::getString(const std::string &key)
|
||||||
return iter->second;
|
return iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
float ConfigManager::getFloat(const std::string &key)
|
float Configs::getFloat(const std::string &key)
|
||||||
{
|
{
|
||||||
auto iter = m_confsMap.find(key);
|
auto iter = m_confsMap.find(key);
|
||||||
if(iter == m_confsMap.end()) {
|
if(iter == m_confsMap.end()) {
|
||||||
|
@ -130,7 +120,7 @@ float ConfigManager::getFloat(const std::string &key)
|
||||||
return convertType<float, std::string>(iter->second);
|
return convertType<float, std::string>(iter->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConfigManager::getBoolean(const std::string &key)
|
bool Configs::getBoolean(const std::string &key)
|
||||||
{
|
{
|
||||||
auto iter = m_confsMap.find(key);
|
auto iter = m_confsMap.find(key);
|
||||||
if(iter == m_confsMap.end()) {
|
if(iter == m_confsMap.end()) {
|
||||||
|
@ -140,7 +130,7 @@ bool ConfigManager::getBoolean(const std::string &key)
|
||||||
return (iter->second == "true");
|
return (iter->second == "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
int ConfigManager::getInteger(const std::string &key)
|
int Configs::getInteger(const std::string &key)
|
||||||
{
|
{
|
||||||
auto iter = m_confsMap.find(key);
|
auto iter = m_confsMap.find(key);
|
||||||
if(iter == m_confsMap.end()) {
|
if(iter == m_confsMap.end()) {
|
|
@ -22,16 +22,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef CONFIGMANAGER_H
|
#ifndef CONFIGS_H
|
||||||
#define CONFIGMANAGER_H
|
#define CONFIGS_H
|
||||||
|
|
||||||
#include "prerequisites.h"
|
#include "prerequisites.h"
|
||||||
|
|
||||||
class ConfigManager
|
class Configs
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ConfigManager();
|
Configs() { }
|
||||||
~ConfigManager();
|
|
||||||
|
|
||||||
/// Read configuration file and parse all settings to memory
|
/// Read configuration file and parse all settings to memory
|
||||||
bool load(const std::string& fileName);
|
bool load(const std::string& fileName);
|
||||||
|
@ -55,6 +54,6 @@ private:
|
||||||
std::map<std::string, std::string> m_confsMap;
|
std::map<std::string, std::string> m_confsMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ConfigManager g_config;
|
extern Configs g_config;
|
||||||
|
|
||||||
#endif // CONFIGMANAGER_H
|
#endif // CONFIGS_H
|
|
@ -27,29 +27,16 @@
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "graphics.h"
|
#include "graphics.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "configmanager.h"
|
#include "configs.h"
|
||||||
#include "gamestate.h"
|
#include "gamestate.h"
|
||||||
|
|
||||||
Engine g_engine;
|
Engine g_engine;
|
||||||
|
|
||||||
Engine::Engine() :
|
|
||||||
m_stopping(false),
|
|
||||||
m_running(false),
|
|
||||||
m_currentState(NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Engine::~Engine()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Engine::init()
|
void Engine::init()
|
||||||
{
|
{
|
||||||
// initialize graphics stuff
|
// initialize stuff
|
||||||
g_graphics.init();
|
g_graphics.init();
|
||||||
|
g_fonts.init();
|
||||||
// load fonts
|
|
||||||
g_fonts.load();
|
|
||||||
|
|
||||||
// finally show the window
|
// finally show the window
|
||||||
onResize(Platform::getWindowWidth(), Platform::getWindowHeight());
|
onResize(Platform::getWindowWidth(), Platform::getWindowHeight());
|
||||||
|
@ -57,8 +44,11 @@ void Engine::init()
|
||||||
|
|
||||||
void Engine::terminate()
|
void Engine::terminate()
|
||||||
{
|
{
|
||||||
|
// force last state exit
|
||||||
changeState(NULL);
|
changeState(NULL);
|
||||||
|
|
||||||
|
// terminate stuff
|
||||||
|
g_fonts.terminate();
|
||||||
g_graphics.terminate();
|
g_graphics.terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,9 @@ class GameState;
|
||||||
class Engine
|
class Engine
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Engine();
|
Engine() : m_stopping(false),
|
||||||
~Engine();
|
m_running(false),
|
||||||
|
m_currentState(NULL) { }
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
void terminate();
|
void terminate();
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
/* The MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "font.h"
|
||||||
|
|
||||||
|
bool Font::load(const std::string& file)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* The MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FONT_H
|
||||||
|
#define FONT_H
|
||||||
|
|
||||||
|
#include "prerequisites.h"
|
||||||
|
|
||||||
|
class Font
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Font() { }
|
||||||
|
virtual ~Font() { }
|
||||||
|
|
||||||
|
/// Load font from file
|
||||||
|
bool load(const std::string &file);
|
||||||
|
|
||||||
|
std::string& getName() { return m_name; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::shared_ptr<Font> FontPtr;
|
||||||
|
|
||||||
|
#endif // FONT_H
|
|
@ -1,22 +1,49 @@
|
||||||
|
/* The MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "fonts.h"
|
#include "fonts.h"
|
||||||
#include "resourcemanager.h"
|
#include "font.h"
|
||||||
|
#include "resources.h"
|
||||||
|
|
||||||
Fonts g_fonts;
|
Fonts g_fonts;
|
||||||
|
|
||||||
Fonts::Fonts()
|
void Fonts::init()
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Fonts::~Fonts()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Fonts::load()
|
|
||||||
{
|
{
|
||||||
std::list<std::string> files = g_resources.getDirectoryFiles("fonts");
|
std::list<std::string> files = g_resources.getDirectoryFiles("fonts");
|
||||||
for(auto it = files.begin(); it != files.end(); ++it) {
|
foreach(const std::string& file, files) {
|
||||||
notice("File: %s", (*it).c_str());
|
if(boost::ends_with(file, ".yml")) {
|
||||||
|
std::shared_ptr<Font> font(new Font);
|
||||||
|
font->load(file);
|
||||||
|
m_fonts[font->getName()] = font;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
Font* Fonts::get(const std::string& fontName)
|
||||||
|
{
|
||||||
|
auto it = m_fonts.find(fontName);
|
||||||
|
if(it != m_fonts.end())
|
||||||
|
return it->second.get();
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,49 @@
|
||||||
|
/* The MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef FONTS_H
|
#ifndef FONTS_H
|
||||||
#define FONTS_H
|
#define FONTS_H
|
||||||
|
|
||||||
#include "prerequisites.h"
|
#include "prerequisites.h"
|
||||||
#include "rect.h"
|
#include "font.h"
|
||||||
|
|
||||||
struct Font
|
|
||||||
{
|
|
||||||
|
|
||||||
Rect textureArea[256];
|
|
||||||
};
|
|
||||||
|
|
||||||
class Fonts
|
class Fonts
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Fonts();
|
Fonts() { }
|
||||||
~Fonts();
|
|
||||||
|
|
||||||
bool load();
|
/// Initialize all fonts
|
||||||
|
void init();
|
||||||
|
|
||||||
|
/// Get a font by name
|
||||||
|
Font *get(const std::string& fontName);
|
||||||
|
|
||||||
|
/// Terminate all fonts
|
||||||
|
void terminate() { }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<int, Font*> mFonts;
|
std::map<std::string, std::shared_ptr<Font> > m_fonts;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Fonts g_fonts;
|
extern Fonts g_fonts;
|
||||||
|
|
|
@ -32,16 +32,6 @@
|
||||||
|
|
||||||
Graphics g_graphics;
|
Graphics g_graphics;
|
||||||
|
|
||||||
Graphics::Graphics()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Graphics::~Graphics()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Graphics::init()
|
void Graphics::init()
|
||||||
{
|
{
|
||||||
// setup opengl
|
// setup opengl
|
||||||
|
|
|
@ -35,8 +35,7 @@ class Texture;
|
||||||
class Graphics
|
class Graphics
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Graphics();
|
Graphics() { }
|
||||||
~Graphics();
|
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
void terminate();
|
void terminate();
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
|
|
||||||
|
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
void Logger::log(int level, const char *trace, const char *format, ...)
|
void Logger::log(int level, const char *trace, const char *format, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#ifndef LOGGER_H
|
#ifndef LOGGER_H
|
||||||
#define LOGGER_H
|
#define LOGGER_H
|
||||||
|
|
||||||
#include "prerequisites.h"
|
#include <sstream>
|
||||||
|
|
||||||
namespace Logger {
|
namespace Logger {
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ typedef int8_t int8;
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cstdarg>
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
@ -63,6 +62,8 @@ typedef int8_t int8;
|
||||||
// boost utilities
|
// boost utilities
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#define foreach BOOST_FOREACH
|
||||||
|
|
||||||
// internal logger
|
// internal logger
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
|
@ -22,33 +22,23 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "resourcemanager.h"
|
#include "resources.h"
|
||||||
|
|
||||||
#include <physfs.h>
|
#include <physfs.h>
|
||||||
|
|
||||||
ResourceManager g_resources;
|
Resources g_resources;
|
||||||
|
|
||||||
ResourceManager::ResourceManager()
|
void Resources::init(const char *argv0)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ResourceManager::~ResourceManager()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResourceManager::init(const char *argv0)
|
|
||||||
{
|
{
|
||||||
PHYSFS_init(argv0);
|
PHYSFS_init(argv0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceManager::terminate()
|
void Resources::terminate()
|
||||||
{
|
{
|
||||||
PHYSFS_deinit();
|
PHYSFS_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceManager::setWriteDir(const std::string& path)
|
bool Resources::setWriteDir(const std::string& path)
|
||||||
{
|
{
|
||||||
bool ret = (bool)PHYSFS_setWriteDir(path.c_str());
|
bool ret = (bool)PHYSFS_setWriteDir(path.c_str());
|
||||||
|
|
||||||
|
@ -57,7 +47,7 @@ bool ResourceManager::setWriteDir(const std::string& path)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceManager::addToSearchPath(const std::string& path, bool insertInFront /*= true*/)
|
bool Resources::addToSearchPath(const std::string& path, bool insertInFront /*= true*/)
|
||||||
{
|
{
|
||||||
if(!PHYSFS_addToSearchPath(path.c_str(), insertInFront ? 0 : 1)) {
|
if(!PHYSFS_addToSearchPath(path.c_str(), insertInFront ? 0 : 1)) {
|
||||||
error("Error while adding \"%s\" to resources search path: %s", path.c_str(), PHYSFS_getLastError());
|
error("Error while adding \"%s\" to resources search path: %s", path.c_str(), PHYSFS_getLastError());
|
||||||
|
@ -66,12 +56,12 @@ bool ResourceManager::addToSearchPath(const std::string& path, bool insertInFron
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceManager::fileExists(const std::string& filePath)
|
bool Resources::fileExists(const std::string& filePath)
|
||||||
{
|
{
|
||||||
return PHYSFS_exists(filePath.c_str());
|
return PHYSFS_exists(filePath.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *ResourceManager::loadFile(const std::string& fileName, unsigned int *fileSize)
|
unsigned char *Resources::loadFile(const std::string& fileName, unsigned int *fileSize)
|
||||||
{
|
{
|
||||||
PHYSFS_file *file = PHYSFS_openRead(fileName.c_str());
|
PHYSFS_file *file = PHYSFS_openRead(fileName.c_str());
|
||||||
if(!file) {
|
if(!file) {
|
||||||
|
@ -88,7 +78,7 @@ unsigned char *ResourceManager::loadFile(const std::string& fileName, unsigned i
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ResourceManager::loadTextFile(const std::string& fileName)
|
std::string Resources::loadTextFile(const std::string& fileName)
|
||||||
{
|
{
|
||||||
std::string text;
|
std::string text;
|
||||||
unsigned int fileSize;
|
unsigned int fileSize;
|
||||||
|
@ -100,7 +90,7 @@ std::string ResourceManager::loadTextFile(const std::string& fileName)
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceManager::saveFile(const std::string &fileName, const unsigned char *data, unsigned int size)
|
bool Resources::saveFile(const std::string &fileName, const unsigned char *data, unsigned int size)
|
||||||
{
|
{
|
||||||
PHYSFS_file *file = PHYSFS_openWrite(fileName.c_str());
|
PHYSFS_file *file = PHYSFS_openWrite(fileName.c_str());
|
||||||
if(!file) {
|
if(!file) {
|
||||||
|
@ -113,12 +103,12 @@ bool ResourceManager::saveFile(const std::string &fileName, const unsigned char
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceManager::saveTextFile(const std::string &fileName, std::string text)
|
bool Resources::saveTextFile(const std::string &fileName, std::string text)
|
||||||
{
|
{
|
||||||
return saveFile(fileName, (const unsigned char*)text.c_str(), text.size());
|
return saveFile(fileName, (const unsigned char*)text.c_str(), text.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::list<std::string> ResourceManager::getDirectoryFiles(const std::string& directory)
|
std::list<std::string> Resources::getDirectoryFiles(const std::string& directory)
|
||||||
{
|
{
|
||||||
std::list<std::string> files;
|
std::list<std::string> files;
|
||||||
char **rc = PHYSFS_enumerateFiles(directory.c_str());
|
char **rc = PHYSFS_enumerateFiles(directory.c_str());
|
|
@ -22,16 +22,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef RESOURCEMANAGER_H
|
#ifndef RESOURCES_H
|
||||||
#define RESOURCEMANAGER_H
|
#define RESOURCES_H
|
||||||
|
|
||||||
#include "prerequisites.h"
|
#include "prerequisites.h"
|
||||||
|
|
||||||
class ResourceManager
|
class Resources
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ResourceManager();
|
Resources() { }
|
||||||
~ResourceManager();
|
|
||||||
|
|
||||||
void init(const char *argv0);
|
void init(const char *argv0);
|
||||||
void terminate();
|
void terminate();
|
||||||
|
@ -68,6 +67,6 @@ public:
|
||||||
std::list<std::string> getDirectoryFiles(const std::string& directory);
|
std::list<std::string> getDirectoryFiles(const std::string& directory);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ResourceManager g_resources;
|
extern Resources g_resources;
|
||||||
|
|
||||||
#endif // RESOURCEMANAGER_H
|
#endif // RESOURCES_H
|
|
@ -28,7 +28,7 @@
|
||||||
#include "prerequisites.h"
|
#include "prerequisites.h"
|
||||||
#include "size.h"
|
#include "size.h"
|
||||||
|
|
||||||
class TextureManager;
|
class Textures;
|
||||||
|
|
||||||
class Texture
|
class Texture
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,23 +22,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "texturemanager.h"
|
#include "textures.h"
|
||||||
#include "resourcemanager.h"
|
#include "resources.h"
|
||||||
#include "textureloader.h"
|
#include "textureloader.h"
|
||||||
|
|
||||||
TextureManager g_textures;
|
Textures g_textures;
|
||||||
|
|
||||||
TextureManager::TextureManager()
|
TexturePtr Textures::get(const std::string& textureFile)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
TextureManager::~TextureManager()
|
|
||||||
{
|
|
||||||
m_texturesMap.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
TexturePtr TextureManager::get(const std::string& textureFile)
|
|
||||||
{
|
{
|
||||||
TexturePtr texture;
|
TexturePtr texture;
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
/* The MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef TEXTURES_H
|
||||||
|
#define TEXTURES_H
|
||||||
|
|
||||||
|
#include "prerequisites.h"
|
||||||
|
#include "texture.h"
|
||||||
|
|
||||||
|
typedef std::weak_ptr<Texture> TextureWeakPtr;
|
||||||
|
|
||||||
|
class Textures
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Textures() { }
|
||||||
|
|
||||||
|
/// Load a texture from file, if it was already loaded it will be retrieved from cache
|
||||||
|
TexturePtr get(const std::string& textureFile);
|
||||||
|
|
||||||
|
private:
|
||||||
|
typedef std::map<std::string, TextureWeakPtr > TexturesMap;
|
||||||
|
TexturesMap m_texturesMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern Textures g_textures;
|
||||||
|
|
||||||
|
#endif // TEXTURES_H
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
std::string vformat(const char *format, va_list args)
|
std::string vformat(const char *format, va_list args)
|
||||||
{
|
{
|
||||||
if(!format)
|
if(!format)
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
#ifndef UTIL_H
|
#ifndef UTIL_H
|
||||||
#define UTIL_H
|
#define UTIL_H
|
||||||
|
|
||||||
#include "prerequisites.h"
|
#include "logger.h"
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
/// Formatting like printf for std::string, va_list input version
|
/// Formatting like printf for std::string, va_list input version
|
||||||
std::string vformat(const char *format, va_list args);
|
std::string vformat(const char *format, va_list args);
|
||||||
|
@ -34,20 +35,16 @@ std::string vformat(const char *format, va_list args);
|
||||||
std::string format(const char *format, ...);
|
std::string format(const char *format, ...);
|
||||||
|
|
||||||
/// Convert any data type through boost::lexical_cast
|
/// Convert any data type through boost::lexical_cast
|
||||||
//TODO: move declatation to util.cpp
|
|
||||||
template<class R, class T>
|
template<class R, class T>
|
||||||
R convertType(T t)
|
R convertType(T t)
|
||||||
{
|
{
|
||||||
R r = R();
|
R ret = R();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
r = boost::lexical_cast<R>(t);
|
ret = boost::lexical_cast<R>(t);
|
||||||
|
} catch(boost::bad_lexical_cast bad) {
|
||||||
|
error("Error converting type: %s", bad.what());
|
||||||
}
|
}
|
||||||
catch(boost::bad_lexical_cast bad){
|
return ret;
|
||||||
//TODO: add an error message
|
|
||||||
}
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -23,8 +23,8 @@
|
||||||
|
|
||||||
|
|
||||||
#include "framework/engine.h"
|
#include "framework/engine.h"
|
||||||
#include "framework/configmanager.h"
|
#include "framework/configs.h"
|
||||||
#include "framework/resourcemanager.h"
|
#include "framework/resources.h"
|
||||||
#include "framework/platform.h"
|
#include "framework/platform.h"
|
||||||
#include "menustate.h"
|
#include "menustate.h"
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ int main(int argc, const char *argv[])
|
||||||
|
|
||||||
// state scope
|
// state scope
|
||||||
{
|
{
|
||||||
std::unique_ptr<MenuState> menuState(new MenuState());
|
std::shared_ptr<MenuState> menuState(new MenuState());
|
||||||
g_engine.changeState(menuState.get());
|
g_engine.changeState(menuState.get());
|
||||||
|
|
||||||
Platform::showWindow();
|
Platform::showWindow();
|
||||||
|
|
|
@ -25,23 +25,13 @@
|
||||||
#include "menustate.h"
|
#include "menustate.h"
|
||||||
#include "framework/framebuffer.h"
|
#include "framework/framebuffer.h"
|
||||||
#include "framework/graphics.h"
|
#include "framework/graphics.h"
|
||||||
#include "framework/texturemanager.h"
|
#include "framework/textures.h"
|
||||||
#include "framework/logger.h"
|
#include "framework/logger.h"
|
||||||
#include "framework/engine.h"
|
#include "framework/engine.h"
|
||||||
#include "framework/rect.h"
|
#include "framework/rect.h"
|
||||||
|
|
||||||
TexturePtr background;
|
TexturePtr background;
|
||||||
|
|
||||||
MenuState::MenuState()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuState::~MenuState()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuState::onEnter()
|
void MenuState::onEnter()
|
||||||
{
|
{
|
||||||
m_background = g_textures.get("background.png");
|
m_background = g_textures.get("background.png");
|
||||||
|
|
|
@ -32,8 +32,7 @@ class MenuState : public GameState
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MenuState();
|
MenuState() { }
|
||||||
virtual ~MenuState();
|
|
||||||
|
|
||||||
virtual void onEnter();
|
virtual void onEnter();
|
||||||
virtual void onLeave();
|
virtual void onLeave();
|
||||||
|
|
Loading…
Reference in New Issue