mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-22 06:05:38 +00:00
Added some more menu sound theming tags.
Menu scroll sound now also applies to the fast select menu.
This commit is contained in:
parent
7f50376fd0
commit
65701c58c1
|
@ -103,7 +103,13 @@ Audio
|
||||||
|
|
||||||
Themes can also define menu sounds. Sounds should be in the .wav format.
|
Themes can also define menu sounds. Sounds should be in the .wav format.
|
||||||
|
|
||||||
`<menuScrollSound>` - path to the sound to play when the game list is scrolling.
|
`<menuScrollSound>` - path to the sound to play when the game list or fast select menu is scrolling.
|
||||||
|
|
||||||
|
`<menuSelectSound>` - path to the sound to play when the user selects something from the game list.
|
||||||
|
|
||||||
|
`<menuBackSound>` - path to the sound to play when the user "goes up" from a folder in the game list.
|
||||||
|
|
||||||
|
`<menuOpenSound>` - path to the sound to play when the user opens a menu (either the "main menu" or the fast select menu).
|
||||||
|
|
||||||
|
|
||||||
List of variables
|
List of variables
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
October 13
|
||||||
|
-Added sound support through SDL_mixer.
|
||||||
|
-Added new theme tags for defining menu sounds. See THEMES.md for details.
|
||||||
|
|
||||||
October 10
|
October 10
|
||||||
-Added a theming tag for the Fast Select box's text.
|
-Added a theming tag for the Fast Select box's text.
|
||||||
-Fixed GuiBox background being positioned wrong.
|
-Fixed GuiBox background being positioned wrong.
|
||||||
|
|
|
@ -6,7 +6,7 @@ const std::string GuiFastSelect::LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
const int GuiFastSelect::SCROLLSPEED = 100;
|
const int GuiFastSelect::SCROLLSPEED = 100;
|
||||||
const int GuiFastSelect::SCROLLDELAY = 507;
|
const int GuiFastSelect::SCROLLDELAY = 507;
|
||||||
|
|
||||||
GuiFastSelect::GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, char startLetter, GuiBoxData data, int textcolor)
|
GuiFastSelect::GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, char startLetter, GuiBoxData data, int textcolor, Sound* scrollsound)
|
||||||
{
|
{
|
||||||
mLetterID = LETTERS.find(toupper(startLetter));
|
mLetterID = LETTERS.find(toupper(startLetter));
|
||||||
if(mLetterID == std::string::npos)
|
if(mLetterID == std::string::npos)
|
||||||
|
@ -17,6 +17,7 @@ GuiFastSelect::GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, cha
|
||||||
|
|
||||||
mParent = parent;
|
mParent = parent;
|
||||||
mList = list;
|
mList = list;
|
||||||
|
mScrollSound = scrollsound;
|
||||||
|
|
||||||
mScrolling = false;
|
mScrolling = false;
|
||||||
mScrollTimer = 0;
|
mScrollTimer = 0;
|
||||||
|
@ -25,7 +26,6 @@ GuiFastSelect::GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, cha
|
||||||
unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight();
|
unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight();
|
||||||
mBox = new GuiBox(sw * 0.2, sh * 0.2, sw * 0.6, sh * 0.6);
|
mBox = new GuiBox(sw * 0.2, sh * 0.2, sw * 0.6, sh * 0.6);
|
||||||
mBox->setData(data);
|
mBox->setData(data);
|
||||||
//addChild(mBox);
|
|
||||||
|
|
||||||
mTextColor = textcolor;
|
mTextColor = textcolor;
|
||||||
|
|
||||||
|
@ -58,14 +58,14 @@ void GuiFastSelect::onInput(InputManager::InputButton button, bool keyDown)
|
||||||
{
|
{
|
||||||
if(button == InputManager::UP && keyDown)
|
if(button == InputManager::UP && keyDown)
|
||||||
{
|
{
|
||||||
setLetterID(mLetterID - 1);
|
|
||||||
mScrollOffset = -1;
|
mScrollOffset = -1;
|
||||||
|
scroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(button == InputManager::DOWN && keyDown)
|
if(button == InputManager::DOWN && keyDown)
|
||||||
{
|
{
|
||||||
setLetterID(mLetterID + 1);
|
|
||||||
mScrollOffset = 1;
|
mScrollOffset = 1;
|
||||||
|
scroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
if((button == InputManager::UP || button == InputManager::DOWN) && !keyDown)
|
if((button == InputManager::UP || button == InputManager::DOWN) && !keyDown)
|
||||||
|
@ -98,11 +98,17 @@ void GuiFastSelect::onTick(int deltaTime)
|
||||||
if(mScrolling && mScrollTimer >= SCROLLSPEED)
|
if(mScrolling && mScrollTimer >= SCROLLSPEED)
|
||||||
{
|
{
|
||||||
mScrollTimer = 0;
|
mScrollTimer = 0;
|
||||||
setLetterID(mLetterID + mScrollOffset);
|
scroll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiFastSelect::scroll()
|
||||||
|
{
|
||||||
|
setLetterID(mLetterID + mScrollOffset);
|
||||||
|
mScrollSound->play();
|
||||||
|
}
|
||||||
|
|
||||||
void GuiFastSelect::setLetterID(int id)
|
void GuiFastSelect::setLetterID(int id)
|
||||||
{
|
{
|
||||||
while(id < 0)
|
while(id < 0)
|
||||||
|
|
|
@ -4,13 +4,14 @@
|
||||||
#include "../GuiComponent.h"
|
#include "../GuiComponent.h"
|
||||||
#include "../SystemData.h"
|
#include "../SystemData.h"
|
||||||
#include "../FolderData.h"
|
#include "../FolderData.h"
|
||||||
|
#include "../Sound.h"
|
||||||
#include "GuiList.h"
|
#include "GuiList.h"
|
||||||
#include "GuiBox.h"
|
#include "GuiBox.h"
|
||||||
|
|
||||||
class GuiFastSelect : GuiComponent
|
class GuiFastSelect : GuiComponent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, char startLetter, GuiBoxData data, int textcolor);
|
GuiFastSelect(GuiComponent* parent, GuiList<FileData*>* list, char startLetter, GuiBoxData data, int textcolor, Sound* scrollsound);
|
||||||
~GuiFastSelect();
|
~GuiFastSelect();
|
||||||
|
|
||||||
void onRender();
|
void onRender();
|
||||||
|
@ -22,7 +23,7 @@ private:
|
||||||
static const int SCROLLDELAY;
|
static const int SCROLLDELAY;
|
||||||
|
|
||||||
void setListPos();
|
void setListPos();
|
||||||
|
void scroll();
|
||||||
void setLetterID(int id);
|
void setLetterID(int id);
|
||||||
|
|
||||||
GuiList<FileData*>* mList;
|
GuiList<FileData*>* mList;
|
||||||
|
@ -35,6 +36,8 @@ private:
|
||||||
|
|
||||||
int mScrollTimer, mScrollOffset;
|
int mScrollTimer, mScrollOffset;
|
||||||
bool mScrolling;
|
bool mScrolling;
|
||||||
|
|
||||||
|
Sound* mScrollSound;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -113,6 +113,9 @@ void GuiGameList::onInput(InputManager::InputButton button, bool keyDown)
|
||||||
{
|
{
|
||||||
if(!keyDown)
|
if(!keyDown)
|
||||||
{
|
{
|
||||||
|
//play select sound
|
||||||
|
mTheme->getMenuSelectSound()->play();
|
||||||
|
|
||||||
FileData* file = mList->getSelectedObject();
|
FileData* file = mList->getSelectedObject();
|
||||||
if(file->isFolder()) //if you selected a folder, add this directory to the stack, and use the selected one
|
if(file->isFolder()) //if you selected a folder, add this directory to the stack, and use the selected one
|
||||||
{
|
{
|
||||||
|
@ -120,6 +123,9 @@ void GuiGameList::onInput(InputManager::InputButton button, bool keyDown)
|
||||||
mFolder = (FolderData*)file;
|
mFolder = (FolderData*)file;
|
||||||
updateList();
|
updateList();
|
||||||
}else{
|
}else{
|
||||||
|
//wait for the sound to finish or we'll never hear it...
|
||||||
|
while(mTheme->getMenuSelectSound()->isPlaying());
|
||||||
|
|
||||||
mSystem->launchGame((GameData*)file);
|
mSystem->launchGame((GameData*)file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,6 +138,9 @@ void GuiGameList::onInput(InputManager::InputButton button, bool keyDown)
|
||||||
mFolderStack.pop();
|
mFolderStack.pop();
|
||||||
updateList();
|
updateList();
|
||||||
updateDetailData();
|
updateDetailData();
|
||||||
|
|
||||||
|
//play the back sound
|
||||||
|
mTheme->getMenuBackSound()->play();
|
||||||
}
|
}
|
||||||
|
|
||||||
//only allow switching systems if more than one exists (otherwise it'll reset your position when you switch and it's annoying)
|
//only allow switching systems if more than one exists (otherwise it'll reset your position when you switch and it's annoying)
|
||||||
|
@ -147,14 +156,16 @@ void GuiGameList::onInput(InputManager::InputButton button, bool keyDown)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//open the "start menu"
|
||||||
if(button == InputManager::MENU && keyDown)
|
if(button == InputManager::MENU && keyDown)
|
||||||
{
|
{
|
||||||
new GuiMenu(this);
|
new GuiMenu(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//open the fast select menu
|
||||||
if(button == InputManager::SELECT && keyDown)
|
if(button == InputManager::SELECT && keyDown)
|
||||||
{
|
{
|
||||||
new GuiFastSelect(this, mList, mList->getSelectedObject()->getName()[0], mTheme->getBoxData(), mTheme->getFastSelectColor());
|
new GuiFastSelect(this, mList, mList->getSelectedObject()->getName()[0], mTheme->getBoxData(), mTheme->getFastSelectColor(), mTheme->getMenuScrollSound());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mDetailed)
|
if(mDetailed)
|
||||||
|
@ -232,6 +243,7 @@ void GuiGameList::updateDetailData()
|
||||||
//these are called when the menu opens/closes
|
//these are called when the menu opens/closes
|
||||||
void GuiGameList::onPause()
|
void GuiGameList::onPause()
|
||||||
{
|
{
|
||||||
|
mTheme->getMenuOpenSound()->play();
|
||||||
InputManager::unregisterComponent(this);
|
InputManager::unregisterComponent(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,9 @@ int GuiTheme::getSelectedTextColor() { return mListSelectedColor; }
|
||||||
GuiBoxData GuiTheme::getBoxData() { return mBoxData; }
|
GuiBoxData GuiTheme::getBoxData() { return mBoxData; }
|
||||||
|
|
||||||
Sound* GuiTheme::getMenuScrollSound() { return &mMenuScrollSound; }
|
Sound* GuiTheme::getMenuScrollSound() { return &mMenuScrollSound; }
|
||||||
|
Sound* GuiTheme::getMenuSelectSound() { return &mMenuSelectSound; }
|
||||||
|
Sound* GuiTheme::getMenuBackSound() { return &mMenuBackSound; }
|
||||||
|
Sound* GuiTheme::getMenuOpenSound() { return &mMenuOpenSound; }
|
||||||
|
|
||||||
GuiTheme::GuiTheme(std::string path)
|
GuiTheme::GuiTheme(std::string path)
|
||||||
{
|
{
|
||||||
|
@ -64,6 +67,9 @@ void GuiTheme::setDefaults()
|
||||||
mBoxData.cornerPath = "";
|
mBoxData.cornerPath = "";
|
||||||
|
|
||||||
mMenuScrollSound.loadFile("");
|
mMenuScrollSound.loadFile("");
|
||||||
|
mMenuSelectSound.loadFile("");
|
||||||
|
mMenuBackSound.loadFile("");
|
||||||
|
mMenuOpenSound.loadFile("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiTheme::deleteComponents()
|
void GuiTheme::deleteComponents()
|
||||||
|
@ -132,7 +138,10 @@ void GuiTheme::readXML(std::string path)
|
||||||
mListTextOffsetX = strToFloat(root.child("listTextOffsetX").text().get(), mListTextOffsetX);
|
mListTextOffsetX = strToFloat(root.child("listTextOffsetX").text().get(), mListTextOffsetX);
|
||||||
|
|
||||||
//sounds
|
//sounds
|
||||||
mMenuScrollSound.loadFile(root.child("menuScrollSound").text().get());
|
mMenuScrollSound.loadFile(expandPath(root.child("menuScrollSound").text().get()));
|
||||||
|
mMenuSelectSound.loadFile(expandPath(root.child("menuSelectSound").text().get()));
|
||||||
|
mMenuBackSound.loadFile(expandPath(root.child("menuBackSound").text().get()));
|
||||||
|
mMenuOpenSound.loadFile(expandPath(root.child("menuOpenSound").text().get()));
|
||||||
|
|
||||||
//recursively create children for all <components> with proper parenting
|
//recursively create children for all <components> with proper parenting
|
||||||
createComponentChildren(root, this);
|
createComponentChildren(root, this);
|
||||||
|
|
|
@ -32,6 +32,9 @@ public:
|
||||||
GuiBoxData getBoxData();
|
GuiBoxData getBoxData();
|
||||||
|
|
||||||
Sound* getMenuScrollSound();
|
Sound* getMenuScrollSound();
|
||||||
|
Sound* getMenuSelectSound();
|
||||||
|
Sound* getMenuBackSound();
|
||||||
|
Sound* getMenuOpenSound();
|
||||||
private:
|
private:
|
||||||
void setDefaults();
|
void setDefaults();
|
||||||
void deleteComponents();
|
void deleteComponents();
|
||||||
|
@ -54,7 +57,7 @@ private:
|
||||||
|
|
||||||
GuiBoxData mBoxData;
|
GuiBoxData mBoxData;
|
||||||
|
|
||||||
Sound mMenuScrollSound;
|
Sound mMenuScrollSound, mMenuSelectSound, mMenuBackSound, mMenuOpenSound;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue