inline void AnimeFunc::DrawWorld() { glPushMatrix(); if (WorldTileState == WORLD_UNDEFINED || (framecount >= 1)) { glDeleteLists(BackgroundDL,1); if (!once) { LoadWorld(Global.TileData,TextureVertices,WorldFileNames,EventTileIDs,TileEventIDs); once = true; } WorldTileState = WORLD_DEFINED; glColor4fv(TextureColour); glNewList(BackgroundDL, GL_COMPILE); TileEngine(TextureVertices); glEndList(); Global.Init.EventMapInit(WorldSizey,WorldSizex,TileEventIDs); ++framecount; if (framecount > 2) { framecount = 0; } } glTranslatef(-1*_globCamPosx,-1*_globCamPosy,0.0); //Moves 2D camera glCallList(BackgroundDL); glPopMatrix(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,Texture[PlayerTex]); glCallList(PlayerDL); glDisable(GL_TEXTURE_2D); glTranslatef(-1*_globCamPosx,-1*_globCamPosy,0.0); //Moves 2D camera }
void ac_ChooseWorld() { num_files = 0; memset(world_info, 0, sizeof(world_info)); scan_for_wwd("./world"); #ifdef __linux__ extern char homepath[256]; scan_for_wwd(homepath); #endif // Now choose the world SDL_Event event; MENU *m = &WorldMenu; m->num = num_files; m->sel = 0; done = 0; while(!done) { while(SDL_PollEvent(&event)) if(event.type == SDL_KEYDOWN) { if(event.key.keysym.sym == SDLK_LEFT) { if(m->sel > 0) { m->sel--; PlaySound(0); } } else if(event.key.keysym.sym == SDLK_RIGHT) { if(m->sel < m->num - 1) { m->sel++; PlaySound(0); } } else if(event.key.keysym.sym == SDLK_RETURN || event.key.keysym.sym == SDLK_LCTRL) { // reload new brave world FreeWorld(wwd); wwd = LoadWorld(world_info[m->sel].fullname); PlaySound(1); done = 1; } else if(event.key.keysym.sym == SDLK_ESCAPE) { done = 1; } } RedrawMenu(m); MPrint(world_info[m->sel].title, 130, 254, 252); MPrint(world_info[m->sel].author, 140, 254, 252); MPrint(world_info[m->sel].areas, 150, 254, 252); MPrint("PRESS LEFT/RIGHT TO SELECT", 170, 255, 252); MPrint("<START> TO CONFIRM", 180, 255, 252); BlitAndWait(1); } done = 0; }
void Draw::World(GLvoid) { dotsRemaining = 0; if(levelCom) LoadWorld(); glPushMatrix(); glTranslatef(-50.0f,0.0f,-50.0f); for(unsigned int i = 0; i < worldLayout.size(); i++) { switch(worldLayout[i]) { case 'T': Top(i); break; case 'B': Bottom(i); break; case 'L': Left(i); break; case 'R': Right(i); break; case 'U': case 'D': Corner(i); break; case 'Z': Dots(i); break; case 'X': SpawnLoc.xp = lctn[i].x; SpawnLoc.zp = lctn[i].t; SpawnLoc.yp = 1.1f; break; case 'G': //GZone(i); break; case 'Y': //Teleport(i); break; case 'W': //TPWalls(i); break; case 'S': Start(i); break; } } if(levelStr) Ghosts(); glPopMatrix(); }
byte LunaticWorld(byte world, const char *worldName) { byte result; InitPlayer(INIT_WORLD, world, 0); if (!LoadWorld(&curWorld, worldName)) return WORLD_ABORT; worldNum = world; InitWorld(&curWorld, worldNum); mapNum = 0; while (1) { result = PlayALevel(mapNum); if (result == LEVEL_ABORT) { PlayerResetScore(); if (mapToGoTo < 255) mapNum = mapToGoTo; else break; } else if (result == LEVEL_RESET) { PlayerResetScore(); // don't do anything, play the same level } else if (result == LEVEL_WIN) { PlayerWinLevel(world, mapNum, curMapFlags & MAP_SECRET); mapNum = mapToGoTo; } else if (result == LEVEL_LOADING) { FreeWorld(&curWorld); PlayerResetScore(); return WORLD_LOAD; } else if (result == WORLD_QUITGAME) { FreeWorld(&curWorld); PlayerResetScore(); return WORLD_QUITGAME; } } FreeWorld(&curWorld); return WORLD_ABORT; }
BOOL Initialize(GL_Window* window, Keys* keys) { srand(GetTickCount()); g_window = window; g_keys = keys; u.keys = keys->keyDown; //textures glEnable(GL_TEXTURE_2D);// Enable Texture Mapping glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.5f);// Black Background glClearDepth(1.0f);// Depth Buffer Setup glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing (Less Or Equal) glEnable(GL_DEPTH_TEST); // Enable Depth Testing glShadeModel(GL_SMOOTH); // Select Smooth Shading glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Set Perspective Calculations To Most Accurate GLfloat LightAmbient[] = {0.5f, 0.5f, 0.5f, 1.0f};//Ambient Light Values ( NEW ) GLfloat LightDiffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};//Diffuse Light Values ( NEW ) GLfloat LightPosition[] = {0.0f, 0.0f, 2.0f, 1.0f};//Light Position ( NEW ) glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);//Setup The Ambient Light glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);//Setup The Diffuse Light glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);//Position The Light glEnable(GL_LIGHT1);//Enable Light One glEnable(GL_LIGHTING);//Enable Lighting LoadWorld(); s.Init(); s.LoadMap(); SendUI(&u); u.Init(&s, window->hDC); //BuildFont(window->hDC); return 1; // Return TRUE (Initialization Successful) }
// This function will set up everything required by Ogre // and it will ask the user for display settings // At the end of this function Ogre is ready to render. // This function is mostly taken from tutorials and sample programs. int CUIMain::SetupOgre(void) { //================= //Ogre defaultly logs to console // To prevent this the LogManager has to be created // before the Root object. //================= Ogre::LogManager* logMgr = OGRE_NEW Ogre::LogManager; logMgr->createLog("Ogre.log", true, false, false); //================= //Create the Ogre root object // It's possible to specify as parameters the paths to the: // plugin file (what render systems it has to load), config file (screen resolution etc) and log file //================= if( !mRoot ) mRoot = OGRE_NEW Ogre::Root(); //================= // Tell Ogre where all the needed resources are (rendersystems and so on) //================= Ogre::ConfigFile cf; cf.load("resources.cfg"); Ogre::String secName, typeName, archName; Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator(); while (seci.hasMoreElements()){ secName = seci.peekNextKey(); Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext(); Ogre::ConfigFile::SettingsMultiMap::iterator i; for (i = settings->begin(); i != settings->end(); ++i) { typeName = i->first; archName = i->second; Ogre::ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName); } } //================= // Set up the render system. // Ogre will ask the user for display settings //================= if( !mRoot->showConfigDialog() ) return 0; //The user probably clicked cancel mWindow = mRoot->initialise(true, "NNYv3"); //================= // Load all the resources. For now, just load all resources at once. The following is from a tutorial: // In a very large game or application, we may have hundreds or even thousands of resources // that our game uses - everything from meshes to textures to scripts. At any given time though, // we probably will only be using a small subset of these resources. To keep down memory requirements, // we can load only the resources that our application is using. We do this by dividing the resources // into sections and only initializing them as we go. //================= Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); //================= // Preparing the scene //================= mSceneMgr = mRoot->createSceneManager(Ogre::ST_EXTERIOR_CLOSE); //ST_EXTERIOR_CLOSE allows rendering terrain mCamera.Initialize(mSceneMgr); Ogre::Viewport* vp = mWindow->addViewport(mCamera.GetCamera()); vp->setBackgroundColour(Ogre::ColourValue(0.9,0.9,0.9)); //Fog will not work with sky ;) //mSceneMgr->setFog(Ogre::FOG_LINEAR, Ogre::ColourValue(0.9,0.9,0.9), 0.0, 50, 500); mCamera.GetCamera()->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight())); //Set a moving cloud texture as background mSceneMgr->setSkyDome(true, "CloudySky", 5, 8); //Get a RaySceneQuery object. A SceneQuery object is a class that can query all //objects in a region or scene. RaySceneQuery has it as a base class. RaySceneQuery //can get all objects that intersect a ray. mQueryMouseMovement = mSceneMgr->createRayQuery(Ogre::Ray(), QUERY_MASK_MOUSE_MOVEMENT); mQueryMouseSelection = mSceneMgr->createRayQuery(Ogre::Ray(), QUERY_MASK_MOUSE_SELECTING); LoadWorld(); //================= // Set up the CEGUI system //================= mGUIHandler = new CGUIHandler(mWindow, mSceneMgr); //================= // Create the input handler //================= mInputHandler = new CInputHandler(mWorld, mCamera, mWindow, mSceneMgr); mRoot->addFrameListener(mInputHandler); mRoot->addFrameListener(this); //================= // Create the console overlay //================= mConsoleOverlay = new ConsoleOverlay(); return 1; }
bool MULTIPLAY::ExchangeWorldInfo() { char tc[32767]; sprintf(tc, "%c%c %s\n%i\n%s\n%i\n%i", (char) (replay.Get_FuncNetControl()), (char) CONTROL_WORLDINFO, state.GetCarName(0).c_str(), state.GetCarPaint(0), state.GetTrackName().c_str(), NumConnected(), NumConnected()); //encode string length into the packet tc[2] = (char) ((Uint8) strlen(tc)); //encode function memories, starting at strlen(tc) int tclen = strlen(tc); int opos = tclen; //tc[opos] = (char)((Uint8) fnums[0]); opos = AddToData(tc, &(fnums[0]), sizeof(int), opos); int f; for (f = 0; f < fnums[0]; f++) { char fout[FUNCTION_CHARS]; strcpy(fout, GetFuncMem(0)[f].func_name.c_str()); //fwrite(fout,1,FUNCTION_CHARS, rf); opos = AddToData(tc, fout, FUNCTION_CHARS, opos); } net.Send(tc, opos); int ret = net.RecvBlock(tc, 32767, GENERIC_TIMEOUT); if (ret > 0) { int pos = 0; int err = 0; if (tc[pos] == (char) (replay.Get_FuncNetControl())) { pos++; if (tc[pos] == (char) (CONTROL_WORLDINFO)) { pos++; //decode string section length int slen = tc[2]; pos++; string car; string carpaint; string track; string numplayers; string myplayernum; char sc[2]; sc[1] = '\0'; while (pos < slen && tc[pos] != '\n') { sc[0] = tc[pos]; car.append(sc); pos++; } pos++; while (pos < slen && tc[pos] != '\n') { sc[0] = tc[pos]; carpaint.append(sc); pos++; } pos++; while (pos < slen && tc[pos] != '\n') { sc[0] = tc[pos]; track.append(sc); pos++; } pos++; while (pos < slen && tc[pos] != '\n') { sc[0] = tc[pos]; numplayers.append(sc); pos++; } pos++; while (pos < slen && tc[pos] != '\n') { sc[0] = tc[pos]; myplayernum.append(sc); pos++; } int icarpaint = atoi(carpaint.c_str()); int inumplayers = atoi(numplayers.c_str()); int imyplayernum = atoi(myplayernum.c_str()); if (MP_DEBUG) { /*tc[ret] = '\0'; cout << "raw worldinfo: " << tc << endl;*/ cout << "worldinfo size: " << ret << endl; cout << "got worldinfo: " << car << "," << icarpaint << "," << track << "," << inumplayers << "," << imyplayernum << endl; } //decode function memory //first clear it out int newpnum = NumConnected(); if (funcmems[newpnum] != NULL) { delete [] funcmems[newpnum]; funcmems[newpnum] = NULL; } pos = slen; pos = GetFromData(tc, &(fnums[newpnum]), sizeof(int), pos); funcmems[newpnum] = new FUNCTION_MEMORY [fnums[newpnum]]; for (f = 0; f < fnums[newpnum]; f++) { char fin[FUNCTION_CHARS]; pos = GetFromData(tc, fin, FUNCTION_CHARS, pos); GetFuncMem(newpnum)[f].func_name = fin; GetFuncMem(newpnum)[f].oldval = 0.0; GetFuncMem(newpnum)[f].held = false; GetFuncMem(newpnum)[f].active = false; } if (NET_DEBUG) { cout << "got functions: " << fnums[newpnum]; cout << " (" << fnums[0] << " local)" << endl; /*cout << "function list: "; for (f = 0; f < fnums[newpnum]; f++) { cout << GetFuncMem(newpnum)[f].func_name << ","; } cout << endl;*/ } if (!Server()) { state.SetTrackName(track); state.SetCarName(1, car); state.SetCarPaint(1, icarpaint); remote_players = inumplayers; remote_playernum = imyplayernum; LoadWorld(); } else { state.SetCarName(1, car); state.SetCarPaint(1, icarpaint); SelectCar(state.GetCarName(0), true); /*try { int numcars = NumConnected(); Vamos_Body::Gl_Car* car = 0; car = new Vamos_Body::Gl_Car (Vamos_Geometry::Three_Vector (11.0, 0.0, 0.6)); car->read ("data/", state.GetCarName(numcars)); car->SetPaint(state.GetCarPaint(numcars)); car->chassis ().translate (Vamos_Geometry::Three_Vector (10.0, 0.0, -car->chassis ().lowest_contact_position () + 0.5)); car->start_engine (); car->set_controller(2); world.add_car (car); } catch (Vamos_Geometry::XML_Exception& error) { std::cerr << error.message () << std::endl; std::exit (EXIT_FAILURE); }*/ } } else err = 2; } else err = 1; if (err) { //retry? //nah, just disconnect. net.Disconnect(); if (MP_DEBUG) { cout << "multiplay: Update: error parsing world info: error " << err << endl; } return false; } } else { //retry? //nah, just disconnect. net.Disconnect(); if (MP_DEBUG) { cout << "multiplay: Update: didn't receive world info: error " << ret << endl; } return false; } return true; }
//Because loading and saving the map takes a few seconds, we want to post a message //on the screen and then update it which requires passing the screen back to the main loop. //When we come back for the next frame, we then actually save or load the map. So this //process takes two full screen cycles. UINT32 ProcessFileIO() { INT16 usStartX, usStartY; CHAR8 ubNewFilename[50]; BOOLEAN fAltMap;//dnl ch31 150909 switch( gbCurrentFileIOStatus ) { case INITIATE_MAP_SAVE: //draw save message StartFrameBufferRender( ); SaveFontSettings(); SetFont( HUGEFONT ); SetFontForeground( FONT_LTKHAKI ); SetFontShadow( FONT_DKKHAKI ); SetFontBackground( 0 ); swprintf( zOrigName, L"Saving map: %s", gzFilename ); usStartX = iScreenWidthOffset + 320 - StringPixLength( zOrigName, LARGEFONT1 ) / 2; usStartY = iScreenHeightOffset + 180 - GetFontHeight( LARGEFONT1 ) / 2; mprintf( usStartX, usStartY, zOrigName ); InvalidateScreen( ); EndFrameBufferRender( ); gbCurrentFileIOStatus = SAVING_MAP; return LOADSAVE_SCREEN; case SAVING_MAP: //save map sprintf( ubNewFilename, "%S", gzFilename ); RaiseWorldLand(); if( gfShowPits ) RemoveAllPits(); OptimizeSchedules(); ShowHighGround(4);//dnl ch41 210909 //dnl ch33 091009 BOOLEAN fRet; if(gfVanillaMode && iNewMapWorldRows == OLD_WORLD_ROWS && iNewMapWorldCols == OLD_WORLD_COLS) fRet = SaveWorld(ubNewFilename, VANILLA_MAJOR_MAP_VERSION, VANILLA_MINOR_MAP_VERSION); else fRet = SaveWorld(ubNewFilename); if(!fRet) { //dnl ch37 150909 gfSaveError = TRUE; if(gfErrorCatch) { InitErrorCatchDialog(); return(EDIT_SCREEN); } gbCurrentFileIOStatus = IOSTATUS_NONE; CreateMessageBox((STR16)(_BS(L" Error saving ") << (const char*)ubNewFilename << L" file. Try another filename? " << _BS::wget).c_str() ); return(guiCurrentScreen); } if( gfShowPits ) AddAllPits(); GetSectorFromFileName(gzFilename, gWorldSectorX, gWorldSectorY, gbWorldSectorZ, fAltMap);//dnl ch31 140909 if( gfGlobalSummaryExists ) UpdateSectorSummary( gzFilename, gfUpdateSummaryInfo ); else//dnl ch30 150909 ReEvaluateWorld(ubNewFilename); iCurrentAction = ACTION_NULL; gbCurrentFileIOStatus = IOSTATUS_NONE; gfRenderWorld = TRUE; gfRenderTaskbar = TRUE; fEnteringLoadSaveScreen = TRUE; RestoreFontSettings(); if( gfErrorCatch ) { InitErrorCatchDialog(); return EDIT_SCREEN; } fNewMapSaved = TRUE; return EDIT_SCREEN; case INITIATE_MAP_LOAD: //draw load message SaveFontSettings(); gbCurrentFileIOStatus = LOADING_MAP; if( gfEditMode && iCurrentTaskbar == TASK_MERCS ) IndicateSelectedMerc( SELECT_NO_MERC ); SpecifyItemToEdit( NULL, -1 ); return LOADSAVE_SCREEN; case LOADING_MAP: //load map DisableUndo(); sprintf( ubNewFilename, "%S", gzFilename ); RemoveMercsInSector( ); // Want to override crash, so user can do something else. if(!ReEvaluateWorld(ubNewFilename) || !LoadWorld(ubNewFilename))//dnl ch36 140909 { EnableUndo(); gbCurrentFileIOStatus = IOSTATUS_NONE; gfGlobalError = FALSE; gfLoadError = TRUE; CreateMessageBox((STR16)(_BS(L" Error loading ") << (const char*)ubNewFilename << L" file. Try another filename? " << _BS::wget).c_str()); return(guiCurrentScreen); } //ADB these are NOT set yet! but they need to be, duh CompileWorldMovementCosts(); GetSectorFromFileName(gzFilename, gWorldSectorX, gWorldSectorY, gbWorldSectorZ, fAltMap);//dnl ch31 140909 RestoreFontSettings(); //Load successful, update necessary information. //ATE: Any current mercs are transfered here... //UpdateMercsInSector( gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); AddSoldierInitListTeamToWorld( ENEMY_TEAM, 255 ); AddSoldierInitListTeamToWorld( CREATURE_TEAM, 255 ); AddSoldierInitListTeamToWorld( MILITIA_TEAM, 255 ); AddSoldierInitListTeamToWorld( CIV_TEAM, 255 ); iCurrentAction = ACTION_NULL; gbCurrentFileIOStatus = IOSTATUS_NONE; if( !gfCaves && !gfBasement ) { gusLightLevel = 12; if( ubAmbientLightLevel != 4 ) { ubAmbientLightLevel = 4; LightSetBaseLevel( ubAmbientLightLevel ); } } else gusLightLevel = (UINT16)(EDITOR_LIGHT_MAX - ubAmbientLightLevel ); gEditorLightColor = gpLightColors[ 0 ]; gfRenderWorld = TRUE; gfRenderTaskbar = TRUE; fEnteringLoadSaveScreen = TRUE; InitJA2SelectionWindow(); ShowEntryPoints(); EnableUndo(); RemoveAllFromUndoList(); SetEditorSmoothingMode( gMapInformation.ubEditorSmoothingType ); if( gMapInformation.ubEditorSmoothingType == SMOOTHING_CAVES ) AnalyseCaveMapForStructureInfo(); AddLockedDoorCursors(); gubCurrRoomNumber = gubMaxRoomNumber; UpdateRoofsView(); UpdateWallsView(); ShowLightPositionHandles(); SetMercTeamVisibility( ENEMY_TEAM, gfShowEnemies ); SetMercTeamVisibility( CREATURE_TEAM, gfShowCreatures ); SetMercTeamVisibility( MILITIA_TEAM, gfShowRebels ); SetMercTeamVisibility( CIV_TEAM, gfShowCivilians ); BuildItemPoolList(); gpItemPool = NULL;//dnl ch26 210909 fShowHighGround = FALSE;//dnl ch2 210909 fRaiseWorld = FALSE;//dnl ch3 210909 ShowHighGround(4);//dnl ch41 210909 SetRenderCenter(WORLD_COLS/2, WORLD_ROWS/2);//dnl ch43 280909 if( gfShowPits ) AddAllPits(); if( iCurrentTaskbar == TASK_MAPINFO ) { //We have to temporarily remove the current textinput mode, //update the disabled text field values, then restore the current //text input fields. SaveAndRemoveCurrentTextInputMode(); UpdateMapInfoFields(); RestoreSavedTextInputMode(); } return EDIT_SCREEN; } gbCurrentFileIOStatus = IOSTATUS_NONE; return LOADSAVE_SCREEN; }
//Because loading and saving the map takes a few seconds, we want to post a message //on the screen and then update it which requires passing the screen back to the main loop. //When we come back for the next frame, we then actually save or load the map. So this //process takes two full screen cycles. UINT32 ProcessFileIO() { INT16 usStartX, usStartY; UINT8 ubNewFilename[50]; switch( gbCurrentFileIOStatus ) { case INITIATE_MAP_SAVE: //draw save message StartFrameBufferRender( ); SaveFontSettings(); SetFont( HUGEFONT ); SetFontForeground( FONT_LTKHAKI ); SetFontShadow( FONT_DKKHAKI ); SetFontBackground( 0 ); swprintf( zOrigName, L"Saving map: %s", gzFilename ); usStartX = 320 - StringPixLength( zOrigName, LARGEFONT1 ) / 2; usStartY = 180 - GetFontHeight( LARGEFONT1 ) / 2; mprintf( usStartX, usStartY, zOrigName ); InvalidateScreen( ); EndFrameBufferRender( ); gbCurrentFileIOStatus = SAVING_MAP; return LOADSAVE_SCREEN; case SAVING_MAP: //save map sprintf( ubNewFilename, "%S", gzFilename ); RaiseWorldLand(); if( gfShowPits ) RemoveAllPits(); OptimizeSchedules(); if ( !SaveWorld( ubNewFilename ) ) { if( gfErrorCatch ) { InitErrorCatchDialog(); return EDIT_SCREEN; } return ERROR_SCREEN; } if( gfShowPits ) AddAllPits(); SetGlobalSectorValues( gzFilename ); if( gfGlobalSummaryExists ) UpdateSectorSummary( gzFilename, gfUpdateSummaryInfo ); iCurrentAction = ACTION_NULL; gbCurrentFileIOStatus = IOSTATUS_NONE; gfRenderWorld = TRUE; gfRenderTaskbar = TRUE; fEnteringLoadSaveScreen = TRUE; RestoreFontSettings(); if( gfErrorCatch ) { InitErrorCatchDialog(); return EDIT_SCREEN; } if( gMapInformation.ubMapVersion != gubMinorMapVersion ) ScreenMsg( FONT_MCOLOR_RED, MSG_ERROR, L"Map data has just been corrupted!!! What did you just do? KM : 0" ); return EDIT_SCREEN; case INITIATE_MAP_LOAD: //draw load message SaveFontSettings(); gbCurrentFileIOStatus = LOADING_MAP; if( gfEditMode && iCurrentTaskbar == TASK_MERCS ) IndicateSelectedMerc( SELECT_NO_MERC ); SpecifyItemToEdit( NULL, -1 ); return LOADSAVE_SCREEN; case LOADING_MAP: //load map DisableUndo(); sprintf( ubNewFilename, "%S", gzFilename ); RemoveMercsInSector( ); if( !LoadWorld( ubNewFilename ) ) { //Want to override crash, so user can do something else. EnableUndo(); SetPendingNewScreen( LOADSAVE_SCREEN ); gbCurrentFileIOStatus = IOSTATUS_NONE; gfGlobalError = FALSE; gfLoadError = TRUE; //RemoveButton( iTempButton ); CreateMessageBox( L" Error loading file. Try another filename?" ); return LOADSAVE_SCREEN; } SetGlobalSectorValues( gzFilename ); RestoreFontSettings(); //Load successful, update necessary information. //ATE: Any current mercs are transfered here... //UpdateMercsInSector( gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); AddSoldierInitListTeamToWorld( ENEMY_TEAM, 255 ); AddSoldierInitListTeamToWorld( CREATURE_TEAM, 255 ); AddSoldierInitListTeamToWorld( MILITIA_TEAM, 255 ); AddSoldierInitListTeamToWorld( CIV_TEAM, 255 ); iCurrentAction = ACTION_NULL; gbCurrentFileIOStatus = IOSTATUS_NONE; if( !gfCaves && !gfBasement ) { gusLightLevel = 12; if( ubAmbientLightLevel != 4 ) { ubAmbientLightLevel = 4; LightSetBaseLevel( ubAmbientLightLevel ); } } else gusLightLevel = (UINT16)(EDITOR_LIGHT_MAX - ubAmbientLightLevel ); gEditorLightColor = gpLightColors[ 0 ]; gfRenderWorld = TRUE; gfRenderTaskbar = TRUE; fEnteringLoadSaveScreen = TRUE; InitJA2SelectionWindow(); ShowEntryPoints(); EnableUndo(); RemoveAllFromUndoList(); SetEditorSmoothingMode( gMapInformation.ubEditorSmoothingType ); if( gMapInformation.ubEditorSmoothingType == SMOOTHING_CAVES ) AnalyseCaveMapForStructureInfo(); AddLockedDoorCursors(); gubCurrRoomNumber = gubMaxRoomNumber; UpdateRoofsView(); UpdateWallsView(); ShowLightPositionHandles(); SetMercTeamVisibility( ENEMY_TEAM, gfShowEnemies ); SetMercTeamVisibility( CREATURE_TEAM, gfShowCreatures ); SetMercTeamVisibility( MILITIA_TEAM, gfShowRebels ); SetMercTeamVisibility( CIV_TEAM, gfShowCivilians ); BuildItemPoolList(); if( gfShowPits ) AddAllPits(); if( iCurrentTaskbar == TASK_MAPINFO ) { //We have to temporarily remove the current textinput mode, //update the disabled text field values, then restore the current //text input fields. SaveAndRemoveCurrentTextInputMode(); UpdateMapInfoFields(); RestoreSavedTextInputMode(); } return EDIT_SCREEN; } gbCurrentFileIOStatus = IOSTATUS_NONE; return LOADSAVE_SCREEN; }
//Función para cargar los recursos necesarios para el juego. bool cGame::LoadResources( void ) { bool lbResult; lbResult = LoadWindowProperties(); if ( lbResult ) { //Se inicializa la clase que encapsula las operaciones de OpenGL: lbResult = cGraphicManager::Get().Init( &cWindow::Get() ); // Clean Window context glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Resetea color de fondo glClearColor(0.0f, 0.0f, 0.0f, 1.0f); if (lbResult) { //Se inicializa la clase que gestiona la texturas indicando que habrá 1, por ejemplo. cTextureManager::Get().Init(60); mMad_drive_loading = cTextureManager::Get().LoadResource( "Mad_drive_loading", "Data/Scene/images/hud/mad_drive_loading.png" ); mMad_drive = cTextureManager::Get().LoadResource( "Mad_drive", "Data/Scene/images/hud/mad_drive.png" ); mLoading = cTextureManager::Get().LoadResource( "Loading", "Data/Scene/images/hud/loading.png" ); Load2DCameraProperties(); cGraphicManager::Get().ActivateCamera( &m2DCamera ); RenderProgress(0.1f); Load3DCameraProperties(); RenderProgress(0.2f); LoadIAProperties(); LoadManagerProperties(); RenderProgress(0.3f); //Se carga la escena. //mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/dragonsmall.DAE" ); //*mDuck = cSceneManager::Get().LoadResource( "Duck", "./Data/Scene/duck_triangulate.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_cactus.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_carretera.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_matorral.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_palmera.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_tronco.dae" ); LoadVehicles(); RenderProgress(0.5f); LoadHUD(); RenderProgress(0.6f); LoadEffects(); RenderProgress(0.7f); LoadObstacles(); RenderProgress(0.85f); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2_exterior.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2_arma.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2_rueda.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mad_drive_escombros_ruina.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/combustible.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/especial_invencibilidad.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/especial_superturbo.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/municion.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo1_destruido_arma.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo1_destruido_exterior.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2_destruido_arma.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/enemigo2_destruido_exterior.dae" ); // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/mustang_destruido_exterior.dae" ); //mScene1 = cSceneManager::Get().LoadResource( "TestLevel1", "./Data/Scene/mustang_destruido_interior.dae" ); // Loads skeleton // cResourceHandle mustang_mesh = cMeshManager::Get().LoadResource("testlevel1", "./Data/Scene/mustang_destruido_interior.dae"); /*if (!((cScene *)mScene.GetResource())->Init("TestLevel1", "./Data/Scene/mustang_destruido_interior.dae")){ OutputDebugStr("Error loading object!"); }*/ // mScene = cSceneManager::Get().LoadResource( "TestLevel", "./Data/Scene/plane.DAE" ); //cPhysicObject mModelObject = *((cPhysicObject*) ((cScene *)mScene.GetResource())->getSubObject( 1 )); // Inits skeleton model //cSkeletalManager::Get().LoadResource("Skeleton", "./Data/Skeletal/SkeletonModel.xml"); // Loads skeleton //mSkeletalMesh = cMeshManager::Get().LoadResource("Skeleton", "Skeleton", kuiSkeletalMesh); // Get skeleton mesh //cSkeletalMesh* lpSkeletonMesh=(cSkeletalMesh*)mSkeletalMesh.GetResource(); // Load Skeleton meshes //cResourceHandle lMaterial = cMaterialManager::Get().LoadResource("Skeleton", "./Data/Material/SkeletonMaterial.xml"); //assert(lMaterial.IsValidHandle()); //mObject.AddMesh(mSkeletalMesh, lMaterial); // Bounding box del personaje /*mBoxModel.InitBox( 0.0f, cVec3( 0.3f, 1.0f, 0.3f ) ); mObject.CreatePhysics( &mBoxModel ); lScaleMatrix.LoadScale(0.01f); mObject.SetScaleMatrix( lScaleMatrix );*/ LoadObjects(); RenderProgress(1.0f); LoadWorld(); } else { //Si algo falla se libera la ventana. cWindow::Get().Deinit(); } } return lbResult; }
void BouwplaatsGameClient::run() { DWORD tFrameStart = 0x0; //in miliseconds signed long tFrameX = 0x0; float tDelta = 0.0f; //in seconds float m_fps = 60.0f; tFrameStart = GetTickCount(); bool b = true; bool worldLoaded = false; while ((cState = sim->getCurrentState()) != SHUTDOWN) { tFrameX = GetTickCount() - tFrameStart; tDelta = (float)tFrameX / 1000.0f; if (tDelta > 3600) // tDelta > 1 hour tDelta = 1.0f / m_fps; //< System tick count has highly likely overflowed, so get approximation tFrameStart = GetTickCount(); m_fps = (int)(1.0f / tDelta); handler->capture(); handler->update(tDelta); entityController->update(tDelta); gui->update(); update(tDelta); // run the message pump (Eihort) Ogre::WindowEventUtilities::messagePump(); ogre->renderOneFrame(); if (cState == SIMULATION_GOTOTOPDOWNVIEW) { handler->changeCameraView(tDelta); } else if(cState == SIMULATION_GOFROMTOPDOWNVIEW) { handler->restoreCameraView(tDelta); } if(sim->getCurrentState() != cState) { handler->StateSwitched(cState, sim->getCurrentState()); switch (sim->getCurrentState()) { case STARTUP: loadLogin(); break; case LOADING: if(!worldLoaded) { LoadWorld(); worldLoaded = true; } sim->requestStateChange(SIMULATION); break; case SIMULATION_TOPDOWNVIEW: //handler->setObject(2, mainSceneMgr->getSceneNode("dixieNode1")); //sim->requestStateChange(SIMULATION); break; } } else { switch(cState) { case SIMULATION_GOTOTOPDOWNVIEW: break; } } if(net->isConnected() && b) { net->Send(GETGROUPS, "", "", NULL); b = false; } } net->stop(); Sleep(200); }