Allow for changing control overlay image
This commit is contained in:
parent
558a6511bc
commit
ee3c189d6b
|
@ -480,7 +480,9 @@ parseOverlayButtonDesc(const ptree &pt, TouchOverlay::Button &out)
|
||||||
static void
|
static void
|
||||||
parseOverlayDesc(const ptree &pt, TouchOverlay &out)
|
parseOverlayDesc(const ptree &pt, TouchOverlay &out)
|
||||||
{
|
{
|
||||||
out.image = pt.get<std::string>("image");
|
for (auto &img : pt.get_child("images")) {
|
||||||
|
out.images[img.second.get<int>("id")] = img.second.get<std::string>("file");
|
||||||
|
}
|
||||||
|
|
||||||
const ptree &buttons = pt.get_child("buttons");
|
const ptree &buttons = pt.get_child("buttons");
|
||||||
for (ptree::const_iterator ci = buttons.begin(); ci != buttons.end(); ++ci)
|
for (ptree::const_iterator ci = buttons.begin(); ci != buttons.end(); ++ci)
|
||||||
|
|
|
@ -24,11 +24,12 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
struct TouchOverlay
|
struct TouchOverlay
|
||||||
{
|
{
|
||||||
std::string image;
|
std::map<int, std::string> images;
|
||||||
|
|
||||||
struct Button
|
struct Button
|
||||||
{
|
{
|
||||||
|
|
|
@ -503,12 +503,16 @@ struct GraphicsPrivate
|
||||||
TEXFBO::allocEmpty(frozenScene, scRes.x, scRes.y);
|
TEXFBO::allocEmpty(frozenScene, scRes.x, scRes.y);
|
||||||
TEXFBO::linkFBO(frozenScene);
|
TEXFBO::linkFBO(frozenScene);
|
||||||
|
|
||||||
|
setOverlay(0);
|
||||||
|
|
||||||
FloatRect screenRect(0, 0, scRes.x, scRes.y);
|
FloatRect screenRect(0, 0, scRes.x, scRes.y);
|
||||||
screenQuad.setTexPosRect(screenRect, screenRect);
|
screenQuad.setTexPosRect(screenRect, screenRect);
|
||||||
|
|
||||||
fpsLimiter.resetFrameAdjust();
|
fpsLimiter.resetFrameAdjust();
|
||||||
|
}
|
||||||
const std::string &olImage = rtData->config.touchOverlay.image;
|
|
||||||
|
void setOverlay(int id) {
|
||||||
|
const std::string &olImage = threadData->config.touchOverlay.images[id];
|
||||||
if (!olImage.empty())
|
if (!olImage.empty())
|
||||||
{
|
{
|
||||||
SDL_RWops *ops = SDL_RWFromFile(olImage.c_str(), "rb");
|
SDL_RWops *ops = SDL_RWFromFile(olImage.c_str(), "rb");
|
||||||
|
@ -862,6 +866,11 @@ void Graphics::frameReset()
|
||||||
p->fpsLimiter.resetFrameAdjust();
|
p->fpsLimiter.resetFrameAdjust();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Graphics::setOverlay(int id)
|
||||||
|
{
|
||||||
|
p->setOverlay(id);
|
||||||
|
}
|
||||||
|
|
||||||
static void guardDisposed() {}
|
static void guardDisposed() {}
|
||||||
|
|
||||||
DEF_ATTR_RD_SIMPLE(Graphics, FrameRate, int, p->frameRate)
|
DEF_ATTR_RD_SIMPLE(Graphics, FrameRate, int, p->frameRate)
|
||||||
|
|
|
@ -40,6 +40,7 @@ public:
|
||||||
const char *filename = "",
|
const char *filename = "",
|
||||||
int vague = 40);
|
int vague = 40);
|
||||||
void frameReset();
|
void frameReset();
|
||||||
|
void setOverlay(int);
|
||||||
|
|
||||||
DECL_ATTR( FrameRate, int )
|
DECL_ATTR( FrameRate, int )
|
||||||
DECL_ATTR( FrameCount, int )
|
DECL_ATTR( FrameCount, int )
|
||||||
|
|
Loading…
Reference in New Issue