//************************************************************************************* // Switches from/to Game Mode/Editor Mode //************************************************************************************* void SetEditMode(long ed, const bool stop_sound) { LAST_JUMP_ENDTIME = 0; if(!DONT_ERASE_PLAYER) { player.lifePool.current = 0.1f; } RestoreAllLightsInitialStatus(); if (stop_sound) ARX_SOUND_MixerStop(ARX_SOUND_MixerGame); RestoreInitialIOStatus(); if (ed) { ARX_PATH_ComputeAllBoundingBoxes(); arxtime.pause(); } else { ARX_SCRIPT_ResetAll(true); EERIE_ANIMMANAGER_PurgeUnused(); } if(!DONT_ERASE_PLAYER) { ARX_PLAYER_MakeFreshHero(); } }
void levelInit() { arx_assert(entities.player()); LogDebug("Initializing level ..."); ARX_PARTICLES_FirstInit(); g_renderBatcher.reset(); progressBarAdvance(2.f); LoadLevelScreen(); g_particleManager.Clear(); if(GMOD_RESET) ARX_GLOBALMODS_Reset(); GMOD_RESET = true; STARTDRAG = Vec2s(0); DANAEMouse = Vec2s(0); PolyBoomClear(); ARX_DAMAGES_Reset(); ARX_MISSILES_ClearAll(); spells.clearAll(); ARX_SPELLS_ClearAllSymbolDraw(); ARX_PARTICLES_ClearAll(); ParticleSparkClear(); if(LOAD_N_ERASE) { CleanScriptLoadedIO(); RestoreInitialIOStatus(); DRAGINTER = NULL; } ARX_SPELLS_ResetRecognition(); eyeball.exist = 0; resetDynLights(); if(LOAD_N_ERASE) { CleanInventory(); ARX_SCRIPT_Timer_ClearAll(); UnlinkAllLinkedObjects(); ARX_SCRIPT_ResetAll(false); } SecondaryInventory = NULL; TSecondaryInventory = NULL; ARX_FOGS_Render(); if(LOAD_N_ERASE) { if(!DONT_ERASE_PLAYER) ARX_PLAYER_InitPlayer(); g_hudRoot.playerInterfaceFader.resetSlid(); player.lifePool.current = player.lifePool.max; player.manaPool.current = player.manaPool.max; if(!DONT_ERASE_PLAYER) { ARX_PLAYER_MakeFreshHero(); } } InitSnapShot(fs::getUserDir() / "snapshot"); progressBarAdvance(4.f); LoadLevelScreen(); if(player.torch) { player.torch_loop = ARX_SOUND_PlaySFX_loop(g_snd.TORCH_LOOP, NULL, 1.0F); } g_playerCamera.m_pos = g_moveto = player.pos; g_playerCamera.angle = player.angle; RestoreLastLoadedLightning(*ACTIVEBKG); progressBarAdvance(); LoadLevelScreen(); if(LOAD_N_ERASE) { SetEditMode(); ARX_SOUND_MixerStop(ARX_SOUND_MixerGame); ARX_SCRIPT_ResetAll(true); EERIE_ANIMMANAGER_PurgeUnused(); } progressBarAdvance(); LoadLevelScreen(); LOAD_N_ERASE = true; DONT_ERASE_PLAYER = false; progressBarAdvance(); LoadLevelScreen(); PrepareIOTreatZone(1); progressBarAdvance(); LoadLevelScreen(); if(DONT_WANT_PLAYER_INZONE) { player.inzone = NULL; DONT_WANT_PLAYER_INZONE = 0; } progressBarAdvance(); LoadLevelScreen(); player.desiredangle.setPitch(0.f); player.angle.setPitch(0.f); ARX_PLAYER_RectifyPosition(); entities.player()->_npcdata->vvpos = -99999; SendMsgToAllIO(NULL, SM_GAME_READY); PLAYER_MOUSELOOK_ON = false; g_note.clear(); EntityHandle t = entities.getById("seat_stool1_0012"); if(ValidIONum(t)) { entities[t]->ioflags |= IO_FORCEDRAW; } ARX_NPC_RestoreCuts(); ResetVVPos(entities.player()); progressBarAdvance(); LoadLevelScreen(); LoadLevelScreen(-2); if(!CheckInPoly(player.pos) && LastValidPlayerPos.x != 0.f && LastValidPlayerPos.y != 0.f && LastValidPlayerPos.z != 0.f) { player.pos = LastValidPlayerPos; } LastValidPlayerPos = player.pos; g_platformTime.updateFrame(); g_gameTime.resume(GameTime::PauseInitial | GameTime::PauseMenu); }