Moved configuration files to $HOME/.emulationstation/

Folders should now be sorted alphabetically.
Will now fall back to a system font if LinLibertine.ttf is not found.
Added a Menu button.
Began working on a simple menu.
This commit is contained in:
Aloshi 2012-08-01 23:03:15 -05:00
parent b56094fe3d
commit eaf7df7ad5
12 changed files with 154 additions and 2 deletions

View file

@ -1,7 +1,7 @@
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lSDL -lSDL_ttf -lSDL_image -lboost_system -lboost_filesystem
SRCSOURCES=main.cpp Renderer.cpp Renderer_draw.cpp GuiComponent.cpp InputManager.cpp SystemData.cpp GameData.cpp FolderData.cpp XMLReader.cpp components/GuiList.cpp components/GuiGameList.cpp components/GuiInputConfig.cpp components/GuiImage.cpp pugiXML/pugixml.cpp
SRCSOURCES=main.cpp Renderer.cpp Renderer_draw.cpp GuiComponent.cpp InputManager.cpp SystemData.cpp GameData.cpp FolderData.cpp XMLReader.cpp components/GuiList.cpp components/GuiGameList.cpp components/GuiInputConfig.cpp components/GuiImage.cpp components/GuiMenu.cpp pugiXML/pugixml.cpp
SOURCES=$(addprefix src/,$(SRCSOURCES))
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=emulationstation

6
changelog.txt Normal file
View file

@ -0,0 +1,6 @@
August 4
-Moved configuration files to $HOME/.emulationstation/
-Renderer::loadFonts() will now fall back to /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf if LinLibertine.ttf is not
-Folders should now be sorted alphabetically
-Added Menu button
-Added simple menu

View file

@ -1,5 +1,6 @@
#include "FolderData.h"
#include "SystemData.h"
#include <algorithm>
bool FolderData::isFolder() { return true; }
std::string FolderData::getName() { return mName; }
@ -29,3 +30,32 @@ void FolderData::pushFileData(FileData* file)
mFileVector.push_back(file);
}
//returns if file1 should come before file2
bool filesort(FileData* file1, FileData* file2)
{
std::string name1 = file1->getName();
std::string name2 = file2->getName();
for(unsigned int i = 0; i < name1.length(); i++)
{
if(name1[i] != name2[i])
{
if(name1[i] < name2[i])
{
return true;
}else{
return false;
}
}
}
if(name1.length() < name2.length())
return true;
else
return false;
}
void FolderData::sort()
{
std::sort(mFileVector.begin(), mFileVector.end(), filesort);
}

View file

@ -20,6 +20,8 @@ public:
FileData* getFile(unsigned int i);
void pushFileData(FileData* file);
void sort();
private:
SystemData* mSystem;
std::string mPath;

View file

@ -57,3 +57,18 @@ void GuiComponent::render()
}
}
void GuiComponent::pause()
{
onPause();
for(unsigned int i = 0; i < mChildren.size(); i++)
mChildren.at(i)->pause();
}
void GuiComponent::resume()
{
onResume();
for(unsigned int i = 0; i < mChildren.size(); i++)
mChildren.at(i)->resume();
}

View file

@ -15,6 +15,11 @@ public:
virtual void onRender() { };
virtual void onTick(int deltaTime) { };
void pause();
void resume();
virtual void onPause() { };
virtual void onResume() { };
virtual void onInput(InputManager::InputButton button, bool keyDown) { };
void addChild(GuiComponent* comp);

View file

@ -39,4 +39,3 @@ void Renderer::render()
renderVector.at(i)->render();
}
}

View file

@ -97,6 +97,8 @@ void SystemData::populateFolder(FolderData* folder)
}
}
}
folder->sort();
}

View file

@ -1,6 +1,7 @@
#include "GuiGameList.h"
#include "../InputManager.h"
#include <iostream>
#include "GuiMenu.h"
#define SCREENSHOTWIDTH 256
#define SCREENSHOTHEIGHT 256
@ -128,6 +129,11 @@ void GuiGameList::onInput(InputManager::InputButton button, bool keyDown)
setSystemId(mSystemId - 1);
}
if(button == InputManager::MENU && keyDown)
{
new GuiMenu(this);
}
if(mDetailed)
{
if(!keyDown && (button == InputManager::UP || button == InputManager::DOWN))
@ -159,3 +165,16 @@ void GuiGameList::updateList()
mList->addObject(file->getName(), file);
}
}
//these are called when the menu opens/closes
void GuiGameList::onPause()
{
InputManager::unregisterComponent(this);
InputManager::unregisterComponent(mList);
}
void GuiGameList::onResume()
{
InputManager::registerComponent(this);
InputManager::registerComponent(mList);
}

View file

@ -21,6 +21,8 @@ public:
void onRender();
void onInput(InputManager::InputButton button, bool keyDown);
void onPause();
void onResume();
private:
SystemData* mSystem;

View file

@ -0,0 +1,50 @@
#include "GuiMenu.h"
#include <iostream>
GuiMenu::GuiMenu(GuiComponent* parent)
{
mParent = parent;
parent->pause();
mList = new GuiList(Renderer::getScreenWidth() * 0.5, 20);
addChild(mList);
mSkippedMenuClose = false;
Renderer::registerComponent(this);
InputManager::registerComponent(this);
}
GuiMenu::~GuiMenu()
{
Renderer::unregisterComponent(this);
InputManager::unregisterComponent(this);
delete mList;
mParent->resume();
}
void GuiMenu::onInput(InputManager::InputButton button, bool keyDown)
{
if(button == InputManager::MENU && !keyDown)
{
if(!mSkippedMenuClose)
{
mSkippedMenuClose = true;
}else{
delete this;
return;
}
}
}
void GuiMenu::populateList()
{
}
void GuiMenu::onRender()
{
Renderer::drawRect(Renderer::getScreenWidth() * 0.25, 0, Renderer::getScreenWidth() * 0.5, Renderer::getScreenHeight(), 0xFF00FF);
}

22
src/components/GuiMenu.h Normal file
View file

@ -0,0 +1,22 @@
#ifndef _GUIMENU_H_
#define _GUIMENU_H_
#include "../GuiComponent.h"
#include "GuiList.h"
class GuiMenu : public GuiComponent
{
public:
GuiMenu(GuiComponent* parent);
~GuiMenu();
void onInput(InputManager::InputButton button, bool keyDown);
void onRender();
private:
GuiComponent* mParent;
GuiList* mList;
bool mSkippedMenuClose;
};
#endif