mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-22 22:25:38 +00:00
More work on reinitialization. Fonts still not working.
This commit is contained in:
parent
05c258f515
commit
b01f2705de
10
src/Font.cpp
10
src/Font.cpp
|
@ -47,10 +47,10 @@ Font::Font(std::string path, int size)
|
||||||
mPath = path;
|
mPath = path;
|
||||||
mSize = size;
|
mSize = size;
|
||||||
|
|
||||||
onInit();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::onInit()
|
void Font::init()
|
||||||
{
|
{
|
||||||
if(!libraryInitialized)
|
if(!libraryInitialized)
|
||||||
initLibrary();
|
initLibrary();
|
||||||
|
@ -69,12 +69,16 @@ void Font::onInit()
|
||||||
buildAtlas();
|
buildAtlas();
|
||||||
|
|
||||||
FT_Done_Face(face);
|
FT_Done_Face(face);
|
||||||
|
|
||||||
|
std::cout << "initialized font\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::onDeinit()
|
void Font::deinit()
|
||||||
{
|
{
|
||||||
if(textureID)
|
if(textureID)
|
||||||
glDeleteTextures(1, &textureID);
|
glDeleteTextures(1, &textureID);
|
||||||
|
|
||||||
|
std::cout << "deinitialized font\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::buildAtlas()
|
void Font::buildAtlas()
|
||||||
|
|
|
@ -40,8 +40,8 @@ public:
|
||||||
void sizeText(std::string text, int* w, int* h); //Sets the width and height of a given string to given pointers. Skipped if pointer is NULL.
|
void sizeText(std::string text, int* w, int* h); //Sets the width and height of a given string to given pointers. Skipped if pointer is NULL.
|
||||||
int getHeight();
|
int getHeight();
|
||||||
|
|
||||||
void onInit();
|
void init();
|
||||||
void onDeinit();
|
void deinit();
|
||||||
|
|
||||||
int getSize();
|
int getSize();
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,8 @@ void InputManager::init()
|
||||||
if(mJoysticks != NULL)
|
if(mJoysticks != NULL)
|
||||||
deinit();
|
deinit();
|
||||||
|
|
||||||
|
std::cout << "initializing InputManager...";
|
||||||
|
|
||||||
SDL_InitSubSystem(SDL_INIT_JOYSTICK);
|
SDL_InitSubSystem(SDL_INIT_JOYSTICK);
|
||||||
|
|
||||||
mNumJoysticks = SDL_NumJoysticks();
|
mNumJoysticks = SDL_NumJoysticks();
|
||||||
|
@ -42,10 +44,14 @@ void InputManager::init()
|
||||||
mKeyboardInputConfig = new InputConfig(DEVICE_KEYBOARD);
|
mKeyboardInputConfig = new InputConfig(DEVICE_KEYBOARD);
|
||||||
|
|
||||||
SDL_JoystickEventState(SDL_ENABLE);
|
SDL_JoystickEventState(SDL_ENABLE);
|
||||||
|
|
||||||
|
std::cout << "done\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputManager::deinit()
|
void InputManager::deinit()
|
||||||
{
|
{
|
||||||
|
std::cout << "deinitializing InputManager...";
|
||||||
|
|
||||||
SDL_JoystickEventState(SDL_DISABLE);
|
SDL_JoystickEventState(SDL_DISABLE);
|
||||||
|
|
||||||
if(!SDL_WasInit(SDL_INIT_JOYSTICK))
|
if(!SDL_WasInit(SDL_INIT_JOYSTICK))
|
||||||
|
@ -70,6 +76,8 @@ void InputManager::deinit()
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
||||||
|
|
||||||
|
std::cout << "done\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
int InputManager::getNumJoysticks() { return mNumJoysticks; }
|
int InputManager::getNumJoysticks() { return mNumJoysticks; }
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace Renderer
|
||||||
unsigned int getScreenWidth();
|
unsigned int getScreenWidth();
|
||||||
unsigned int getScreenHeight();
|
unsigned int getScreenHeight();
|
||||||
|
|
||||||
enum FontSize { SMALL, MEDIUM, LARGE };
|
enum FontSize { SMALL, MEDIUM, LARGE, FONT_SIZE_COUNT };
|
||||||
Font* getDefaultFont(FontSize size);
|
Font* getDefaultFont(FontSize size);
|
||||||
void buildGLColorArray(GLubyte* ptr, unsigned int color, unsigned int vertCount);
|
void buildGLColorArray(GLubyte* ptr, unsigned int color, unsigned int vertCount);
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace Renderer
|
||||||
{
|
{
|
||||||
LOG(LogInfo) << "Starting SDL...";
|
LOG(LogInfo) << "Starting SDL...";
|
||||||
|
|
||||||
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) != 0)
|
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0)
|
||||||
{
|
{
|
||||||
LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError() << "\n" << "Are you in the 'video', 'audio', and 'input' groups? Is X closed? Is your firmware up to date? Are you using at least the 192/64 memory split?";
|
LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError() << "\n" << "Are you in the 'video', 'audio', and 'input' groups? Is X closed? Is your firmware up to date? Are you using at least the 192/64 memory split?";
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Renderer
|
||||||
{
|
{
|
||||||
LOG(LogInfo) << "Creating surface...";
|
LOG(LogInfo) << "Creating surface...";
|
||||||
|
|
||||||
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) != 0)
|
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0)
|
||||||
{
|
{
|
||||||
LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError();
|
LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError();
|
||||||
return false;
|
return false;
|
||||||
|
@ -32,7 +32,7 @@ namespace Renderer
|
||||||
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
|
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
|
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
sdlScreen = SDL_SetVideoMode(display_width, display_height, 16, SDL_OPENGL | SDL_FULLSCREEN | SDL_DOUBLEBUF);
|
sdlScreen = SDL_SetVideoMode(display_width, display_height, 16, SDL_OPENGL /*| SDL_FULLSCREEN*/ | SDL_DOUBLEBUF);
|
||||||
|
|
||||||
if(sdlScreen == NULL)
|
if(sdlScreen == NULL)
|
||||||
{
|
{
|
||||||
|
@ -80,11 +80,23 @@ namespace Renderer
|
||||||
glOrtho(0, display_width, display_height, 0, -1.0, 1.0);
|
glOrtho(0, display_width, display_height, 0, -1.0, 1.0);
|
||||||
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
|
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
|
||||||
|
//initialize fonts
|
||||||
|
for(int i = 0; i < (int)FONT_SIZE_COUNT; i++)
|
||||||
|
{
|
||||||
|
getDefaultFont((FontSize)i)->init();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void deinit()
|
void deinit()
|
||||||
{
|
{
|
||||||
|
//deinitialize fonts
|
||||||
|
for(int i = 0; i < (int)FONT_SIZE_COUNT; i++)
|
||||||
|
{
|
||||||
|
getDefaultFont((FontSize)i)->deinit();
|
||||||
|
}
|
||||||
|
|
||||||
destroySurface();
|
destroySurface();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,9 +67,7 @@ void SystemData::launchGame(Window* window, GameData* game)
|
||||||
{
|
{
|
||||||
LOG(LogInfo) << "Attempting to launch game...";
|
LOG(LogInfo) << "Attempting to launch game...";
|
||||||
|
|
||||||
AudioManager::deinit();
|
window->deinit();
|
||||||
window->getInputManager()->deinit();
|
|
||||||
Renderer::deinit();
|
|
||||||
|
|
||||||
std::string command = mLaunchCommand;
|
std::string command = mLaunchCommand;
|
||||||
|
|
||||||
|
@ -86,9 +84,7 @@ void SystemData::launchGame(Window* window, GameData* game)
|
||||||
LOG(LogWarning) << "...launch terminated with nonzero exit code " << exitCode << "!";
|
LOG(LogWarning) << "...launch terminated with nonzero exit code " << exitCode << "!";
|
||||||
}
|
}
|
||||||
|
|
||||||
Renderer::init(0, 0);
|
window->init();
|
||||||
window->getInputManager()->init();
|
|
||||||
AudioManager::init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemData::populateFolder(FolderData* folder)
|
void SystemData::populateFolder(FolderData* folder)
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
#include "Window.h"
|
#include "Window.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include "Renderer.h"
|
||||||
|
#include "AudioManager.h"
|
||||||
|
|
||||||
Window::Window()
|
Window::Window()
|
||||||
{
|
{
|
||||||
mInputManager = new InputManager(this);
|
mInputManager = new InputManager(this);
|
||||||
mInputManager->init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::~Window()
|
Window::~Window()
|
||||||
|
@ -50,6 +51,10 @@ void Window::render()
|
||||||
|
|
||||||
void Window::init()
|
void Window::init()
|
||||||
{
|
{
|
||||||
|
AudioManager::init();
|
||||||
|
mInputManager->init();
|
||||||
|
Renderer::init(0, 0);
|
||||||
|
|
||||||
for(unsigned int i = 0; i < mGuiStack.size(); i++)
|
for(unsigned int i = 0; i < mGuiStack.size(); i++)
|
||||||
{
|
{
|
||||||
mGuiStack.at(i)->init();
|
mGuiStack.at(i)->init();
|
||||||
|
@ -62,6 +67,10 @@ void Window::deinit()
|
||||||
{
|
{
|
||||||
mGuiStack.at(i)->deinit();
|
mGuiStack.at(i)->deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AudioManager::deinit();
|
||||||
|
mInputManager->deinit();
|
||||||
|
Renderer::deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::input(InputConfig* config, Input input)
|
void Window::input(InputConfig* config, Input input)
|
||||||
|
|
|
@ -111,12 +111,18 @@ void GuiBox::render()
|
||||||
mCornerImage.render();
|
mCornerImage.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiBox::onInit()
|
void GuiBox::init()
|
||||||
{
|
{
|
||||||
|
mVerticalImage.init();
|
||||||
|
mHorizontalImage.init();
|
||||||
|
mCornerImage.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiBox::onDeinit()
|
void GuiBox::deinit()
|
||||||
{
|
{
|
||||||
|
mVerticalImage.deinit();
|
||||||
|
mHorizontalImage.deinit();
|
||||||
|
mCornerImage.deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
int GuiBox::getHorizontalBorderWidth()
|
int GuiBox::getHorizontalBorderWidth()
|
||||||
|
|
|
@ -32,8 +32,8 @@ public:
|
||||||
|
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
void onInit();
|
void init();
|
||||||
void onDeinit();
|
void deinit();
|
||||||
private:
|
private:
|
||||||
GuiImage mBackgroundImage, mHorizontalImage, mVerticalImage, mCornerImage;
|
GuiImage mBackgroundImage, mHorizontalImage, mVerticalImage, mCornerImage;
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,7 @@ void GuiGameList::input(InputConfig* config, Input input)
|
||||||
while(mTheme->getSound("menuSelect")->isPlaying());
|
while(mTheme->getSound("menuSelect")->isPlaying());
|
||||||
|
|
||||||
mSystem->launchGame(mWindow, (GameData*)file);
|
mSystem->launchGame(mWindow, (GameData*)file);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,14 +276,24 @@ void GuiGameList::clearDetailData()
|
||||||
|
|
||||||
//called when the renderer shuts down/returns
|
//called when the renderer shuts down/returns
|
||||||
//we have to manually call init/deinit on mTheme because it is not our child
|
//we have to manually call init/deinit on mTheme because it is not our child
|
||||||
void GuiGameList::onDeinit()
|
void GuiGameList::deinit()
|
||||||
{
|
{
|
||||||
|
if(mDetailed)
|
||||||
|
{
|
||||||
|
mScreenshot->deinit();
|
||||||
|
}
|
||||||
|
|
||||||
mTheme->deinit();
|
mTheme->deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiGameList::onInit()
|
void GuiGameList::init()
|
||||||
{
|
{
|
||||||
mTheme->init();
|
mTheme->init();
|
||||||
|
|
||||||
|
if(mDetailed)
|
||||||
|
{
|
||||||
|
mScreenshot->deinit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool IGNOREGAMELIST; //defined in main.cpp (as a command line argument)
|
extern bool IGNOREGAMELIST; //defined in main.cpp (as a command line argument)
|
||||||
|
|
|
@ -26,8 +26,8 @@ public:
|
||||||
void update(int deltaTime);
|
void update(int deltaTime);
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
void onInit();
|
void init();
|
||||||
void onDeinit();
|
void deinit();
|
||||||
|
|
||||||
void updateDetailData();
|
void updateDetailData();
|
||||||
|
|
||||||
|
|
|
@ -354,13 +354,13 @@ void GuiImage::drawImageArray(GLfloat* points, GLfloat* texs, GLubyte* colors, u
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::onInit()
|
void GuiImage::init()
|
||||||
{
|
{
|
||||||
if(!mPath.empty())
|
if(!mPath.empty())
|
||||||
loadImage(mPath);
|
loadImage(mPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::onDeinit()
|
void GuiImage::deinit()
|
||||||
{
|
{
|
||||||
unloadImage();
|
unloadImage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,8 +32,8 @@ public:
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
//Image textures will be deleted on renderer deinitialization, and recreated on reinitialization (if mPath is not empty).
|
//Image textures will be deleted on renderer deinitialization, and recreated on reinitialization (if mPath is not empty).
|
||||||
void onInit();
|
void init();
|
||||||
void onDeinit();
|
void deinit();
|
||||||
|
|
||||||
unsigned char getOpacity();
|
unsigned char getOpacity();
|
||||||
void setOpacity(unsigned char opacity);
|
void setOpacity(unsigned char opacity);
|
||||||
|
|
|
@ -431,3 +431,20 @@ void GuiTheme::render()
|
||||||
mComponentVector.at(i)->render();
|
mComponentVector.at(i)->render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiTheme::init()
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < mComponentVector.size(); i++)
|
||||||
|
{
|
||||||
|
mComponentVector.at(i)->init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiTheme::deinit()
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < mComponentVector.size(); i++)
|
||||||
|
{
|
||||||
|
mComponentVector.at(i)->deinit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ public:
|
||||||
|
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
|
void init();
|
||||||
|
void deinit();
|
||||||
|
|
||||||
unsigned int getColor(std::string name);
|
unsigned int getColor(std::string name);
|
||||||
bool getBool(std::string name);
|
bool getBool(std::string name);
|
||||||
float getFloat(std::string name);
|
float getFloat(std::string name);
|
||||||
|
|
|
@ -114,7 +114,8 @@ int main(int argc, char* argv[])
|
||||||
//initialize audio
|
//initialize audio
|
||||||
AudioManager::init();
|
AudioManager::init();
|
||||||
|
|
||||||
Window window;
|
Window window; //don't call Window.init() because we manually pass the resolution to Renderer::init
|
||||||
|
window.getInputManager()->init();
|
||||||
|
|
||||||
//try loading the system config file
|
//try loading the system config file
|
||||||
if(!fs::exists(SystemData::getConfigPath())) //if it doesn't exist, create the example and quit
|
if(!fs::exists(SystemData::getConfigPath())) //if it doesn't exist, create the example and quit
|
||||||
|
|
Loading…
Reference in a new issue