From dd25323cdde65fdf7c061a5a98e048ea2a4f7655 Mon Sep 17 00:00:00 2001 From: Jonas Kulla Date: Sun, 6 Oct 2013 09:55:27 +0200 Subject: [PATCH] Ifdef out more RGSS2 functionality --- binding-mri/tilemap-binding.cpp | 15 ++- binding-mruby/tilemap-binding.cpp | 13 ++- src/graphics.cpp | 173 +++++++++++++++++------------- src/graphics.h | 10 +- src/tilemap.cpp | 4 + src/tilemap.h | 4 + src/viewport.cpp | 4 + src/viewport.h | 2 + 8 files changed, 143 insertions(+), 82 deletions(-) diff --git a/binding-mri/tilemap-binding.cpp b/binding-mri/tilemap-binding.cpp index 8a97f3f..2b5ad38 100644 --- a/binding-mri/tilemap-binding.cpp +++ b/binding-mri/tilemap-binding.cpp @@ -117,7 +117,17 @@ RB_METHOD(tilemapUpdate) #define DISP_CLASS_NAME "tilemap" -DEF_PROP_OBJ(Tilemap, Viewport, Viewport, "viewport") +RB_METHOD(tilemapGetViewport) +{ + RB_UNUSED_PARAM; + + Tilemap *t = getPrivateData(self); + + checkDisposed(t, DISP_CLASS_NAME); + + return rb_iv_get(self, "viewport"); +} + DEF_PROP_OBJ(Tilemap, Bitmap, Tileset, "tileset") DEF_PROP_OBJ(Tilemap, Table, MapData, "map_data") DEF_PROP_OBJ(Tilemap, Table, FlashData, "flash_data") @@ -148,7 +158,8 @@ tilemapBindingInit() _rb_define_method(klass, "autotiles", tilemapGetAutotiles); _rb_define_method(klass, "update", tilemapUpdate); - INIT_PROP_BIND( Tilemap, Viewport, "viewport" ); + _rb_define_method(klass, "viewport", tilemapGetViewport); + INIT_PROP_BIND( Tilemap, Tileset, "tileset" ); INIT_PROP_BIND( Tilemap, MapData, "map_data" ); INIT_PROP_BIND( Tilemap, FlashData, "flash_data" ); diff --git a/binding-mruby/tilemap-binding.cpp b/binding-mruby/tilemap-binding.cpp index 100cc70..e547a88 100644 --- a/binding-mruby/tilemap-binding.cpp +++ b/binding-mruby/tilemap-binding.cpp @@ -120,7 +120,15 @@ MRB_METHOD(tilemapUpdate) #define DISP_CLASS_NAME "tilemap" -DEF_PROP_OBJ(Tilemap, Viewport, Viewport, CSviewport) +MRB_METHOD(tilemapGetViewport) +{ + Tilemap *t = getPrivateData(mrb, self); + + checkDisposed(mrb, t, DISP_CLASS_NAME); + + return getProperty(mrb, self, CSviewport); +} + DEF_PROP_OBJ(Tilemap, Bitmap, Tileset, CStileset) DEF_PROP_OBJ(Tilemap, Table, MapData, CSmap_data) DEF_PROP_OBJ(Tilemap, Table, FlashData, CSflash_data) @@ -148,7 +156,8 @@ tilemapBindingInit(mrb_state *mrb) mrb_define_method(mrb, klass, "autotiles", tilemapGetAutotiles, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "update", tilemapUpdate, MRB_ARGS_NONE()); - INIT_PROP_BIND( Tilemap, Viewport, "viewport" ); + mrb_define_method(mrb, klass, "viewport", tilemapGetViewport, MRB_ARGS_NONE()); + INIT_PROP_BIND( Tilemap, Tileset, "tileset" ); INIT_PROP_BIND( Tilemap, MapData, "map_data" ); INIT_PROP_BIND( Tilemap, FlashData, "flash_data" ); diff --git a/src/graphics.cpp b/src/graphics.cpp index b4f219a..8f5dc53 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -130,11 +130,14 @@ class ScreenScene : public Scene public: ScreenScene(int width, int height) : pp(width, height), - brightEffect(false), actW(width), actH(height) { updateReso(width, height); + +#ifdef RGSS2 + brightEffect = false; brightnessQuad.setColor(Vec4()); +#endif } void composite() @@ -152,6 +155,7 @@ public: Scene::composite(); +#ifdef RGSS2 if (brightEffect) { SimpleColorShader &shader = gState->simpleColorShader(); @@ -161,6 +165,7 @@ public: brightnessQuad.draw(); } +#endif pp.finishRender(); } @@ -186,12 +191,14 @@ public: shader.unbind(); } +#ifdef RGSS2 void setBrightness(float norm) { brightnessQuad.setColor(Vec4(0, 0, 0, 1.0 - norm)); brightEffect = norm < 1.0; } +#endif void updateReso(int width, int height) { @@ -199,7 +206,10 @@ public: geometry.rect.h = height; screenQuad.setTexPosRect(geometry.rect, geometry.rect); + +#ifdef RGSS2 brightnessQuad.setTexPosRect(geometry.rect, geometry.rect); +#endif notifyGeometryChange(); } @@ -224,9 +234,12 @@ public: private: PingPong pp; Quad screenQuad; + int actW, actH; + +#ifdef RGSS2 Quad brightnessQuad; bool brightEffect; - int actW, actH; +#endif }; struct FPSLimiter @@ -284,7 +297,10 @@ struct GraphicsPrivate int frameRate; int frameCount; + +#ifdef RGSS2 int brightness; +#endif FPSLimiter fpsLimiter; @@ -304,7 +320,9 @@ struct GraphicsPrivate screen(scRes.x, scRes.y), frameRate(40), frameCount(0), +#ifdef RGSS2 brightness(255), +#endif fpsLimiter(frameRate), frozen(false) { @@ -457,58 +475,6 @@ void Graphics::update() // p->cpuTimer->startTiming(); } -void Graphics::wait(int duration) -{ - for (int i = 0; i < duration; ++i) - { - gState->checkShutdown(); - p->checkResize(); - p->redrawScreen(); - } -} - -void Graphics::fadeout(int duration) -{ - if (p->frozen) - FBO::bind(p->frozenScene.fbo, FBO::Read); - - for (int i = duration-1; i > -1; --i) - { - setBrightness((255.0 / duration) * i); - - if (p->frozen) - { - p->blitToScreen(); - p->swapGLBuffer(); - } - else - { - update(); - } - } -} - -void Graphics::fadein(int duration) -{ - if (p->frozen) - FBO::bind(p->frozenScene.fbo, FBO::Read); - - for (int i = 0; i < duration; ++i) - { - setBrightness((255.0 / duration) * i); - - if (p->frozen) - { - p->blitToScreen(); - p->swapGLBuffer(); - } - else - { - update(); - } - } -} - void Graphics::freeze() { p->frozen = true; @@ -527,7 +493,9 @@ void Graphics::transition(int duration, vague = clamp(vague, 0, 512); Bitmap *transMap = filename ? new Bitmap(filename) : 0; +#ifdef RGSS2 setBrightness(255); +#endif /* Capture new scene */ p->compositeToBuffer(p->currentScene.fbo); @@ -594,6 +562,81 @@ void Graphics::transition(int duration, p->frozen = false; } +void Graphics::frameReset() +{ + +} + +#undef RET_IF_DISP +#define RET_IF_DISP(x) + +#undef CHK_DISP +#define CHK_DISP + +DEF_ATTR_RD_SIMPLE(Graphics, FrameRate, int, p->frameRate) + +DEF_ATTR_SIMPLE(Graphics, FrameCount, int, p->frameCount) + +void Graphics::setFrameRate(int value) +{ + p->frameRate = clamp(value, 10, 120); + p->fpsLimiter.setDesiredFPS(p->frameRate); +} + +#ifdef RGSS2 + +void Graphics::wait(int duration) +{ + for (int i = 0; i < duration; ++i) + { + gState->checkShutdown(); + p->checkResize(); + p->redrawScreen(); + } +} + +void Graphics::fadeout(int duration) +{ + if (p->frozen) + FBO::bind(p->frozenScene.fbo, FBO::Read); + + for (int i = duration-1; i > -1; --i) + { + setBrightness((255.0 / duration) * i); + + if (p->frozen) + { + p->blitToScreen(); + p->swapGLBuffer(); + } + else + { + update(); + } + } +} + +void Graphics::fadein(int duration) +{ + if (p->frozen) + FBO::bind(p->frozenScene.fbo, FBO::Read); + + for (int i = 0; i < duration; ++i) + { + setBrightness((255.0 / duration) * i); + + if (p->frozen) + { + p->blitToScreen(); + p->swapGLBuffer(); + } + else + { + update(); + } + } +} + Bitmap *Graphics::snapToBitmap() { Bitmap *bitmap = new Bitmap(width(), height()); @@ -603,11 +646,6 @@ Bitmap *Graphics::snapToBitmap() return bitmap; } -void Graphics::frameReset() -{ - -} - int Graphics::width() const { return p->scRes.x; @@ -648,23 +686,8 @@ void Graphics::resizeScreen(int width, int height) p->updateScreenResoRatio(); } -#undef RET_IF_DISP -#define RET_IF_DISP(x) - -#undef CHK_DISP -#define CHK_DISP - -DEF_ATTR_RD_SIMPLE(Graphics, FrameRate, int, p->frameRate) DEF_ATTR_RD_SIMPLE(Graphics, Brightness, int, p->brightness) -DEF_ATTR_SIMPLE(Graphics, FrameCount, int, p->frameCount) - -void Graphics::setFrameRate(int value) -{ - p->frameRate = clamp(value, 10, 120); - p->fpsLimiter.setDesiredFPS(p->frameRate); -} - void Graphics::setBrightness(int value) { value = clamp(value, 0, 255); @@ -676,6 +699,8 @@ void Graphics::setBrightness(int value) p->screen.setBrightness(value / 255.0); } +#endif + bool Graphics::getFullscreen() const { return p->threadData->ethread->getFullscreen(); diff --git a/src/graphics.h b/src/graphics.h index eb6de60..f8b3721 100644 --- a/src/graphics.h +++ b/src/graphics.h @@ -40,22 +40,24 @@ public: void transition(int duration = 8, const char *filename = 0, int vague = 40); + void frameReset(); + DECL_ATTR( FrameRate, int ) + DECL_ATTR( FrameCount, int ) + +#ifdef RGSS2 void wait(int duration); void fadeout(int duration); void fadein(int duration); Bitmap *snapToBitmap(); - void frameReset(); - int width() const; int height() const; void resizeScreen(int width, int height); - DECL_ATTR( FrameRate, int ) - DECL_ATTR( FrameCount, int ) DECL_ATTR( Brightness, int ) +#endif /* Non-standard extension */ DECL_ATTR( Fullscreen, bool ) diff --git a/src/tilemap.cpp b/src/tilemap.cpp index ae2000e..700e998 100644 --- a/src/tilemap.cpp +++ b/src/tilemap.cpp @@ -1265,6 +1265,8 @@ DEF_ATTR_RD_SIMPLE(Tilemap, Visible, bool, p->visible) DEF_ATTR_RD_SIMPLE(Tilemap, OX, int, p->offset.x) DEF_ATTR_RD_SIMPLE(Tilemap, OY, int, p->offset.y) +#ifdef RGSS2 + void Tilemap::setViewport(Viewport *value) { GUARD_DISPOSED @@ -1283,6 +1285,8 @@ void Tilemap::setViewport(Viewport *value) p->elem.scanrows[i]->setViewport(value); } +#endif + void Tilemap::setTileset(Bitmap *value) { GUARD_DISPOSED diff --git a/src/tilemap.h b/src/tilemap.h index 7a16094..fc9624e 100644 --- a/src/tilemap.h +++ b/src/tilemap.h @@ -53,7 +53,11 @@ public: Autotiles &getAutotiles() const; +#ifndef RGSS2 + Viewport *getViewport() const; +#else DECL_ATTR( Viewport, Viewport* ) +#endif DECL_ATTR( Tileset, Bitmap* ) DECL_ATTR( MapData, Table* ) DECL_ATTR( FlashData, Table* ) diff --git a/src/viewport.cpp b/src/viewport.cpp index 04b3416..0785429 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -240,6 +240,8 @@ Viewport *ViewportElement::getViewport() const return m_viewport; } +#ifdef RGSS2 + void ViewportElement::setViewport(Viewport *viewport) { m_viewport = viewport; @@ -247,3 +249,5 @@ void ViewportElement::setViewport(Viewport *viewport) onViewportChange(); onGeometryChange(scene->getGeometry()); } + +#endif diff --git a/src/viewport.h b/src/viewport.h index 54e0141..5bcb898 100644 --- a/src/viewport.h +++ b/src/viewport.h @@ -69,7 +69,9 @@ public: Viewport *getViewport() const; +#ifdef RGSS2 void setViewport(Viewport *viewport = 0); +#endif protected: virtual void onViewportChange() {}