mkxp/src/sharedstate.h

148 lines
3.3 KiB
C
Raw Normal View History

2013-09-01 14:27:21 +00:00
/*
** sharedstate.h
2013-09-01 14:27:21 +00:00
**
** This file is part of mkxp.
**
** Copyright (C) 2013 Jonas Kulla <Nyocurio@gmail.com>
**
** mkxp is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 2 of the License, or
** (at your option) any later version.
**
** mkxp is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with mkxp. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SHAREDSTATE_H
#define SHAREDSTATE_H
2013-09-01 14:27:21 +00:00
#include <sigc++/signal.h>
2013-09-01 14:27:21 +00:00
#define shState SharedState::instance
#define glState shState->_glState()
2013-09-01 14:27:21 +00:00
struct SharedStatePrivate;
2013-09-01 14:27:21 +00:00
struct RGSSThreadData;
struct GlobalIBO;
struct mrb_state;
struct SDL_Window;
2013-09-06 10:26:41 +00:00
struct TEXFBO;
struct Quad;
2013-09-01 14:27:21 +00:00
class Scene;
class FileSystem;
class EventThread;
class Graphics;
class Input;
class Audio;
class GLState;
class SimpleShader;
class SimpleColorShader;
class SimpleAlphaShader;
class SimpleSpriteShader;
class SimpleMatrixShader;
2013-09-01 14:27:21 +00:00
class SpriteShader;
class PlaneShader;
class FlashMapShader;
2013-09-01 14:27:21 +00:00
class TransShader;
class SimpleTransShader;
class HueShader;
class BltShader;
class TexPool;
class FontPool;
class Font;
struct BlurShader;
2013-09-01 14:27:21 +00:00
struct GlobalIBO;
struct Config;
struct Vec2i;
2013-09-01 14:27:21 +00:00
struct SharedState
2013-09-01 14:27:21 +00:00
{
void *bindingData();
void setBindingData(void *data);
SDL_Window *sdlWindow();
Scene *screen();
void setScreen(Scene &screen);
FileSystem &fileSystem();
EventThread &eThread();
RGSSThreadData &rtData();
Config &config();
Graphics &graphics();
Input &input();
Audio &audio();
GLState &_glState();
SimpleShader &simpleShader();
SimpleColorShader &simpleColorShader();
SimpleAlphaShader &simpleAlphaShader();
SimpleSpriteShader &simpleSpriteShader();
2013-09-01 14:27:21 +00:00
SpriteShader &spriteShader();
PlaneShader &planeShader();
FlashMapShader &flashMapShader();
2013-09-01 14:27:21 +00:00
TransShader &transShader();
SimpleTransShader &sTransShader();
HueShader &hueShader();
BltShader &bltShader();
#ifdef RGSS2
SimpleMatrixShader &simpleMatrixShader();
BlurShader &blurShader();
#endif
2013-09-01 14:27:21 +00:00
TexPool &texPool();
FontPool &fontPool();
Font &defaultFont();
sigc::signal<void> prepareDraw;
unsigned int genTimeStamp();
/* Returns global quad IBO, and ensures it has indices
* for at least minSize quads */
void ensureQuadIBO(int minSize);
void bindQuadIBO();
/* Global general purpose texture */
void bindTex();
void ensureTexSize(int minW, int minH, Vec2i &currentSizeOut);
2013-09-01 14:27:21 +00:00
2013-09-06 10:26:41 +00:00
TEXFBO &gpTexFBO(int minW, int minH);
2013-09-01 14:27:21 +00:00
Quad &gpQuad();
/* Basically just a simple "TexPool"
* replacement for Tilemap atlas use */
void requestAtlasTex(int w, int h, TEXFBO &out);
void releaseAtlasTex(TEXFBO &tex);
2013-09-01 14:27:21 +00:00
/* Checks EventThread's shutdown request flag and if set,
* requests the binding to terminate. In this case, this
* function will most likely not return */
void checkShutdown();
static SharedState *instance;
2013-09-01 14:27:21 +00:00
static void initInstance(RGSSThreadData *threadData);
static void finiInstance();
private:
SharedState(RGSSThreadData *threadData);
~SharedState();
2013-09-01 14:27:21 +00:00
SharedStatePrivate *p;
2013-09-01 14:27:21 +00:00
};
#endif // SHAREDSTATE_H