Changed: Save CameraDistance and FPV not only if in Windowed mode

This commit is contained in:
kervala 2010-07-29 20:22:47 +02:00
parent 042507413a
commit b5f09fc9c9

View file

@ -32,6 +32,8 @@
#include "view.h" // For the cameraDistance funtion #include "view.h" // For the cameraDistance funtion
#include "user_entity.h" #include "user_entity.h"
#include "interface_v3/interface_element.h" //for convertColor function #include "interface_v3/interface_element.h" //for convertColor function
#include "misc.h"
// 3D Interface. // 3D Interface.
#include "nel/3d/u_driver.h" #include "nel/3d/u_driver.h"
#include "nel/3d/u_scene.h" #include "nel/3d/u_scene.h"
@ -2043,47 +2045,53 @@ void CClientConfig::release ()
// Do we have to save the cfg file ? // Do we have to save the cfg file ?
if (ClientCfg.SaveConfig) if (ClientCfg.SaveConfig)
{ {
// Are we in window mode ? // Driver still alive ?
if (ClientCfg.Windowed) if (Driver && Driver->isActive ())
{ {
// Driver still alive ? sint32 x, y;
if (Driver && Driver->isActive ()) uint32 width, height;
Driver->getWindowPos(x, y);
Driver->getWindowSize(width, height);
// Save values
try
{ {
sint32 x, y; CConfigFile::CVar *varPtr = NULL;
uint32 width, height;
Driver->getWindowPos(x, y); // Are we in window mode ?
Driver->getWindowSize(width, height); if (ClientCfg.Windowed && !isWindowMaximized())
// Save values
try
{ {
CConfigFile::CVar *varPtr = ClientCfg.ConfigFile.getVarPtr ("PositionX"); // Save windows position
varPtr = ClientCfg.ConfigFile.getVarPtr ("PositionX");
if (varPtr) if (varPtr)
varPtr->forceAsInt (x); varPtr->forceAsInt (x);
varPtr = ClientCfg.ConfigFile.getVarPtr ("PositionY"); varPtr = ClientCfg.ConfigFile.getVarPtr ("PositionY");
if (varPtr) if (varPtr)
varPtr->forceAsInt (y); varPtr->forceAsInt (y);
// Save windows size
varPtr = ClientCfg.ConfigFile.getVarPtr ("Width"); varPtr = ClientCfg.ConfigFile.getVarPtr ("Width");
if (varPtr) if (varPtr)
varPtr->forceAsInt (std::max((int)width, 800)); varPtr->forceAsInt (std::max((int)width, 800));
varPtr = ClientCfg.ConfigFile.getVarPtr ("Height"); varPtr = ClientCfg.ConfigFile.getVarPtr ("Height");
if (varPtr) if (varPtr)
varPtr->forceAsInt (std::max((int)height, 600)); varPtr->forceAsInt (std::max((int)height, 600));
}
// Save if in FPV or TPV. // Save if in FPV or TPV.
varPtr = ClientCfg.ConfigFile.getVarPtr("FPV"); varPtr = ClientCfg.ConfigFile.getVarPtr("FPV");
if(varPtr) if(varPtr)
varPtr->forceAsInt((sint)ClientCfg.FPV); varPtr->forceAsInt((sint)ClientCfg.FPV);
// Save the camera distance
varPtr = ClientCfg.ConfigFile.getVarPtr("CameraDistance"); // Save the camera distance
if(varPtr) varPtr = ClientCfg.ConfigFile.getVarPtr("CameraDistance");
varPtr->forceAsDouble(ClientCfg.CameraDistance); if(varPtr)
} varPtr->forceAsDouble(ClientCfg.CameraDistance);
catch (Exception &e) }
{ catch (Exception &e)
nlwarning ("Error while set config file variables : %s", e.what ()); {
} nlwarning ("Error while set config file variables : %s", e.what ());
} }
} }