Sry for my english. I mean the programm quits itself. No here is the Code where i Init everything.
Game.cpp
Code: Select all
#include "Game.h"
IrrlichtDevice* g_pDevice;
IVideoDriver* g_pDriver;
ISceneManager* g_pScene;
IGUIEnvironment* g_pGUI;
CGame* g_Game;
class InputReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if(g_Game->GetGameState() == GS_MAINMENU &&
event.EventType == EET_KEY_INPUT_EVENT &&
!event.KeyInput.PressedDown)
{
switch(event.KeyInput.Key)
{
case KEY_KEY_W:
{
if(g_Game->m_MainMenu->m_ActiveBtn == SB_START)
{
g_Game->m_MainMenu->m_ActiveBtn = SB_END;
}
if(g_Game->m_MainMenu->m_ActiveBtn == SB_END)
{
g_Game->m_MainMenu->m_ActiveBtn = SB_START;
}
}
return true;
}
}
return false;
}
};
int CGame::Move()
{
return 0;
}
int CGame::Render()
{
if(g_pDevice->isWindowActive())
{
g_pDriver->beginScene(true, true, SColor(0, 255,255,255));
m_MainMenu->Render();
g_pDriver->endScene();
}
return 0;
}
void IrrlichtStartUp()
{
InputReceiver Receiver;
g_pDevice = createDevice(EDT_DIRECTX8, dimension2d<s32>(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)), 16, true, false, &Receiver);
g_pDevice->setWindowCaption(L"Blobattack 4");
g_pDriver = g_pDevice->getVideoDriver();
g_pScene = g_pDevice->getSceneManager();
g_pGUI = g_pDevice->getGUIEnvironment();
}
int main()
{
g_Game = new CGame;
g_Game->m_MainMenu = new CMainMenu;
IrrlichtStartUp();
while(g_pDevice->run())
{
g_Game->Render();
}
g_pDevice->drop();
delete g_Game;
delete g_Game->m_MainMenu;
return 0;
}
Game.h
Code: Select all
#include <Irrlicht.h>
#include <Windows.h>
#include "MainMenu.h"
using namespace irr;
using namespace core;
using namespace scene;
using namespace io;
using namespace gui;
using namespace video;
extern IrrlichtDevice* g_pDevice;
extern IVideoDriver* g_pDriver;
extern ISceneManager* g_pScene;
extern IGUIEnvironment* g_pGUI;
enum EGameState
{
GS_NONE = 0,
GS_INTRO = 1,
GS_MAINMENU = 2,
GS_GAME = 3
};
class CGame
{
private:
EGameState m_GameState;
public:
int Render();
int Move();
EGameState GetGameState() { return m_GameState; }
CMainMenu* m_MainMenu;
};
MainMenu.h
Code: Select all
using namespace irr;
using namespace core;
using namespace scene;
using namespace io;
using namespace gui;
using namespace video;
enum SelectedButton
{
SB_START,
SB_END
};
typedef SelectedButton SButton;
class CMainMenu
{
private:
ITexture* m_StartTex;
ITexture* m_EndTex;
ITexture* m_StartSel;
ITexture* m_EndSel;
public:
int Render();
int Move();
void Set();
SButton m_ActiveBtn;
};
MainMenu.cpp
Code: Select all
#include "Game.h"
int CMainMenu::Render()
{
m_StartTex = g_pDriver->getTexture("button.bmp");
m_EndTex = g_pDriver->getTexture("end.bmp");
m_StartSel = g_pDriver->getTexture("StartSel.bmp");
g_pDriver->draw2DImage(m_StartTex, position2d<s32>(200, 200), rect<s32>(0, 0, 152, 32), 0, SColor(255,255,255,255), 0);
g_pDriver->draw2DImage(m_EndTex, position2d<s32>(200, 250), rect<s32>(0, 0, 152, 32), 0, SColor(255,255,255,255), 0);
if(m_ActiveBtn == SB_START)
{
g_pDriver->draw2DImage(m_StartSel, position2d<s32>(200, 200), rect<s32>(0, 0, 152, 32), 0, SColor(255,255,255,255), 0);
}
if(m_ActiveBtn == SB_END)
{
g_pDriver->draw2DImage(m_StartSel, position2d<s32>(200, 250), rect<s32>(0, 0, 152, 32), 0, SColor(255,255,255,255), 0);
}
return 0;
}
int CMainMenu::Move()
{
return 0;
}