Commit 39fe84dc authored by Gerhard Stein's avatar Gerhard Stein

Clenaups and Background Bitmap in Galaxy is shown correctly!

parent b5d571bd
......@@ -98,8 +98,10 @@ EngineType CBehaviorEngine::getEngine()
{
if( m_Episode >= 4 && m_Episode <= 6 )
return ENGINE_GALAXY;
else
else if(m_Episode >= 1 && m_Episode <= 3)
return ENGINE_VORTICON;
else
return ENGINE_LAUNCHER;
}
void CBehaviorEngine::setEpisode(size_t Episode)
......
......@@ -38,6 +38,7 @@
*/
enum EngineType
{
ENGINE_LAUNCHER,
ENGINE_VORTICON,
ENGINE_GALAXY
};
......
......@@ -8,7 +8,6 @@
#ifndef CGAMELAUNCHER_H_
#define CGAMELAUNCHER_H_
#include "dialog/CDialog.h"
#include "fileio/CExeFile.h"
#include "gui/CGUIDialog.h"
#include "SmartPointer.h"
......
......@@ -13,12 +13,10 @@
#include "core/CGameControl.h"
CAudioSettings::CAudioSettings(Uint8 dlg_theme) :
CBaseMenu(dlg_theme, CRect<float>(0.1f, 0.24f, 0.8f, 0.4f) )
CAudioSettings::CAudioSettings() :
CBaseMenu(CRect<float>(0.1f, 0.24f, 0.8f, 0.4f) )
{
mpMenuDialog->setBackground( CGUIDialog::VORTICON );
mpRate = new CGUIComboSelection( "rate",
g_pSound->getAvailableRateList(),
CGUIComboSelection::VORTICON );
......
......@@ -22,7 +22,7 @@
class CAudioSettings : public CBaseMenu
{
public:
CAudioSettings(Uint8 dlg_theme);
CAudioSettings();
void init();
......
......@@ -9,7 +9,7 @@
#include "CBaseMenu.h"
#include "common/Menu/CMenuController.h"
CBaseMenu::CBaseMenu(const Uint8 dlgTheme, const CRect<float>& rect) :
CBaseMenu::CBaseMenu(const CRect<float>& rect) :
mpMenuDialog( new CGUIDialog(rect) )
{
const char closeChar = 0x1F;
......
......@@ -10,18 +10,11 @@
const int NO_SELECTION = -1;
#include "dialog/CDialog.h"
#include "SmartPointer.h"
#include "gui/CGUIDialog.h"
#include "gui/CGUIButton.h"
#include <list>
// Active means, when the player is playing, PASSIVE when the Player is not playing
enum menumodes
{
ACTIVE, PASSIVE
}; // TODO: Remove this!
class CBaseMenu
{
public:
......@@ -33,7 +26,7 @@ public:
};
CBaseMenu( const Uint8 dlgTheme, const CRect<float>& rect );
CBaseMenu( const CRect<float>& rect );
virtual ~CBaseMenu() { };
......
......@@ -9,13 +9,11 @@
#include "common/CSettings.h"
#include "StringUtils.h"
CCameraSettings::CCameraSettings(Uint8 dlg_theme):
CBaseMenu(dlg_theme, CRect<float>(0.15f, 0.24f, 0.7f, 0.4f) ),
CCameraSettings::CCameraSettings():
CBaseMenu(CRect<float>(0.15f, 0.24f, 0.7f, 0.4f) ),
m_CameraBounds(g_pVideoDriver->getCameraBounds())
{
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
mpLeftAdjust = new CGUINumberControl( "Left",
50, 270, 10, 60,
CGUINumberControl::VORTICON );
......
......@@ -16,7 +16,7 @@
class CCameraSettings : public CBaseMenu
{
public:
CCameraSettings(Uint8 dlg_theme);
CCameraSettings();
void init();
......
......@@ -83,15 +83,10 @@ public:
CControlsettings::CControlsettings( const Uint8 dlgTheme,
const int selectedPlayer ) :
CBaseMenu( dlgTheme, CRect<float>(0.01f, (1.0f-(MAX_COMMANDS+2)*0.06f)*0.5f, 0.98f,(MAX_COMMANDS+2)*0.06f) ),
CControlsettings::CControlsettings( const int selectedPlayer ) :
CBaseMenu( CRect<float>(0.01f, (1.0f-(MAX_COMMANDS+2)*0.06f)*0.5f, 0.98f,(MAX_COMMANDS+2)*0.06f) ),
mSelectedPlayer(selectedPlayer)
{
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
}
{}
void CControlsettings::init()
{
......
......@@ -19,7 +19,7 @@
class CControlsettings : public CBaseMenu
{
public:
CControlsettings(const Uint8 dlgTheme, const int selectedPlayer);
CControlsettings(const int selectedPlayer);
void init();
......@@ -37,10 +37,9 @@ private:
// Create the Control-Menu for the indicated Player
struct OpenControlMenuEvent : CEvent
{
OpenControlMenuEvent(const Uint8 dlgTheme, const int option) :
mDlgTheme(dlgTheme), mNumPlayers(option) {};
OpenControlMenuEvent(const int option) :
mNumPlayers(option) {};
Uint8 mDlgTheme;
int mNumPlayers;
std::list<CGUIButton*> mpButtonList;
};
......@@ -49,16 +48,15 @@ class CPlayerControl : public CBaseMenu
{
public:
CPlayerControl(const Uint8 dlgTheme) :
CBaseMenu( dlgTheme, CRect<float>(0.25f, 0.35f, 0.5f, 0.3f) )
CPlayerControl() :
CBaseMenu( CRect<float>(0.25f, 0.35f, 0.5f, 0.3f) )
{
mpMenuDialog->setBackground( CGUIDialog::VORTICON );
for( int i = 1 ; i <= MAX_PLAYERS ; i++ )
{
const std::string playerStr = "Player " + itoa(i);
mpButtonList.push_back( new CGUIButton( playerStr,
new OpenControlMenuEvent(dlgTheme, i),
new OpenControlMenuEvent(i),
CGUIButton::VORTICON ) );
mpMenuDialog->addControl( mpButtonList.back() );
}
......
......@@ -15,13 +15,11 @@
#include "engine/infoscenes/CPreviews.h"
CHelpMenu::CHelpMenu( const Uint8 dlgTheme ) :
CBaseMenu( dlgTheme, CRect<float>(0.25f, 0.24f, 0.5f, 0.5f) )
CHelpMenu::CHelpMenu() :
CBaseMenu( CRect<float>(0.25f, 0.24f, 0.5f, 0.5f) )
{
// Create the Menu Dialog and entries
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
mpMenuDialog->addControl(new CGUIButton( "The Menu",
new StartInfoSceneEvent( new CHelp("Menu") ),
CGUIButton::VORTICON ) );
......
......@@ -13,7 +13,7 @@
class CHelpMenu : public CBaseMenu
{
public:
CHelpMenu(const Uint8 dlgTheme);
CHelpMenu();
};
#endif /* CHELPMENU_H_ */
......@@ -28,12 +28,10 @@ struct LoadGameSlotFunctorEvent : public InvokeFunctorEvent
};
CLoadMenu::CLoadMenu(Uint8 dlg_theme) :
CBaseMenu(dlg_theme, CRect<float>(0.1f, 0.0f, 0.8f, 1.0f) )
CLoadMenu::CLoadMenu() :
CBaseMenu( CRect<float>(0.1f, 0.0f, 0.8f, 1.0f) )
{
mpMenuDialog->setBackground( CGUIDialog::VORTICON );
// Load the state-file list
std::vector<std::string> StateFileList = gpSaveGameController->getSlotList();
......
......@@ -14,7 +14,7 @@
class CLoadMenu : public CBaseMenu
{
public:
CLoadMenu(Uint8 dlg_theme);
CLoadMenu();
//void init();
......
......@@ -17,30 +17,26 @@
#include "core/mode/CGameMode.h"
CMainMenu::CMainMenu( const Uint8 dlgTheme, const bool openedGamePlay ) :
CBaseMenu( dlgTheme, CRect<float>(0.25f, 0.24f, 0.5f, 0.5f) )
CMainMenu::CMainMenu( const bool openedGamePlay ) :
CBaseMenu( CRect<float>(0.25f, 0.24f, 0.5f, 0.5f) )
{
// Create the Menu Dialog and entries
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
CGUIButton *button = new CGUIButton( "New Game", new StartGameplayEvent(), CGUIButton::VORTICON );
mpMenuDialog->addControl( button );
CGUIButton *loadButton = new CGUIButton( "Load",
new OpenMenuEvent( new CLoadMenu(dlgTheme) ),
new OpenMenuEvent( new CLoadMenu() ),
CGUIButton::VORTICON );
mpMenuDialog->addControl( loadButton );
CGUIButton *saveButton = new CGUIButton( "Save",
new OpenMenuEvent( new CSaveMenu(dlgTheme) ),
new OpenMenuEvent( new CSaveMenu() ),
CGUIButton::VORTICON );
mpMenuDialog->addControl( saveButton );
saveButton->mEnabled = openedGamePlay;
mpMenuDialog->addControl(new CGUIButton( "Settings",
new OpenMenuEvent( new CSettingsMenu(dlgTheme) ),
new OpenMenuEvent( new CSettingsMenu() ),
CGUIButton::VORTICON ) );
mpMenuDialog->addControl(new CGUIButton( "High Scores",
......@@ -48,7 +44,7 @@ CBaseMenu( dlgTheme, CRect<float>(0.25f, 0.24f, 0.5f, 0.5f) )
CGUIButton::VORTICON ) );
mpMenuDialog->addControl(new CGUIButton( "Info",
new OpenMenuEvent( new CHelpMenu(dlgTheme) ),
new OpenMenuEvent( new CHelpMenu() ),
CGUIButton::VORTICON ) );
mpMenuDialog->addControl(new CGUIButton( "Quit", new GMQuit(), CGUIButton::VORTICON ) );
......
......@@ -16,7 +16,7 @@
class CMainMenu : public CBaseMenu
{
public:
CMainMenu(const Uint8 dlgTheme, const bool openedGamePlay);
CMainMenu(const bool openedGamePlay);
};
......
......@@ -23,7 +23,7 @@ void CMenuController::process()
{
if( mMenuStack.empty() ) // If no menu is open, open the main menu
{
EventContainer.add( new OpenMenuEvent( new CMainMenu(DLG_THEME_VORTICON, mOpenedGamePlay) ) );
EventContainer.add( new OpenMenuEvent( new CMainMenu(mOpenedGamePlay) ) );
}
else // Close the menu which is open. Might go back if it is a submenu
{
......@@ -83,8 +83,7 @@ void CMenuController::process()
EventContainer.pop_Event();
EventContainer.add( new OpenMenuEvent(
new CControlsettings(ctrlMenu->mDlgTheme,
ctrlMenu->mNumPlayers) ) );
new CControlsettings(ctrlMenu->mNumPlayers) ) );
}
}
......
......@@ -11,13 +11,11 @@
#include "common/CSettings.h"
COptions::COptions( const Uint8 dlg_theme ) :
CBaseMenu( dlg_theme, CRect<float>(0.1f, 0.24f, 0.8f, NUM_OPTIONS*0.05f) ),
COptions::COptions() :
CBaseMenu( CRect<float>(0.1f, 0.24f, 0.8f, NUM_OPTIONS*0.05f) ),
mpOption(g_pBehaviorEngine->m_option)
{
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
for( int i = 0 ; i < NUM_OPTIONS ; i++ )
{
mpOptionList.push_back( new CGUISwitch(mpOption[i].menuname,
......
......@@ -15,7 +15,7 @@
class COptions : public CBaseMenu {
public:
COptions( const Uint8 dlg_theme );
COptions();
void init();
......
......@@ -74,11 +74,9 @@ public:
}
};
CProfilesMenu::CProfilesMenu( const Uint8 dlgTheme ) :
CBaseMenu( dlgTheme, CRect<float>(0.25f, 0.4f, 0.5f, 0.2f) )
CProfilesMenu::CProfilesMenu() :
CBaseMenu( CRect<float>(0.25f, 0.4f, 0.5f, 0.2f) )
{
mpMenuDialog->setBackground( CGUIDialog::VORTICON );
mpMenuDialog->addControl(new CGUIButton( "Classic mode",
new SetDefaultClassic(),
CGUIButton::VORTICON ) );
......
......@@ -14,7 +14,7 @@
class CProfilesMenu : public CBaseMenu
{
public:
CProfilesMenu( const Uint8 dlgTheme );
CProfilesMenu();
};
#endif /* CPROFILESMENU_H_ */
......@@ -14,14 +14,12 @@
#include "common/CBehaviorEngine.h"
#include "common/Menu/CMenuController.h"
CSaveMenu::CSaveMenu(Uint8 dlg_theme) :
CBaseMenu(dlg_theme, CRect<float>(0.1f, 0.0f, 0.8f, 1.0f) ),
CSaveMenu::CSaveMenu() :
CBaseMenu(CRect<float>(0.1f, 0.0f, 0.8f, 1.0f) ),
mp_OverwriteMenu(NULL),
m_overwrite(false)
{
mpMenuDialog->setBackground( CGUIDialog::VORTICON );
std::string text;
// Load the state-file list
......
......@@ -14,7 +14,7 @@
class CSaveMenu : public CBaseMenu
{
public:
CSaveMenu(Uint8 dlg_theme);
CSaveMenu();
void processSpecific(){};
void sendEvent(SmartPointer<CEvent> command);
......
......@@ -20,31 +20,29 @@
#define SAFE_DELETE(x) if(x) { delete x; x = NULL; }
CSettingsMenu::CSettingsMenu( const Uint8 dlgtheme ) :
CBaseMenu( dlgtheme, CRect<float>(0.25f, 0.24f, 0.5f, 0.32f) )
CSettingsMenu::CSettingsMenu() :
CBaseMenu( CRect<float>(0.25f, 0.24f, 0.5f, 0.32f) )
{
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
const CGUIButton::Style buttonStyle = CGUIButton::VORTICON;
mpMenuDialog->addControl(new CGUIButton( "Video",
new OpenMenuEvent( new CVideoSettings(dlgtheme) ),
new OpenMenuEvent( new CVideoSettings() ),
buttonStyle ) );
mpMenuDialog->addControl(new CGUIButton( "Audio",
new OpenMenuEvent( new CAudioSettings(dlgtheme) ),
new OpenMenuEvent( new CAudioSettings() ),
buttonStyle ) );
mpMenuDialog->addControl(new CGUIButton( "Options",
new OpenMenuEvent( new COptions(dlgtheme) ),
new OpenMenuEvent( new COptions() ),
buttonStyle ) );
mpMenuDialog->addControl(new CGUIButton( "Controls",
new OpenMenuEvent( new CPlayerControl(dlgtheme) ),
new OpenMenuEvent( new CPlayerControl() ),
buttonStyle ) );
mpMenuDialog->addControl(new CGUIButton( "Profile",
new OpenMenuEvent( new CProfilesMenu(dlgtheme) ),
new OpenMenuEvent( new CProfilesMenu() ),
buttonStyle ) );
}
......
......@@ -16,7 +16,7 @@
class CSettingsMenu : public CBaseMenu
{
public:
CSettingsMenu( const Uint8 dlgtheme );
CSettingsMenu();
private:
};
......
......@@ -36,11 +36,9 @@ private:
};
CVideoSettings::CVideoSettings(const Uint8 dlg_theme) :
CBaseMenu(dlg_theme, CRect<float>(0.15f, 0.24f, 0.7f, 0.5f) )
CVideoSettings::CVideoSettings() :
CBaseMenu(CRect<float>(0.15f, 0.24f, 0.7f, 0.5f) )
{
mpMenuDialog->setBackground(CGUIDialog::VORTICON);
// Create the fps config selection control
std::list<std::string> List;
for( int i = 10 ; i <= 120 ; i += 10 )
......@@ -83,7 +81,7 @@ CBaseMenu(dlg_theme, CRect<float>(0.15f, 0.24f, 0.7f, 0.5f) )
mpCameraButton = new CGUIButton( "Camera",
new OpenMenuEvent( new CCameraSettings(dlg_theme) ),
new OpenMenuEvent( new CCameraSettings() ),
CGUIButton::VORTICON );
mpMenuDialog->addControl( mpCameraButton );
......
......@@ -11,7 +11,6 @@
#include "CBaseMenu.h"
#include "CCameraSettings.h"
#include "sdl/CVideoDriver.h"
#include "dialog/CDialog.h"
#include <SDL.h>
#include <string>
......@@ -19,9 +18,10 @@
#include "gui/CGUISwitch.h"
#include "gui/CGUINumberControl.h"
class CVideoSettings : public CBaseMenu {
class CVideoSettings : public CBaseMenu
{
public:
CVideoSettings(const Uint8 dlg_theme);
CVideoSettings();
void init();
......
......@@ -24,9 +24,9 @@ m_Difficulty(0)
void CGamePassiveMode::init()
{
// Create mp_PassiveMode object used for the screens while Player is not playing
/*if(m_Episode >= 4)
mp_Passive = new galaxy::CPassiveGalaxy();
else*/
if(m_Episode >= 4)
mpPassive = new galaxy::CPassiveGalaxy();
else
mpPassive = new vorticon::CPassiveVort();
if( m_Endgame == true )
......@@ -85,9 +85,6 @@ void CGamePassiveMode::process()
}
}
// TODO: Event are processed here! Needs some adaptation
// check here what the player chose from the menu over the passive mode.
// NOTE: Demo is not part of playgame anymore!!
if(mpPassive->getchooseGame())
......
This diff is collapsed.
/*
* CDialog.h
*
* Created on: 20.03.2009
* Author: gerstrong
*/
#ifndef CDIALOG_H_
#define CDIALOG_H_
#include <vector>
#include <SDL.h>
#include "CDlgObject.h"
#include "SmartPointer.h"
// INPUT_MODE_NOTHING == do nothing
// INPUT_MODE_TEXT == text input
// INPUT_MODE_INTEGER == integer input
// INPUT_MODE_UP_DOWN == up/down movement, enter selection
// INPUT_MODE_LEFT_RIGHT == left/right movement, enter selection
// INPUT_MODE_SLIDER == slider, up/down movement
// INPUT_MODE_OPTION == option, left/right selection, up/down movement
// INPUT_MODE_COUNTER == counter, up/down movment
enum inputmodes{
INPUT_MODE_NOTHING,
INPUT_MODE_TEXT,
INPUT_MODE_INTEGER,
INPUT_MODE_UP_DOWN,
INPUT_MODE_LEFT_RIGHT,
INPUT_MODE_SLIDER,
INPUT_MODE_OPTION,
INPUT_MODE_COUNTER
};
class CDialog {
public:
CDialog(Uint16 w, Uint16 h, char inputmode, Uint8 theme);
virtual ~CDialog();
void setSelection( const Uint8 selection );
void setInputMode( const char inputmode );
void addObject( Uint8 type, Uint16 x, Uint16 y,const std::string text="" );
void setObjectText( Uint8 ID, const std::string &text );
void setObjectType( Uint8 ID, Uint8 type );
void setFontID(Uint8 value);
bool getInputMode( const char inputmode );
int getSelection();
void processInput(int move = 0);
void draw();
bool m_nokeyletter;
bool m_noise;
int m_int;
int m_min;
int m_max;
int m_cursorpos;
size_t m_length;
char m_inputmode;
char m_curletter;
std::string m_name;
std::vector<CDlgObject*> m_dlgobject;
private:
void drawTwirl();
Uint16 m_x;
Uint16 m_y;
Uint16 m_w;
Uint16 m_h;
Uint8 m_theme;
Sint8 m_selected_ID;
int m_dlg_size;
Uint8 m_switch;
Uint8 m_scroll;
int m_blinkctr;
bool m_blink;
CDlgFrame *mp_Frame;
Uint8 m_alpha;
Uint8 m_Font_ID;
SmartPointer <SDL_Surface> mDialogSfc;
struct
{
Uint8 frame;
Uint8 timer;
Uint16 posy;
} m_twirl;
SDL_Rect framerect;
};
#endif /* CDIALOG_H_ */
......@@ -8,9 +8,7 @@
#include "CDlgFrame.h"
#include "graphics/CGfxEngine.h"
CDlgFrame::CDlgFrame(int x, int y, int w, int h, Uint8 theme, int tilewidth, int tileheight) {
CDlgFrame::CDlgFrame(int x, int y, int w, int h, int tilewidth, int tileheight) {
m_8x8tileheight = tilewidth;
m_8x8tilewidth = tileheight;
......@@ -19,7 +17,7 @@ CDlgFrame::CDlgFrame(int x, int y, int w, int h, Uint8 theme, int tilewidth, int
m_y = y;
resize(w, h);
m_theme = theme;
m_theme = g_pBehaviorEngine->getEngine();
}
......@@ -31,15 +29,11 @@ int CDlgFrame::TileWidth()
void CDlgFrame::draw(SDL_Surface *dst)
{
if( m_theme == DLG_THEME_VORTICON )
{
drawOldSchoolFrame(dst);
}
else if(m_theme == DLG_THEME_RED)
if( m_theme == ENGINE_VORTICON )
{
drawRedFrame(dst);
drawVorticonFrame(dst);
}
else if(m_theme == DLG_THEME_GALAXY)
else if(m_theme == ENGINE_GALAXY )
{
drawGalaxyFrame(dst);
}
......@@ -63,7 +57,7 @@ void CDlgFrame::setPos(const Uint32 x, const Uint32 y)
void CDlgFrame::drawOldSchoolFrame(SDL_Surface *dst)
void CDlgFrame::drawVorticonFrame(SDL_Surface *dst)
{
CFont &Font = g_pGfxEngine->getFont(1);
......@@ -140,36 +134,3 @@ void CDlgFrame::drawGalaxyFrame(SDL_Surface *dst)
}
void CDlgFrame::drawRedFrame(SDL_Surface *dst)
{
CFont &Font = g_pGfxEngine->getFont(1);
// first draw the blank rect
int i, j;
for(j = 0 ; j < m_h - m_8x8tileheight ; j+= m_8x8tileheight )
{
for(i = 0 ; i < m_w - m_8x8tilewidth ; i+= m_8x8tilewidth )
Font.drawCharacter(dst, 32, m_x + i, m_y + j); // 32 is a blank tile
Font.drawCharacter(dst, 32,m_x + m_w - m_8x8tilewidth, m_y + j); // for the last tile
}
// then the borders
for( i = m_8x8tilewidth ; i < m_w-m_8x8tilewidth ; i+= m_8x8tilewidth )
{
Font.drawCharacter(dst, 24, m_x + i, m_y); // 2 is one upper-border
Font.drawCharacter(dst, 29, m_x + i, m_y + m_h - m_8x8tileheight); // 7 is also the lower-border
}
Font.drawCharacter(dst, 24, m_x + m_w - m_8x8tilewidth, m_y); // for the last tile
Font.drawCharacter(dst, 24, m_x + m_w - m_8x8tilewidth, m_y + m_h - m_8x8tileheight); // for the last tile
for( j = m_8x8tileheight ; j < m_h-m_8x8tileheight ; j+= m_8x8tileheight )
{
Font.drawCharacter(dst, 26, m_x, m_y + j ); // 4 is one left-border
Font.drawCharacter(dst, 27, m_x + m_w - m_8x8tilewidth, m_y + j ); // 5 is the right-border
}
// At last the corners
Font.drawCharacter(dst, 23, m_x, m_y ); // Upper-Left corner
Font.drawCharacter(dst, 25, m_x + m_w - m_8x8tilewidth, m_y ); // Upper-Right corner
Font.drawCharacter(dst, 28, m_x, m_y + m_h - m_8x8tileheight ); // Lower-Left corner
Font.drawCharacter(dst, 30, m_x + m_w - m_8x8tilewidth, m_y + m_h - m_8x8tileheight ); // Lower-Right corner
}
......@@ -9,17 +9,12 @@
#define CDLGFRAME_H_
#include <SDL.h>
#include "common/CBehaviorEngine.h"
enum themes{
DLG_THEME_NONE,
DLG_THEME_VORTICON,
DLG_THEME_GALAXY,
DLG_THEME_RED
};
class CDlgFrame {
public:
CDlgFrame(int x, int y, int w, int h, Uint8 theme = DLG_THEME_VORTICON, int tilewidth = 8, int tileheight = 8);
CDlgFrame(int x, int y, int w, int h, int tilewidth = 8, int tileheight = 8);
void draw(SDL_Surface *dst);
......@@ -52,11 +47,10 @@ private:
int m_8x8tileheight;
int m_8x8tilewidth;
Uint8 m_theme;
EngineType m_theme;
void draw