Link between two part of a game

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
SilverGrom

Link between two part of a game

Post by SilverGrom »

How can i link two part of my game's code ? with Irrlicht the first part is my menu and when i click on the bouton "jouer" the second part , a map of quake III, must be load

my first part in code is :
#include <irrlicht.h>

using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#pragma comment(lib, "Irrlicht.lib")

IrrlichtDevice *device = 0;
s32 cnt = 0;
IGUIListBox* listbox = 0;

class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if (event.EventType == EET_GUI_EVENT)
{
s32 id = event.GUIEvent.Caller->getID();
IGUIEnvironment* env = device->getGUIEnvironment();

switch(event.GUIEvent.EventType)
{

case EGET_SCROLL_BAR_CHANGED:
if (id == 104)
{
s32 pos = ((IGUIScrollBar*)event.GUIEvent.Caller)->getPos();

for (s32 i=0; i<EGDC_COUNT ; ++i)
{
SColor col = env->getSkin()->getColor((EGUI_DEFAULT_COLOR)i);
col.setAlpha(pos);
env->getSkin()->setColor((EGUI_DEFAULT_COLOR)i, col);
}

}
break;

case EGET_BUTTON_CLICKED:

if (id == 101)
{
device->closeDevice();
return true;
}

if (id == 102)
{
listbox->addItem(L"Window created");
cnt += 30;
if (cnt > 200)
cnt = 0;

IGUIWindow* window = env->addWindow(
rect<s32>(100 + cnt, 100 + cnt, 300 + cnt, 200 + cnt), 0, -1, L"Test window");

env->addStaticText(L"Please close me", true,
rect<s32>(35,35,140,50), window);
return true;
}

if (id == 103)
{
listbox->addItem(L"File open");
env->addFileOpenDialog(L"Please choose a file.");
return true;
}

break;
}
}

return false;
}
};

int main()
{
MyEventReceiver receiver;

device = createDevice(video::DT_OPENGL,
core::dimension2d<s32>(512, 384), 16, false, false, &receiver);

device->setWindowCaption(L"Irrlicht Engine - User Inferface Demo");

video::IVideoDriver* driver = device->getVideoDriver();
IGUIEnvironment* env = device->getGUIEnvironment();


env->addButton(rect<s32>(10,210,100,240), 0, 101, L"Jouer");
env->addButton(rect<s32>(10,300,100,340), 0, 103, L"Quitter");

IGUISkin* skin = env->getSkin();
IGUIFont* font = env->getFont("../../media/fonthaettenschweiler.bmp");
if (font)
skin->setFont(font);


IGUIImage* img = env->addImage(rect<int>(10,10,206,100));
img->setImage(driver->getTexture("logo_phpBB.jpg"));
ISceneManager* smgr = device->getSceneManager();
// model
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

//texture du model
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
}
//camera
smgr->addCameraSceneNode(0, vector3df(0,10,-40), vector3df(0,0,0));

while(device->run() && driver)
if (device->isWindowActive())
{
driver->beginScene(true, true, SColor(0,100,100,100));
smgr->drawAll();
env->drawAll();

driver->endScene();
}

device->drop();

return 0;
}
The second part is :

#include <irrlicht.h>
#include <wchar.h>

using namespace irr;

#pragma comment(lib, "Irrlicht.lib")

scene::ICameraSceneNode* camera = 0;

class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if (camera)
return camera->OnEvent(event);

return false;
}
};

int main()
{


MyEventReceiver receiver;

IrrlichtDevice *device =
createDevice(video::DT_OPENGL,
core::dimension2d<s32>(640, 480), 16, false, false, &receiver);

video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();

device->getFileSystem()->addZipFileArchive("map-20kdm2.pk3");

scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
scene::ISceneNode* node = 0;

if (mesh)
node = smgr->addOctTreeSceneNode(mesh->getMesh(0));

if (node)
node->setPosition(core::vector3df(-1300,-144,-1249));

camera = smgr->addCameraSceneNodeFPS();


device->getCursorControl()->setVisible(false);

int lastFPS = -1;

while(device->run())
{
driver->beginScene(true, true, video::SColor(0,100,100,100));
smgr->drawAll();
driver->endScene();

int fps = driver->getFPS();

if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Quake 3 Map Example - Irrlicht Engine (fps:%d) Triangles:%d",
fps, driver->getPrimitiveCountDrawn());

device->setWindowCaption(tmp);
lastFPS = fps;
}
}

device->drop();

return 0;
}
mariusz_p
Posts: 15
Joined: Tue Jan 06, 2004 9:37 pm

Post by mariusz_p »

take a look at the tech demo source. It acts in exactly the same way You're asking.
Guest

Post by Guest »

ok i look and i say if i don't arrived to make the same
Post Reply