-//Draw the tiled menu background
-void drawMenuBackground(video::IVideoDriver* driver) {
- core::dimension2d<u32> screensize = driver->getScreenSize();
-
- std::string path = getTexturePath("menubg.png");
- if (path[0]) {
- static const video::ITexture *bgtexture =
- driver->getTexture(path.c_str());
-
- if (bgtexture) {
- s32 scaledsize = 128;
-
- // The important difference between destsize and screensize is
- // that destsize is rounded to whole scaled pixels.
- // These formulas use component-wise multiplication and division of v2u32.
- v2u32 texturesize = bgtexture->getSize();
- v2u32 sourcesize = texturesize * screensize / scaledsize + v2u32(1,1);
- v2u32 destsize = scaledsize * sourcesize / texturesize;
-
- // Default texture wrapping mode in Irrlicht is ETC_REPEAT.
- driver->draw2DImage(bgtexture,
- core::rect<s32>(0, 0, destsize.X, destsize.Y),
- core::rect<s32>(0, 0, sourcesize.X, sourcesize.Y),
- NULL, NULL, true);
- }
- }
-}
-
-//Draw the footer at the bottom of the window
-void drawMenuFooter(video::IVideoDriver* driver, bool clouds) {
- core::dimension2d<u32> screensize = driver->getScreenSize();
- std::string path = getTexturePath(clouds ?
- "menufooter_clouds.png" : "menufooter.png");
- if (path[0]) {
- static const video::ITexture *footertexture =
- driver->getTexture(path.c_str());
-
- if (footertexture) {
- f32 mult = (((f32)screensize.Width)) /
- ((f32)footertexture->getOriginalSize().Width);
-
- v2s32 footersize(((f32)footertexture->getOriginalSize().Width) * mult,
- ((f32)footertexture->getOriginalSize().Height) * mult);
-
- // Don't draw the footer if there isn't enough room
- s32 free_space = (((s32)screensize.Height)-320)/2;
- if (free_space > footersize.Y) {
- core::rect<s32> rect(0,0,footersize.X,footersize.Y);
- rect += v2s32(screensize.Width/2,screensize.Height-footersize.Y);
- rect -= v2s32(footersize.X/2, 0);
-
- driver->draw2DImage(footertexture, rect,
- core::rect<s32>(core::position2d<s32>(0,0),
- core::dimension2di(footertexture->getSize())),
- NULL, NULL, true);
- }
- }
- }
-}
-
-// Draw the Header over the main menu
-void drawMenuHeader(video::IVideoDriver* driver) {
- core::dimension2d<u32> screensize = driver->getScreenSize();
-
- std::string path = getTexturePath("menuheader.png");
- if (path[0]) {
- static const video::ITexture *splashtexture =
- driver->getTexture(path.c_str());
-
- if(splashtexture) {
- f32 mult = (((f32)screensize.Width / 2)) /
- ((f32)splashtexture->getOriginalSize().Width);
-
- v2s32 splashsize(((f32)splashtexture->getOriginalSize().Width) * mult,
- ((f32)splashtexture->getOriginalSize().Height) * mult);
-
- // Don't draw the header is there isn't enough room
- s32 free_space = (((s32)screensize.Height)-320)/2;
- if (free_space > splashsize.Y) {
- core::rect<s32> splashrect(0, 0, splashsize.X, splashsize.Y);
- splashrect += v2s32((screensize.Width/2)-(splashsize.X/2),
- ((free_space/2)-splashsize.Y/2)+10);
-
- video::SColor bgcolor(255,50,50,50);
-
- driver->draw2DImage(splashtexture, splashrect,
- core::rect<s32>(core::position2d<s32>(0,0),
- core::dimension2di(splashtexture->getSize())),
- NULL, NULL, true);
- }
- }
- }
-}
-
-// Draw the Splash over the clouds and under the main menu
-void drawMenuSplash(video::IVideoDriver* driver) {
- core::dimension2d<u32> screensize = driver->getScreenSize();
- std::string path = getTexturePath("menusplash.png");
- if (path[0]) {
- static const video::ITexture *splashtexture =
- driver->getTexture(path.c_str());
-
- if(splashtexture) {
- core::rect<s32> splashrect(0, 0, screensize.Width, screensize.Height);
-
- video::SColor bgcolor(255,50,50,50);
-
- driver->draw2DImage(splashtexture, splashrect,
- core::rect<s32>(core::position2d<s32>(0,0),
- core::dimension2di(splashtexture->getSize())),
- NULL, NULL, true);
- }
- }
-}
-
-#endif