mkxp-freebird/src/globalstate.h

136 lines
3.0 KiB
C
Raw Normal View History

2013-09-01 14:27:21 +00:00
/*
** globalstate.h
**
** 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 GLOBALSTATE_H
#define GLOBALSTATE_H
#include "sigc++/signal.h"
#define gState GlobalState::instance
#define glState gState->_glState()
struct GlobalStatePrivate;
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;
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 GlobalIBO;
struct Config;
struct Vec2i;
2013-09-01 14:27:21 +00:00
struct GlobalState
{
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();
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();
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 GlobalState *instance;
static void initInstance(RGSSThreadData *threadData);
static void finiInstance();
private:
GlobalState(RGSSThreadData *threadData);
~GlobalState();
GlobalStatePrivate *p;
};
#endif // GLOBALSTATE_H