Merge with develop
--HG-- branch : compatibility-develop
This commit is contained in:
commit
86084649a2
77 changed files with 859 additions and 274 deletions
|
@ -163,7 +163,7 @@ public:
|
|||
/** There is (OrderS/2+1) * (OrderT/2+1) tiles light influence.
|
||||
* It indicates which static pointLight influence each corner of a TessBlock (block of 2*2 tiles).
|
||||
*
|
||||
* If size()==0, suppose no light influence. but CZone::retrieve() always return a
|
||||
* If empty(), suppose no light influence. but CZone::retrieve() always return a
|
||||
* size() == (OrderS/2+1) * (OrderT/2+1).
|
||||
*
|
||||
* They are stored in line first order, from S=0 to 1, and T=0 to 1.
|
||||
|
|
|
@ -120,9 +120,9 @@ public:
|
|||
*/
|
||||
std::string toString() const
|
||||
{
|
||||
if (_Ids.size()==0) return std::string("");
|
||||
if (_Ids.empty()) return std::string("");
|
||||
std::string str=_Ids[0];
|
||||
for (unsigned i=1; i<_Ids.size(); i++)
|
||||
for (uint i=1; i<_Ids.size(); i++)
|
||||
str +=std::string(":")+ _Ids[i];
|
||||
return str;
|
||||
}
|
||||
|
|
|
@ -50,14 +50,14 @@ IDriver::~IDriver()
|
|||
{
|
||||
CSynchronized<TTexDrvInfoPtrMap>::CAccessor access(&_SyncTexDrvInfos);
|
||||
TTexDrvInfoPtrMap &rTexDrvInfos = access.value();
|
||||
nlassert( rTexDrvInfos.size() == 0 );
|
||||
nlassert(rTexDrvInfos.empty());
|
||||
}
|
||||
|
||||
nlassert(_TexDrvShares.size()==0);
|
||||
nlassert(_MatDrvInfos.size()==0);
|
||||
nlassert(_VBDrvInfos.size()==0);
|
||||
nlassert(_IBDrvInfos.size()==0);
|
||||
nlassert(_GPUPrgDrvInfos.size()==0);
|
||||
nlassert(_TexDrvShares.empty());
|
||||
nlassert(_MatDrvInfos.empty());
|
||||
nlassert(_VBDrvInfos.empty());
|
||||
nlassert(_IBDrvInfos.empty());
|
||||
nlassert(_GPUPrgDrvInfos.empty());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -528,7 +528,7 @@ void CDRU::drawTrianglesUnlit(const NLMISC::CTriangleUV *trilist, sint ntris,
|
|||
// ***************************************************************************
|
||||
void CDRU::drawTrianglesUnlit(const std::vector<NLMISC::CTriangleUV> &trilist, CMaterial &mat, IDriver& driver)
|
||||
{
|
||||
if(trilist.size()==0)
|
||||
if(trilist.empty())
|
||||
return;
|
||||
|
||||
CDRU::drawTrianglesUnlit( &(*trilist.begin()), (uint)trilist.size(), mat, driver);
|
||||
|
@ -570,7 +570,7 @@ void CDRU::drawLinesUnlit(const NLMISC::CLine *linelist, sint nlines, CMateria
|
|||
// ***************************************************************************
|
||||
void CDRU::drawLinesUnlit(const std::vector<NLMISC::CLine> &linelist, CMaterial &mat, IDriver& driver)
|
||||
{
|
||||
if(linelist.size()==0)
|
||||
if(linelist.empty())
|
||||
return;
|
||||
CDRU::drawLinesUnlit( &(*linelist.begin()), (sint)linelist.size(), mat, driver);
|
||||
}
|
||||
|
|
|
@ -2859,7 +2859,7 @@ void CLandscape::setupAutomaticLightDir(const CVector &lightDir)
|
|||
// ***************************************************************************
|
||||
CVector CLandscape::getHeightFieldDeltaZ(float x, float y) const
|
||||
{
|
||||
if(_HeightField.ZPatchs.size()==0)
|
||||
if(_HeightField.ZPatchs.empty())
|
||||
return CVector::Null;
|
||||
|
||||
// map to _HeightField coordinates.
|
||||
|
|
|
@ -134,7 +134,7 @@ void CLandscapeVBAllocator::resetReallocation()
|
|||
uint CLandscapeVBAllocator::allocateVertex()
|
||||
{
|
||||
// if no more free, allocate.
|
||||
if( _VertexFreeMemory.size()==0 )
|
||||
if( _VertexFreeMemory.empty() )
|
||||
{
|
||||
// enlarge capacity.
|
||||
uint newResize;
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace NL3D
|
|||
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
|
||||
{
|
||||
NLMISC::CAABBox ret;
|
||||
nlassert(Vertices.size());
|
||||
nlassert(!Vertices.empty());
|
||||
ret.setCenter(Vertices[0]);
|
||||
for(sint i=0;i<(sint)Vertices.size();i++)
|
||||
{
|
||||
|
@ -167,7 +167,7 @@ void CMeshGeom::build (CMesh::CMeshBuild &m, uint numMaxMaterial)
|
|||
sint i;
|
||||
|
||||
// Empty geometry?
|
||||
if(m.Vertices.size()==0 || m.Faces.size()==0)
|
||||
if(m.Vertices.empty() || m.Faces.empty())
|
||||
{
|
||||
_VBuffer.setNumVertices(0);
|
||||
_VBuffer.setName("CMeshGeom");
|
||||
|
@ -436,7 +436,7 @@ void CMeshGeom::build (CMesh::CMeshBuild &m, uint numMaxMaterial)
|
|||
}
|
||||
|
||||
// Set the vertex buffer preferred memory
|
||||
bool avoidVBHard= _Skinned || ( _MeshMorpher && _MeshMorpher->BlendShapes.size()>0 );
|
||||
bool avoidVBHard= _Skinned || ( _MeshMorpher && !_MeshMorpher->BlendShapes.empty() );
|
||||
_VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false);
|
||||
|
||||
// End!!
|
||||
|
@ -638,7 +638,7 @@ void CMeshGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount,
|
|||
for(uint mb=0;mb<_MatrixBlocks.size();mb++)
|
||||
{
|
||||
CMatrixBlock &mBlock= _MatrixBlocks[mb];
|
||||
if(mBlock.RdrPass.size()==0)
|
||||
if(mBlock.RdrPass.empty())
|
||||
continue;
|
||||
|
||||
// Global alpha ?
|
||||
|
@ -790,7 +790,7 @@ void CMeshGeom::renderSkin(CTransformShape *trans, float alphaMRM)
|
|||
for(uint mb=0;mb<_MatrixBlocks.size();mb++)
|
||||
{
|
||||
CMatrixBlock &mBlock= _MatrixBlocks[mb];
|
||||
if(mBlock.RdrPass.size()==0)
|
||||
if(mBlock.RdrPass.empty())
|
||||
continue;
|
||||
|
||||
// Render all pass.
|
||||
|
@ -840,7 +840,7 @@ void CMeshGeom::renderSimpleWithMaterial(IDriver *drv, const CMatrix &worldMatri
|
|||
for(uint mb=0;mb<_MatrixBlocks.size();mb++)
|
||||
{
|
||||
CMatrixBlock &mBlock= _MatrixBlocks[mb];
|
||||
if(mBlock.RdrPass.size()==0)
|
||||
if(mBlock.RdrPass.empty())
|
||||
continue;
|
||||
|
||||
// Render all pass.
|
||||
|
@ -998,10 +998,10 @@ void CMeshGeom::compileRunTime()
|
|||
_PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD;
|
||||
|
||||
// Support MeshBlockRendering only if not skinned/meshMorphed.
|
||||
bool supportMeshBlockRendering= !_Skinned && _MeshMorpher->BlendShapes.size()==0;
|
||||
bool supportMeshBlockRendering= !_Skinned && _MeshMorpher->BlendShapes.empty();
|
||||
|
||||
// true only if one matrix block, and at least one rdrPass.
|
||||
supportMeshBlockRendering= supportMeshBlockRendering && _MatrixBlocks.size()==1 && _MatrixBlocks[0].RdrPass.size()>0;
|
||||
supportMeshBlockRendering= supportMeshBlockRendering && _MatrixBlocks.size()==1 && !_MatrixBlocks[0].RdrPass.empty();
|
||||
if (supportMeshBlockRendering && _MeshVertexProgram)
|
||||
{
|
||||
supportMeshBlockRendering = supportMeshBlockRendering && _MeshVertexProgram->supportMeshBlockRendering();
|
||||
|
@ -1021,7 +1021,7 @@ void CMeshGeom::compileRunTime()
|
|||
if(supportMBRPerMaterial)
|
||||
_SupportMBRFlags|= MBRSortPerMaterial;
|
||||
|
||||
bool avoidVBHard= _Skinned || ( _MeshMorpher && _MeshMorpher->BlendShapes.size()>0 );
|
||||
bool avoidVBHard= _Skinned || ( _MeshMorpher && !_MeshMorpher->BlendShapes.empty() );
|
||||
_VBuffer.setPreferredMemory (avoidVBHard?CVertexBuffer::RAMPreferred:CVertexBuffer::StaticPreferred, false);
|
||||
}
|
||||
|
||||
|
|
|
@ -407,9 +407,10 @@ void CMeshMorpher::updateRawSkin (CVertexBuffer *vbOri,
|
|||
rFactor*= 0.01f;
|
||||
uint32 numVertices= (uint32)rBS.VertRefs.size();
|
||||
// don't know why, but cases happen where deltaNorm not empty while deltaPos is
|
||||
bool hasPos= rBS.deltaPos.size()>0;
|
||||
bool hasNorm= rBS.deltaNorm.size()>0;
|
||||
bool hasUV= rBS.deltaUV.size()>0;
|
||||
bool hasPos = !rBS.deltaPos.empty();
|
||||
bool hasNorm = !rBS.deltaNorm.empty();
|
||||
bool hasUV = !rBS.deltaUV.empty();
|
||||
|
||||
for (j = 0; j < numVertices; ++j)
|
||||
{
|
||||
// Get the vertex Index in the VBufferFinal
|
||||
|
|
|
@ -180,7 +180,7 @@ void CMeshMRMGeom::CLod::optimizeTriangleOrder()
|
|||
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
|
||||
{
|
||||
NLMISC::CAABBox ret;
|
||||
nlassert(Vertices.size());
|
||||
nlassert(!Vertices.empty());
|
||||
ret.setCenter(Vertices[0]);
|
||||
for(sint i=0;i<(sint)Vertices.size();i++)
|
||||
{
|
||||
|
@ -236,7 +236,7 @@ void CMeshMRMGeom::build(CMesh::CMeshBuild &m, std::vector<CMesh::CMeshBuild*>
|
|||
uint numMaxMaterial, const CMRMParameters ¶ms)
|
||||
{
|
||||
// Empty geometry?
|
||||
if(m.Vertices.size()==0 || m.Faces.size()==0)
|
||||
if(m.Vertices.empty() || m.Faces.empty())
|
||||
{
|
||||
_VBufferFinal.setNumVertices(0);
|
||||
_VBufferFinal.reserve(0);
|
||||
|
@ -308,7 +308,7 @@ void CMeshMRMGeom::build(CMesh::CMeshBuild &m, std::vector<CMesh::CMeshBuild*>
|
|||
_LevelDetail.MaxFaceUsed= 0;
|
||||
_LevelDetail.MinFaceUsed= 0;
|
||||
// Count of primitive block
|
||||
if(_Lods.size()>0)
|
||||
if (!_Lods.empty())
|
||||
{
|
||||
uint pb;
|
||||
// Compute MinFaces.
|
||||
|
@ -469,7 +469,7 @@ void CMeshMRMGeom::applyGeomorph(std::vector<CMRMWedgeGeom> &geoms, float alpha
|
|||
void CMeshMRMGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod, uint8 *vertexDestPtr)
|
||||
{
|
||||
// no geomorphs? quit.
|
||||
if(geoms.size()==0)
|
||||
if(geoms.empty())
|
||||
return;
|
||||
|
||||
clamp(alphaLod, 0.f, 1.f);
|
||||
|
@ -900,7 +900,7 @@ inline sint CMeshMRMGeom::chooseLod(float alphaMRM, float &alphaLod)
|
|||
void CMeshMRMGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha)
|
||||
{
|
||||
nlassert(drv);
|
||||
if(_Lods.size()==0)
|
||||
if(_Lods.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -922,7 +922,7 @@ void CMeshMRMGeom::render(IDriver *drv, CTransformShape *trans, float polygonCou
|
|||
|
||||
// Render the choosen Lod.
|
||||
CLod &lod= _Lods[numLod];
|
||||
if(lod.RdrPass.size()==0)
|
||||
if(lod.RdrPass.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -1104,7 +1104,7 @@ void CMeshMRMGeom::renderSkin(CTransformShape *trans, float alphaMRM)
|
|||
{
|
||||
H_AUTO( NL3D_MeshMRMGeom_renderSkin );
|
||||
|
||||
if(_Lods.size()==0)
|
||||
if(_Lods.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -1126,7 +1126,7 @@ void CMeshMRMGeom::renderSkin(CTransformShape *trans, float alphaMRM)
|
|||
|
||||
// Render the choosen Lod.
|
||||
CLod &lod= _Lods[numLod];
|
||||
if(lod.RdrPass.size()==0)
|
||||
if(lod.RdrPass.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -1295,7 +1295,7 @@ sint CMeshMRMGeom::renderSkinGroupGeom(CMeshMRMInstance *mi, float alphaMRM, uin
|
|||
|
||||
// Render the choosen Lod.
|
||||
CLod &lod= _Lods[numLod];
|
||||
if(lod.RdrPass.size()==0)
|
||||
if(lod.RdrPass.empty())
|
||||
// return no vertices added
|
||||
return 0;
|
||||
|
||||
|
@ -1942,7 +1942,7 @@ void CMeshMRMGeom::loadFirstLod(NLMISC::IStream &f)
|
|||
|
||||
|
||||
// If empty MRM, quit.
|
||||
if(_LodInfos.size()==0)
|
||||
if(_LodInfos.empty())
|
||||
return;
|
||||
|
||||
/* If the version is <4, then SkinWeights are serialised per Lod.
|
||||
|
@ -2431,7 +2431,7 @@ void CMeshMRMGeom::compileRunTime()
|
|||
_PreciseClipping= _BBox.getRadius() >= NL3D_MESH_PRECISE_CLIP_THRESHOLD;
|
||||
|
||||
// Compute if can support SkinGrouping rendering
|
||||
if(_Lods.size()==0 || !_Skinned)
|
||||
if(_Lods.empty() || !_Skinned)
|
||||
{
|
||||
_SupportSkinGrouping= false;
|
||||
_SupportShadowSkinGrouping= false;
|
||||
|
@ -2451,7 +2451,7 @@ void CMeshMRMGeom::compileRunTime()
|
|||
}
|
||||
|
||||
// Support MeshBlockRendering only if not skinned/meshMorphed.
|
||||
_SupportMeshBlockRendering= !_Skinned && _MeshMorpher.BlendShapes.size()==0;
|
||||
_SupportMeshBlockRendering= !_Skinned && _MeshMorpher.BlendShapes.empty();
|
||||
|
||||
// \todo yoyo: support later MeshVertexProgram
|
||||
_SupportMeshBlockRendering= _SupportMeshBlockRendering && _MeshVertexProgram==NULL;
|
||||
|
@ -3367,7 +3367,7 @@ void CMeshMRMGeom::updateRawSkinNormal(bool enabled, CMeshMRMInstance *mi, sint
|
|||
|
||||
// Case of MeshMorpher
|
||||
//========
|
||||
if(_MeshMorpher.BlendShapes.size()>0)
|
||||
if(!_MeshMorpher.BlendShapes.empty())
|
||||
{
|
||||
skinLod.VertexRemap.resize((uint32)vertexFinalRemap.size());
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace NL3D
|
|||
void CMeshMRMGeom::applySkin(CLod &lod, const CSkeletonModel *skeleton)
|
||||
{
|
||||
nlassert(_Skinned);
|
||||
if(_SkinWeights.size()==0)
|
||||
if(_SkinWeights.empty())
|
||||
return;
|
||||
|
||||
// get vertexPtr.
|
||||
|
|
|
@ -380,7 +380,7 @@ static void applyArraySkinTangentSpaceT(uint numMatrixes, uint32 *infPtr, CMesh:
|
|||
void CMeshMRMGeom::applySkinWithNormal(CLod &lod, const CSkeletonModel *skeleton)
|
||||
{
|
||||
nlassert(_Skinned);
|
||||
if(_SkinWeights.size()==0)
|
||||
if(_SkinWeights.empty())
|
||||
return;
|
||||
|
||||
// get vertexPtr / normalOff.
|
||||
|
@ -446,7 +446,7 @@ void CMeshMRMGeom::applySkinWithTangentSpace(CLod &lod, const CSkeletonModel *sk
|
|||
uint tangentSpaceTexCoord)
|
||||
{
|
||||
nlassert(_Skinned);
|
||||
if(_SkinWeights.size()==0)
|
||||
if(_SkinWeights.empty())
|
||||
return;
|
||||
|
||||
// get vertexPtr / normalOff / tangent space offset.
|
||||
|
@ -1468,7 +1468,7 @@ void CMeshMRMGeom::applyArrayRawSkinNormal4(CRawVertexNormalSkin4 *src, uint8 *
|
|||
void CMeshMRMGeom::applyRawSkinWithNormal(CLod &lod, CRawSkinNormalCache &rawSkinLod, const CSkeletonModel *skeleton, uint8 *vbHard, float alphaLod)
|
||||
{
|
||||
nlassert(_Skinned);
|
||||
if(_SkinWeights.size()==0)
|
||||
if(_SkinWeights.empty())
|
||||
return;
|
||||
|
||||
// Some assert
|
||||
|
|
|
@ -160,7 +160,7 @@ void CMeshMRMSkinnedGeom::CLod::buildPrimitiveBlock(uint renderPass, const CInde
|
|||
static NLMISC::CAABBoxExt makeBBox(const std::vector<CVector> &Vertices)
|
||||
{
|
||||
NLMISC::CAABBox ret;
|
||||
nlassert(Vertices.size());
|
||||
nlassert(!Vertices.empty());
|
||||
ret.setCenter(Vertices[0]);
|
||||
for(sint i=0;i<(sint)Vertices.size();i++)
|
||||
{
|
||||
|
@ -211,7 +211,7 @@ void CMeshMRMSkinnedGeom::build(CMesh::CMeshBuild &m,
|
|||
uint numMaxMaterial, const CMRMParameters ¶ms)
|
||||
{
|
||||
// Empty geometry?
|
||||
if(m.Vertices.size()==0 || m.Faces.size()==0)
|
||||
if(m.Vertices.empty() || m.Faces.empty())
|
||||
{
|
||||
_VBufferFinal.clear();
|
||||
_Lods.clear();
|
||||
|
@ -261,7 +261,7 @@ void CMeshMRMSkinnedGeom::build(CMesh::CMeshBuild &m,
|
|||
_LevelDetail.MaxFaceUsed= 0;
|
||||
_LevelDetail.MinFaceUsed= 0;
|
||||
// Count of primitive block
|
||||
if(_Lods.size()>0)
|
||||
if(!_Lods.empty())
|
||||
{
|
||||
uint pb;
|
||||
// Compute MinFaces.
|
||||
|
@ -421,7 +421,7 @@ void CMeshMRMSkinnedGeom::applyGeomorph(std::vector<CMRMWedgeGeom> &geoms, floa
|
|||
void CMeshMRMSkinnedGeom::applyGeomorphWithVBHardPtr(std::vector<CMRMWedgeGeom> &geoms, float alphaLod)
|
||||
{
|
||||
// no geomorphs? quit.
|
||||
if(geoms.size()==0)
|
||||
if(geoms.empty())
|
||||
return;
|
||||
|
||||
clamp(alphaLod, 0.f, 1.f);
|
||||
|
@ -579,7 +579,7 @@ inline sint CMeshMRMSkinnedGeom::chooseLod(float alphaMRM, float &alphaLod)
|
|||
void CMeshMRMSkinnedGeom::render(IDriver *drv, CTransformShape *trans, float polygonCount, uint32 rdrFlags, float globalAlpha)
|
||||
{
|
||||
nlassert(drv);
|
||||
if(_Lods.size()==0)
|
||||
if(_Lods.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -597,7 +597,7 @@ void CMeshMRMSkinnedGeom::render(IDriver *drv, CTransformShape *trans, float pol
|
|||
|
||||
// Render the choosen Lod.
|
||||
CLod &lod= _Lods[numLod];
|
||||
if(lod.RdrPass.size()==0)
|
||||
if(lod.RdrPass.empty())
|
||||
return;
|
||||
|
||||
|
||||
|
@ -757,7 +757,7 @@ sint CMeshMRMSkinnedGeom::renderSkinGroupGeom(CMeshMRMSkinnedInstance *mi, float
|
|||
|
||||
// Render the choosen Lod.
|
||||
CLod &lod= _Lods[numLod];
|
||||
if(lod.RdrPass.size()==0)
|
||||
if(lod.RdrPass.empty())
|
||||
// return no vertices added
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -3119,7 +3119,7 @@ bool CMRMBuilder::buildMRMSewingMeshes(const CMesh::CMeshBuild &mbuild, uint nWa
|
|||
{
|
||||
nlassert(nWantedLods>=1);
|
||||
nlassert(divisor>=1);
|
||||
if(mbuild.Interfaces.size()==0)
|
||||
if(mbuild.Interfaces.empty())
|
||||
return false;
|
||||
// must have same size
|
||||
if(mbuild.InterfaceLinks.size()!=mbuild.Vertices.size())
|
||||
|
|
|
@ -604,7 +604,8 @@ void CPatch::addRefTessBlocks()
|
|||
uint i;
|
||||
|
||||
TessBlockRefCount++;
|
||||
if(TessBlocks.size()==0)
|
||||
|
||||
if (TessBlocks.empty())
|
||||
{
|
||||
// Allocate the tessblocks.
|
||||
//==========
|
||||
|
@ -1629,7 +1630,7 @@ void CPatch::serial(NLMISC::IStream &f)
|
|||
|
||||
// then just copy to TileColors.
|
||||
TileColors.resize(tmpArray.size());
|
||||
if(TileColors.size()>0)
|
||||
if(!TileColors.empty())
|
||||
{
|
||||
memcpy(&TileColors[0], &tmpArray[0], TileColors.size()*sizeof(CTileColor));
|
||||
}
|
||||
|
|
|
@ -1452,7 +1452,7 @@ void CPatch::computeSoftwareGeomorphAndAlpha()
|
|||
// Need only to fill CTessVertex, so do it only for FarVertices
|
||||
// Hence Geomorph is done twice on edges of patches!!.
|
||||
// If not too near for precise, fast compute of geomorph.
|
||||
if( TessBlocks.size()==0 )
|
||||
if( TessBlocks.empty() )
|
||||
{
|
||||
// Just update all vertices of master block.
|
||||
computeGeomorphVertexList(MasterBlock.FarVertexList);
|
||||
|
|
|
@ -540,7 +540,7 @@ bool CPatchDLMContext::generate(CPatch *patch, CTextureDLM *textureDLM, CPatch
|
|||
#ifndef NL_DLM_TILE_RES
|
||||
|
||||
// retrieve patch tileColor pointer.
|
||||
nlassert(_Patch->TileColors.size()>0);
|
||||
nlassert(!_Patch->TileColors.empty());
|
||||
CTileColor *tileColor= &_Patch->TileColors[0];
|
||||
|
||||
// skip 1 tiles colors per column and per row
|
||||
|
@ -898,7 +898,7 @@ void CPatchDLMContext::compileLighting(TCompileType compType, CRGBA modulateCt
|
|||
if(! (_IsSrcTextureFullBlack && _IsDstTextureFullBlack) )
|
||||
{
|
||||
// if lightMap allocated
|
||||
if(_LightMap.size()>0 && _DLMTexture)
|
||||
if(!_LightMap.empty() && _DLMTexture)
|
||||
{
|
||||
// If the srcTexture is full black (ie no pointLight influence touch it),
|
||||
if(_IsSrcTextureFullBlack)
|
||||
|
|
|
@ -226,7 +226,7 @@ void CPSFace::step(TPSProcessPass pass)
|
|||
else if (pass == PSMotion)
|
||||
{
|
||||
|
||||
if (_PrecompBasis.size()) // do we use precomputed basis ?
|
||||
if (!_PrecompBasis.empty()) // do we use precomputed basis ?
|
||||
{
|
||||
// rotate all precomputed basis
|
||||
for (CPSVector< CPlaneBasisPair >::V::iterator it = _PrecompBasis.begin(); it != _PrecompBasis.end(); ++it)
|
||||
|
@ -394,7 +394,7 @@ void CPSFace::deleteElement(uint32 index)
|
|||
NL_PS_FUNC(CPSFace_deleteElement)
|
||||
CPSQuad::deleteElement(index);
|
||||
deletePlaneBasisElement(index);
|
||||
if (_PrecompBasis.size()) // do we use precomputed basis ?
|
||||
if (!_PrecompBasis.empty()) // do we use precomputed basis ?
|
||||
{
|
||||
// replace ourself by the last element...
|
||||
_IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1];
|
||||
|
@ -407,7 +407,7 @@ void CPSFace::resize(uint32 size)
|
|||
NL_PS_FUNC(CPSFace_resize)
|
||||
nlassert(size < (1 << 16));
|
||||
resizePlaneBasis(size);
|
||||
if (_PrecompBasis.size()) // do we use precomputed basis ?
|
||||
if (!_PrecompBasis.empty()) // do we use precomputed basis ?
|
||||
{
|
||||
_IndexInPrecompBasis.resize(size);
|
||||
}
|
||||
|
|
|
@ -1994,7 +1994,7 @@ void CPSConstraintMesh::deleteElement(uint32 index)
|
|||
deleteSizeElement(index);
|
||||
deletePlaneBasisElement(index);
|
||||
// TODO : avoid code cuplication with CPSFace ...
|
||||
if (_PrecompBasis.size()) // do we use precomputed basis ?
|
||||
if (!_PrecompBasis.empty()) // do we use precomputed basis ?
|
||||
{
|
||||
// replace ourself by the last element...
|
||||
_IndexInPrecompBasis[index] = _IndexInPrecompBasis[_Owner->getSize() - 1];
|
||||
|
@ -2011,7 +2011,7 @@ void CPSConstraintMesh::resize(uint32 size)
|
|||
resizeSize(size);
|
||||
resizePlaneBasis(size);
|
||||
// TODO : avoid code cuplication with CPSFace ...
|
||||
if (_PrecompBasis.size()) // do we use precomputed basis ?
|
||||
if (!_PrecompBasis.empty()) // do we use precomputed basis ?
|
||||
{
|
||||
_IndexInPrecompBasis.resize(size);
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ void CQuadEffect::processPoly(const TPoint2DVect &poly
|
|||
static TRasters rDest;
|
||||
float currY;
|
||||
makeRasters(poly, quadWidth, quadHeight, rDest, currY);
|
||||
if (dest.size())
|
||||
if (!dest.empty())
|
||||
{
|
||||
TRasters::const_iterator it, endIt = rDest.end();
|
||||
for (it = rDest.begin(); it != endIt; ++it)
|
||||
|
|
|
@ -705,7 +705,7 @@ void CShadowMapManager::renderProject(CScene *scene)
|
|||
}
|
||||
driver->activeVertexBuffer (CopyQuads);
|
||||
|
||||
if (_ShadowCasters.size()>0)
|
||||
if (!_ShadowCasters.empty())
|
||||
{
|
||||
// get the transform to compute shadow map.
|
||||
CTransform *sc= _ShadowCasters[0];
|
||||
|
|
|
@ -119,7 +119,7 @@ bool CTextureDLM::canCreateLightMap(uint w, uint h)
|
|||
return true;
|
||||
|
||||
// If empty, test if there is an empty block.
|
||||
return _EmptyBlocks.size()>0;
|
||||
return !_EmptyBlocks.empty();
|
||||
}
|
||||
|
||||
|
||||
|
@ -166,7 +166,7 @@ bool CTextureDLM::createLightMap(uint w, uint h, uint &x, uint &y)
|
|||
if(_FreeBlocks[lMapType]==NULL)
|
||||
{
|
||||
// list is empty => allocate a block from _EmptyBlocks.
|
||||
nlassert(_EmptyBlocks.size()>0);
|
||||
nlassert(!_EmptyBlocks.empty());
|
||||
|
||||
// pop a block from empty list
|
||||
CBlock *block= &_Blocks[_EmptyBlocks.back()];
|
||||
|
|
|
@ -108,7 +108,7 @@ void CTileBank::serial(NLMISC::IStream &f) throw(NLMISC::EStream)
|
|||
if (f.isReading())
|
||||
{
|
||||
// Checks
|
||||
nlassert (_DisplacementMap.size()>0);
|
||||
nlassert (!_DisplacementMap.empty());
|
||||
|
||||
// Set first empty
|
||||
_DisplacementMap[0].setEmpty ();
|
||||
|
@ -543,7 +543,7 @@ CTileNoiseMap *CTileBank::getTileNoiseMap (uint tileNumber, uint tileSubNoise)
|
|||
}
|
||||
}
|
||||
|
||||
if (_DisplacementMap.size()==0 || _DisplacementMap[0]._TileNoiseMap)
|
||||
if (_DisplacementMap.empty() || _DisplacementMap[0]._TileNoiseMap)
|
||||
return NULL;
|
||||
|
||||
// Checks
|
||||
|
|
|
@ -71,7 +71,7 @@ void CVegetableBlendLayerModel::render(IDriver *driver)
|
|||
|
||||
nlassert(VegetableManager);
|
||||
|
||||
if(SortBlocks.size()==0)
|
||||
if(SortBlocks.empty())
|
||||
return;
|
||||
|
||||
// Setup VegetableManager renderState (like pre-setuped material)
|
||||
|
|
|
@ -1019,12 +1019,12 @@ void CVegetableManager::reserveIgCompile(CVegetableInstanceGroup *ig, const CV
|
|||
{
|
||||
CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= ig->_RdrPass[rdrPass];
|
||||
nlassert(vegetRdrPass.TriangleIndices.getNumIndexes()==0);
|
||||
nlassert(vegetRdrPass.TriangleLocalIndices.size()==0);
|
||||
nlassert(vegetRdrPass.Vertices.size()==0);
|
||||
nlassert(vegetRdrPass.LightedInstances.size()==0);
|
||||
nlassert(vegetRdrPass.TriangleLocalIndices.empty());
|
||||
nlassert(vegetRdrPass.Vertices.empty());
|
||||
nlassert(vegetRdrPass.LightedInstances.empty());
|
||||
}
|
||||
// Do the same for all quadrants of the zsort rdrPass.
|
||||
nlassert(ig->_TriangleQuadrantOrderArray.size()==0);
|
||||
nlassert(ig->_TriangleQuadrantOrderArray.empty());
|
||||
nlassert(ig->_TriangleQuadrantOrderNumTriangles==0);
|
||||
|
||||
|
||||
|
@ -2553,7 +2553,7 @@ bool CVegetableManager::updateLightingIGPart()
|
|||
}
|
||||
CVegetableInstanceGroup::CVegetableRdrPass &vegetRdrPass= _ULRootIg->_RdrPass[_ULCurrentIgRdrPass];
|
||||
|
||||
// if all instances are processed for this pass (especially if size()==0 !!)
|
||||
// if all instances are processed for this pass (especially if empty() !!)
|
||||
if(_ULCurrentIgInstance>= vegetRdrPass.LightedInstances.size())
|
||||
{
|
||||
// skip to the next rdrPass.
|
||||
|
|
|
@ -186,7 +186,7 @@ bool CVegetableVBAllocator::exceedMaxVertexInBufferHard(uint numAddVerts) cons
|
|||
uint CVegetableVBAllocator::allocateVertex()
|
||||
{
|
||||
// if no more free, allocate.
|
||||
if( _VertexFreeMemory.size()==0 )
|
||||
if( _VertexFreeMemory.empty() )
|
||||
{
|
||||
// enlarge capacity.
|
||||
uint newResize;
|
||||
|
|
|
@ -500,7 +500,7 @@ void CWaterModel::traverseRender()
|
|||
sint startY;
|
||||
projPoly.computeBorders(rasters, startY);
|
||||
|
||||
if (rasters.size())
|
||||
if (!rasters.empty())
|
||||
{
|
||||
//===========================//
|
||||
// perform Water animation //
|
||||
|
|
|
@ -1126,7 +1126,7 @@ void CZone::refineAll()
|
|||
{
|
||||
nlassert(Compiled);
|
||||
|
||||
if(Patchs.size()==0)
|
||||
if(Patchs.empty())
|
||||
return;
|
||||
|
||||
// DO NOT do a forceNoRenderClip(), to avoid big allocation of Near/Far VB vertices in driver.
|
||||
|
@ -1150,7 +1150,7 @@ void CZone::averageTesselationVertices()
|
|||
{
|
||||
nlassert(Compiled);
|
||||
|
||||
if(Patchs.size()==0)
|
||||
if(Patchs.empty())
|
||||
return;
|
||||
|
||||
// averageTesselationVertices of ALL patchs.
|
||||
|
@ -1250,8 +1250,10 @@ void CZone::resetRenderFarAndDeleteVBFV()
|
|||
void CZone::forceMergeAtTileLevel()
|
||||
{
|
||||
CPatch *pPatch=0;
|
||||
if(Patchs.size()>0)
|
||||
|
||||
if (!Patchs.empty())
|
||||
pPatch= &(*Patchs.begin());
|
||||
|
||||
for(sint n=(sint)Patchs.size();n>0;n--, pPatch++)
|
||||
{
|
||||
pPatch->forceMergeAtTileLevel();
|
||||
|
@ -1446,7 +1448,7 @@ void CZone::applyHeightField(const CLandscape &landScape)
|
|||
vector<CBezierPatch> patchs;
|
||||
|
||||
// no patch, do nothing.
|
||||
if(Patchs.size()==0)
|
||||
if(Patchs.empty())
|
||||
return;
|
||||
|
||||
// 0. Unpack patchs to Bezier Patchs.
|
||||
|
|
|
@ -3113,7 +3113,7 @@ void CZoneLighter::addWaterShape(CWaterShape *shape, const NLMISC::CMatrix &MT)
|
|||
// ***********************************************************
|
||||
void CZoneLighter::makeQuadGridFromWaterShapes(NLMISC::CAABBox zoneBBox)
|
||||
{
|
||||
if (!_WaterShapes.size()) return;
|
||||
if (_WaterShapes.empty()) return;
|
||||
|
||||
NLMISC::CAABBox tmpBox;
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ namespace NLGUI
|
|||
}
|
||||
|
||||
// resize H
|
||||
if(entries.size()>0)
|
||||
if (!entries.empty())
|
||||
{
|
||||
CInterfaceGroup *colEnclosing = entries[0]->getTargetColumn();
|
||||
if (colEnclosing && !colEnclosing->getGroups().empty())
|
||||
|
|
|
@ -262,7 +262,7 @@ namespace NLGUI
|
|||
{
|
||||
tabB->setId(string("tab") + NLMISC::toString(_Buttons.size()));
|
||||
|
||||
if(_Buttons.size()==0)
|
||||
if(_Buttons.empty())
|
||||
{
|
||||
tabB->setParentPos(NULL);
|
||||
tabB->setParentPosRef(Hotspot_TL);
|
||||
|
@ -453,7 +453,7 @@ namespace NLGUI
|
|||
// ***************************************************************************
|
||||
void CGroupTab::updateFirstTabButton()
|
||||
{
|
||||
if(!_HideOutTabs || (_Selection<0) || (_Buttons.size()==0) || (_Parent->getWReal()<0)
|
||||
if(!_HideOutTabs || (_Selection<0) || _Buttons.empty() || (_Parent->getWReal()<0)
|
||||
|| _FirstTabIndex>=(sint)_Buttons.size())
|
||||
return;
|
||||
|
||||
|
|
|
@ -193,7 +193,7 @@ namespace NLGUI
|
|||
xmlKeepBlanksDefault(0);
|
||||
//parse all interface files and build a single xml document
|
||||
xmlNodePtr globalEnclosing;
|
||||
nlassert (strings.size());
|
||||
nlassert (!strings.empty());
|
||||
CIXml read;
|
||||
string nextFileName;
|
||||
static const char *SCRIPT_AS_STRING = "<script as string>";
|
||||
|
|
|
@ -1218,7 +1218,7 @@ const IPrimitive *IPrimitive::getPrimitive (const std::string &absoluteOrRelativ
|
|||
path.erase(0,2);
|
||||
}
|
||||
|
||||
while (path.size()>0)
|
||||
while (!path.empty())
|
||||
{
|
||||
if (path.find("/")==0)
|
||||
{
|
||||
|
|
|
@ -278,7 +278,7 @@ ICDBNode * CCDBNodeBranch::getNode (const CTextId& id, bool bCreate)
|
|||
{
|
||||
// Yoyo: must not be SERVER or LOCAL, cause definied through xml.
|
||||
// This may cause some important crash error
|
||||
//nlassert(id.size()>0);
|
||||
//nlassert(!id.empty());
|
||||
//nlassert(id.getElement(0)!="SERVER");
|
||||
//nlassert(id.getElement(0)!="LOCAL");
|
||||
ICDBNode *newNode;
|
||||
|
|
|
@ -105,7 +105,7 @@ void CPolygon::clip(const CPlane *planes, uint nPlanes)
|
|||
// ***************************************************************************
|
||||
void CPolygon::clip(const std::vector<CPlane> &planes)
|
||||
{
|
||||
if(planes.size()==0)
|
||||
if(planes.empty())
|
||||
return;
|
||||
clip(&(*planes.begin()), (uint)planes.size());
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ bool CSystemUtils::updateProgressBar(uint value, uint total)
|
|||
|
||||
bool CSystemUtils::copyTextToClipboard(const ucstring &text)
|
||||
{
|
||||
if (!text.size()) return false;
|
||||
if (text.empty()) return false;
|
||||
|
||||
bool res = false;
|
||||
|
||||
|
|
|
@ -430,7 +430,7 @@ void serviceGetView (uint32 rid, const string &rawvarpath, TAdminViewResult &ans
|
|||
else
|
||||
{
|
||||
|
||||
if (strs.size()>0)
|
||||
if (!strs.empty())
|
||||
{
|
||||
str = strs[0].substr(0,strs[0].size()-1);
|
||||
// replace all spaces into udnerscore because space is a reserved char
|
||||
|
@ -717,7 +717,7 @@ void updateAdmin()
|
|||
ICommand::execute(Alarms[i].Name, logDisplayVars, true, false);
|
||||
const std::deque<std::string> &strs = mdDisplayVars.lockStrings();
|
||||
|
||||
if (strs.size()>0)
|
||||
if (!strs.empty())
|
||||
{
|
||||
str = strs[0].substr(0,strs[0].size()-1);
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ bool CBufSock::flush( uint *nbBytesRemaining )
|
|||
{
|
||||
SendFifo.front( tmpbuffer, size );
|
||||
}
|
||||
while ( ! SendFifo.empty() && ( (_ReadyToSendBuffer.size()==0) || (_ReadyToSendBuffer.size() +size < MaxTCPPacketSize) ) )
|
||||
while ( ! SendFifo.empty() && ( _ReadyToSendBuffer.empty() || (_ReadyToSendBuffer.size() +size < MaxTCPPacketSize) ) )
|
||||
{
|
||||
// Compute the size and add it into the beginning of the buffer
|
||||
netlen = htonl( (TBlockSize)size );
|
||||
|
@ -252,7 +252,7 @@ bool CBufSock::flush( uint *nbBytesRemaining )
|
|||
}
|
||||
|
||||
}
|
||||
while ( !SendFifo.empty() && _ReadyToSendBuffer.size()==0 );
|
||||
while ( !SendFifo.empty() && _ReadyToSendBuffer.empty() );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -288,7 +288,7 @@ string CLoginClient::confirmConnection(sint32 shardId)
|
|||
// S05: create and send the "CS" message with the shardid choice to the LS
|
||||
//
|
||||
|
||||
if (!ShardList.size())
|
||||
if (ShardList.empty())
|
||||
{
|
||||
_LSCallbackClient->disconnect();
|
||||
return "No shard available";
|
||||
|
@ -358,7 +358,7 @@ string CLoginClient::selectShardBegin(sint32 shardId)
|
|||
ShardChooseShardReason = "";
|
||||
ShardChooseShard = false;
|
||||
|
||||
if (!ShardList.size())
|
||||
if (ShardList.empty())
|
||||
{
|
||||
_LSCallbackClient->disconnect();
|
||||
delete _LSCallbackClient;
|
||||
|
|
|
@ -420,7 +420,7 @@ bool CNamingClient::lookup (const std::string &name, CInetAddress &addr)
|
|||
vector<CInetAddress> addrs;
|
||||
find (name, addrs);
|
||||
|
||||
if (addrs.size()==0)
|
||||
if (addrs.empty())
|
||||
return false;
|
||||
|
||||
nlassert (addrs.size()==1);
|
||||
|
@ -436,7 +436,7 @@ bool CNamingClient::lookup (TServiceId sid, CInetAddress &addr)
|
|||
vector<CInetAddress> addrs;
|
||||
find (sid, addrs);
|
||||
|
||||
if (addrs.size()==0)
|
||||
if (addrs.empty())
|
||||
return false;
|
||||
|
||||
nlassert (addrs.size()==1);
|
||||
|
@ -465,7 +465,7 @@ bool CNamingClient::lookupAlternate (const std::string &name, CInetAddress &addr
|
|||
vector<CInetAddress> addrs;
|
||||
find (name, addrs);
|
||||
|
||||
if (addrs.size()==0)
|
||||
if (addrs.empty())
|
||||
return false;
|
||||
|
||||
nlassert (addrs.size()==1);
|
||||
|
|
|
@ -1460,7 +1460,7 @@ sint IService::main (const char *serviceShortName, const char *serviceLongName,
|
|||
mdDisplayVars.clear ();
|
||||
ICommand::execute(varName, logDisplayVars, true);
|
||||
const std::deque<std::string> &strs = mdDisplayVars.lockStrings();
|
||||
if (strs.size()>0)
|
||||
if (!strs.empty())
|
||||
{
|
||||
str += strs[0].substr(0,strs[0].size()-1);
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ CSoundDriverAL::~CSoundDriverAL()
|
|||
|
||||
// Remove the allocated (but not exported) source and buffer names-
|
||||
// Release internal resources of all remaining ISource instances
|
||||
if (_Sources.size())
|
||||
if (!_Sources.empty())
|
||||
{
|
||||
nlwarning("AL: _Sources.size(): '%u'", (uint32)_Sources.size());
|
||||
set<CSourceAL *>::iterator it(_Sources.begin()), end(_Sources.end());
|
||||
|
@ -206,7 +206,7 @@ CSoundDriverAL::~CSoundDriverAL()
|
|||
}
|
||||
if (!_Buffers.empty()) alDeleteBuffers(compactAliveNames(_Buffers, alIsBuffer), &*_Buffers.begin());
|
||||
// Release internal resources of all remaining IEffect instances
|
||||
if (_Effects.size())
|
||||
if (!_Effects.empty())
|
||||
{
|
||||
nlwarning("AL: _Effects.size(): '%u'", (uint32)_Effects.size());
|
||||
set<CEffectAL *>::iterator it(_Effects.begin()), end(_Effects.end());
|
||||
|
|
|
@ -254,7 +254,7 @@ bool CSourceAL::play()
|
|||
if (!_IsPlaying) // set start time if not playing yet
|
||||
_StartTime = CTime::getLocalTime();
|
||||
_IsPlaying = true; // this play always virtually succeed but may not actually be playing
|
||||
if (_QueuedBuffers.size()) // ensure buffers have actually queued
|
||||
if (!_QueuedBuffers.empty()) // ensure buffers have actually queued
|
||||
{
|
||||
alSourcePlay(_Source);
|
||||
if (alGetError() != AL_NO_ERROR)
|
||||
|
@ -306,7 +306,7 @@ void CSourceAL::stop()
|
|||
alSourceStop(_Source);
|
||||
alTestError();
|
||||
// unqueue buffers
|
||||
while (_QueuedBuffers.size())
|
||||
while (!_QueuedBuffers.empty())
|
||||
{
|
||||
ALuint bufferName = _QueuedBuffers.front()->bufferName();
|
||||
alSourceUnqueueBuffers(_Source, 1, &bufferName);
|
||||
|
|
|
@ -215,7 +215,7 @@ void CSoundDriverXAudio2::release()
|
|||
// the created instances must still be released by the user!
|
||||
|
||||
// Release internal resources of all remaining ISource instances
|
||||
if (_Sources.size())
|
||||
if (!_Sources.empty())
|
||||
{
|
||||
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Sources.size(): '%u'", (uint32)_Sources.size());
|
||||
set<CSourceXAudio2 *>::iterator it(_Sources.begin()), end(_Sources.end());
|
||||
|
@ -223,7 +223,7 @@ void CSoundDriverXAudio2::release()
|
|||
_Sources.clear();
|
||||
}
|
||||
// Release internal resources of all remaining IBuffer instances
|
||||
if (_Buffers.size())
|
||||
if (!_Buffers.empty())
|
||||
{
|
||||
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Buffers.size(): '%u'", (uint32)_Buffers.size());
|
||||
set<CBufferXAudio2 *>::iterator it(_Buffers.begin()), end(_Buffers.end());
|
||||
|
@ -231,7 +231,7 @@ void CSoundDriverXAudio2::release()
|
|||
_Buffers.clear();
|
||||
}
|
||||
// Release internal resources of all remaining IEffect instances
|
||||
if (_Effects.size())
|
||||
if (!_Effects.empty())
|
||||
{
|
||||
nlwarning(NLSOUND_XAUDIO2_PREFIX "_Effects.size(): '%u'", (uint32)_Effects.size());
|
||||
set<CEffectXAudio2 *>::iterator it(_Effects.begin()), end(_Effects.end());
|
||||
|
|
|
@ -672,7 +672,7 @@ NLMISC_COMMAND(bugReport, "Call the bug report tool with dump", "<AddScreenshot>
|
|||
|
||||
sys = "Language "+CI18N::getCurrentLanguageName().toString() +" ";
|
||||
|
||||
if (args.size()>0)
|
||||
if (!args.empty())
|
||||
{
|
||||
uint8 quality;
|
||||
fromString(args[0], quality);
|
||||
|
@ -1205,9 +1205,9 @@ static bool talkInChan(uint32 nb,std::vector<std::string>args)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
if(args.size()>0)
|
||||
if(!args.empty())
|
||||
{
|
||||
std::string tmp="";
|
||||
std::string tmp;
|
||||
std::vector<std::string>::const_iterator first(args.begin()),last(args.end());
|
||||
|
||||
for(;first!=last;++first)
|
||||
|
|
|
@ -1604,7 +1604,7 @@ void getMagicBonus(CDBCtrlSheet *item, ucstring &itemText)
|
|||
}
|
||||
|
||||
// append a \n before
|
||||
if(mbInfo.size())
|
||||
if(!mbInfo.empty())
|
||||
{
|
||||
// add spell level header
|
||||
ucstring spellRuleFmt= CI18N::get("uihelpItemMagicBonusHeader");
|
||||
|
|
|
@ -105,7 +105,8 @@ void CActionPhraseFaber::launchFaberCastWindow(sint32 memoryLine, uint memoryIn
|
|||
|
||||
// get the family of item plan (for selection) from the rootBrick. It is stored in the Property0.
|
||||
_FaberPlanBrickFamilies.clear();
|
||||
if(rootBrick->Properties.size()>0)
|
||||
|
||||
if (!rootBrick->Properties.empty())
|
||||
{
|
||||
string prop= NLMISC::toUpper(rootBrick->Properties[0].Text);
|
||||
vector<string> strList;
|
||||
|
|
|
@ -639,8 +639,8 @@ void CDBCtrlSheet::initSheet(const std::string &dbBranchId, const CCtrlSheetInfo
|
|||
{
|
||||
H_AUTO ( RZ_CDBCtrlSheet_initSheet )
|
||||
|
||||
nlassert((ctrlInfo._Type == SheetType_Macro) || (dbBranchId.size()>0));
|
||||
nlassert((ctrlInfo._Type == SheetType_Macro) || (_Id.size()>0));
|
||||
nlassert((ctrlInfo._Type == SheetType_Macro) || !dbBranchId.empty());
|
||||
nlassert((ctrlInfo._Type == SheetType_Macro) || !_Id.empty());
|
||||
|
||||
// init
|
||||
*static_cast<CCtrlSheetInfo*>(this)= ctrlInfo;
|
||||
|
|
|
@ -3021,7 +3021,7 @@ void CGroupMap::addRespawnPoints(const CRespawnPointsMsg &rpm)
|
|||
for (uint32 i = 0; i < rpm.RespawnPoints.size(); ++i)
|
||||
_RespawnPos.push_back(rpm.RespawnPoints[i]);
|
||||
// Ensure there is at least one respawn point
|
||||
// nlassert(_RespawnPos.size()>0);
|
||||
// nlassert(!_RespawnPos.empty());
|
||||
|
||||
// Choose the good map ! (select the first respawn point and check for first matching bounding box map
|
||||
if (_MapMode != MapMode_Death) return;
|
||||
|
|
|
@ -643,7 +643,7 @@ void CInterfaceManager::initLogin()
|
|||
ActionsContext.addActionsManager(&EditActions, RZ_CATEGORY_EDIT);
|
||||
|
||||
|
||||
if (ClientCfg.XMLLoginInterfaceFiles.size()==0)
|
||||
if (ClientCfg.XMLLoginInterfaceFiles.empty())
|
||||
{
|
||||
nlinfo("no xml login config files in client.cfg");
|
||||
return;
|
||||
|
@ -729,7 +729,7 @@ void CInterfaceManager::initOutGame()
|
|||
|
||||
//NLMEMORY::CheckHeap (true);
|
||||
|
||||
if (ClientCfg.XMLOutGameInterfaceFiles.size()==0)
|
||||
if (ClientCfg.XMLOutGameInterfaceFiles.empty())
|
||||
{
|
||||
nlinfo("no xml outgame config files in client.cfg");
|
||||
return;
|
||||
|
@ -889,7 +889,7 @@ void CInterfaceManager::initInGame()
|
|||
|
||||
// NLMEMORY::CheckHeap (true);
|
||||
|
||||
if (ClientCfg.XMLInterfaceFiles.size()==0)
|
||||
if (ClientCfg.XMLInterfaceFiles.empty())
|
||||
{
|
||||
nlinfo("no xml config files in client.cfg");
|
||||
return;
|
||||
|
|
|
@ -1346,7 +1346,7 @@ sint CSPhraseManager::getPhraseSuccessRate(const CSPhraseCom &phrase)
|
|||
CSBrickManager *pBM= CSBrickManager::getInstance();
|
||||
CSkillManager *pSM= CSkillManager::getInstance();
|
||||
|
||||
if(phrase.Bricks.size()==0)
|
||||
if(phrase.Bricks.empty())
|
||||
return 0;
|
||||
CSBrickSheet *rootBrick= pBM->getBrick(phrase.Bricks[0]);
|
||||
if(!rootBrick)
|
||||
|
@ -1432,7 +1432,7 @@ sint CSPhraseManager::getCraftPhraseSuccessRate(const CSPhraseCom &phrase, SK
|
|||
{
|
||||
CSkillManager *pSM= CSkillManager::getInstance();
|
||||
|
||||
if(phrase.Bricks.size()==0)
|
||||
if(phrase.Bricks.empty())
|
||||
return 0;
|
||||
|
||||
// take skill value of the skill
|
||||
|
@ -1450,7 +1450,7 @@ sint CSPhraseManager::getForageExtractionPhraseSuccessRate(const CSPhraseCom
|
|||
{
|
||||
CSkillManager *pSM= CSkillManager::getInstance();
|
||||
|
||||
if(phrase.Bricks.size()==0)
|
||||
if(phrase.Bricks.empty())
|
||||
return 0;
|
||||
|
||||
// take skill value of the skill
|
||||
|
@ -1505,7 +1505,7 @@ void CSPhraseManager::getPhraseCastTime(const CSPhraseCom &phrase, uint32 tot
|
|||
castTime= 0;
|
||||
castTimeMalus= 0;
|
||||
|
||||
if(phrase.Bricks.size()==0)
|
||||
if(phrase.Bricks.empty())
|
||||
return;
|
||||
CSBrickSheet *rootBrick= pBM->getBrick(phrase.Bricks[0]);
|
||||
if(!rootBrick)
|
||||
|
@ -1576,7 +1576,7 @@ void CSPhraseManager::getPhraseMagicRange(const CSPhraseCom &phrase, uint32 t
|
|||
range= 0;
|
||||
rangeMalus= 0;
|
||||
|
||||
if(phrase.Bricks.size()==0)
|
||||
if(phrase.Bricks.empty())
|
||||
return;
|
||||
CSBrickSheet *rootBrick= pBM->getBrick(phrase.Bricks[0]);
|
||||
if(!rootBrick)
|
||||
|
|
|
@ -1027,7 +1027,7 @@ bool login()
|
|||
void removeSpace(string &s)
|
||||
{
|
||||
uint i = 0;
|
||||
while (s.size()>0)
|
||||
while (!s.empty())
|
||||
{
|
||||
if (s[i] == ' ')
|
||||
s.erase(i, 1);
|
||||
|
|
|
@ -370,7 +370,7 @@ private:
|
|||
ServerPath = serverPath;
|
||||
Available = true;
|
||||
|
||||
if (ServerPath.size()>0 && ServerPath[ServerPath.size()-1] != '/')
|
||||
if (!ServerPath.empty() && ServerPath[ServerPath.size()-1] != '/')
|
||||
ServerPath += '/';
|
||||
|
||||
std::string::size_type pos = ServerPath.find ("@");
|
||||
|
|
|
@ -111,7 +111,7 @@ bool CMovieShooter::addFrame(double time, UDriver *pDriver)
|
|||
nlassert(bitmap.getPixelFormat()==CBitmap::RGBA);
|
||||
|
||||
// add the frame.
|
||||
if(bitmap.getPixels().size()==0)
|
||||
if(bitmap.getPixels().empty())
|
||||
return false;
|
||||
return addFrame(time, (CRGBA*)(&bitmap.getPixels()[0]), bitmap.getWidth(), bitmap.getHeight());
|
||||
}
|
||||
|
|
|
@ -2499,7 +2499,7 @@ void impulseRemoteAdmin (NLMISC::CBitMemStream &impulse)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (strs.size()>0)
|
||||
if (!strs.empty())
|
||||
{
|
||||
str = strs[0].substr(0,strs[0].size()-1);
|
||||
// replace all spaces into underscore because space is a reserved char
|
||||
|
|
|
@ -5808,7 +5808,7 @@ void CEditor::scenarioUpdated(CObject* highLevel, bool willTP, uint32 initialAct
|
|||
playerPos.y <= ci.YMin ||
|
||||
playerPos.y >= ci.YMax)
|
||||
{
|
||||
if(ci.EntryPoints.size()>0)
|
||||
if(!ci.EntryPoints.empty())
|
||||
{
|
||||
const CScenarioEntryPoints::CShortEntryPoint & shortEntryPoint = ci.EntryPoints[0];
|
||||
CVector dest((float) shortEntryPoint.X, (float) shortEntryPoint.Y, 0.f);
|
||||
|
|
|
@ -55,7 +55,7 @@ void CToolPick::setIgnoreInstances(const std::string & ignoreInstances)
|
|||
if (e == std::string::npos || e == 0)
|
||||
{
|
||||
tmp = allKind;
|
||||
allKind="";
|
||||
allKind.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -63,14 +63,14 @@ void CToolPick::setIgnoreInstances(const std::string & ignoreInstances)
|
|||
allKind = allKind.substr(e+1,allKind.size());
|
||||
}
|
||||
|
||||
while(tmp.size()>0 && tmp[0]==' ')
|
||||
while(!tmp.empty() && tmp[0]==' ')
|
||||
{
|
||||
if(tmp.size()==1)
|
||||
tmp="";
|
||||
tmp.clear();
|
||||
else
|
||||
tmp = tmp.substr(1,tmp.size());
|
||||
}
|
||||
while(tmp.size()>0 && tmp[tmp.size()]==' ')
|
||||
while(!tmp.empty() && tmp[tmp.size()]==' ')
|
||||
{
|
||||
if(tmp.size()==1)
|
||||
tmp="";
|
||||
|
@ -98,7 +98,7 @@ void CToolPick::updateAfterRender()
|
|||
_CandidateInstance = NULL;
|
||||
CInstance *instanceUnder = checkInstanceUnderMouse();
|
||||
bool ignoreInstanceUnder = false;
|
||||
if(instanceUnder && _IgnoreInstances.size()>0)
|
||||
if(instanceUnder && !_IgnoreInstances.empty())
|
||||
{
|
||||
for(uint i=0; i<_IgnoreInstances.size(); i++)
|
||||
{
|
||||
|
|
|
@ -425,7 +425,7 @@ void CScenarioEntryPoints::loadFromXMLFile()
|
|||
}
|
||||
|
||||
|
||||
if(entryPoints.size()>0)
|
||||
if(!entryPoints.empty())
|
||||
{
|
||||
completeIsland.EntryPoints = entryPoints;
|
||||
_CompleteIslands.push_back(completeIsland);
|
||||
|
|
|
@ -38,6 +38,8 @@ extern NLMISC::CCmdArgs Args;
|
|||
CClientConfigDialog::CClientConfigDialog( QWidget *parent ) :
|
||||
QDialog( parent )
|
||||
{
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
setupUi( this );
|
||||
connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) );
|
||||
connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) );
|
||||
|
|
|
@ -33,6 +33,7 @@ CConfigFile::CConfigFile(QObject *parent):QObject(parent), m_defaultServerIndex(
|
|||
{
|
||||
s_instance = this;
|
||||
|
||||
m_language = QLocale::system().name().left(2); // only keep language ISO 639 code
|
||||
m_defaultConfigPath = QApplication::applicationDirPath() + "/installer.ini";
|
||||
m_configPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/installer.ini";
|
||||
}
|
||||
|
@ -52,7 +53,7 @@ bool CConfigFile::load(const QString &filename)
|
|||
QSettings settings(filename, QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup("common");
|
||||
m_language = settings.value("language").toString();
|
||||
m_language = settings.value("language", m_language).toString();
|
||||
m_srcDirectory = settings.value("source_directory").toString();
|
||||
m_installationDirectory = settings.value("installation_directory").toString();
|
||||
m_use64BitsClient = settings.value("use_64bits_client").toBool();
|
||||
|
@ -82,13 +83,19 @@ bool CConfigFile::load(const QString &filename)
|
|||
server.clientDownloadFilename = settings.value("client_download_filename").toString();
|
||||
#if defined(Q_OS_WIN)
|
||||
server.clientFilename = settings.value("client_filename_windows").toString();
|
||||
server.clientFilenameOld = settings.value("client_filename_old_windows").toString();
|
||||
server.configurationFilename = settings.value("configuration_filename_windows").toString();
|
||||
server.installerFilename = settings.value("installer_filename_windows").toString();
|
||||
#elif defined(Q_OS_MAC)
|
||||
server.clientFilename = settings.value("client_filename_osx").toString();
|
||||
server.clientFilenameOld = settings.value("client_filename_old_osx").toString();
|
||||
server.configurationFilename = settings.value("configuration_filename_osx").toString();
|
||||
server.installerFilename = settings.value("installer_filename_osx").toString();
|
||||
#else
|
||||
server.clientFilename = settings.value("client_filename_linux").toString();
|
||||
server.clientFilenameOld = settings.value("client_filename_old_linux").toString();
|
||||
server.configurationFilename = settings.value("configuration_filename_linux").toString();
|
||||
server.installerFilename = settings.value("installer_filename_linux").toString();
|
||||
#endif
|
||||
server.comments = settings.value("comments").toString();
|
||||
|
||||
|
@ -157,13 +164,19 @@ bool CConfigFile::save() const
|
|||
settings.setValue("client_download_filename", server.clientDownloadFilename);
|
||||
#if defined(Q_OS_WIN)
|
||||
settings.setValue("client_filename_windows", server.clientFilename);
|
||||
settings.setValue("client_filename_old_windows", server.clientFilenameOld);
|
||||
settings.setValue("configuration_filename_windows", server.configurationFilename);
|
||||
settings.setValue("installer_filename_windows", server.installerFilename);
|
||||
#elif defined(Q_OS_MAC)
|
||||
settings.setValue("client_filename_osx", server.clientFilename);
|
||||
settings.setValue("client_filename_old_osx", server.clientFilenameOld);
|
||||
settings.setValue("configuration_filename_osx", server.configurationFilename);
|
||||
settings.setValue("installer_filename_osx", server.installerFilename);
|
||||
#else
|
||||
settings.setValue("client_filename_linux", server.clientFilename);
|
||||
settings.setValue("client_filename_old_linux", server.clientFilenameOld);
|
||||
settings.setValue("configuration_filename_linux", server.configurationFilename);
|
||||
settings.setValue("installer_filename_linux", server.installerFilename);
|
||||
#endif
|
||||
settings.setValue("comments", server.comments);
|
||||
|
||||
|
@ -398,6 +411,51 @@ QString CConfigFile::getOldInstallationDirectory()
|
|||
#endif
|
||||
}
|
||||
|
||||
QString CConfigFile::getOldInstallationLanguage()
|
||||
{
|
||||
#if defined(Q_OS_WIN)
|
||||
// NSIS previous official installer
|
||||
#ifdef Q_OS_WIN64
|
||||
// use WOW6432Node in 64 bits (64 bits OS and 64 bits Installer) because Ryzom old installer was in 32 bits
|
||||
QSettings settings("HKEY_LOCAL_MACHINE\\Software\\WOW6432Node\\Nevrax\\Ryzom", QSettings::NativeFormat);
|
||||
#else
|
||||
QSettings settings("HKEY_LOCAL_MACHINE\\Software\\Nevrax\\Ryzom", QSettings::NativeFormat);
|
||||
#endif
|
||||
|
||||
if (settings.contains("Language"))
|
||||
{
|
||||
QString languageCode = settings.value("Language").toString();
|
||||
|
||||
// 1036 = French (France), 1033 = English (USA), 1031 = German
|
||||
if (languageCode == "1036") return "fr";
|
||||
if (languageCode == "1031") return "de";
|
||||
if (languageCode == "1033") return "en";
|
||||
}
|
||||
#endif
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
QString CConfigFile::getNewInstallationLanguage()
|
||||
{
|
||||
#if defined(Q_OS_WIN)
|
||||
// NSIS new official installer
|
||||
#ifdef Q_OS_WIN64
|
||||
// use WOW6432Node in 64 bits (64 bits OS and 64 bits Installer) because Ryzom old installer was in 32 bits
|
||||
QSettings settings("HKEY_LOCAL_MACHINE\\Software\\WOW6432Node\\Nevrax\\Ryzom", QSettings::NativeFormat);
|
||||
#else
|
||||
QSettings settings("HKEY_LOCAL_MACHINE\\Software\\Nevrax\\Ryzom", QSettings::NativeFormat);
|
||||
#endif
|
||||
|
||||
if (settings.contains("Ryzom Install Path"))
|
||||
{
|
||||
return QDir::fromNativeSeparators(settings.value("Ryzom Install Path").toString());
|
||||
}
|
||||
#endif
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
QString CConfigFile::getNewInstallationDirectory()
|
||||
{
|
||||
return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
|
||||
|
@ -421,8 +479,8 @@ bool CConfigFile::areRyzomDataInstalledIn(const QString &directory) const
|
|||
// at least 200 BNP in data directory
|
||||
if (dir.entryList(QStringList() << "*.bnp", QDir::Files).size() < 200) return false;
|
||||
|
||||
// fonts.bnp is required
|
||||
if (!dir.exists("fonts.bnp")) return false;
|
||||
// ryzom.ttf or fonts.bnp is required
|
||||
if (!dir.exists("fonts/ryzom.ttf") && !dir.exists("fonts.bnp")) return false;
|
||||
|
||||
// gamedev.bnp is required
|
||||
if (!dir.exists("gamedev.bnp")) return false;
|
||||
|
@ -445,10 +503,19 @@ bool CConfigFile::isRyzomClientInstalledIn(const QString &directory) const
|
|||
// client_default.cfg doesn't exist
|
||||
if (!dir.exists("client_default.cfg")) return false;
|
||||
|
||||
QString clientFilename = getServer().clientFilename;
|
||||
// current server
|
||||
CServer server = getServer();
|
||||
|
||||
// check if client is defined and exists
|
||||
if (!clientFilename.isEmpty() && !dir.exists(clientFilename)) return false;
|
||||
QString clientFilename = server.clientFilename;
|
||||
|
||||
// check if new client is defined and exists
|
||||
if (!clientFilename.isEmpty() && !dir.exists(clientFilename))
|
||||
{
|
||||
clientFilename = server.clientFilenameOld;
|
||||
|
||||
// check if old client is defined and exists
|
||||
if (!dir.exists(clientFilename)) return false;
|
||||
}
|
||||
|
||||
// TODO: more checks
|
||||
|
||||
|
@ -525,7 +592,22 @@ CConfigFile::InstallationStep CConfigFile::getNextStep() const
|
|||
// only show wizard if installation directory undefined
|
||||
if (getInstallationDirectory().isEmpty())
|
||||
{
|
||||
return ShowWizard;
|
||||
// if launched from current directory, it means we just patched files
|
||||
QString currentDirectory = getCurrentDirectory();
|
||||
|
||||
if (!isRyzomInstalledIn(currentDirectory))
|
||||
{
|
||||
// Ryzom is in the same directory as Ryzom Installer
|
||||
currentDirectory = getApplicationDirectory();
|
||||
|
||||
if (!isRyzomInstalledIn(currentDirectory))
|
||||
{
|
||||
currentDirectory.clear();
|
||||
}
|
||||
}
|
||||
|
||||
// install or migrate depending if Ryzom was found in current directory
|
||||
return currentDirectory.isEmpty() ? ShowInstallWizard:ShowMigrateWizard;
|
||||
}
|
||||
|
||||
QString serverDirectory = getInstallationDirectory() + "/" + server.id;
|
||||
|
@ -575,7 +657,7 @@ CConfigFile::InstallationStep CConfigFile::getNextStep() const
|
|||
}
|
||||
else
|
||||
{
|
||||
return ShowWizard;
|
||||
return ShowInstallWizard;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -591,21 +673,25 @@ CConfigFile::InstallationStep CConfigFile::getNextStep() const
|
|||
{
|
||||
return ExtractBnpClient;
|
||||
}
|
||||
else
|
||||
|
||||
QString clientFile = getInstallationDirectory() + "/" + server.clientDownloadFilename;
|
||||
|
||||
// when file is not finished, it has .part extension
|
||||
if (!QFile::exists(clientFile))
|
||||
{
|
||||
QString clientFile = getInstallationDirectory() + "/" + server.clientDownloadFilename;
|
||||
|
||||
// when file is not finished, it has .part extension
|
||||
if (!QFile::exists(clientFile))
|
||||
{
|
||||
return DownloadClient;
|
||||
}
|
||||
|
||||
return ExtractDownloadedClient;
|
||||
return DownloadClient;
|
||||
}
|
||||
|
||||
return ExtractDownloadedClient;
|
||||
}
|
||||
}
|
||||
|
||||
// if installer not found in installation directory, extract it from BNP
|
||||
if (!QFile::exists(getInstallationDirectory() + "/" + server.installerFilename))
|
||||
{
|
||||
return CopyInstaller;
|
||||
}
|
||||
|
||||
// no default profile
|
||||
if (profile.id.isEmpty())
|
||||
{
|
||||
|
@ -626,5 +712,12 @@ CConfigFile::InstallationStep CConfigFile::getNextStep() const
|
|||
return CreateShortcuts;
|
||||
}
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
// check that Add/Remove entry is created under Windows
|
||||
QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat);
|
||||
|
||||
if (!settings.contains("InstallLocation")) return CreateAddRemoveEntry;
|
||||
#endif
|
||||
|
||||
return Done;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,9 @@ struct CServer
|
|||
QString clientDownloadUrl;
|
||||
QString clientDownloadFilename;
|
||||
QString clientFilename;
|
||||
QString clientFilenameOld;
|
||||
QString configurationFilename;
|
||||
QString installerFilename;
|
||||
QString comments;
|
||||
};
|
||||
|
||||
|
@ -80,7 +82,8 @@ public:
|
|||
enum InstallationStep
|
||||
{
|
||||
DisplayNoServerError,
|
||||
ShowWizard,
|
||||
ShowInstallWizard,
|
||||
ShowMigrateWizard,
|
||||
DownloadData,
|
||||
ExtractDownloadedData,
|
||||
DownloadClient,
|
||||
|
@ -89,8 +92,10 @@ public:
|
|||
CopyProfileFiles,
|
||||
CleanFiles,
|
||||
ExtractBnpClient,
|
||||
CopyInstaller,
|
||||
CreateProfile,
|
||||
CreateShortcuts,
|
||||
CreateAddRemoveEntry,
|
||||
Done
|
||||
};
|
||||
|
||||
|
@ -144,10 +149,14 @@ public:
|
|||
static QString getApplicationDirectory();
|
||||
static QString getOldInstallationDirectory();
|
||||
static QString getNewInstallationDirectory();
|
||||
static QString getOldInstallationLanguage();
|
||||
static QString getNewInstallationLanguage();
|
||||
|
||||
// status of installation
|
||||
bool isRyzomInstalledIn(const QString &directory) const;
|
||||
bool areRyzomDataInstalledIn(const QString &directory) const;
|
||||
bool isRyzomClientInstalledIn(const QString &directory) const;
|
||||
|
||||
bool foundTemporaryFiles(const QString &directory) const;
|
||||
bool shouldCreateDesktopShortcut() const;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ void CFilesCopier::setSourceDirectory(const QString &src)
|
|||
m_sourceDirectory = src;
|
||||
}
|
||||
|
||||
void CFilesCopier::setDesinationDirectory(const QString &dst)
|
||||
void CFilesCopier::setDestinationDirectory(const QString &dst)
|
||||
{
|
||||
m_destinationDirectory = dst;
|
||||
}
|
||||
|
@ -48,9 +48,9 @@ void CFilesCopier::setIncludeFilter(const QStringList &filter)
|
|||
m_includeFilter = filter;
|
||||
}
|
||||
|
||||
void CFilesCopier::setExcludeFilter(const QStringList &filter)
|
||||
void CFilesCopier::addFile(const QString &filename)
|
||||
{
|
||||
m_excludeFilter = filter;
|
||||
m_files << filename;
|
||||
}
|
||||
|
||||
bool CFilesCopier::exec()
|
||||
|
@ -127,6 +127,24 @@ void CFilesCopier::getFilesList(FilesToCopy &files)
|
|||
files << file;
|
||||
}
|
||||
}
|
||||
|
||||
// copy additional files
|
||||
foreach(const QString &fullpath, m_files)
|
||||
{
|
||||
QFileInfo fileInfo(fullpath);
|
||||
|
||||
if (fileInfo.isFile())
|
||||
{
|
||||
FileToCopy file;
|
||||
file.filename = fileInfo.fileName();
|
||||
file.src = fileInfo.filePath();
|
||||
file.dst = m_destinationDirectory + "/" + fileInfo.fileName();
|
||||
file.size = fileInfo.size();
|
||||
file.date = fileInfo.lastModified().toTime_t();
|
||||
|
||||
files << file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CFilesCopier::copyFiles(const FilesToCopy &files)
|
||||
|
|
|
@ -32,10 +32,11 @@ public:
|
|||
virtual ~CFilesCopier();
|
||||
|
||||
void setSourceDirectory(const QString &src);
|
||||
void setDesinationDirectory(const QString &src);
|
||||
void setDestinationDirectory(const QString &src);
|
||||
|
||||
void setIncludeFilter(const QStringList &filter);
|
||||
void setExcludeFilter(const QStringList &filter);
|
||||
|
||||
void addFile(const QString &file);
|
||||
|
||||
bool exec();
|
||||
|
||||
|
@ -61,7 +62,7 @@ protected:
|
|||
QString m_destinationDirectory;
|
||||
|
||||
QStringList m_includeFilter;
|
||||
QStringList m_excludeFilter;
|
||||
QStringList m_files;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -15,8 +15,9 @@
|
|||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "stdpch.h"
|
||||
#include "wizarddialog.h"
|
||||
#include "installwizarddialog.h"
|
||||
#include "configfile.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "nel/misc/system_info.h"
|
||||
#include "nel/misc/common.h"
|
||||
|
@ -25,63 +26,17 @@
|
|||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
QString qBytesToHumanReadable(qint64 bytes)
|
||||
{
|
||||
static std::vector<std::string> units;
|
||||
|
||||
if (units.empty())
|
||||
{
|
||||
units.push_back(QObject::tr("B").toUtf8().constData());
|
||||
units.push_back(QObject::tr("KiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("MiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("GiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("TiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("PiB").toUtf8().constData());
|
||||
}
|
||||
|
||||
return QString::fromUtf8(NLMISC::bytesToHumanReadable(bytes).c_str());
|
||||
}
|
||||
|
||||
CWizardDialog::CWizardDialog():QDialog()
|
||||
CInstallWizardDialog::CInstallWizardDialog():QDialog()
|
||||
{
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
setupUi(this);
|
||||
|
||||
currentDirectoryRadioButton->setVisible(false);
|
||||
oldDirectoryRadioButton->setVisible(false);
|
||||
|
||||
// enable download radio button by default
|
||||
internetRadioButton->setChecked(true);
|
||||
|
||||
// if launched from current directory, it means we just patched files
|
||||
m_currentDirectory = CConfigFile::getInstance()->getCurrentDirectory();
|
||||
|
||||
if (!CConfigFile::getInstance()->isRyzomInstalledIn(m_currentDirectory))
|
||||
{
|
||||
// current directory is a child of Ryzom root directory
|
||||
m_currentDirectory = CConfigFile::getInstance()->getParentDirectory();
|
||||
|
||||
if (!CConfigFile::getInstance()->isRyzomInstalledIn(m_currentDirectory))
|
||||
{
|
||||
// Ryzom is in the same directory as Ryzom Installer
|
||||
m_currentDirectory = CConfigFile::getInstance()->getApplicationDirectory();
|
||||
|
||||
if (!CConfigFile::getInstance()->isRyzomInstalledIn(m_currentDirectory))
|
||||
{
|
||||
m_currentDirectory.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// display found directory
|
||||
if (!m_currentDirectory.isEmpty())
|
||||
{
|
||||
currentDirectoryRadioButton->setText(tr("Current directory: %1").arg(m_currentDirectory));
|
||||
currentDirectoryRadioButton->setVisible(true);
|
||||
currentDirectoryRadioButton->setChecked(true);
|
||||
}
|
||||
|
||||
m_oldDirectory = CConfigFile::getInstance()->getOldInstallationDirectory();
|
||||
|
||||
// found a previous installation
|
||||
|
@ -89,8 +44,7 @@ CWizardDialog::CWizardDialog():QDialog()
|
|||
{
|
||||
oldDirectoryRadioButton->setText(tr("Old installation: %1").arg(m_oldDirectory));
|
||||
oldDirectoryRadioButton->setVisible(true);
|
||||
|
||||
if (m_currentDirectory.isEmpty()) oldDirectoryRadioButton->setChecked(true);
|
||||
oldDirectoryRadioButton->setChecked(true);
|
||||
}
|
||||
|
||||
updateAnotherLocationText();
|
||||
|
@ -128,18 +82,18 @@ CWizardDialog::CWizardDialog():QDialog()
|
|||
connect(advancedCheckBox, SIGNAL(stateChanged(int)), SLOT(onShowAdvancedParameters(int)));
|
||||
}
|
||||
|
||||
CWizardDialog::~CWizardDialog()
|
||||
CInstallWizardDialog::~CInstallWizardDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void CWizardDialog::onShowAdvancedParameters(int state)
|
||||
void CInstallWizardDialog::onShowAdvancedParameters(int state)
|
||||
{
|
||||
advancedFrame->setVisible(state != Qt::Unchecked);
|
||||
|
||||
adjustSize();
|
||||
}
|
||||
|
||||
void CWizardDialog::onAnotherLocationBrowseButtonClicked()
|
||||
void CInstallWizardDialog::onAnotherLocationBrowseButtonClicked()
|
||||
{
|
||||
QString directory;
|
||||
|
||||
|
@ -162,7 +116,7 @@ void CWizardDialog::onAnotherLocationBrowseButtonClicked()
|
|||
updateAnotherLocationText();
|
||||
}
|
||||
|
||||
void CWizardDialog::onDestinationBrowseButtonClicked()
|
||||
void CInstallWizardDialog::onDestinationBrowseButtonClicked()
|
||||
{
|
||||
QString directory = QFileDialog::getExistingDirectory(this, tr("Please choose directory where to install Ryzom"));
|
||||
|
||||
|
@ -173,17 +127,17 @@ void CWizardDialog::onDestinationBrowseButtonClicked()
|
|||
updateDestinationText();
|
||||
}
|
||||
|
||||
void CWizardDialog::updateAnotherLocationText()
|
||||
void CInstallWizardDialog::updateAnotherLocationText()
|
||||
{
|
||||
anotherLocationRadioButton->setText(tr("Another location: %1").arg(m_anotherDirectory.isEmpty() ? tr("Undefined"):m_anotherDirectory));
|
||||
}
|
||||
|
||||
void CWizardDialog::updateDestinationText()
|
||||
void CInstallWizardDialog::updateDestinationText()
|
||||
{
|
||||
destinationLabel->setText(m_dstDirectory);
|
||||
}
|
||||
|
||||
void CWizardDialog::accept()
|
||||
void CInstallWizardDialog::accept()
|
||||
{
|
||||
// check free disk space
|
||||
qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData());
|
||||
|
@ -196,11 +150,7 @@ void CWizardDialog::accept()
|
|||
return;
|
||||
}
|
||||
|
||||
if (currentDirectoryRadioButton->isChecked())
|
||||
{
|
||||
CConfigFile::getInstance()->setSrcServerDirectory(m_currentDirectory);
|
||||
}
|
||||
else if (oldDirectoryRadioButton->isChecked())
|
||||
if (oldDirectoryRadioButton->isChecked())
|
||||
{
|
||||
CConfigFile::getInstance()->setSrcServerDirectory(m_oldDirectory);
|
||||
}
|
|
@ -14,10 +14,10 @@
|
|||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef WIZARDDIALOG_H
|
||||
#define WIZARDDIALOG_H
|
||||
#ifndef INSTALLWIZARDDIALOG_H
|
||||
#define INSTALLWIZARDDIALOG_H
|
||||
|
||||
#include "ui_wizard.h"
|
||||
#include "ui_installwizard.h"
|
||||
|
||||
/**
|
||||
* Wizard displayed at first launch, that asks user to choose source and destination directories.
|
||||
|
@ -25,13 +25,13 @@
|
|||
* \author Cedric 'Kervala' OCHS
|
||||
* \date 2016
|
||||
*/
|
||||
class CWizardDialog : public QDialog, public Ui::WizardDialog
|
||||
class CInstallWizardDialog : public QDialog, public Ui::InstallWizardDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CWizardDialog();
|
||||
virtual ~CWizardDialog();
|
||||
CInstallWizardDialog();
|
||||
virtual ~CInstallWizardDialog();
|
||||
|
||||
private slots:
|
||||
void onShowAdvancedParameters(int state);
|
||||
|
@ -44,7 +44,6 @@ private:
|
|||
void updateAnotherLocationText();
|
||||
void updateDestinationText();
|
||||
|
||||
QString m_currentDirectory;
|
||||
QString m_oldDirectory;
|
||||
QString m_anotherDirectory;
|
||||
QString m_dstDirectory;
|
|
@ -17,7 +17,8 @@
|
|||
#include "stdpch.h"
|
||||
#include "mainwindow.h"
|
||||
#include "configfile.h"
|
||||
#include "wizarddialog.h"
|
||||
#include "migratewizarddialog.h"
|
||||
#include "installwizarddialog.h"
|
||||
#include "operationdialog.h"
|
||||
|
||||
#include "nel/misc/path.h"
|
||||
|
@ -57,6 +58,8 @@ int main(int argc, char *argv[])
|
|||
|
||||
QApplication app(argc, argv);
|
||||
|
||||
// TODO: parameters -u (uinstall) and -s (silent)
|
||||
|
||||
QApplication::setApplicationName("Ryzom");
|
||||
QApplication::setApplicationVersion(RYZOM_VERSION);
|
||||
QApplication::setWindowIcon(QIcon(":/icons/ryzom.ico"));
|
||||
|
@ -89,12 +92,19 @@ int main(int argc, char *argv[])
|
|||
|
||||
bool displayMainWindow = true;
|
||||
|
||||
if (step == CConfigFile::ShowWizard)
|
||||
if (step == CConfigFile::ShowMigrateWizard)
|
||||
{
|
||||
CWizardDialog dialog;
|
||||
CMigrateWizardDialog dialog;
|
||||
|
||||
if (!dialog.exec()) displayMainWindow = false;
|
||||
}
|
||||
else if (step == CConfigFile::ShowInstallWizard)
|
||||
{
|
||||
CInstallWizardDialog dialog;
|
||||
|
||||
if (!dialog.exec()) displayMainWindow = false;
|
||||
}
|
||||
|
||||
|
||||
if (displayMainWindow)
|
||||
{
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include "stdpch.h"
|
||||
#include "mainwindow.h"
|
||||
#include "downloader.h"
|
||||
#include "wizarddialog.h"
|
||||
#include "profilesdialog.h"
|
||||
#include "configfile.h"
|
||||
#include "config.h"
|
||||
|
@ -27,7 +26,7 @@
|
|||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
CMainWindow::CMainWindow():QMainWindow(), m_statusLabel(NULL)
|
||||
CMainWindow::CMainWindow():QMainWindow()
|
||||
{
|
||||
setupUi(this);
|
||||
|
||||
|
@ -48,13 +47,7 @@ CMainWindow::CMainWindow():QMainWindow(), m_statusLabel(NULL)
|
|||
|
||||
connect(profilesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(onProfileChanged(int)));
|
||||
|
||||
m_statusLabel = new QLabel();
|
||||
|
||||
statusBar()->addWidget(m_statusLabel);
|
||||
|
||||
updateProfiles();
|
||||
|
||||
// setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
|
||||
}
|
||||
|
||||
CMainWindow::~CMainWindow()
|
||||
|
|
|
@ -57,8 +57,6 @@ protected:
|
|||
|
||||
QWinTaskbarButton *m_button;
|
||||
CDownloader *m_downloader;
|
||||
|
||||
QLabel *m_statusLabel;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "stdpch.h"
|
||||
#include "migratewizarddialog.h"
|
||||
#include "configfile.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "nel/misc/system_info.h"
|
||||
#include "nel/misc/common.h"
|
||||
|
||||
#ifdef DEBUG_NEW
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
CMigrateWizardDialog::CMigrateWizardDialog():QDialog()
|
||||
{
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
setupUi(this);
|
||||
|
||||
// if launched from current directory, it means we just patched files
|
||||
m_currentDirectory = CConfigFile::getInstance()->getCurrentDirectory();
|
||||
|
||||
if (!CConfigFile::getInstance()->isRyzomInstalledIn(m_currentDirectory))
|
||||
{
|
||||
// Ryzom is in the same directory as Ryzom Installer
|
||||
m_currentDirectory = CConfigFile::getInstance()->getApplicationDirectory();
|
||||
|
||||
if (!CConfigFile::getInstance()->isRyzomInstalledIn(m_currentDirectory))
|
||||
{
|
||||
m_currentDirectory.clear();
|
||||
}
|
||||
}
|
||||
|
||||
m_dstDirectory = CConfigFile::getNewInstallationDirectory();
|
||||
|
||||
updateDestinationText();
|
||||
|
||||
// check whether OS architecture is 32 or 64 bits
|
||||
// TODO: 64 bits client only supported under Vista+
|
||||
if (CConfigFile::has64bitsOS())
|
||||
{
|
||||
clientArchGroupBox->setVisible(true);
|
||||
clientArch64RadioButton->setChecked(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
clientArchGroupBox->setVisible(false);
|
||||
clientArch32RadioButton->setChecked(true);
|
||||
}
|
||||
|
||||
const CServer &server = CConfigFile::getInstance()->getServer();
|
||||
|
||||
destinationGroupBox->setTitle(tr("Files will be installed to (requires %1):").arg(qBytesToHumanReadable(server.dataUncompressedSize)));
|
||||
|
||||
connect(destinationBrowseButton, SIGNAL(clicked()), SLOT(onDestinationBrowseButtonClicked()));
|
||||
connect(continueButton, SIGNAL(clicked()), SLOT(accept()));
|
||||
connect(quitButton, SIGNAL(clicked()), SLOT(reject()));
|
||||
|
||||
// TODO: if found a folder with initial data, get its total size and check if at least that size is free on the disk
|
||||
|
||||
// by default, advanced parameters are hidden
|
||||
onShowAdvancedParameters(Qt::Unchecked);
|
||||
|
||||
connect(advancedCheckBox, SIGNAL(stateChanged(int)), SLOT(onShowAdvancedParameters(int)));
|
||||
}
|
||||
|
||||
CMigrateWizardDialog::~CMigrateWizardDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void CMigrateWizardDialog::onShowAdvancedParameters(int state)
|
||||
{
|
||||
advancedFrame->setVisible(state != Qt::Unchecked);
|
||||
|
||||
adjustSize();
|
||||
}
|
||||
|
||||
void CMigrateWizardDialog::onDestinationBrowseButtonClicked()
|
||||
{
|
||||
QString directory = QFileDialog::getExistingDirectory(this, tr("Please choose directory where to install Ryzom"));
|
||||
|
||||
if (directory.isEmpty()) return;
|
||||
|
||||
m_dstDirectory = directory;
|
||||
|
||||
updateDestinationText();
|
||||
}
|
||||
|
||||
void CMigrateWizardDialog::updateDestinationText()
|
||||
{
|
||||
destinationLabel->setText(m_dstDirectory);
|
||||
}
|
||||
|
||||
void CMigrateWizardDialog::accept()
|
||||
{
|
||||
// check free disk space
|
||||
qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData());
|
||||
|
||||
const CServer &server = CConfigFile::getInstance()->getServer();
|
||||
|
||||
if (freeSpace < server.dataUncompressedSize)
|
||||
{
|
||||
QMessageBox::StandardButton res = QMessageBox::warning(this, tr("Not enough free disk space"), tr("You don't have enough free space on this disk, please make more space or choose a directory on another disk."));
|
||||
return;
|
||||
}
|
||||
|
||||
CConfigFile::getInstance()->setSrcServerDirectory(m_currentDirectory);
|
||||
CConfigFile::getInstance()->setInstallationDirectory(m_dstDirectory);
|
||||
CConfigFile::getInstance()->setUse64BitsClient(clientArch64RadioButton->isChecked());
|
||||
CConfigFile::getInstance()->save();
|
||||
|
||||
QDialog::accept();
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef MIGRATEWIZARDDIALOG_H
|
||||
#define MIGRATEWIZARDDIALOG_H
|
||||
|
||||
#include "ui_migratewizard.h"
|
||||
|
||||
/**
|
||||
* Wizard displayed at first launch, that asks user to choose source and destination directories.
|
||||
*
|
||||
* \author Cedric 'Kervala' OCHS
|
||||
* \date 2016
|
||||
*/
|
||||
class CMigrateWizardDialog : public QDialog, public Ui::MigrateWizardDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CMigrateWizardDialog();
|
||||
virtual ~CMigrateWizardDialog();
|
||||
|
||||
private slots:
|
||||
void onShowAdvancedParameters(int state);
|
||||
void onDestinationBrowseButtonClicked();
|
||||
|
||||
void accept();
|
||||
|
||||
private:
|
||||
void updateDestinationText();
|
||||
|
||||
QString m_currentDirectory;
|
||||
QString m_dstDirectory;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -17,7 +17,6 @@
|
|||
#include "stdpch.h"
|
||||
#include "operationdialog.h"
|
||||
#include "downloader.h"
|
||||
#include "wizarddialog.h"
|
||||
#include "profilesdialog.h"
|
||||
#include "configfile.h"
|
||||
#include "config.h"
|
||||
|
@ -34,6 +33,10 @@
|
|||
#include <QtWinExtras/QWinTaskbarButton>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_NEW
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
@ -58,7 +61,7 @@ COperationDialog::COperationDialog():QDialog(), m_aborting(false)
|
|||
connect(m_downloader, SIGNAL(downloadInit(qint64, qint64)), SLOT(onProgressInit(qint64, qint64)));
|
||||
connect(m_downloader, SIGNAL(downloadStart()), SLOT(onProgressStart()));
|
||||
connect(m_downloader, SIGNAL(downloadStop()), SLOT(onProgressStop()));
|
||||
connect(m_downloader, SIGNAL(downloadProgress(qint64)), SLOT(onProgressProgress(qint64)));
|
||||
connect(m_downloader, SIGNAL(downloadProgress(qint64, QString)), SLOT(onProgressProgress(qint64, QString)));
|
||||
connect(m_downloader, SIGNAL(downloadSuccess(qint64)), SLOT(onProgressSuccess(qint64)));
|
||||
connect(m_downloader, SIGNAL(downloadFail(QString)), SLOT(onProgressFail(QString)));
|
||||
|
||||
|
@ -99,7 +102,10 @@ void COperationDialog::processNextStep()
|
|||
case CConfigFile::DisplayNoServerError:
|
||||
break;
|
||||
|
||||
case CConfigFile::ShowWizard:
|
||||
case CConfigFile::ShowMigrateWizard:
|
||||
break;
|
||||
|
||||
case CConfigFile::ShowInstallWizard:
|
||||
break;
|
||||
|
||||
case CConfigFile::DownloadData:
|
||||
|
@ -130,6 +136,10 @@ void COperationDialog::processNextStep()
|
|||
QtConcurrent::run(this, &COperationDialog::extractBnpClient);
|
||||
break;
|
||||
|
||||
case CConfigFile::CopyInstaller:
|
||||
QtConcurrent::run(this, &COperationDialog::copyIntaller);
|
||||
break;
|
||||
|
||||
case CConfigFile::CleanFiles:
|
||||
QtConcurrent::run(this, &COperationDialog::cleanFiles);
|
||||
break;
|
||||
|
@ -142,6 +152,10 @@ void COperationDialog::processNextStep()
|
|||
createDefaultShortcuts();
|
||||
break;
|
||||
|
||||
case CConfigFile::CreateAddRemoveEntry:
|
||||
createAddRemoveEntry();
|
||||
break;
|
||||
|
||||
case CConfigFile::Done:
|
||||
accept();
|
||||
break;
|
||||
|
@ -305,7 +319,7 @@ void COperationDialog::copyServerFiles()
|
|||
|
||||
CFilesCopier copier(this);
|
||||
copier.setSourceDirectory(config->getSrcServerDirectory());
|
||||
copier.setDesinationDirectory(config->getInstallationDirectory() + "/" + server.id);
|
||||
copier.setDestinationDirectory(config->getInstallationDirectory() + "/" + server.id);
|
||||
copier.setIncludeFilter(serverFiles);
|
||||
|
||||
if (copier.exec())
|
||||
|
@ -341,7 +355,7 @@ void COperationDialog::copyProfileFiles()
|
|||
|
||||
CFilesCopier copier(this);
|
||||
copier.setSourceDirectory(config->getSrcProfileDirectory());
|
||||
copier.setDesinationDirectory(config->getProfileDirectory() + "/" + profile.id);
|
||||
copier.setDestinationDirectory(config->getProfileDirectory() + "/" + profile.id);
|
||||
copier.setIncludeFilter(profileFiles);
|
||||
|
||||
if (copier.exec())
|
||||
|
@ -401,6 +415,53 @@ void COperationDialog::extractBnpClient()
|
|||
emit done();
|
||||
}
|
||||
|
||||
void COperationDialog::copyIntaller()
|
||||
{
|
||||
CConfigFile *config = CConfigFile::getInstance();
|
||||
|
||||
// default server
|
||||
const CServer &server = config->getServer();
|
||||
|
||||
m_currentOperation = QApplication::tr("Copy installer to new location");
|
||||
m_currentOperationProgressFormat = QApplication::tr("Copying %1...");
|
||||
|
||||
QString destinationDirectory = config->getInstallationDirectory();
|
||||
|
||||
// rename old client to installer
|
||||
QString newInstallerFilename = server.installerFilename;
|
||||
|
||||
if (!newInstallerFilename.isEmpty())
|
||||
{
|
||||
QString oldInstallerFullPath = QApplication::applicationFilePath();
|
||||
QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename;
|
||||
|
||||
if (!QFile::exists(newInstallerFullPath))
|
||||
{
|
||||
QStringList filter;
|
||||
filter << "msvcp100.dll";
|
||||
filter << "msvcr100.dll";
|
||||
|
||||
CFilesCopier copier(this);
|
||||
copier.setIncludeFilter(filter);
|
||||
copier.addFile(oldInstallerFullPath);
|
||||
copier.setSourceDirectory(config->getSrcServerDirectory());
|
||||
copier.setDestinationDirectory(config->getInstallationDirectory());
|
||||
copier.exec();
|
||||
|
||||
// copied file
|
||||
oldInstallerFullPath = config->getInstallationDirectory() + "/" + QFileInfo(oldInstallerFullPath).fileName();
|
||||
|
||||
// rename old filename if different
|
||||
if (oldInstallerFullPath != newInstallerFullPath)
|
||||
{
|
||||
QFile::rename(oldInstallerFullPath, newInstallerFullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
emit done();
|
||||
}
|
||||
|
||||
void COperationDialog::cleanFiles()
|
||||
{
|
||||
CConfigFile *config = CConfigFile::getInstance();
|
||||
|
@ -425,7 +486,7 @@ bool COperationDialog::createDefaultProfile()
|
|||
CServer server = config->getServer(config->getDefaultServerIndex());
|
||||
|
||||
m_currentOperation = QApplication::tr("Create default profile");
|
||||
m_currentOperationProgressFormat = QApplication::tr("Deleting %1...");
|
||||
// m_currentOperationProgressFormat = QApplication::tr("Deleting %1...");
|
||||
|
||||
CProfile profile;
|
||||
|
||||
|
@ -458,6 +519,56 @@ bool COperationDialog::createDefaultShortcuts()
|
|||
return true;
|
||||
}
|
||||
|
||||
bool COperationDialog::createAddRemoveEntry()
|
||||
{
|
||||
CConfigFile *config = CConfigFile::getInstance();
|
||||
|
||||
const CServer &server = config->getServer();
|
||||
|
||||
QString oldInstallerFilename = server.clientFilenameOld;
|
||||
QString newInstallerFilename = server.installerFilename;
|
||||
|
||||
if (!oldInstallerFilename.isEmpty() && !newInstallerFilename.isEmpty())
|
||||
{
|
||||
QString oldInstallerFullPath = config->getSrcServerDirectory() + "/" + oldInstallerFilename;
|
||||
QString newInstallerFullPath = config->getInstallationDirectory() + "/" + newInstallerFilename;
|
||||
|
||||
if (QFile::exists(newInstallerFullPath))
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ryzom", QSettings::NativeFormat);
|
||||
|
||||
QStringList versionTokens = QString(RYZOM_VERSION).split('.');
|
||||
|
||||
settings.setValue("Comments", "");
|
||||
settings.setValue("DisplayIcon", QDir::toNativeSeparators(newInstallerFullPath) + ",0");
|
||||
settings.setValue("DisplayName", "Ryzom");
|
||||
settings.setValue("DisplayVersion", RYZOM_VERSION);
|
||||
settings.setValue("EstimatedSize", 1500000); // TODO: compute real size
|
||||
settings.setValue("InstallDate", QDateTime::currentDateTime().toString("Ymd"));
|
||||
settings.setValue("InstallLocation", config->getInstallationDirectory());
|
||||
settings.setValue("MajorVersion", versionTokens[0].toInt());
|
||||
settings.setValue("MinorVersion", versionTokens[1].toInt());
|
||||
settings.setValue("NoModify", 0);
|
||||
settings.setValue("NoRemove", 0);
|
||||
settings.setValue("NoRepair", 0);
|
||||
settings.setValue("Publisher", AUTHOR);
|
||||
settings.setValue("QuietUninstallString", QDir::toNativeSeparators(newInstallerFullPath) + " -u -s");
|
||||
settings.setValue("UninstallString", QDir::toNativeSeparators(newInstallerFullPath) + " -u");
|
||||
settings.setValue("URLUpdateInfo", "http://ryzom.fr/info");
|
||||
settings.setValue("URLInfoAbout", "http://ryzom.fr/info2");
|
||||
// settings.setValue("sEstimatedSize2", 0);
|
||||
settings.setValue("HelpLink", "http://ryzom.fr/support");
|
||||
// ModifyPath
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
emit done();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void COperationDialog::operationPrepare()
|
||||
{
|
||||
emit prepare();
|
||||
|
|
|
@ -87,9 +87,11 @@ protected:
|
|||
void copyServerFiles();
|
||||
void copyProfileFiles();
|
||||
void extractBnpClient();
|
||||
void copyIntaller();
|
||||
void cleanFiles();
|
||||
bool createDefaultProfile();
|
||||
bool createDefaultShortcuts();
|
||||
bool createAddRemoveEntry();
|
||||
|
||||
// from CFilesCopier
|
||||
virtual void operationPrepare();
|
||||
|
|
|
@ -17,6 +17,23 @@
|
|||
#include "stdpch.h"
|
||||
#include "utils.h"
|
||||
|
||||
QString qBytesToHumanReadable(qint64 bytes)
|
||||
{
|
||||
static std::vector<std::string> units;
|
||||
|
||||
if (units.empty())
|
||||
{
|
||||
units.push_back(QObject::tr("B").toUtf8().constData());
|
||||
units.push_back(QObject::tr("KiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("MiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("GiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("TiB").toUtf8().constData());
|
||||
units.push_back(QObject::tr("PiB").toUtf8().constData());
|
||||
}
|
||||
|
||||
return QString::fromUtf8(NLMISC::bytesToHumanReadable(bytes).c_str());
|
||||
}
|
||||
|
||||
QString qFromUtf8(const std::string &str)
|
||||
{
|
||||
return QString::fromUtf8(str.c_str());
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
* \date 2016
|
||||
*/
|
||||
|
||||
QString qBytesToHumanReadable(qint64 bytes);
|
||||
|
||||
// Convert a UTF-8 string to QString
|
||||
QString qFromUtf8(const std::string &str);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>WizardDialog</class>
|
||||
<widget class="QDialog" name="WizardDialog">
|
||||
<class>InstallWizardDialog</class>
|
||||
<widget class="QDialog" name="InstallWizardDialog">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::ApplicationModal</enum>
|
||||
</property>
|
||||
|
@ -10,7 +10,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>402</width>
|
||||
<height>464</height>
|
||||
<height>435</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -28,10 +28,13 @@
|
|||
<property name="text">
|
||||
<string>Welcome to Ryzom Installer!
|
||||
|
||||
This program will allow you to download, install, migrate, configure or manage Ryzom on your computer.
|
||||
This program will allow you to download, install, configure or manage Ryzom on your computer.
|
||||
|
||||
Just follow the different steps and make your choice between the different propositions.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::PlainText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignJustify|Qt::AlignTop</set>
|
||||
</property>
|
||||
|
@ -94,16 +97,6 @@ Just follow the different steps and make your choice between the different propo
|
|||
<string>Files will be installed from:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="currentDirectoryRadioButton">
|
||||
<property name="text">
|
||||
<string>Current directory</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="oldDirectoryRadioButton">
|
||||
<property name="text">
|
||||
|
@ -213,7 +206,6 @@ Just follow the different steps and make your choice between the different propo
|
|||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>currentDirectoryRadioButton</tabstop>
|
||||
<tabstop>oldDirectoryRadioButton</tabstop>
|
||||
<tabstop>anotherLocationRadioButton</tabstop>
|
||||
<tabstop>anotherLocationBrowseButton</tabstop>
|
||||
|
@ -227,7 +219,7 @@ Just follow the different steps and make your choice between the different propo
|
|||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>WizardDialog</receiver>
|
||||
<receiver>InstallWizardDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
|
@ -243,7 +235,7 @@ Just follow the different steps and make your choice between the different propo
|
|||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>WizardDialog</receiver>
|
||||
<receiver>InstallWizardDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
|
@ -2,13 +2,23 @@
|
|||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>579</width>
|
||||
<height>406</height>
|
||||
</rect>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>547</width>
|
||||
<height>386</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>547</width>
|
||||
<height>386</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Ryzom Installer</string>
|
||||
|
@ -97,7 +107,7 @@ p, li { white-space: pre-wrap; }
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>579</width>
|
||||
<width>547</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -120,11 +130,6 @@ p, li { white-space: pre-wrap; }
|
|||
<addaction name="menu_File"/>
|
||||
<addaction name="menu_Help"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar">
|
||||
<property name="sizeGripEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<action name="actionAboutQt">
|
||||
<property name="text">
|
||||
<string>About Qt</string>
|
||||
|
|
183
code/ryzom/tools/client/ryzom_installer/ui/migratewizard.ui
Normal file
183
code/ryzom/tools/client/ryzom_installer/ui/migratewizard.ui
Normal file
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MigrateWizardDialog</class>
|
||||
<widget class="QDialog" name="MigrateWizardDialog">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::ApplicationModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>402</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Ryzom Installer</string>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QLabel" name="messageLabel">
|
||||
<property name="text">
|
||||
<string>Welcome to Ryzom Installer!
|
||||
|
||||
This program will migrate Ryzom version 2.1 to 3.0. Your files will be updated, cleaned and moved to a new location.
|
||||
|
||||
Just press Continue button and follow the different steps until everything is done.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::PlainText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignJustify|Qt::AlignTop</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="advancedLayout">
|
||||
<item>
|
||||
<spacer name="advancedHorizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="advancedCheckBox">
|
||||
<property name="text">
|
||||
<string>Show advanced parameters (expert)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="advancedFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="advancedMainLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="destinationGroupBox">
|
||||
<property name="title">
|
||||
<string>Files will be installed to (requires 10 GiB):</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="destinationLayout" stretch="1,0">
|
||||
<item>
|
||||
<widget class="QLabel" name="destinationLabel">
|
||||
<property name="text">
|
||||
<string>c:\</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="destinationBrowseButton">
|
||||
<property name="text">
|
||||
<string>Browse...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="clientArchGroupBox">
|
||||
<property name="title">
|
||||
<string>Do you prefer to use a 64 or 32 bits client?</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="clientArch64RadioButton">
|
||||
<property name="text">
|
||||
<string>64 bits (recommended)</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="clientArch32RadioButton">
|
||||
<property name="text">
|
||||
<string>32 bits</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="buttonsLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="continueButton">
|
||||
<property name="text">
|
||||
<string>Continue</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="quitButton">
|
||||
<property name="text">
|
||||
<string>Quit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>destinationBrowseButton</tabstop>
|
||||
<tabstop>clientArch64RadioButton</tabstop>
|
||||
<tabstop>clientArch32RadioButton</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -13,6 +13,24 @@
|
|||
<height>106</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>106</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>106</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Ryzom Installer</string>
|
||||
</property>
|
||||
|
|
Loading…
Reference in a new issue