From 49900c0be3ee81b535431126aa9b063f549018c6 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 18 Sep 2012 09:11:23 +0200 Subject: [PATCH 001/125] Fixed: Compilation under unices (syslog.h included before chat_displayer.h creates a conflict with LOG_WARNING) --- code/ryzom/client/src/interface_v3/chat_displayer.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/ryzom/client/src/interface_v3/chat_displayer.h b/code/ryzom/client/src/interface_v3/chat_displayer.h index f98ed79f8..875859b78 100644 --- a/code/ryzom/client/src/interface_v3/chat_displayer.h +++ b/code/ryzom/client/src/interface_v3/chat_displayer.h @@ -25,6 +25,11 @@ #include "nel/misc/mutex.h" +// to fix a conflict with syslog.h being included by libwww +#ifdef LOG_WARNING +#undef LOG_WARNING +#endif + /** * class used to display console text commands in the chat window * \author Nicolas Brigand From 3f764df03eab0a028c673758ed7f41b0fccbbeff Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 19 Sep 2012 19:38:37 +0200 Subject: [PATCH 002/125] Added: shape2obj project to convert NeL .shape to standard .obj file format --- code/nel/tools/3d/shape2obj/main.cpp | 668 +++++++++++++++++++++++++++ 1 file changed, 668 insertions(+) create mode 100644 code/nel/tools/3d/shape2obj/main.cpp diff --git a/code/nel/tools/3d/shape2obj/main.cpp b/code/nel/tools/3d/shape2obj/main.cpp new file mode 100644 index 000000000..91945bdb6 --- /dev/null +++ b/code/nel/tools/3d/shape2obj/main.cpp @@ -0,0 +1,668 @@ +// NeL - MMORPG Framework +// 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 . + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace NLMISC; +using namespace NL3D; +using namespace std; + +struct CVertex +{ + CVector vertex; + CVector normal; + CUV uv; +}; + +bool operator == (const CVertex &v1, const CVertex &v2) +{ + return (v1.vertex == v2.vertex) && (v1.normal == v2.normal) && (v1.uv == v2.uv); +} + +bool operator < (const CVertex &v1, const CVertex &v2) +{ + return (v1.vertex < v2.vertex); +} + +const CIndexBuffer *getRdrPassPrimitiveBlock(const CMeshMRMGeom *mesh, uint lodId, uint renderPass) +{ + return &(mesh->getRdrPassPrimitiveBlock(lodId, renderPass)); +} + +// *************************************************************************** + +const CIndexBuffer *getRdrPassPrimitiveBlock(const CMeshMRMSkinnedGeom *mesh, uint lodId, uint renderPass) +{ + static CIndexBuffer block; + mesh->getRdrPassPrimitiveBlock(lodId, renderPass, block); + return █ +} + +// *************************************************************************** + +bool ProcessMeshMRMSkinned(const std::string &filename, IShape *shapeMesh); +bool ProcessMeshMRM(const std::string &filename, IShape *shapeMesh); +bool ProcessMesh(const std::string &filename, IShape *shapeMesh); + +int main(int argc, char* argv[]) +{ + if (argc < 2) + { + cout << "Syntax : shape2obj " << endl; + + return 1; + } + + if (!NLMISC::INelContext::isContextInitialised()) new NLMISC::CApplicationContext(); + + registerSerial3d(); + CScene::registerBasics(); + + IShape *shapeMesh = NULL; + + CIFile ifile; + + // Sream a shape + CShapeStream streamShape; + + string filename = argv[1]; + + if (!ifile.open(filename)) return 1; + + try + { + // Stream it + streamShape.serial(ifile); + + // Add the shape + shapeMesh = streamShape.getShapePointer(); + } + catch (Exception& e) + { + cout << "Error : " << e.what() << endl; + + return 1; + } + + if (ProcessMeshMRMSkinned(filename, shapeMesh)) return 0; + if (ProcessMeshMRM(filename, shapeMesh)) return 0; + if (ProcessMesh(filename, shapeMesh)) return 0; + + return 0; +} + +bool ProcessMeshMRMSkinned(const std::string &filename, IShape *shapeMesh) +{ + CMeshMRMSkinned *mesh = dynamic_cast(shapeMesh); + + if (!mesh) return false; + + COFile ofile; + + CMeshMRMSkinnedGeom* meshIn = (CMeshMRMSkinnedGeom*)&mesh->getMeshGeom(); + + std::vector skinWeights; + meshIn->getSkinWeights(skinWeights); + CVertexBuffer vertexBuffer; + meshIn->getVertexBuffer(vertexBuffer); + + CVertexBufferRead vba; + vertexBuffer.lock (vba); + uint i, j; + + // **** Select the Lod. + uint numLods= meshIn->getNbLod(); + + // get the max tris displayed + float numMeshFacesMin= (float)meshIn->getLevelDetail().MinFaceUsed; + float numMeshFacesMax= (float)meshIn->getLevelDetail().MaxFaceUsed; + // find the lod + sint lodId = numLods-1; + + // **** First, for the best lod indicate what vertex is used or not. Also index geomorphs to know what real vertex is used + vector vertexUsed; + // -1 means "not used" + vertexUsed.resize(skinWeights.size(), -1); + // Parse all triangles. + for(i=0;igetNbRdrPass(lodId); ++i) + { + const CIndexBuffer *pb = getRdrPassPrimitiveBlock(meshIn, lodId, i); + CIndexBufferRead iba; + pb->lock (iba); + if (iba.getFormat() == CIndexBuffer::Indices32) + { + const uint32 *triPtr= (const uint32 *) iba.getPtr(); + for(j=0;jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Flag the vertex with its own index => used. + vertexUsed[idx]= idx; + triPtr++; + } + } + else + { + const uint16 *triPtr= (const uint16 *) iba.getPtr(); + for(j=0;jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Flag the vertex with its own index => used. + vertexUsed[idx]= idx; + triPtr++; + } + } + } + // Special for Geomorphs: must take The End target vertex. + const std::vector &geomorphs= meshIn->getGeomorphs(lodId); + for(i=0;i shadowVertices; + vector vertexToVSkin; + vertexToVSkin.resize(vertexUsed.size()); + shadowVertices.reserve(vertexUsed.size()); + // use a map to remove duplicates (because of UV/normal discontinuities before!!) + map shadowVertexMap; + uint numMerged= 0; + // Skip Geomorphs. + for(i=geomorphs.size();imaxW) + { + matId= sw.MatrixId[j]; + maxW= sw.Weights[j]; + } + } +// shadowVert.MatrixId= matId; +*/ + // If dont find the shadowVertex in the map. + map::iterator it= shadowVertexMap.find(shadowVert); + if(it==shadowVertexMap.end()) + { + // Append + uint index= shadowVertices.size(); + vertexToVSkin[i]= index; + shadowVertices.push_back(shadowVert); + shadowVertexMap.insert(make_pair(shadowVert, index)); + } + else + { + // Ok, map. + vertexToVSkin[i]= it->second; + numMerged++; + } + + } + } + + ofstream ofs(string(filename + ".obj").c_str()); + + for(size_t y = 0; y < shadowVertices.size(); ++y) + { + CVector v = shadowVertices[y].vertex; + CVector vn = shadowVertices[y].normal; + CUV vt = shadowVertices[y].uv; + + ofs << "v " << v.x << " " << v.y << " " << v.z << endl; + ofs << "vn " << vn.x << " " << vn.y << " " << vn.z << endl; + ofs << "vt " << vt.U << " " << vt.V << endl; + } + + // **** Get All Faces + // Final List Of Triangles that match the bone. + vector shadowTriangles; + shadowTriangles.reserve(1000); + // Parse all input tri of the mesh. + for(i=0; igetNbRdrPass(lodId); ++i) + { + ofs << "g pass" << i << endl; + + const CIndexBuffer *pb = getRdrPassPrimitiveBlock(meshIn, lodId, i); + CIndexBufferRead iba; + pb->lock (iba); + if (iba.getFormat() == CIndexBuffer::Indices32) + { + const uint32 *triPtr= (const uint32 *) iba.getPtr(); + + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + else + { + const uint16 *triPtr= (const uint16 *) iba.getPtr(); + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + + for(size_t pass = 0; pass(shapeMesh); + + if (!mesh) return false; + + COFile ofile; + + CMeshMRMGeom* meshIn = (CMeshMRMGeom*)&mesh->getMeshGeom(); + + std::vector skinWeights = meshIn->getSkinWeights(); + CVertexBuffer vertexBuffer = meshIn->getVertexBuffer(); + + CVertexBufferRead vba; + vertexBuffer.lock (vba); + uint i, j; + + // **** Select the Lod. + uint numLods= meshIn->getNbLod(); + + // get the max tris displayed + float numMeshFacesMin= (float)meshIn->getLevelDetail().MinFaceUsed; + float numMeshFacesMax= (float)meshIn->getLevelDetail().MaxFaceUsed; + // find the lod + sint lodId = numLods-1; + + // **** First, for the best lod indicate what vertex is used or not. Also index geomorphs to know what real vertex is used + vector vertexUsed; + // -1 means "not used" + vertexUsed.resize(skinWeights.size(), -1); + // Parse all triangles. + for(i=0;igetNbRdrPass(lodId); ++i) + { + const CIndexBuffer *pb = getRdrPassPrimitiveBlock(meshIn, lodId, i); + CIndexBufferRead iba; + pb->lock (iba); + if (iba.getFormat() == CIndexBuffer::Indices32) + { + const uint32 *triPtr= (const uint32 *) iba.getPtr(); + for(j=0;jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Flag the vertex with its own index => used. + vertexUsed[idx]= idx; + triPtr++; + } + } + else + { + const uint16 *triPtr= (const uint16 *) iba.getPtr(); + for(j=0;jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Flag the vertex with its own index => used. + vertexUsed[idx]= idx; + triPtr++; + } + } + } + // Special for Geomorphs: must take The End target vertex. + const std::vector &geomorphs= meshIn->getGeomorphs(lodId); + for(i=0;i shadowVertices; + vector vertexToVSkin; + vertexToVSkin.resize(vertexUsed.size()); + shadowVertices.reserve(vertexUsed.size()); + // use a map to remove duplicates (because of UV/normal discontinuities before!!) + map shadowVertexMap; + uint numMerged= 0; + // Skip Geomorphs. + for(i=geomorphs.size();imaxW) + { + matId= sw.MatrixId[j]; + maxW= sw.Weights[j]; + } + } +// shadowVert.MatrixId= matId; +*/ + // If dont find the shadowVertex in the map. + map::iterator it= shadowVertexMap.find(shadowVert); + if(it==shadowVertexMap.end()) + { + // Append + uint index= shadowVertices.size(); + vertexToVSkin[i]= index; + shadowVertices.push_back(shadowVert); + shadowVertexMap.insert(make_pair(shadowVert, index)); + } + else + { + // Ok, map. + vertexToVSkin[i]= it->second; + numMerged++; + } + + } + } + + ofstream ofs(string(filename + ".obj").c_str()); + + for(size_t y = 0; y < shadowVertices.size(); ++y) + { + CVector v = shadowVertices[y].vertex; + CVector vn = shadowVertices[y].normal; + CUV vt = shadowVertices[y].uv; + + ofs << "v " << v.x << " " << v.y << " " << v.z << endl; + ofs << "vn " << vn.x << " " << vn.y << " " << vn.z << endl; + ofs << "vt " << vt.U << " " << vt.V << endl; + } + + // **** Get All Faces + // Final List Of Triangles that match the bone. + vector shadowTriangles; + shadowTriangles.reserve(1000); + // Parse all input tri of the mesh. + for(i=0; igetNbRdrPass(lodId); ++i) + { + ofs << "g pass" << i << endl; + + const CIndexBuffer *pb = getRdrPassPrimitiveBlock(meshIn, lodId, i); + CIndexBufferRead iba; + pb->lock (iba); + if (iba.getFormat() == CIndexBuffer::Indices32) + { + const uint32 *triPtr= (const uint32 *) iba.getPtr(); + + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + else + { + const uint16 *triPtr= (const uint16 *) iba.getPtr(); + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + + for(size_t pass = 0; pass(shapeMesh); + + if (!mesh) return false; + + COFile ofile; + + CMeshGeom* meshIn = (CMeshGeom*)&mesh->getMeshGeom(); + + CVertexBuffer vertexBuffer = meshIn->getVertexBuffer(); + +// CVertexBufferRead vba; +// vertexBuffer.lock (vba); + + uint i = vertexBuffer.getNumVertices(); + + std::vector vertices; + meshIn->retrieveVertices(vertices); + + std::vector indices; + meshIn->retrieveTriangles(indices); + + + // **** For all vertices used (not geomorphs), compute vertex Skins. + vector shadowVertices; + vector vertexToVSkin; + vertexToVSkin.resize(indices.size()); + shadowVertices.reserve(indices.size()); + // use a map to remove duplicates (because of UV/normal discontinuities before!!) + map shadowVertexMap; + uint numMerged= 0; + // Skip Geomorphs. + for(i=0;imaxW) + { + matId= sw.MatrixId[j]; + maxW= sw.Weights[j]; + } + } + + // If dont find the shadowVertex in the map. + map::iterator it= shadowVertexMap.find(shadowVert); + if(it==shadowVertexMap.end()) + { + // Append + uint index= shadowVertices.size(); + vertexToVSkin[i]= index; + shadowVertices.push_back(shadowVert); + shadowVertexMap.insert(make_pair(shadowVert, index)); + } + else + { + // Ok, map. + vertexToVSkin[i]= it->second; + numMerged++; + } + } + + ofstream ofs(string(filename + ".obj").c_str()); + + for(size_t y = 0; y < shadowVertices.size(); ++y) + { + CVector v = shadowVertices[y].vertex; + CVector vn = shadowVertices[y].normal; + CUV vt = shadowVertices[y].uv; + + ofs << "v " << v.x << " " << v.y << " " << v.z << endl; + ofs << "vn " << vn.x << " " << vn.y << " " << vn.z << endl; + ofs << "vt " << vt.U << " " << vt.V << endl; + } + + // **** Get All Faces + // Final List Of Triangles that match the bone. + vector shadowTriangles; + shadowTriangles.reserve(1000); + // Parse all input tri of the mesh. + for(i=0; igetNbRdrPass(lodId); ++i) + { + ofs << "g pass" << i << endl; + + const CIndexBuffer *pb = getRdrPassPrimitiveBlock(meshIn, lodId, i); + CIndexBufferRead iba; + pb->lock (iba); + if (iba.getFormat() == CIndexBuffer::Indices32) + { + const uint32 *triPtr= (const uint32 *) iba.getPtr(); + + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + else + { + const uint16 *triPtr= (const uint16 *) iba.getPtr(); + for(j=0; jgetNumIndexes(); ++j) + { + uint idx= *triPtr; + // Get the real Vertex (ie not the geomporhed one). + idx= vertexUsed[idx]; + // Get the ShadowVertex associated + idx= vertexToVSkin[idx]; + + shadowTriangles.push_back(idx); + triPtr++; + } + } + + for(size_t pass = 0; pass Date: Sat, 22 Sep 2012 21:07:35 +0200 Subject: [PATCH 003/125] Fixed: ryzom.xpm should be 32x32 instead of 48x48 --- code/ryzom/client/unix/ryzom.xpm | 2005 +++++++++++------------------- 1 file changed, 694 insertions(+), 1311 deletions(-) diff --git a/code/ryzom/client/unix/ryzom.xpm b/code/ryzom/client/unix/ryzom.xpm index 5e6ef89df..fe7c972f2 100644 --- a/code/ryzom/client/unix/ryzom.xpm +++ b/code/ryzom/client/unix/ryzom.xpm @@ -1,1313 +1,696 @@ /* XPM */ -static char * ryzom_48x48_xpm[] = { -"48 48 1262 2", +static char * ryzom_32x32_xpm[] = { +"32 32 661 2", " c None", -". c #AAB2A8", -"+ c #A6ABAF", -"@ c #79868A", -"# c #6A7B81", -"$ c #A6ABAA", -"% c #ADB0AF", -"& c #AAAFA9", -"* c #C8D2CE", -"= c #838679", -"- c #5F6159", -"; c #656766", -"> c #636365", -", c #504E50", -"' c #646464", -") c #7E8180", -"! c #9B988B", -"~ c #6D695B", -"{ c #636564", -"] c #535843", -"^ c #686A54", -"/ c #7E7D70", -"( c #717262", -"_ c #556056", -": c #47493B", -"< c #423E30", -"[ c #413629", -"} c #323229", -"| c #424039", -"1 c #5E5D56", -"2 c #656560", -"3 c #A8AAA7", -"4 c #989795", -"5 c #76726D", -"6 c #888074", -"7 c #807256", -"8 c #675B47", -"9 c #4B442E", -"0 c #808076", -"a c #8C8A7D", -"b c #817962", -"c c #4F4F36", -"d c #4A5535", -"e c #515E3E", -"f c #434736", -"g c #4C483F", -"h c #6E634E", -"i c #434233", -"j c #4A4943", -"k c #585347", -"l c #797367", -"m c #938B85", -"n c #908781", -"o c #746860", -"p c #605349", -"q c #897C6E", -"r c #958C81", -"s c #746953", -"t c #6C5E46", -"u c #665B43", -"v c #756852", -"w c #84847B", -"x c #AEB2AD", -"y c #737661", -"z c #49492E", -"A c #3A361F", -"B c #33371D", -"C c #34381F", -"D c #3D4028", -"E c #475131", -"F c #524F45", -"G c #7C7F76", -"H c #7D725E", -"I c #7E6847", -"J c #51534E", -"K c #4F5B5F", -"L c #3A3833", -"M c #332B18", -"N c #37331D", -"O c #51432D", -"P c #393326", -"Q c #423728", -"R c #55482E", -"S c #53482F", -"T c #565436", -"U c #727660", -"V c #888B7F", -"W c #88897C", -"X c #6E714C", -"Y c #6B724A", -"Z c #555B3A", -"` c #4B3D1D", -" . c #363119", -".. c #4B572D", -"+. c #536838", -"@. c #4C5740", -"#. c #4A3B24", -"$. c #795F3F", -"%. c #604D32", -"&. c #2E2D18", -"*. c #413C2D", -"=. c #808276", -"-. c #535C54", -";. c #474D43", -">. c #3C3E37", -",. c #353A30", -"'. c #807246", -"). c #4B5329", -"!. c #606F31", -"~. c #525730", -"{. c #73735E", -"]. c #8E9080", -"^. c #87887D", -"/. c #B7B6B6", -"(. c #858281", -"_. c #515941", -":. c #707C5F", -"<. c #656754", -"[. c #626A4B", -"}. c #645E3E", -"|. c #3C4023", -"1. c #44512E", -"2. c #38462C", -"3. c #21230E", -"4. c #29270D", -"5. c #382E14", -"6. c #39341B", -"7. c #524C33", -"8. c #53524A", -"9. c #645F55", -"0. c #48452C", -"a. c #464521", -"b. c #5D522D", -"c. c #716F3B", -"d. c #5C642A", -"e. c #51602B", -"f. c #37481B", -"g. c #33381E", -"h. c #5C5B3B", -"i. c #514D2F", -"j. c #4D462D", -"k. c #3F3A30", -"l. c #35352B", -"m. c #4C4C43", -"n. c #5B5B4A", -"o. c #91978B", -"p. c #9CA19B", -"q. c #B0B7AB", -"r. c #898D77", -"s. c #51593C", -"t. c #2F3B22", -"u. c #919162", -"v. c #464529", -"w. c #5F6031", -"x. c #545925", -"y. c #464E1F", -"z. c #373E23", -"A. c #585235", -"B. c #664F2F", -"C. c #3E3A23", -"D. c #595D35", -"E. c #666D38", -"F. c #75743D", -"G. c #636931", -"H. c #6E6B39", -"I. c #3D371C", -"J. c #222711", -"K. c #161A0E", -"L. c #353A24", -"M. c #6B7054", -"N. c #7D7F67", -"O. c #978C75", -"P. c #696450", -"Q. c #78786D", -"R. c #89887D", -"S. c #929591", -"T. c #52534E", -"U. c #5D5F5D", -"V. c #4B4E48", -"W. c #45493C", -"X. c #3F4533", -"Y. c #181C0D", -"Z. c #53512E", -"`. c #7D9042", -" + c #74903B", -".+ c #475525", -"++ c #4A5428", -"@+ c #534528", -"#+ c #513B1E", -"$+ c #554825", -"%+ c #494E26", -"&+ c #6E833A", -"*+ c #576B2A", -"=+ c #353E1D", -"-+ c #383D20", -";+ c #6F5B35", -">+ c #303017", -",+ c #2E2C17", -"'+ c #454426", -")+ c #737A49", -"!+ c #6D6F4B", -"~+ c #5A6140", -"{+ c #727260", -"]+ c #AFA799", -"^+ c #DDDFDA", -"/+ c #ECEDEC", -"(+ c #8F8F8D", -"_+ c #3C3E34", -":+ c #323623", -"<+ c #212415", -"[+ c #212712", -"}+ c #1C220F", -"|+ c #252310", -"1+ c #231E0C", -"2+ c #2F3317", -"3+ c #5C632E", -"4+ c #5E6C33", -"5+ c #465A22", -"6+ c #3D4022", -"7+ c #453921", -"8+ c #433E1D", -"9+ c #615C31", -"0+ c #3F471F", -"a+ c #545831", -"b+ c #586136", -"c+ c #29281A", -"d+ c #322F1B", -"e+ c #6B5836", -"f+ c #706134", -"g+ c #7F6B41", -"h+ c #83693F", -"i+ c #8F7846", -"j+ c #5C5B2B", -"k+ c #76804B", -"l+ c #6F7D47", -"m+ c #8C9178", -"n+ c #999188", -"o+ c #B0AAA8", -"p+ c #C7C6C6", -"q+ c #A29FA0", -"r+ c #9C9D95", -"s+ c #686E53", -"t+ c #414924", -"u+ c #373E1E", -"v+ c #303721", -"w+ c #343928", -"x+ c #212314", -"y+ c #363220", -"z+ c #2D3215", -"A+ c #333515", -"B+ c #5C4F2D", -"C+ c #5F5232", -"D+ c #2D2715", -"E+ c #31381A", -"F+ c #55592F", -"G+ c #4C552A", -"H+ c #677B43", -"I+ c #799250", -"J+ c #74864A", -"K+ c #656F46", -"L+ c #635637", -"M+ c #79683A", -"N+ c #968251", -"O+ c #665B33", -"P+ c #7D7840", -"Q+ c #616A32", -"R+ c #4C4F29", -"S+ c #4C562E", -"T+ c #556539", -"U+ c #595F44", -"V+ c #4D4D44", -"W+ c #6A6561", -"X+ c #95908F", -"Y+ c #74706F", -"Z+ c #797573", -"`+ c #595B4C", -" @ c #4E5532", -".@ c #5D603D", -"+@ c #797059", -"@@ c #655136", -"#@ c #5B5342", -"$@ c #504E3F", -"%@ c #3D461C", -"&@ c #21270E", -"*@ c #24280D", -"=@ c #141005", -"-@ c #191909", -";@ c #3D3A1C", -">@ c #454425", -",@ c #425024", -"'@ c #323C1B", -")@ c #506232", -"!@ c #7F9A5B", -"~@ c #75804F", -"{@ c #727F46", -"]@ c #635E36", -"^@ c #837443", -"/@ c #70562B", -"(@ c #505129", -"_@ c #454923", -":@ c #2E3019", -"<@ c #353920", -"[@ c #353B26", -"}@ c #404236", -"|@ c #98978C", -"1@ c #D6D4D2", -"2@ c #AFADA7", -"3@ c #8F8784", -"4@ c #7C7875", -"5@ c #A2A39D", -"6@ c #7E7D77", -"7@ c #868B7F", -"8@ c #A1A296", -"9@ c #5C5142", -"0@ c #553720", -"a@ c #543F33", -"b@ c #5F4A3A", -"c@ c #372A15", -"d@ c #657D32", -"e@ c #373D1B", -"f@ c #2C2B12", -"g@ c #343311", -"h@ c #3E3214", -"i@ c #392811", -"j@ c #3D3518", -"k@ c #393F1B", -"l@ c #2D3416", -"m@ c #5C713C", -"n@ c #678048", -"o@ c #47512F", -"p@ c #677346", -"q@ c #515132", -"r@ c #6B613A", -"s@ c #5D582D", -"t@ c #444224", -"u@ c #474B28", -"v@ c #5E5E37", -"w@ c #666B44", -"x@ c #999C81", -"y@ c #CDCBC5", -"z@ c #E5E1DE", -"A@ c #BEB9BA", -"B@ c #A9A3A0", -"C@ c #756D65", -"D@ c #877F79", -"E@ c #B2AFAA", -"F@ c #BEBEBA", -"G@ c #9FA19C", -"H@ c #443C2E", -"I@ c #302413", -"J@ c #301F0E", -"K@ c #27201A", -"L@ c #331D11", -"M@ c #432D13", -"N@ c #2D280F", -"O@ c #424F20", -"P@ c #1A1C0B", -"Q@ c #2F2E16", -"R@ c #54471F", -"S@ c #4F2E13", -"T@ c #1E0804", -"U@ c #542F14", -"V@ c #6F6534", -"W@ c #596332", -"X@ c #6F7444", -"Y@ c #645C32", -"Z@ c #526031", -"`@ c #434C2B", -" # c #4E5730", -".# c #48462A", -"+# c #5A5231", -"@# c #5C532E", -"## c #685A37", -"$# c #72673F", -"%# c #7F7C54", -"&# c #CAC8BA", -"*# c #DEDBD6", -"=# c #DBD7D3", -"-# c #D9D5D4", -";# c #C7C1C0", -"># c #857E7D", -",# c #59544B", -"'# c #544C44", -")# c #655F61", -"!# c #736D69", -"~# c #837E7E", -"{# c #595B4D", -"]# c #4D462F", -"^# c #7D7862", -"/# c #8D9594", -"(# c #4F3F2C", -"_# c #635237", -":# c #251E06", -"<# c #435120", -"[# c #262913", -"}# c #212012", -"|# c #3F3F27", -"1# c #6A5631", -"2# c #3D140C", -"3# c #1A0907", -"4# c #31180C", -"5# c #988561", -"6# c #7A804B", -"7# c #887C5D", -"8# c #596137", -"9# c #525633", -"0# c #242513", -"a# c #201A0F", -"b# c #453821", -"c# c #78613B", -"d# c #78603D", -"e# c #AB8E5D", -"f# c #A0865F", -"g# c #AB9575", -"h# c #C7BCB1", -"i# c #A49994", -"j# c #9E9492", -"k# c #A59E9D", -"l# c #A7A3A4", -"m# c #8A8280", -"n# c #7E7C72", -"o# c #403727", -"p# c #1C2119", -"q# c #55534F", -"r# c #555147", -"s# c #8C8F88", -"t# c #8E948D", -"u# c #788278", -"v# c #8C989C", -"w# c #444137", -"x# c #423E2D", -"y# c #3F3D1B", -"z# c #473C25", -"A# c #737367", -"B# c #818772", -"C# c #838365", -"D# c #431F14", -"E# c #3E251F", -"F# c #6B523E", -"G# c #8A7F5E", -"H# c #736544", -"I# c #6B5E3C", -"J# c #5D5134", -"K# c #494326", -"L# c #2C2715", -"M# c #3F371F", -"N# c #6D5835", -"O# c #79693D", -"P# c #A39B77", -"Q# c #D2CDB6", -"R# c #E4DCCD", -"S# c #E5DACF", -"T# c #C0B5AF", -"U# c #988E8B", -"V# c #9C9490", -"W# c #B6B3AF", -"X# c #AEAFAE", -"Y# c #A7A9A8", -"Z# c #55524A", -"`# c #514B37", -" $ c #434527", -".$ c #4A4D31", -"+$ c #595E45", -"@$ c #7E7A75", -"#$ c #4C4A47", -"$$ c #393023", -"%$ c #2B251E", -"&$ c #2F2C1E", -"*$ c #4B4C3C", -"=$ c #3D3E32", -"-$ c #4B4320", -";$ c #979789", -">$ c #C6CFCB", -",$ c #AFB1AB", -"'$ c #67695A", -")$ c #605136", -"!$ c #8F7E67", -"~$ c #867D62", -"{$ c #6D6D4E", -"]$ c #625434", -"^$ c #554B26", -"/$ c #464020", -"($ c #494825", -"_$ c #494926", -":$ c #75683D", -"<$ c #998149", -"[$ c #A3854F", -"}$ c #A89C86", -"|$ c #D8D5D1", -"1$ c #D9D7D5", -"2$ c #E7E6E4", -"3$ c #CDCAC9", -"4$ c #918986", -"5$ c #B5B5B0", -"6$ c #B2B6B2", -"7$ c #A8B0AB", -"8$ c #B8C2C2", -"9$ c #8B908E", -"0$ c #585B48", -"a$ c #64663A", -"b$ c #65643A", -"c$ c #565336", -"d$ c #4B3D2B", -"e$ c #443B31", -"f$ c #616057", -"g$ c #5F6251", -"h$ c #495134", -"i$ c #798175", -"j$ c #555648", -"k$ c #665D3F", -"l$ c #80857A", -"m$ c #646263", -"n$ c #48443F", -"o$ c #393528", -"p$ c #4C4836", -"q$ c #5D5739", -"r$ c #595733", -"s$ c #534A2C", -"t$ c #3C4420", -"u$ c #2C3318", -"v$ c #3E4623", -"w$ c #5C6E37", -"x$ c #7E8A52", -"y$ c #8B8964", -"z$ c #94976D", -"A$ c #797B56", -"B$ c #7C7855", -"C$ c #58573F", -"D$ c #353329", -"E$ c #413937", -"F$ c #544A47", -"G$ c #A1A09C", -"H$ c #817F79", -"I$ c #A6AEAB", -"J$ c #8C9091", -"K$ c #524F4D", -"L$ c #2D261F", -"M$ c #535645", -"N$ c #81886E", -"O$ c #938E77", -"P$ c #B0ADAA", -"Q$ c #807368", -"R$ c #A3A9A0", -"S$ c #818D86", -"T$ c #68726D", -"U$ c #727B6D", -"V$ c #444031", -"W$ c #363123", -"X$ c #545138", -"Y$ c #3C3F28", -"Z$ c #3A3B32", -"`$ c #2E3424", -" % c #383B31", -".% c #353E26", -"+% c #5E5A3A", -"@% c #403B21", -"#% c #3A4620", -"$% c #374320", -"%% c #414B2B", -"&% c #657349", -"*% c #8E9874", -"=% c #B8BBA1", -"-% c #B6BAAA", -";% c #A19D91", -">% c #9D9888", -",% c #A1AD86", -"'% c #565E41", -")% c #4A4A37", -"!% c #625C4E", -"~% c #585043", -"{% c #3D362B", -"]% c #2F2317", -"^% c #2D2619", -"/% c #3A3624", -"(% c #514C3C", -"_% c #85877D", -":% c #C2C4BF", -"<% c #AEAEAA", -"[% c #8F8D88", -"}% c #787870", -"|% c #767F77", -"1% c #757C7A", -"2% c #6C7274", -"3% c #43413B", -"4% c #2B2514", -"5% c #2D2814", -"6% c #26220F", -"7% c #3A331E", -"8% c #212413", -"9% c #273019", -"0% c #505644", -"a% c #6A6E66", -"b% c #5B644A", -"c% c #464B2A", -"d% c #404E28", -"e% c #313920", -"f% c #4C5A33", -"g% c #899377", -"h% c #737C60", -"i% c #CCCDC4", -"j% c #E9EAE5", -"k% c #DEDDDA", -"l% c #6B6159", -"m% c #665E4B", -"n% c #4B4736", -"o% c #2D3221", -"p% c #474029", -"q% c #59574B", -"r% c #726F62", -"s% c #7C7962", -"t% c #716A4E", -"u% c #958C6E", -"v% c #A39E8D", -"w% c #B8B8A9", -"x% c #CBCDC8", -"y% c #D1D8D7", -"z% c #D0DAD8", -"A% c #A1AAA6", -"B% c #7E8380", -"C% c #35382D", -"D% c #3F3D35", -"E% c #3A362B", -"F% c #2A261E", -"G% c #1F1A13", -"H% c #3B4223", -"I% c #2C2D13", -"J% c #2F2B15", -"K% c #2E2410", -"L% c #323424", -"M% c #313219", -"N% c #4F574C", -"O% c #616E64", -"P% c #4D4F40", -"Q% c #353624", -"R% c #2C341D", -"S% c #4E5D33", -"T% c #56663A", -"U% c #434A2B", -"V% c #4F5936", -"W% c #767668", -"X% c #9F9B9C", -"Y% c #878182", -"Z% c #504941", -"`% c #5E5940", -" & c #515137", -".& c #4E4B36", -"+& c #666148", -"@& c #564E34", -"#& c #4A452C", -"$& c #504829", -"%& c #66593B", -"&& c #68634F", -"*& c #9D9C92", -"=& c #DBDFDD", -"-& c #D7E0DF", -";& c #C4D4D5", -">& c #B6C8CC", -",& c #929FA3", -"'& c #555348", -")& c #423925", -"!& c #585143", -"~& c #444036", -"{& c #404524", -"]& c #35401D", -"^& c #2C3012", -"/& c #303214", -"(& c #423C1C", -"_& c #303210", -":& c #46471F", -"<& c #505E50", -"[& c #495747", -"}& c #484A3B", -"|& c #4C4832", -"1& c #363A24", -"2& c #4E522E", -"3& c #51552F", -"4& c #4E532E", -"5& c #586639", -"6& c #535D36", -"7& c #5B6249", -"8& c #38362A", -"9& c #33321F", -"0& c #52572C", -"a& c #51542A", -"b& c #4E4C2A", -"c& c #3A411E", -"d& c #2E3219", -"e& c #312B15", -"f& c #4C4220", -"g& c #51421F", -"h& c #554C27", -"i& c #747463", -"j& c #CCD6D6", -"k& c #B8CACD", -"l& c #9DB1B7", -"m& c #83959B", -"n& c #5A6368", -"o& c #403E38", -"p& c #422E18", -"q& c #503F1C", -"r& c #3C3B1B", -"s& c #343917", -"t& c #37421E", -"u& c #374820", -"v& c #2F3518", -"w& c #24230B", -"x& c #465122", -"y& c #32330A", -"z& c #414310", -"A& c #434A1B", -"B& c #3E4816", -"C& c #504D29", -"D& c #5B5A40", -"E& c #898778", -"F& c #615D3C", -"G& c #504E2A", -"H& c #586434", -"I& c #647E40", -"J& c #4E5E32", -"K& c #586D36", -"L& c #2F351C", -"M& c #373D20", -"N& c #474B23", -"O& c #6A6339", -"P& c #524B26", -"Q& c #3E3C1F", -"R& c #4E4C2B", -"S& c #4A4426", -"T& c #403B1D", -"U& c #443A1C", -"V& c #3B371B", -"W& c #5D553B", -"X& c #61635F", -"Y& c #78868B", -"Z& c #545C62", -"`& c #40444A", -" * c #252524", -".* c #27261F", -"+* c #4A4320", -"@* c #485022", -"#* c #2D3515", -"$* c #2C3415", -"%* c #3F4E26", -"&* c #273416", -"** c #262C11", -"=* c #1C1C0C", -"-* c #3D461E", -";* c #3D3815", -">* c #3B2406", -",* c #332508", -"'* c #3D390E", -")* c #504E1D", -"!* c #6C6138", -"~* c #A7A392", -"{* c #908674", -"]* c #715D3A", -"^* c #645633", -"/* c #2F2A15", -"(* c #4F5A31", -"_* c #47512E", -":* c #505933", -"<* c #40432B", -"[* c #59553D", -"}* c #554933", -"|* c #686136", -"1* c #717A3D", -"2* c #554C2F", -"3* c #604A29", -"4* c #625530", -"5* c #61572D", -"6* c #513F1D", -"7* c #443919", -"8* c #3C2E19", -"9* c #1F1812", -"0* c #1F1B17", -"a* c #23241D", -"b* c #1F2119", -"c* c #17180F", -"d* c #2F3319", -"e* c #3F421E", -"f* c #292813", -"g* c #343B19", -"h* c #35431D", -"i* c #1E290F", -"j* c #111309", -"k* c #465226", -"l* c #4A5024", -"m* c #231B09", -"n* c #492C0B", -"o* c #544113", -"p* c #605F28", -"q* c #6B7F38", -"r* c #6E7B45", -"s* c #696959", -"t* c #867E72", -"u* c #655432", -"v* c #574929", -"w* c #59663A", -"x* c #444B2D", -"y* c #444E29", -"z* c #25241F", -"A* c #41565B", -"B* c #41676B", -"C* c #5E7236", -"D* c #4D5134", -"E* c #544934", -"F* c #5B4627", -"G* c #5C4321", -"H* c #644A25", -"I* c #604A24", -"J* c #614C27", -"K* c #4F3E22", -"L* c #4A3118", -"M* c #50391F", -"N* c #292115", -"O* c #161007", -"P* c #2E2212", -"Q* c #46361C", -"R* c #533616", -"S* c #31220C", -"T* c #30250C", -"U* c #232811", -"V* c #141708", -"W* c #141407", -"X* c #536B32", -"Y* c #566434", -"Z* c #403B19", -"`* c #50471A", -" = c #3D4214", -".= c #3F4B1A", -"+= c #374519", -"@= c #3C451E", -"#= c #5B6742", -"$= c #909487", -"%= c #6B6954", -"&= c #363C22", -"*= c #3E4527", -"== c #2A2C18", -"-= c #262314", -";= c #2A2A26", -">= c #3C4E51", -",= c #3D585D", -"'= c #444D40", -")= c #39372B", -"!= c #413C24", -"~= c #534A2A", -"{= c #68532E", -"]= c #644E29", -"^= c #583A1B", -"/= c #5C492B", -"(= c #3F2F1C", -"_= c #4A321A", -":= c #4C3A1C", -"<= c #402F18", -"[= c #21140A", -"}= c #4E3D23", -"|= c #2D160B", -"1= c #422C15", -"2= c #4F411F", -"3= c #50451E", -"4= c #262A15", -"5= c #272C12", -"6= c #171606", -"7= c #425423", -"8= c #323927", -"9= c #282A17", -"0= c #483A1B", -"a= c #3A4115", -"b= c #25350C", -"c= c #212E0D", -"d= c #424F29", -"e= c #5E7137", -"f= c #8B947C", -"g= c #717868", -"h= c #3B432B", -"i= c #3B4030", -"j= c #2E2F20", -"k= c #38352A", -"l= c #485150", -"m= c #7A694F", -"n= c #7D5E39", -"o= c #624929", -"p= c #352919", -"q= c #4B3921", -"r= c #604E30", -"s= c #2F291B", -"t= c #423924", -"u= c #605736", -"v= c #605A31", -"w= c #656330", -"x= c #474C25", -"y= c #54562C", -"z= c #43361C", -"A= c #4B3A21", -"B= c #4D3417", -"C= c #5B4727", -"D= c #475228", -"E= c #222A12", -"F= c #343118", -"G= c #292811", -"H= c #282813", -"I= c #262513", -"J= c #1F2114", -"K= c #1A1F0B", -"L= c #352F12", -"M= c #3B3A12", -"N= c #303710", -"O= c #38381B", -"P= c #3B471E", -"Q= c #394420", -"R= c #3B3F2D", -"S= c #595C50", -"T= c #73756E", -"U= c #7E8079", -"V= c #7D7467", -"W= c #746244", -"X= c #736636", -"Y= c #6C6F3B", -"Z= c #646738", -"`= c #57542E", -" - c #5B5930", -".- c #625A31", -"+- c #5E5D31", -"@- c #44492A", -"#- c #4E5230", -"$- c #4C5431", -"%- c #404328", -"&- c #4A4725", -"*- c #525026", -"=- c #484C2A", -"-- c #47562B", -";- c #494E24", -">- c #3B4A28", -",- c #28341B", -"'- c #13150C", -")- c #1F2414", -"!- c #2C2C17", -"~- c #32311D", -"{- c #36362A", -"]- c #342E16", -"^- c #484C29", -"/- c #4D4827", -"(- c #4B3D22", -"_- c #393012", -":- c #3A3517", -"<- c #3A4721", -"[- c #283013", -"}- c #292F13", -"|- c #1A1E1D", -"1- c #242E32", -"2- c #505C62", -"3- c #5E534B", -"4- c #6A5A37", -"5- c #707D44", -"6- c #576931", -"7- c #49502E", -"8- c #596338", -"9- c #525F38", -"0- c #4F5833", -"a- c #4F482C", -"b- c #4C5632", -"c- c #525C33", -"d- c #454D2C", -"e- c #50562F", -"f- c #556536", -"g- c #637A3B", -"h- c #415229", -"i- c #3F5428", -"j- c #2A381B", -"k- c #242E1A", -"l- c #191E16", -"m- c #181D13", -"n- c #1F2116", -"o- c #343D22", -"p- c #313B28", -"q- c #392D15", -"r- c #38391C", -"s- c #645B45", -"t- c #8D8E7D", -"u- c #868C71", -"v- c #5D6640", -"w- c #282C17", -"x- c #282B16", -"y- c #262616", -"z- c #363426", -"A- c #30332E", -"B- c #43433A", -"C- c #55503A", -"D- c #545734", -"E- c #516038", -"F- c #42532A", -"G- c #43512E", -"H- c #3F482B", -"I- c #393C22", -"J- c #474428", -"K- c #4B452B", -"L- c #4E4A2C", -"M- c #505F35", -"N- c #48512E", -"O- c #525F35", -"P- c #46572C", -"Q- c #303D1D", -"R- c #2B371E", -"S- c #39482C", -"T- c #242D1E", -"U- c #1D2417", -"V- c #191E15", -"W- c #1B1B14", -"X- c #242718", -"Y- c #293219", -"Z- c #3B463C", -"`- c #454427", -" ; c #3F4A2B", -".; c #4F4F3E", -"+; c #8E9897", -"@; c #97A19A", -"#; c #808C77", -"$; c #5A6934", -"%; c #3A401E", -"&; c #383926", -"*; c #585747", -"=; c #485144", -"-; c #484932", -";; c #555A3E", -">; c #4B4F36", -",; c #303528", -"'; c #25271F", -"); c #26261D", -"!; c #3B3322", -"~; c #52472D", -"{; c #615E3B", -"]; c #515E34", -"^; c #475730", -"/; c #40492B", -"(; c #4C5C33", -"_; c #374425", -":; c #2E3820", -"<; c #212918", -"[; c #4A5149", -"}; c #4A5349", -"|; c #252D1F", -"1; c #1C211B", -"2; c #242219", -"3; c #2A2E1C", -"4; c #2D3622", -"5; c #464B40", -"6; c #4B5149", -"7; c #95A1A1", -"8; c #9FABA8", -"9; c #6C7966", -"0; c #556342", -"a; c #575F4A", -"b; c #6C7368", -"c; c #6F7D7D", -"d; c #586159", -"e; c #777B72", -"f; c #747267", -"g; c #524E41", -"h; c #443E31", -"i; c #463D2D", -"j; c #625644", -"k; c #685740", -"l; c #6E5F3A", -"m; c #454629", -"n; c #2C3120", -"o; c #373828", -"p; c #3A3F2A", -"q; c #3F4B30", -"r; c #24271B", -"s; c #1F1F16", -"t; c #414441", -"u; c #8E9E9F", -"v; c #3A4241", -"w; c #414849", -"x; c #2B2A21", -"y; c #48483D", -"z; c #3D4738", -"A; c #6D7872", -"B; c #A3B2B5", -"C; c #A8B6B7", -"D; c #808C85", -"E; c #555B53", -"F; c #393B2C", -"G; c #4D493E", -"H; c #878984", -"I; c #7F7B71", -"J; c #6D6252", -"K; c #574B32", -"L; c #635A3A", -"M; c #7A7452", -"N; c #6D6446", -"O; c #474431", -"P; c #404331", -"Q; c #484D39", -"R; c #4A4A39", -"S; c #33342D", -"T; c #787D77", -"U; c #5D5F59", -"V; c #2F2D23", -"W; c #36382F", -"X; c #8A9BA0", -"Y; c #637279", -"Z; c #262B2A", -"`; c #2B2C25", -" > c #404439", -".> c #403320", -"+> c #3A3C30", -"@> c #4E5648", -"#> c #646B69", -"$> c #6F7779", -"%> c #666B6D", -"&> c #434642", -"*> c #4B4C43", -"=> c #686A5F", -"-> c #666C5A", -";> c #64695C", -">> c #505240", -",> c #50553B", -"'> c #494F37", -")> c #464B30", -"!> c #52513A", -"~> c #797B67", -"{> c #848E75", -"]> c #7D8A6E", -"^> c #60675A", -"/> c #4B5147", -"(> c #767B78", -"_> c #7C807F", -":> c #37362A", -"<> c #2E3024", -"[> c #383C34", -"}> c #6D7C7F", -"|> c #63757D", -"1> c #4B5659", -"2> c #33362E", -"3> c #47534C", -"4> c #383E31", -"5> c #353A29", -"6> c #626C6A", -"7> c #4D5452", -"8> c #2A2E23", -"9> c #353B2A", -"0> c #49523F", -"a> c #4E5745", -"b> c #565A4E", -"c> c #5B6052", -"d> c #424934", -"e> c #434931", -"f> c #4C5339", -"g> c #616555", -"h> c #747E69", -"i> c #7D8679", -"j> c #95A299", -"k> c #929C99", -"l> c #79817F", -"m> c #6E776F", -"n> c #7B827D", -"o> c #858F93", -"p> c #3A3E3E", -"q> c #3E3B2E", -"r> c #596059", -"s> c #6C7B7A", -"t> c #5B6D75", -"u> c #404A4D", -"v> c #313730", -"w> c #5D6669", -"x> c #4B534F", -"y> c #32362E", -"z> c #3B4231", -"A> c #3C4437", -"B> c #545F51", -"C> c #43473D", -"D> c #3D3C2C", -"E> c #4E4F3B", -"F> c #5E5E4B", -"G> c #84887B", -"H> c #8E928C", -"I> c #99A19E", -"J> c #9AA5A5", -"K> c #A2AFB1", -"L> c #9BA7AA", -"M> c #ACBCBF", -"N> c #97A3A7", -"O> c #676F72", -"P> c #3F4538", -"Q> c #576057", -"R> c #364132", -"S> c #607172", -"T> c #54676F", -"U> c #505854", -"V> c #4A524E", -"W> c #576062", -"X> c #6E797C", -"Y> c #707D7C", -"Z> c #748080", -"`> c #737E7D", -" , c #747C79", -"., c #6E7065", -"+, c #78776B", -"@, c #767467", -"#, c #767970", -"$, c #919B96", -"%, c #859090", -"&, c #747A7C", -"*, c #909CA0", -"=, c #96A5A9", -"-, c #9BABB0", -";, c #7E8B91", -">, c #4B5153", -",, c #373B37", -"', c #21251D", -"), c #282C23", -"!, c #5D6B6F", -"~, c #546465", -"{, c #566566", -"], c #71858B", -"^, c #82979E", -"/, c #86999F", -"(, c #8D9FA5", -"_, c #8D9B9C", -":, c #828E8E", -"<, c #737B76", -"[, c #727D74", -"}, c #808D8D", -"|, c #7E898B", -"1, c #838D8E", -"2, c #7E8B8F", -"3, c #84949B", -"4, c #7B8B91", -"5, c #6C7A81", -"6, c #515B5F", -"7, c #363C3A", -"8, c #2A302F", -"9, c #36474F", -"0, c #5C6C72", -"a, c #5B6971", -"b, c #596871", -"c, c #6F838C", -"d, c #7B9099", -"e, c #778A91", -"f, c #7B8D93", -"g, c #738487", -"h, c #6E7C7D", -"i, c #78878C", -"j, c #829399", -"k, c #7D9097", -"l, c #73868C", -"m, c #6C7D83", -"n, c #63747B", -"o, c #55646B", -"p, c #4F5B62", -"q, c #515E67", -"r, c #5F737D", -"s, c #637882", -"t, c #677C85", -"u, c #647780", -"v, c #64767D", -"w, c #62747C", -"x, c #62757E", -"y, c #60737D", -"z, c #5A6B74", -"A, c #55666F", -" ", -" ", -" ", -" ", -" . + @ # $ % & * = ", -" - ; > , ' ) ! ~ { ] ^ / ( _ : < [ ", -" } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g ", -" h i j k l m n o p q r s t u v w x y z A B C D E ", -" F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@. ", -" #.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2. ", -" 3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t. ", -" v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y. ", -" Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+ ", -" 2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+ ", -" z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@ ", -" %@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@ ", -" d@e@f@g@h@i@j@k@,@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@ ", -" O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:# ", -" <#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y# ", -" z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$ ", -" -$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$ ", -" k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$ ", -" X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%D$!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6% ", -" 7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J% ", -" K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&V.'&)&!&~&{&]&^&/& ", -" (&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w& ", -" x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=* ", -" -*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j* ", -" k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W* ", -" X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=3=4=5=6= ", -" 7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I= ", -" J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-{- ", -" ]-^-/-(-_-:-<-[-}-|-1-2-3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p- ", -" q-r-s-t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z- ", -" `- ;.;+;@;#;$;%;&;*;=;-;;;>;,;';);!;~;{;];^;/;(;_;:;<;[;};|;1;2;3;4; ", -" 5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;3; ", -" y;z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;2;W;X;Y;Z;`; > ", -" .>+>@>#>$>%>&>*>=>->;>>>,>'>)>!>~>{>]>^>/>(>_>:><>[>}>|>1>2> ", -" 4>5>6>7>8>9>0>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u> ", -" v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T> ", -" U>V>W>X>Y>Z>`> ,.,+,@,#,$,%,&,*,=,-,;,>,,,',), ", -" !,~,{,],^,/,(,_,:,<,[,},|,1,2,3,4,5,6,7,8, ", -" 0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p, ", -" q,r,s,t,u,v,w,x,y,z,A, ", -" ", -" ", -" ", -" "}; +". c #A8B58C", +"+ c #B7C0AA", +"@ c #CACCCA", +"# c #AEADA8", +"$ c #949FA4", +"% c #A5ADB2", +"& c #D7E4E8", +"* c #D8E8ED", +"= c #A8ABA6", +"- c #978E81", +"; c #9D9C8E", +"> c #BEC4BE", +", c #777D61", +"' c #737766", +") c #747674", +"! c #717175", +"~ c #6E6E71", +"{ c #8A9293", +"] c #888477", +"^ c #63605B", +"/ c #83856E", +"( c #888C7E", +"_ c #666D60", +": c #4A483C", +"< c #433729", +"[ c #B1B1AC", +"} c #ABABA9", +"| c #C1B195", +"1 c #8A816C", +"2 c #48453A", +"3 c #3D3A32", +"4 c #6B6A61", +"5 c #8A8B8A", +"6 c #989592", +"7 c #948F87", +"8 c #7E7861", +"9 c #59513F", +"0 c #65604F", +"a c #918F86", +"b c #5F5E45", +"c c #4B5735", +"d c #3F462F", +"e c #443F31", +"f c #5B5E48", +"g c #98998C", +"h c #8C7B59", +"i c #B1AA95", +"j c #49483C", +"k c #7F7B6F", +"l c #6E6049", +"m c #696C6D", +"n c #483C2F", +"o c #403623", +"p c #5B4C3B", +"q c #514237", +"r c #66553A", +"s c #645B3E", +"t c #878B79", +"u c #93948B", +"v c #605C3B", +"w c #4D5032", +"x c #373117", +"y c #48512C", +"z c #52633A", +"A c #7D8278", +"B c #BAB3A5", +"C c #7C7E6B", +"D c #2B2818", +"E c #664E32", +"F c #37341B", +"G c #636156", +"H c #737769", +"I c #454935", +"J c #3F4430", +"K c #666637", +"L c #5E712F", +"M c #535435", +"N c #7D7E6A", +"O c #717267", +"P c #6E6B6A", +"Q c #545B46", +"R c #6D715E", +"S c #767960", +"T c #575736", +"U c #42512E", +"V c #303828", +"W c #8D9696", +"X c #9C9577", +"Y c #58513D", +"Z c #3E3C22", +"` c #4D4B1E", +" . c #323916", +".. c #565137", +"+. c #4A3D26", +"@. c #3E3E24", +"#. c #746E37", +"$. c #5F5B2F", +"%. c #232A10", +"&. c #1F2513", +"*. c #5B5B3C", +"=. c #807B63", +"-. c #625C4B", +";. c #6B675B", +">. c #90968D", +",. c #7B7E7B", +"'. c #7C8380", +"). c #4B503E", +"!. c #1D2212", +"~. c #3F4233", +"{. c #737A76", +"]. c #4D4F31", +"^. c #494524", +"/. c #7D9442", +"(. c #4F6429", +"_. c #57512D", +":. c #4F3C1F", +"<. c #423F1D", +"[. c #5F6A35", +"}. c #3D481F", +"|. c #404024", +"1. c #5F512B", +"2. c #3F381E", +"3. c #6E6C3F", +"4. c #717448", +"5. c #646C48", +"6. c #B4ADA3", +"7. c #E5E6E4", +"8. c #BEBEBE", +"9. c #444737", +"0. c #2D311B", +"a. c #222911", +"b. c #1D220E", +"c. c #231E09", +"d. c #59574D", +"e. c #879657", +"f. c #3C3922", +"g. c #4C5324", +"h. c #4E4D27", +"i. c #3F3420", +"j. c #3C401F", +"k. c #4E552A", +"l. c #5C703B", +"m. c #778649", +"n. c #43442C", +"o. c #736039", +"p. c #897648", +"q. c #847644", +"r. c #635F2D", +"s. c #525B31", +"t. c #647444", +"u. c #504E43", +"v. c #7F7774", +"w. c #8B8788", +"x. c #969591", +"y. c #4B542F", +"z. c #5C6041", +"A. c #5D513D", +"B. c #474638", +"C. c #4B442E", +"D. c #8E8B82", +"E. c #859F4A", +"F. c #373F1C", +"G. c #24260C", +"H. c #161407", +"I. c #2C2D14", +"J. c #3C4420", +"K. c #38401D", +"L. c #657B43", +"M. c #70804E", +"N. c #595C35", +"O. c #706B3A", +"P. c #66562B", +"Q. c #3C4120", +"R. c #383B20", +"S. c #444B2E", +"T. c #75766C", +"U. c #DEDBD8", +"V. c #A49E98", +"W. c #7A726F", +"X. c #ADAFAA", +"Y. c #9CA098", +"Z. c #767164", +"`. c #402815", +" + c #46362F", +".+ c #47341D", +"++ c #484A2B", +"@+ c #858F81", +"#+ c #828566", +"$+ c #576B2A", +"%+ c #252210", +"&+ c #3F3B17", +"*+ c #4A2B12", +"=+ c #442812", +"-+ c #58582B", +";+ c #555F32", +">+ c #5C6433", +",+ c #48532E", +"'+ c #636D42", +")+ c #574E30", +"!+ c #524C2B", +"~+ c #69623A", +"{+ c #888661", +"]+ c #CECDBF", +"^+ c #E3DFDC", +"/+ c #C9C3C3", +"(+ c #898481", +"_+ c #5D574D", +":+ c #797271", +"<+ c #8D8987", +"[+ c #484638", +"}+ c #534830", +"|+ c #4A4C48", +"1+ c #5E4327", +"2+ c #252108", +"3+ c #636C59", +"4+ c #666B44", +"5+ c #424030", +"6+ c #675F3D", +"7+ c #32100A", +"8+ c #2F180F", +"9+ c #887F5A", +"0+ c #817950", +"a+ c #615F39", +"b+ c #2C2D18", +"c+ c #2A2113", +"d+ c #695534", +"e+ c #947E52", +"f+ c #B8A37E", +"g+ c #C3B29E", +"h+ c #ACA09D", +"i+ c #A09795", +"j+ c #BCBABA", +"k+ c #857F7C", +"l+ c #544D3D", +"m+ c #30362B", +"n+ c #59564A", +"o+ c #A2A8A6", +"p+ c #62645A", +"q+ c #535453", +"r+ c #474534", +"s+ c #3D3C1F", +"t+ c #8F9692", +"u+ c #575033", +"v+ c #776D51", +"w+ c #ACB2AA", +"x+ c #8A9080", +"y+ c #5A432F", +"z+ c #8B7B65", +"A+ c #746D50", +"B+ c #5F502C", +"C+ c #484224", +"D+ c #414122", +"E+ c #75673B", +"F+ c #9E8149", +"G+ c #BDB7A9", +"H+ c #E5E4E1", +"I+ c #EAE7E2", +"J+ c #9C9491", +"K+ c #ADABA6", +"L+ c #A0A3A0", +"M+ c #A8AFAE", +"N+ c #5C5F51", +"O+ c #5E5D32", +"P+ c #525431", +"Q+ c #43382B", +"R+ c #453E34", +"S+ c #41412F", +"T+ c #5D6454", +"U+ c #464941", +"V+ c #6D7372", +"W+ c #76705A", +"X+ c #60624D", +"Y+ c #494644", +"Z+ c #39382E", +"`+ c #444630", +" @ c #584F2D", +".@ c #444823", +"+@ c #30381B", +"@@ c #49562C", +"#@ c #7E8D54", +"$@ c #939472", +"%@ c #7F7F60", +"&@ c #7C8259", +"*@ c #373727", +"=@ c #3F3834", +"-@ c #85817E", +";@ c #6D6D66", +">@ c #666765", +",@ c #352E27", +"'@ c #49493C", +")@ c #969985", +"!@ c #A39D98", +"~@ c #928E81", +"{@ c #8C9892", +"]@ c #7E8B8A", +"^@ c #444130", +"/@ c #343021", +"(@ c #444736", +"_@ c #737F5D", +":@ c #605543", +"<@ c #2D2D19", +"[@ c #28301C", +"}@ c #5E6257", +"|@ c #596044", +"1@ c #3F4523", +"2@ c #384123", +"3@ c #65724F", +"4@ c #889176", +"5@ c #E6E6DF", +"6@ c #C2C0BD", +"7@ c #827B6D", +"8@ c #656551", +"9@ c #3C3B28", +"0@ c #524F43", +"a@ c #6A644D", +"b@ c #655A42", +"c@ c #7C735E", +"d@ c #9F9F8D", +"e@ c #B2B5B0", +"f@ c #C9D0CD", +"g@ c #8F9490", +"h@ c #3F4037", +"i@ c #4F504A", +"j@ c #292420", +"k@ c #2F2F19", +"l@ c #2C2710", +"m@ c #464730", +"n@ c #8C9194", +"o@ c #5D4C2A", +"p@ c #252514", +"q@ c #3F412A", +"r@ c #5B6D68", +"s@ c #4D4C3D", +"t@ c #282F1A", +"u@ c #526038", +"v@ c #49512D", +"w@ c #444B2D", +"x@ c #7F7B76", +"y@ c #5B5453", +"z@ c #535137", +"A@ c #525535", +"B@ c #565136", +"C@ c #48432A", +"D@ c #483F23", +"E@ c #635636", +"F@ c #777664", +"G@ c #D5DBDA", +"H@ c #BECFD0", +"I@ c #A8BCC1", +"J@ c #525553", +"K@ c #4E4432", +"L@ c #4B402D", +"M@ c #403F26", +"N@ c #3B4A23", +"O@ c #323517", +"P@ c #454936", +"Q@ c #828859", +"R@ c #30330E", +"S@ c #424513", +"T@ c #444F29", +"U@ c #434629", +"V@ c #746D5B", +"W@ c #585532", +"X@ c #4F552C", +"Y@ c #677E43", +"Z@ c #5A6E3D", +"`@ c #30361E", +" # c #424521", +".# c #5F5831", +"+# c #3C3D1D", +"@# c #414024", +"## c #3D391A", +"$# c #413719", +"%# c #5E593E", +"&# c #929D9E", +"*# c #77868D", +"=# c #454C50", +"-# c #2F2F2B", +";# c #4A3D1A", +"># c #3C451C", +",# c #313B19", +"'# c #30401D", +")# c #23270F", +"!# c #30301E", +"~# c #6E7E49", +"{# c #363617", +"]# c #261605", +"^# c #43360D", +"/# c #5C5D29", +"(# c #8F8D6B", +"_# c #7F7563", +":# c #65512D", +"<# c #433E23", +"[# c #546137", +"}# c #485332", +"|# c #454D45", +"1# c #60644A", +"2# c #666C36", +"3# c #57462C", +"4# c #634E2A", +"5# c #5D4A25", +"6# c #4A3819", +"7# c #312513", +"8# c #2B1F15", +"9# c #1F2119", +"0# c #16170F", +"a# c #37391C", +"b# c #373216", +"c# c #313718", +"d# c #1F2B11", +"e# c #111208", +"f# c #3C422F", +"g# c #6C7B4A", +"h# c #566631", +"i# c #493915", +"j# c #4A4314", +"k# c #47501C", +"l# c #4A5A23", +"m# c #7B806A", +"n# c #757260", +"o# c #3B3E23", +"p# c #3C4124", +"q# c #252314", +"r# c #3A413E", +"s# c #405B52", +"t# c #3E4331", +"u# c #4C462A", +"v# c #5E4C29", +"w# c #654E26", +"x# c #634C2A", +"y# c #583E1E", +"z# c #2C1D0E", +"A# c #3E2C17", +"B# c #42230F", +"C# c #443216", +"D# c #423817", +"E# c #1C200E", +"F# c #161605", +"G# c #808473", +"H# c #535B35", +"I# c #394328", +"J# c #232212", +"K# c #423E17", +"L# c #26370C", +"M# c #30371A", +"N# c #5A6B38", +"O# c #6E7364", +"P# c #5C6251", +"Q# c #3D3E2D", +"R# c #4A473C", +"S# c #71664C", +"T# c #775E33", +"U# c #463921", +"V# c #574326", +"W# c #514528", +"X# c #524C2D", +"Y# c #606139", +"Z# c #4C502A", +"`# c #4B4923", +" $ c #3F351E", +".$ c #4F3F1E", +"+$ c #53532B", +"@$ c #202A13", +"#$ c #2A2C16", +"$$ c #2B2813", +"%$ c #343525", +"&$ c #655642", +"*$ c #32311A", +"=$ c #3B3B1C", +"-$ c #3F3214", +";$ c #3F3B19", +">$ c #333D1B", +",$ c #2B3215", +"'$ c #272B27", +")$ c #636E75", +"!$ c #766856", +"~$ c #6D6B3A", +"{$ c #5D6D38", +"]$ c #565E35", +"^$ c #56663A", +"/$ c #504F2F", +"($ c #495331", +"_$ c #404528", +":$ c #50542E", +"<$ c #607239", +"[$ c #4B5D2F", +"}$ c #364A22", +"|$ c #26301C", +"1$ c #171C12", +"2$ c #222417", +"3$ c #353D24", +"4$ c #666C6B", +"5$ c #3A3216", +"6$ c #4B4B2D", +"7$ c #8D9384", +"8$ c #8A9379", +"9$ c #353C21", +"0$ c #363820", +"a$ c #3A3728", +"b$ c #434233", +"c$ c #515034", +"d$ c #4C5734", +"e$ c #3C4929", +"f$ c #353B26", +"g$ c #3B3A24", +"h$ c #575032", +"i$ c #555C35", +"j$ c #495531", +"k$ c #4F6034", +"l$ c #2F391F", +"m$ c #2D3A20", +"n$ c #353E30", +"o$ c #1C2417", +"p$ c #1D1D14", +"q$ c #2D311D", +"r$ c #333E2F", +"s$ c #7E8388", +"t$ c #63624A", +"u$ c #585842", +"v$ c #34372B", +"w$ c #889191", +"x$ c #919E91", +"y$ c #4D5C34", +"z$ c #565C4A", +"A$ c #647171", +"B$ c #595F52", +"C$ c #6E6E5F", +"D$ c #403E34", +"E$ c #363125", +"F$ c #594C38", +"G$ c #655938", +"H$ c #3E4527", +"I$ c #343825", +"J$ c #404D2B", +"K$ c #2D3521", +"L$ c #1A1B12", +"M$ c #7D8988", +"N$ c #333936", +"O$ c #2B2D29", +"P$ c #262C1B", +"Q$ c #646660", +"R$ c #738167", +"S$ c #4B5138", +"T$ c #3D3E34", +"U$ c #4F5A4C", +"V$ c #94A0A3", +"W$ c #A3B0B1", +"X$ c #454840", +"Y$ c #3F3D2E", +"Z$ c #6D6F64", +"`$ c #666150", +" % c #554F33", +".% c #666242", +"+% c #5D553C", +"@% c #4C503C", +"#% c #545B41", +"$% c #3B3D32", +"%% c #8B928E", +"&% c #25261B", +"*% c #6D7877", +"=% c #4F5D63", +"-% c #343731", +";% c #555D58", +">% c #909CA3", +",% c #566259", +"'% c #4E4B3E", +")% c #3F4232", +"!% c #616A68", +"~% c #252620", +"{% c #383D30", +"]% c #6A7366", +"^% c #707569", +"/% c #4F5443", +"(% c #485038", +"_% c #505641", +":% c #6F7861", +"<% c #95A094", +"[% c #8B958F", +"}% c #676F67", +"|% c #7E8582", +"1% c #474B4A", +"2% c #414137", +"3% c #5F6B6A", +"4% c #52626A", +"5% c #454B49", +"6% c #7B858C", +"7% c #868D91", +"8% c #5A615E", +"9% c #393E3A", +"0% c #5A6363", +"a% c #484C44", +"b% c #424A3E", +"c% c #535C53", +"d% c #474738", +"e% c #5C5945", +"f% c #7F8173", +"g% c #939A95", +"h% c #929C9C", +"i% c #9EABAD", +"j% c #A5B4B7", +"k% c #89959A", +"l% c #3E443E", +"m% c #3C463B", +"n% c #485450", +"o% c #53626A", +"p% c #899197", +"q% c #5C6B6C", +"r% c #515F5E", +"s% c #65767B", +"t% c #899DA4", +"u% c #88999F", +"v% c #8E9A9B", +"w% c #828B88", +"x% c #696F66", +"y% c #7F8A8A", +"z% c #7E8788", +"A% c #849196", +"B% c #899AA0", +"C% c #646F75", +"D% c #3C413F", +"E% c #252925", +"F% c #647074", +"G% c #7B828B", +"H% c #36464E", +"I% c #505F67", +"J% c #606F76", +"K% c #55646E", +"L% c #687B85", +"M% c #748890", +"N% c #75878D", +"O% c #6F7F82", +"P% c #75858A", +"Q% c #798D95", +"R% c #6C7E85", +"S% c #5E6F77", +"T% c #4D5A62", +"U% c #626B72", +"V% c #A2A6A6", +"W% c #8E949C", +"X% c #666F78", +"Y% c #48555E", +"Z% c #4B5C65", +"`% c #50606A", +" & c #5B6E7A", +".& c #5D707B", +"+& c #5D6F79", +"@& c #5C6D77", +"#& c #5D6D78", +"$& c #5B6974", +"%& c #626D75", +"&& c #6D777E", +"*& c #838A92", +"=& c #878E95", +"-& c #686F78", +";& c #54606A", +">& c #4F5C68", +",& c #51606C", +"'& c #515E6A", +")& c #59636E", +"!& c #6E757E", +" ", +" ", +" . + @ # $ % & * = - ; > ", +" , ' ) ! ~ { ] ^ / ( _ : < [ } ", +" | 1 2 3 4 5 6 7 8 9 0 a b c d e f g ", +" h i j k l m n o p q r s t u v w x y z A ", +" B C D E F G H I J K L M N O P Q R S T U V W ", +" X Y Z ` ...+.@.K #.$.%.&.*.=.-.;.>.,.'.).!.~.{. ", +" ].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d. ", +" e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D. ", +" E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+ ", +" #+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+ ", +" 4+I.5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+ ", +" u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+ ", +" W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@ ", +" _@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@ ", +" o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@ ", +" Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!# ", +" ~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e# f# ", +" g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#.+y#z#A#B#C#D#E#F#G# ", +" H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$ ", +" &$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$ ", +" 5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$ ", +" t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$ ", +" R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%3 &%*%=%-%;% ", +" >%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5% ", +" 6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o% ", +" p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G% ", +" H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W% ", +" X%Y%Z%`% &.&+&@&#&$&%&&&*&=& ", +" -&;&>&,&$&'&)&!& ", +" "}; From 8701d6e6ee405f93b13270ab4ecb1dde7dc2cefa Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 22 Sep 2012 22:42:02 +0200 Subject: [PATCH 004/125] Fixed: Replaced "Reqiures" by "Requires" in pkg-config files --- code/nel/src/3d/driver/opengl/nel-driverogl.pc | 2 +- code/nel/src/3d/driver/opengl/nel-driverogl.pc.in | 2 +- code/nel/src/3d/nel-3d.pc | 2 +- code/nel/src/3d/nel-3d.pc.in | 2 +- code/nel/src/georges/nel-georges.pc.in | 2 +- code/nel/src/ligo/nel-ligo.pc.in | 2 +- code/nel/src/misc/nel-misc.pc | 2 +- code/nel/src/misc/nel-misc.pc.in | 2 +- code/nel/src/net/nel-net.pc.in | 2 +- code/nel/src/pacs/nel-pacs.pc.in | 2 +- code/nel/src/sound/nel-sound.pc.in | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/nel/src/3d/driver/opengl/nel-driverogl.pc b/code/nel/src/3d/driver/opengl/nel-driverogl.pc index 867ad515e..03a2b1294 100644 --- a/code/nel/src/3d/driver/opengl/nel-driverogl.pc +++ b/code/nel/src/3d/driver/opengl/nel-driverogl.pc @@ -6,7 +6,7 @@ includedir=${prefix}/include Name: nel-driverogl Version: 0.5.0 Description: NeL 0.5.0 -Reqiures: +Requires: Libs: -L${libdir} Libs.private: -ldl -lpthread -lxml2 -lGL -lXxf86vm -lXmu Cflags: -I${includedir} -DXF86VIDMODE diff --git a/code/nel/src/3d/driver/opengl/nel-driverogl.pc.in b/code/nel/src/3d/driver/opengl/nel-driverogl.pc.in index 282e580f1..6f43c5f14 100644 --- a/code/nel/src/3d/driver/opengl/nel-driverogl.pc.in +++ b/code/nel/src/3d/driver/opengl/nel-driverogl.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-driverogl Version: @VERSION@ Description: NeL @VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ @OPENGL_LIBS@ @XF86VIDMODE_LIBS@ -lXmu Cflags: -I${includedir} @OPENGL_CFLAGS@ @XF86VIDMODE_CFLAGS@ diff --git a/code/nel/src/3d/nel-3d.pc b/code/nel/src/3d/nel-3d.pc index 638961276..9420c67bf 100644 --- a/code/nel/src/3d/nel-3d.pc +++ b/code/nel/src/3d/nel-3d.pc @@ -6,7 +6,7 @@ includedir=${prefix}/include Name: nel-3d Version: 0.5.0 Description: NeL 0.5.0 -Reqiures: +Requires: Libs: -L${libdir} Libs.private: -ldl -lpthread -lxml2 -lfreetype -lz -lc Cflags: -I${includedir} -I/usr/include/freetype2 diff --git a/code/nel/src/3d/nel-3d.pc.in b/code/nel/src/3d/nel-3d.pc.in index ade3e2d08..a3c06762a 100644 --- a/code/nel/src/3d/nel-3d.pc.in +++ b/code/nel/src/3d/nel-3d.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-3d Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ @FREETYPE_LIBS@ -lc Cflags: -I${includedir} @FREETYPE_CFLAGS@ diff --git a/code/nel/src/georges/nel-georges.pc.in b/code/nel/src/georges/nel-georges.pc.in index 4aa509aa0..5a8703714 100644 --- a/code/nel/src/georges/nel-georges.pc.in +++ b/code/nel/src/georges/nel-georges.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-georges Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc Cflags: -I${includedir} diff --git a/code/nel/src/ligo/nel-ligo.pc.in b/code/nel/src/ligo/nel-ligo.pc.in index d4a535bac..dfe27ceac 100644 --- a/code/nel/src/ligo/nel-ligo.pc.in +++ b/code/nel/src/ligo/nel-ligo.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-ligo Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc Cflags: -I${includedir} diff --git a/code/nel/src/misc/nel-misc.pc b/code/nel/src/misc/nel-misc.pc index db7c97b22..4d28291ed 100644 --- a/code/nel/src/misc/nel-misc.pc +++ b/code/nel/src/misc/nel-misc.pc @@ -6,7 +6,7 @@ includedir=${prefix}/include Name: nel-misc Version: 0.5.0 Description: NeL 0.5.0 -Reqiures: +Requires: Libs: -L${libdir} Libs.private: -ldl -lpthread -lxml2 -lc -lpthread -lrt -ldl Cflags: -I${includedir} -lc -lpthread -lrt -ldl diff --git a/code/nel/src/misc/nel-misc.pc.in b/code/nel/src/misc/nel-misc.pc.in index c4d447c42..abea860a1 100644 --- a/code/nel/src/misc/nel-misc.pc.in +++ b/code/nel/src/misc/nel-misc.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-misc Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc -lpthread -lrt -ldl Cflags: -I${includedir} -lc -lpthread -lrt -ldl diff --git a/code/nel/src/net/nel-net.pc.in b/code/nel/src/net/nel-net.pc.in index 0fb2a0462..cbbf7ab50 100644 --- a/code/nel/src/net/nel-net.pc.in +++ b/code/nel/src/net/nel-net.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-net Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc -lpthread -lrt -ldl Cflags: -I${includedir} -lc -lpthread -lrt -ldl diff --git a/code/nel/src/pacs/nel-pacs.pc.in b/code/nel/src/pacs/nel-pacs.pc.in index 133b51d53..e1729f105 100644 --- a/code/nel/src/pacs/nel-pacs.pc.in +++ b/code/nel/src/pacs/nel-pacs.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-pacs Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc -lpthread -lrt -ldl Cflags: -I${includedir} -lc -lpthread -lrt -ldl diff --git a/code/nel/src/sound/nel-sound.pc.in b/code/nel/src/sound/nel-sound.pc.in index 9994e967e..44ff6e1f0 100644 --- a/code/nel/src/sound/nel-sound.pc.in +++ b/code/nel/src/sound/nel-sound.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: nel-sound Version: @NL_VERSION@ Description: NeL @NL_VERSION@ -Reqiures: +Requires: Libs: -L${libdir} Libs.private: @LIBS@ -lc -lpthread -lrt -ldl Cflags: -I${includedir} -lc -lpthread -lrt -ldl From 7a04e920e1cbe766d2992a4be7fe727dea43fcc2 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 22 Sep 2012 22:57:38 +0200 Subject: [PATCH 005/125] Fixed: #1493 MultiArch support --- code/CMakeModules/nel.cmake | 110 ++++-- code/config.h.cmake | 18 +- code/nel/CMakeLists.txt | 6 +- code/nel/samples/3d/cegui/CMakeLists.txt | 4 +- .../samples/3d/cluster_viewer/CMakeLists.txt | 12 +- code/nel/samples/3d/font/CMakeLists.txt | 4 +- code/nel/samples/georges/CMakeLists.txt | 4 +- .../samples/misc/configfile/CMakeLists.txt | 4 +- code/nel/samples/misc/i18n/CMakeLists.txt | 4 +- code/nel/samples/net/chat/CMakeLists.txt | 4 +- .../net/class_transport/CMakeLists.txt | 4 +- .../samples/net/login_system/CMakeLists.txt | 4 +- code/nel/samples/net/udp/CMakeLists.txt | 6 +- code/nel/samples/pacs/CMakeLists.txt | 6 +- .../sound/sound_sources/CMakeLists.txt | 4 +- code/nel/src/3d/CMakeLists.txt | 2 +- .../nel/src/3d/driver/direct3d/CMakeLists.txt | 2 +- code/nel/src/3d/driver/opengl/CMakeLists.txt | 2 +- .../nel/src/3d/driver/opengles/CMakeLists.txt | 2 +- code/nel/src/cegui/CMakeLists.txt | 2 +- code/nel/src/georges/CMakeLists.txt | 2 +- code/nel/src/ligo/CMakeLists.txt | 2 +- code/nel/src/logic/CMakeLists.txt | 2 +- code/nel/src/misc/CMakeLists.txt | 2 +- code/nel/src/net/CMakeLists.txt | 2 +- code/nel/src/pacs/CMakeLists.txt | 2 +- code/nel/src/sound/CMakeLists.txt | 2 +- code/nel/src/sound/driver/CMakeLists.txt | 2 +- .../src/sound/driver/dsound/CMakeLists.txt | 2 +- code/nel/src/sound/driver/fmod/CMakeLists.txt | 2 +- .../src/sound/driver/openal/CMakeLists.txt | 2 +- .../src/sound/driver/xaudio2/CMakeLists.txt | 2 +- .../tools/3d/ligo/plugin_max/CMakeLists.txt | 2 +- .../nel/tools/3d/object_viewer/CMakeLists.txt | 2 +- .../tools/3d/object_viewer_qt/CMakeLists.txt | 2 +- .../src/plugins/bnp_manager/CMakeLists.txt | 2 +- .../src/plugins/core/CMakeLists.txt | 2 +- .../src/plugins/disp_sheet_id/CMakeLists.txt | 2 +- .../src/plugins/example/CMakeLists.txt | 2 +- .../src/plugins/georges_editor/CMakeLists.txt | 2 +- .../plugins/landscape_editor/CMakeLists.txt | 2 +- .../src/plugins/log/CMakeLists.txt | 2 +- .../plugins/mission_compiler/CMakeLists.txt | 2 +- .../src/plugins/object_viewer/CMakeLists.txt | 328 +++++++++--------- .../plugins/ovqt_sheet_builder/CMakeLists.txt | 2 +- .../translation_manager/CMakeLists.txt | 2 +- .../src/plugins/zone_painter/CMakeLists.txt | 2 +- .../3d/object_viewer_widget/CMakeLists.txt | 2 +- .../nel_3dsmax_shared/CMakeLists.txt | 2 +- .../3d/plugin_max/nel_export/CMakeLists.txt | 2 +- .../3d/plugin_max/nel_mesh_lib/CMakeLists.txt | 2 +- .../nel_patch_converter/CMakeLists.txt | 2 +- .../plugin_max/nel_patch_edit/CMakeLists.txt | 2 +- .../nel_patch_edit_adv/CMakeLists.txt | 2 +- .../plugin_max/nel_patch_lib/CMakeLists.txt | 2 +- .../plugin_max/nel_patch_paint/CMakeLists.txt | 2 +- .../nel_vertex_tree_paint/CMakeLists.txt | 2 +- .../3d/plugin_max/tile_utility/CMakeLists.txt | 2 +- code/nel/tools/3d/zviewer/CMakeLists.txt | 4 +- .../logic/logic_editor_dll/CMakeLists.txt | 2 +- .../tools/misc/make_sheet_id/CMakeLists.txt | 2 +- .../tools/misc/words_dic_qt/CMakeLists.txt | 2 +- .../tools/pacs/build_ig_boxes/CMakeLists.txt | 2 +- .../pacs/build_indoor_rbank/CMakeLists.txt | 2 +- .../nel/tools/pacs/build_rbank/CMakeLists.txt | 2 +- .../admin_executor_service/CMakeLists.txt | 2 +- code/nelns/admin_service/CMakeLists.txt | 2 +- code/nelns/login_service/CMakeLists.txt | 2 +- .../nel_launcher_qt/CMakeLists.txt | 2 +- code/nelns/naming_service/CMakeLists.txt | 2 +- code/nelns/welcome_service/CMakeLists.txt | 2 +- .../client/src/client_sheets/CMakeLists.txt | 2 +- .../ryzom/client/src/seven_zip/CMakeLists.txt | 2 +- .../common/src/game_share/CMakeLists.txt | 2 +- .../server/src/admin_modules/CMakeLists.txt | 2 +- code/ryzom/server/src/ai_share/CMakeLists.txt | 2 +- .../src/gameplay_module_lib/CMakeLists.txt | 2 +- code/ryzom/server/src/pd_lib/CMakeLists.txt | 2 +- .../server/src/server_share/CMakeLists.txt | 2 +- .../tools/leveldesign/export/CMakeLists.txt | 2 +- .../leveldesign/georges_dll/CMakeLists.txt | 2 +- .../georges_editor_qt/CMakeLists.txt | 2 +- .../georges_plugin_sound/CMakeLists.txt | 2 +- .../mission_compiler_lib/CMakeLists.txt | 2 +- .../land_export_lib/CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../world_editor_graph_plugin/CMakeLists.txt | 2 +- .../world_editor_plugin/CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../world_editor_sound_plugin/CMakeLists.txt | 2 +- 91 files changed, 367 insertions(+), 307 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 624d47ab9..5768987e3 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -418,6 +418,17 @@ MACRO(NL_SETUP_BUILD) MESSAGE(STATUS "Compiling on ${HOST_CPU} for ${TARGET_CPU}") ENDIF("${HOST_CPU}" STREQUAL "${TARGET_CPU}") + # Use values from environment variables + SET(PLATFORM_CFLAGS "$ENV{CFLAGS} ${PLATFORM_CFLAGS}") + SET(PLATFORM_LINKFLAGS "$ENV{LDFLAGS} ${PLATFORM_LINKFLAGS}") + + # Remove -g flag because we are managing it ourself + STRING(REPLACE "-g" "" PLATFORM_CFLAGS ${PLATFORM_CFLAGS}) + + # Strip spaces + STRING(STRIP ${PLATFORM_CFLAGS} PLATFORM_CFLAGS) + STRING(STRIP ${PLATFORM_LINKFLAGS} PLATFORM_LINKFLAGS) + IF(TARGET_CPU STREQUAL "x86_64") SET(TARGET_X64 1) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_X86_64") @@ -468,9 +479,6 @@ MACRO(NL_SETUP_BUILD) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zm1000 /MP /Gy-") - # Common link flags - SET(PLATFORM_LINKFLAGS "") - IF(TARGET_X64) # Fix a bug with Intellisense SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_WIN64") @@ -617,119 +625,171 @@ MACRO(NL_SETUP_PREFIX_PATHS) IF(NOT NL_ETC_PREFIX) IF(WIN32) SET(NL_ETC_PREFIX "../etc/nel" CACHE PATH "Installation path for configurations") + SET(NL_ETC_ABSOLUTE_PREFIX ${NL_ETC_PREFIX}) ELSE(WIN32) - SET(NL_ETC_PREFIX "${CMAKE_INSTALL_PREFIX}/etc/nel" CACHE PATH "Installation path for configurations") + SET(NL_ETC_PREFIX "etc/nel" CACHE PATH "Installation path for configurations") + SET(NL_ETC_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_ETC_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_ETC_PREFIX) + SET(NL_ETC_ABSOLUTE_PREFIX ${NL_ETC_PREFIX}) ENDIF(NOT NL_ETC_PREFIX) ## Allow override of install_prefix/share path. IF(NOT NL_SHARE_PREFIX) IF(WIN32) SET(NL_SHARE_PREFIX "../share/nel" CACHE PATH "Installation path for data.") + SET(NL_SHARE_ABSOLUTE_PREFIX ${NL_SHARE_PREFIX}) ELSE(WIN32) - SET(NL_SHARE_PREFIX "${CMAKE_INSTALL_PREFIX}/share/nel" CACHE PATH "Installation path for data.") + SET(NL_SHARE_PREFIX "share/nel" CACHE PATH "Installation path for data.") + SET(NL_SHARE_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_SHARE_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_SHARE_PREFIX) + SET(NL_SHARE_ABSOLUTE_PREFIX ${NL_SHARE_PREFIX}) ENDIF(NOT NL_SHARE_PREFIX) ## Allow override of install_prefix/sbin path. IF(NOT NL_SBIN_PREFIX) IF(WIN32) SET(NL_SBIN_PREFIX "../sbin" CACHE PATH "Installation path for admin tools and services.") + SET(NL_SBIN_ABSOLUTE_PREFIX ${NL_SBIN_PREFIX}) ELSE(WIN32) - SET(NL_SBIN_PREFIX "${CMAKE_INSTALL_PREFIX}/sbin" CACHE PATH "Installation path for admin tools and services.") + SET(NL_SBIN_PREFIX "sbin" CACHE PATH "Installation path for admin tools and services.") + SET(NL_SBIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_SBIN_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_SBIN_PREFIX) + SET(NL_SBIN_ABSOLUTE_PREFIX ${NL_SBIN_PREFIX}) ENDIF(NOT NL_SBIN_PREFIX) ## Allow override of install_prefix/bin path. IF(NOT NL_BIN_PREFIX) IF(WIN32) SET(NL_BIN_PREFIX "../bin" CACHE PATH "Installation path for tools and applications.") + SET(NL_BIN_ABSOLUTE_PREFIX ${NL_BIN_PREFIX}) ELSE(WIN32) - SET(NL_BIN_PREFIX "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation path for tools and applications.") + SET(NL_BIN_PREFIX "bin" CACHE PATH "Installation path for tools and applications.") + SET(NL_BIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_BIN_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_BIN_PREFIX) + SET(NL_BIN_ABSOLUTE_PREFIX ${NL_BIN_PREFIX}) ENDIF(NOT NL_BIN_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT NL_LIB_PREFIX) IF(WIN32) SET(NL_LIB_PREFIX "../lib" CACHE PATH "Installation path for libraries.") + SET(NL_LIB_ABSOLUTE_PREFIX ${NL_LIB_PREFIX}) ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_PREFIX "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + SET(NL_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") ELSE(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_PREFIX "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation path for libraries.") + SET(NL_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + SET(NL_LIB_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_LIB_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_LIB_PREFIX) + SET(NL_LIB_ABSOLUTE_PREFIX ${NL_LIB_PREFIX}) ENDIF(NOT NL_LIB_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT NL_DRIVER_PREFIX) IF(WIN32) SET(NL_DRIVER_PREFIX "../lib" CACHE PATH "Installation path for drivers.") + SET(NL_DRIVER_ABSOLUTE_PREFIX ${NL_DRIVER_PREFIX}) ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_DRIVER_PREFIX "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") + SET(NL_DRIVER_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") ELSE(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_DRIVER_PREFIX "${CMAKE_INSTALL_PREFIX}/lib/nel" CACHE PATH "Installation path for drivers.") + SET(NL_DRIVER_PREFIX "lib/nel" CACHE PATH "Installation path for drivers.") ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + SET(NL_DRIVER_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_DRIVER_PREFIX}) ENDIF(WIN32) + ELSE(NOT NL_DRIVER_PREFIX) + SET(NL_DRIVER_ABSOLUTE_PREFIX ${NL_DRIVER_PREFIX}) ENDIF(NOT NL_DRIVER_PREFIX) ENDMACRO(NL_SETUP_PREFIX_PATHS) MACRO(RYZOM_SETUP_PREFIX_PATHS) - ## Allow override of install_prefix path. - IF(NOT RYZOM_PREFIX) - IF(WIN32) - SET(RYZOM_PREFIX "." CACHE PATH "Installation path") - ELSE(WIN32) - SET(RYZOM_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Installation path") - ENDIF(WIN32) - ENDIF(NOT RYZOM_PREFIX) - ## Allow override of install_prefix/etc path. IF(NOT RYZOM_ETC_PREFIX) IF(WIN32) SET(RYZOM_ETC_PREFIX "." CACHE PATH "Installation path for configurations") + SET(RYZOM_ETC_ABSOLUTE_PREFIX ${RYZOM_ETC_PREFIX}) ELSE(WIN32) - SET(RYZOM_ETC_PREFIX "${RYZOM_PREFIX}/etc/ryzom" CACHE PATH "Installation path for configurations") + SET(RYZOM_ETC_PREFIX "etc/ryzom" CACHE PATH "Installation path for configurations") + SET(RYZOM_ETC_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_ETC_PREFIX}) ENDIF(WIN32) + ELSE(NOT RYZOM_ETC_PREFIX) + SET(RYZOM_ETC_ABSOLUTE_PREFIX ${RYZOM_ETC_PREFIX}) ENDIF(NOT RYZOM_ETC_PREFIX) ## Allow override of install_prefix/share path. IF(NOT RYZOM_SHARE_PREFIX) IF(WIN32) SET(RYZOM_SHARE_PREFIX "." CACHE PATH "Installation path for data.") + SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${RYZOM_SHARE_PREFIX}) ELSE(WIN32) - SET(RYZOM_SHARE_PREFIX "${RYZOM_PREFIX}/share/ryzom" CACHE PATH "Installation path for data.") + SET(RYZOM_SHARE_PREFIX "share/ryzom" CACHE PATH "Installation path for data.") + SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_SHARE_PREFIX}) ENDIF(WIN32) + ELSE(NOT RYZOM_SHARE_PREFIX) + SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${RYZOM_SHARE_PREFIX}) ENDIF(NOT RYZOM_SHARE_PREFIX) ## Allow override of install_prefix/sbin path. IF(NOT RYZOM_SBIN_PREFIX) IF(WIN32) SET(RYZOM_SBIN_PREFIX "." CACHE PATH "Installation path for admin tools and services.") + SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${RYZOM_SBIN_PREFIX}) ELSE(WIN32) - SET(RYZOM_SBIN_PREFIX "${RYZOM_PREFIX}/sbin" CACHE PATH "Installation path for admin tools and services.") + SET(RYZOM_SBIN_PREFIX "sbin" CACHE PATH "Installation path for admin tools and services.") + SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_SBIN_PREFIX}) ENDIF(WIN32) + ELSE(NOT RYZOM_SBIN_PREFIX) + SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${RYZOM_SBIN_PREFIX}) ENDIF(NOT RYZOM_SBIN_PREFIX) ## Allow override of install_prefix/bin path. IF(NOT RYZOM_BIN_PREFIX) IF(WIN32) SET(RYZOM_BIN_PREFIX "." CACHE PATH "Installation path for tools and applications.") + SET(RYZOM_BIN_ABSOLUTE_PREFIX ${RYZOM_BIN_PREFIX}) ELSE(WIN32) - SET(RYZOM_BIN_PREFIX "${RYZOM_PREFIX}/bin" CACHE PATH "Installation path for tools.") + SET(RYZOM_BIN_PREFIX "bin" CACHE PATH "Installation path for tools.") + SET(RYZOM_BIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_BIN_PREFIX}) ENDIF(WIN32) + ELSE(NOT RYZOM_BIN_PREFIX) + SET(RYZOM_BIN_ABSOLUTE_PREFIX ${RYZOM_BIN_PREFIX}) ENDIF(NOT RYZOM_BIN_PREFIX) + ## Allow override of install_prefix/lib path. + IF(NOT RYZOM_LIB_PREFIX) + IF(WIN32) + SET(RYZOM_LIB_PREFIX "." CACHE PATH "Installation path for libraries.") + SET(RYZOM_LIB_ABSOLUTE_PREFIX ${RYZOM_LIB_PREFIX}) + ELSE(WIN32) + IF(CMAKE_LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + ELSE(CMAKE_LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") + ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_LIB_PREFIX}) + ENDIF(WIN32) + ELSE(NOT RYZOM_LIB_PREFIX) + SET(RYZOM_LIB_ABSOLUTE_PREFIX ${RYZOM_LIB_PREFIX}) + ENDIF(NOT RYZOM_LIB_PREFIX) + ## Allow override of install_prefix/games path. IF(NOT RYZOM_GAMES_PREFIX) IF(WIN32) SET(RYZOM_GAMES_PREFIX "." CACHE PATH "Installation path for tools and applications.") + SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${RYZOM_GAMES_PREFIX}) ELSE(WIN32) - SET(RYZOM_GAMES_PREFIX "${RYZOM_PREFIX}/games" CACHE PATH "Installation path for client.") + SET(RYZOM_GAMES_PREFIX "games" CACHE PATH "Installation path for client.") + SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_GAMES_PREFIX}) ENDIF(WIN32) + ELSE(NOT RYZOM_GAMES_PREFIX) + SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${RYZOM_GAMES_PREFIX}) ENDIF(NOT RYZOM_GAMES_PREFIX) ENDMACRO(RYZOM_SETUP_PREFIX_PATHS) diff --git a/code/config.h.cmake b/code/config.h.cmake index 2f2ff8095..6368e179b 100644 --- a/code/config.h.cmake +++ b/code/config.h.cmake @@ -43,15 +43,15 @@ #cmakedefine NL_DSOUND_AVAILABLE ${NL_DSOUND_AVAILABLE} #cmakedefine NL_XAUDIO2_AVAILABLE ${NL_XAUDIO2_AVAILABLE} -#cmakedefine NL_BIN_PREFIX "${NL_BIN_PREFIX}" -#cmakedefine NL_ETC_PREFIX "${NL_ETC_PREFIX}" -#cmakedefine NL_SHARE_PREFIX "${NL_SHARE_PREFIX}" -#cmakedefine NL_LIB_PREFIX "${NL_LIB_PREFIX}" -#cmakedefine NL_DRIVER_PREFIX "${NL_DRIVER_PREFIX}" +#cmakedefine NL_BIN_PREFIX "${NL_BIN_ABSOLUTE_PREFIX}" +#cmakedefine NL_ETC_PREFIX "${NL_ETC_ABSOLUTE_PREFIX}" +#cmakedefine NL_SHARE_PREFIX "${NL_SHARE_ABSOLUTE_PREFIX}" +#cmakedefine NL_LIB_PREFIX "${NL_LIB_ABSOLUTE_PREFIX}" +#cmakedefine NL_DRIVER_PREFIX "${NL_DRIVER_ABSOLUTE_PREFIX}" -#cmakedefine RYZOM_PREFIX "${RYZOM_PREFIX}" -#cmakedefine RYZOM_BIN_PREFIX "${RYZOM_BIN_PREFIX}" -#cmakedefine RYZOM_ETC_PREFIX "${RYZOM_ETC_PREFIX}" -#cmakedefine RYZOM_SHARE_PREFIX "${RYZOM_SHARE_PREFIX}" +#cmakedefine RYZOM_PREFIX "${RYZOM_ABSOLUTE_PREFIX}" +#cmakedefine RYZOM_BIN_PREFIX "${RYZOM_BIN_ABSOLUTE_PREFIX}" +#cmakedefine RYZOM_ETC_PREFIX "${RYZOM_ETC_ABSOLUTE_PREFIX}" +#cmakedefine RYZOM_SHARE_PREFIX "${RYZOM_SHARE_ABSOLUTE_PREFIX}" #endif // CONFIG_H diff --git a/code/nel/CMakeLists.txt b/code/nel/CMakeLists.txt index 08b4babf0..745278cd7 100644 --- a/code/nel/CMakeLists.txt +++ b/code/nel/CMakeLists.txt @@ -44,8 +44,8 @@ ENDIF(WITH_GTK) IF(WITH_INSTALL_LIBRARIES) IF(UNIX) SET(prefix ${CMAKE_INSTALL_PREFIX}) - SET(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin) - SET(libdir ${CMAKE_INSTALL_PREFIX}/lib) + SET(exec_prefix ${NL_BIN_ABSOLUTE_PREFIX}) + SET(libdir ${NL_LIB_ABSOLUTE_PREFIX}) SET(includedir ${CMAKE_INSTALL_PREFIX}/include) SET(enable_ligo ${WITH_LIGO}) SET(enable_logic ${WITH_LOGIC}) @@ -56,7 +56,7 @@ IF(WITH_INSTALL_LIBRARIES) SET(enable_sound ${WITH_SOUND}) CONFIGURE_FILE(nel-config.in ${CMAKE_CURRENT_BINARY_DIR}/nel-config) - INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/nel-config DESTINATION bin) + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/nel-config DESTINATION ${NL_BIN_PREFIX}) ENDIF(UNIX) ADD_SUBDIRECTORY(include) diff --git a/code/nel/samples/3d/cegui/CMakeLists.txt b/code/nel/samples/3d/cegui/CMakeLists.txt index c1da6eafe..b9afa5729 100644 --- a/code/nel/samples/3d/cegui/CMakeLists.txt +++ b/code/nel/samples/3d/cegui/CMakeLists.txt @@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp *.h) ADD_EXECUTABLE(nl_sample_cegui WIN32 ${SRC}) -ADD_DEFINITIONS(-DCEGUI_DATA_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_cegui/datafiles/\\"") +ADD_DEFINITIONS(-DCEGUI_DATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_cegui/datafiles/\\"") INCLUDE_DIRECTORIES(${CEGUI_INCLUDE_DIRS}) @@ -12,7 +12,7 @@ NL_ADD_RUNTIME_FLAGS(nl_sample_cegui) INSTALL(TARGETS nl_sample_cegui RUNTIME DESTINATION bin COMPONENT samples3d) INSTALL(DIRECTORY datafiles/ - DESTINATION share/nel/nl_sample_cegui/datafiles + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_cegui/datafiles COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt index 4d1bb0d68..a68bf0d84 100644 --- a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt +++ b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt @@ -2,34 +2,34 @@ FILE(GLOB SRC *.cpp) ADD_EXECUTABLE(nl_sample_clusterview WIN32 ${SRC}) -ADD_DEFINITIONS(-DCV_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_clusterview/\\"") +ADD_DEFINITIONS(-DCV_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_clusterview/\\"") TARGET_LINK_LIBRARIES(nl_sample_clusterview nelmisc nel3d) NL_ADD_RUNTIME_FLAGS(nl_sample_clusterview) NL_DEFAULT_PROPS(nl_sample_clusterview "NeL, Samples, 3D: Cluster Viewer") INSTALL(TARGETS nl_sample_clusterview RUNTIME DESTINATION bin COMPONENT samples3d) -INSTALL(FILES main.cvs readme.txt DESTINATION share/nel/nl_sample_clusterview COMPONENT samples3d) +INSTALL(FILES main.cvs readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview COMPONENT samples3d) INSTALL(DIRECTORY groups/ - DESTINATION share/nel/nl_sample_clusterview/groups + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview/groups COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE PATTERN "Makefile*" EXCLUDE) INSTALL(DIRECTORY fonts/ - DESTINATION share/nel/nl_sample_clusterview/fonts + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview/fonts COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE PATTERN "Makefile*" EXCLUDE) INSTALL(DIRECTORY max/ - DESTINATION share/nel/nl_sample_clusterview/max + DESTINATION ${NL_SHARE_PREFIX}/nel/nl_sample_clusterview/max COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE PATTERN "Makefile*" EXCLUDE) INSTALL(DIRECTORY shapes/ - DESTINATION share/nel/nl_sample_clusterview/shapes + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview/shapes COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/samples/3d/font/CMakeLists.txt b/code/nel/samples/3d/font/CMakeLists.txt index d3024fe0b..eb01575da 100644 --- a/code/nel/samples/3d/font/CMakeLists.txt +++ b/code/nel/samples/3d/font/CMakeLists.txt @@ -2,11 +2,11 @@ FILE(GLOB SRC *.cpp) ADD_EXECUTABLE(nl_sample_font WIN32 ${SRC}) -ADD_DEFINITIONS(-DFONT_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_font/\\"") +ADD_DEFINITIONS(-DFONT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font/\\"") TARGET_LINK_LIBRARIES(nl_sample_font nelmisc nel3d) NL_DEFAULT_PROPS(nl_sample_font "NeL, Samples, 3D: Font") NL_ADD_RUNTIME_FLAGS(nl_sample_font) INSTALL(TARGETS nl_sample_font RUNTIME DESTINATION bin COMPONENT samples3d) -INSTALL(FILES beteckna.ttf DESTINATION share/nel/nl_sample_font COMPONENT samples3d) +INSTALL(FILES beteckna.ttf DESTINATION ${NL_SHARE_PREFIX}/nl_sample_font COMPONENT samples3d) diff --git a/code/nel/samples/georges/CMakeLists.txt b/code/nel/samples/georges/CMakeLists.txt index 7740a8d14..474575337 100644 --- a/code/nel/samples/georges/CMakeLists.txt +++ b/code/nel/samples/georges/CMakeLists.txt @@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp) ADD_EXECUTABLE(nl_sample_georges ${SRC}) -ADD_DEFINITIONS(-DGF_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_georges/\\"") +ADD_DEFINITIONS(-DGF_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_georges/\\"") TARGET_LINK_LIBRARIES(nl_sample_georges nelgeorges nelmisc) NL_DEFAULT_PROPS(nl_sample_georges "NeL, Samples: Georges") @@ -10,4 +10,4 @@ NL_ADD_RUNTIME_FLAGS(nl_sample_georges) INSTALL(TARGETS nl_sample_georges RUNTIME DESTINATION bin COMPONENT samplesgeorges) INSTALL(FILES boolean.typ coolfilesinfo.dfn default.sample_config int.typ positiondata.dfn sample_config.dfn string.typ sheet_id.bin - DESTINATION share/nel/nl_sample_georges/ COMPONENT samplesgeorges) + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_georges/ COMPONENT samplesgeorges) diff --git a/code/nel/samples/misc/configfile/CMakeLists.txt b/code/nel/samples/misc/configfile/CMakeLists.txt index d826aafa0..723f65b29 100644 --- a/code/nel/samples/misc/configfile/CMakeLists.txt +++ b/code/nel/samples/misc/configfile/CMakeLists.txt @@ -2,11 +2,11 @@ FILE(GLOB SRC *.cpp) ADD_EXECUTABLE(nl_sample_configfile ${SRC}) -ADD_DEFINITIONS(-DNL_SAMPLE_CFG="\\"${NL_SHARE_PREFIX}/nl_sample_configfile/\\"") +ADD_DEFINITIONS(-DNL_SAMPLE_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_configfile/\\"") TARGET_LINK_LIBRARIES(nl_sample_configfile nelmisc) NL_DEFAULT_PROPS(nl_sample_configfile "NeL, Samples, Misc: Config Files") NL_ADD_RUNTIME_FLAGS(nl_sample_configfile) INSTALL(TARGETS nl_sample_configfile RUNTIME DESTINATION bin COMPONENT samplesmisc) -INSTALL(FILES simpletest.txt DESTINATION share/nel/nl_sample_configfile COMPONENT samplesmisc) +INSTALL(FILES simpletest.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_configfile COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/i18n/CMakeLists.txt b/code/nel/samples/misc/i18n/CMakeLists.txt index f2787175e..c5a510201 100644 --- a/code/nel/samples/misc/i18n/CMakeLists.txt +++ b/code/nel/samples/misc/i18n/CMakeLists.txt @@ -2,11 +2,11 @@ FILE(GLOB SRC *.cpp) ADD_EXECUTABLE(nl_sample_i18n ${SRC}) -ADD_DEFINITIONS(-DNL_LANG_DATA="\\"${NL_SHARE_PREFIX}/nl_sample_i18n/\\"") +ADD_DEFINITIONS(-DNL_LANG_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_i18n/\\"") TARGET_LINK_LIBRARIES(nl_sample_i18n nelmisc) NL_DEFAULT_PROPS(nl_sample_i18n "NeL, Samples, Misc: I18N") NL_ADD_RUNTIME_FLAGS(nl_sample_i18n) INSTALL(TARGETS nl_sample_i18n RUNTIME DESTINATION bin COMPONENT samplesmisc) -INSTALL(FILES de.uxt en.uxt fr.uxt DESTINATION share/nel/nl_sample_i18n COMPONENT samplesmisc) +INSTALL(FILES de.uxt en.uxt fr.uxt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_i18n COMPONENT samplesmisc) diff --git a/code/nel/samples/net/chat/CMakeLists.txt b/code/nel/samples/net/chat/CMakeLists.txt index a304bced9..7db4550d6 100644 --- a/code/nel/samples/net/chat/CMakeLists.txt +++ b/code/nel/samples/net/chat/CMakeLists.txt @@ -2,7 +2,7 @@ ADD_EXECUTABLE(nl_sample_chatclient client.cpp kbhit.cpp kbhit.h) ADD_EXECUTABLE(nl_sample_chatserver WIN32 server.cpp) -ADD_DEFINITIONS(-DCHAT_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_chat/\\"") +ADD_DEFINITIONS(-DCHAT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_chat/\\"") TARGET_LINK_LIBRARIES(nl_sample_chatclient nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_chatclient "NeL, Samples, Net, Chat: Chat Client") @@ -13,4 +13,4 @@ NL_DEFAULT_PROPS(nl_sample_chatserver "NeL, Samples, Net, Chat: Chat Server") NL_ADD_RUNTIME_FLAGS(nl_sample_chatserver) INSTALL(TARGETS nl_sample_chatclient nl_sample_chatserver RUNTIME DESTINATION bin COMPONENT samplesnet) -INSTALL(FILES chat_service.cfg client.cfg DESTINATION share/nel/nl_sample_chat COMPONENT samplesnet) +INSTALL(FILES chat_service.cfg client.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_chat COMPONENT samplesnet) diff --git a/code/nel/samples/net/class_transport/CMakeLists.txt b/code/nel/samples/net/class_transport/CMakeLists.txt index 9da1020ce..3247d0745 100644 --- a/code/nel/samples/net/class_transport/CMakeLists.txt +++ b/code/nel/samples/net/class_transport/CMakeLists.txt @@ -2,7 +2,7 @@ ADD_EXECUTABLE(nl_sample_ct_ai_service WIN32 ai_service.cpp) ADD_EXECUTABLE(nl_sample_ct_gd_service WIN32 gd_service.cpp) -ADD_DEFINITIONS(-DNL_CT_CFG="\\"${NL_SHARE_PREFIX}/nl_sample_class_transport/\\"") +ADD_DEFINITIONS(-DNL_CT_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_class_transport/\\"") TARGET_LINK_LIBRARIES(nl_sample_ct_ai_service nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_ct_ai_service "NeL, Samples, Net, Class Transport: AI Service") @@ -13,4 +13,4 @@ NL_DEFAULT_PROPS(nl_sample_ct_gd_service "NeL, Samples, Net, Class Transport: GD NL_ADD_RUNTIME_FLAGS(nl_sample_ct_gd_service) INSTALL(TARGETS nl_sample_ct_ai_service nl_sample_ct_gd_service RUNTIME DESTINATION bin COMPONENT samplesnet) -INSTALL(FILES ai_service.cfg gd_service.cfg DESTINATION share/nel/nl_sample_class_transport COMPONENT samplesnet) +INSTALL(FILES ai_service.cfg gd_service.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_class_transport COMPONENT samplesnet) diff --git a/code/nel/samples/net/login_system/CMakeLists.txt b/code/nel/samples/net/login_system/CMakeLists.txt index 6ee987e0d..4d83420da 100644 --- a/code/nel/samples/net/login_system/CMakeLists.txt +++ b/code/nel/samples/net/login_system/CMakeLists.txt @@ -2,7 +2,7 @@ ADD_EXECUTABLE(nl_sample_ls_client client.cpp) ADD_EXECUTABLE(nl_sample_ls_fes WIN32 frontend_service.cpp) -ADD_DEFINITIONS(-DNL_LS_CFG="\\"${NL_SHARE_PREFIX}/nl_sample_login_system/\\"") +ADD_DEFINITIONS(-DNL_LS_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_login_system/\\"") TARGET_LINK_LIBRARIES(nl_sample_ls_client nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_ls_client "NeL, Samples, Net, Login Service: LS Client") @@ -13,4 +13,4 @@ NL_DEFAULT_PROPS(nl_sample_ls_fes "NeL, Samples, Net, Login Service: LS Frontend NL_ADD_RUNTIME_FLAGS(nl_sample_ls_fes) INSTALL(TARGETS nl_sample_ls_client nl_sample_ls_fes RUNTIME DESTINATION bin COMPONENT samplesnet) -INSTALL(FILES frontend_service.cfg client.cfg DESTINATION share/nel/nl_sample_login_system COMPONENT samplesnet) +INSTALL(FILES frontend_service.cfg client.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_login_system COMPONENT samplesnet) diff --git a/code/nel/samples/net/udp/CMakeLists.txt b/code/nel/samples/net/udp/CMakeLists.txt index 9daaa9bc0..f47da915c 100644 --- a/code/nel/samples/net/udp/CMakeLists.txt +++ b/code/nel/samples/net/udp/CMakeLists.txt @@ -4,7 +4,7 @@ ADD_EXECUTABLE(nl_sample_udpclient client.cpp graph.cpp graph.h simlag.cpp simla ADD_EXECUTABLE(nl_sample_udpserver WIN32 bench_service.cpp receive_task.cpp receive_task.h) -ADD_DEFINITIONS(-DUDP_DIR="\\"${NL_SHARE_PREFIX}/nl_sample_udp/\\"") +ADD_DEFINITIONS(-DUDP_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_udp/\\"") IF(WITH_3D) ADD_DEFINITIONS(-DUSE_3D) @@ -18,8 +18,8 @@ NL_ADD_RUNTIME_FLAGS(nl_sample_udpclient) NL_ADD_RUNTIME_FLAGS(nl_sample_udpserver) INSTALL(TARGETS nl_sample_udpclient nl_sample_udpserver RUNTIME DESTINATION bin COMPONENT samplesnet) -INSTALL(FILES bench_service.cfg client.cfg readme.txt DESTINATION share/nel/nl_sample_udp COMPONENT samplesnet) +INSTALL(FILES bench_service.cfg client.cfg readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_udp COMPONENT samplesnet) IF(WITH_3D) - INSTALL(FILES n019003l.pfb DESTINATION share/nel/nl_sample_udp COMPONENT samplesnet) + INSTALL(FILES n019003l.pfb DESTINATION ${NL_SHARE_PREFIX}/nl_sample_udp COMPONENT samplesnet) ENDIF(WITH_3D) diff --git a/code/nel/samples/pacs/CMakeLists.txt b/code/nel/samples/pacs/CMakeLists.txt index 96423f7ca..28b726234 100644 --- a/code/nel/samples/pacs/CMakeLists.txt +++ b/code/nel/samples/pacs/CMakeLists.txt @@ -2,16 +2,16 @@ FILE(GLOB SRC *.cpp *.h) ADD_EXECUTABLE(nl_sample_pacs WIN32 ${SRC}) -ADD_DEFINITIONS(-DNL_PACS_DATA="\\"${NL_SHARE_PREFIX}/nl_sample_pacs/\\"") +ADD_DEFINITIONS(-DNL_PACS_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_pacs/\\"") TARGET_LINK_LIBRARIES(nl_sample_pacs nelmisc nelpacs nel3d) NL_DEFAULT_PROPS(nl_sample_pacs "NeL, Samples: PACS") NL_ADD_RUNTIME_FLAGS(nl_sample_pacs) INSTALL(TARGETS nl_sample_pacs RUNTIME DESTINATION bin COMPONENT samplespacs) -INSTALL(FILES readme.txt DESTINATION share/nel/nl_sample_pacs COMPONENT samplespacs) +INSTALL(FILES readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_pacs COMPONENT samplespacs) INSTALL(DIRECTORY shapes/ - DESTINATION share/nel/nl_sample_pacs/shapes + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_pacs/shapes COMPONENT samplespacs PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/samples/sound/sound_sources/CMakeLists.txt b/code/nel/samples/sound/sound_sources/CMakeLists.txt index 0c680b740..6a3ea9028 100644 --- a/code/nel/samples/sound/sound_sources/CMakeLists.txt +++ b/code/nel/samples/sound/sound_sources/CMakeLists.txt @@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp *.h) ADD_EXECUTABLE(nl_sample_sound_sources ${SRC}) -ADD_DEFINITIONS(-DNL_SOUND_DATA="\\"${NL_SHARE_PREFIX}/nl_sample_sound/\\"" ${LIBXML2_DEFINITIONS}) +ADD_DEFINITIONS(-DNL_SOUND_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_sound/\\"" ${LIBXML2_DEFINITIONS}) INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) @@ -12,7 +12,7 @@ NL_ADD_RUNTIME_FLAGS(nl_sample_sound_sources) INSTALL(TARGETS nl_sample_sound_sources RUNTIME DESTINATION bin COMPONENT samplessound) INSTALL(DIRECTORY data/ - DESTINATION share/nel/nl_sample_sound/data + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_sound/data COMPONENT samplespacs PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/src/3d/CMakeLists.txt b/code/nel/src/3d/CMakeLists.txt index 787cc189d..6f632e261 100644 --- a/code/nel/src/3d/CMakeLists.txt +++ b/code/nel/src/3d/CMakeLists.txt @@ -708,7 +708,7 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-3d.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nel3d LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nel3d LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) ADD_SUBDIRECTORY(driver) diff --git a/code/nel/src/3d/driver/direct3d/CMakeLists.txt b/code/nel/src/3d/driver/direct3d/CMakeLists.txt index fd26c438a..52a4ecd06 100644 --- a/code/nel/src/3d/driver/direct3d/CMakeLists.txt +++ b/code/nel/src/3d/driver/direct3d/CMakeLists.txt @@ -17,7 +17,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_direct3d_win LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS nel_drv_direct3d_win LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_direct3d_win RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/3d/driver/opengl/CMakeLists.txt b/code/nel/src/3d/driver/opengl/CMakeLists.txt index d68bef5f2..232d38706 100644 --- a/code/nel/src/3d/driver/opengl/CMakeLists.txt +++ b/code/nel/src/3d/driver/opengl/CMakeLists.txt @@ -74,7 +74,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS ${NLDRV_OGL_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS ${NLDRV_OGL_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS ${NLDRV_OGL_LIB} RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/3d/driver/opengles/CMakeLists.txt b/code/nel/src/3d/driver/opengles/CMakeLists.txt index bd330c6ec..415da1791 100644 --- a/code/nel/src/3d/driver/opengles/CMakeLists.txt +++ b/code/nel/src/3d/driver/opengles/CMakeLists.txt @@ -77,7 +77,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS ${NLDRV_OGLES_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS ${NLDRV_OGLES_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS ${NLDRV_OGLES_LIB} RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/cegui/CMakeLists.txt b/code/nel/src/cegui/CMakeLists.txt index 48c06eb4b..928ebc4cb 100644 --- a/code/nel/src/cegui/CMakeLists.txt +++ b/code/nel/src/cegui/CMakeLists.txt @@ -12,5 +12,5 @@ NL_ADD_LIB_SUFFIX(nelceguirenderer) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DNEL_CEGUIRENDERER_EXPORTS) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelceguirenderer RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelceguirenderer RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/georges/CMakeLists.txt b/code/nel/src/georges/CMakeLists.txt index 640f33204..1d56a31bf 100644 --- a/code/nel/src/georges/CMakeLists.txt +++ b/code/nel/src/georges/CMakeLists.txt @@ -23,5 +23,5 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-georges.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelgeorges LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelgeorges LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/ligo/CMakeLists.txt b/code/nel/src/ligo/CMakeLists.txt index 41b0eaaa1..4c1bfbc30 100644 --- a/code/nel/src/ligo/CMakeLists.txt +++ b/code/nel/src/ligo/CMakeLists.txt @@ -21,5 +21,5 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-ligo.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelligo LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelligo LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/logic/CMakeLists.txt b/code/nel/src/logic/CMakeLists.txt index 5ee2b682d..ea0ca605f 100644 --- a/code/nel/src/logic/CMakeLists.txt +++ b/code/nel/src/logic/CMakeLists.txt @@ -15,5 +15,5 @@ NL_ADD_LIB_SUFFIX(nellogic) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nellogic LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nellogic LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/misc/CMakeLists.txt b/code/nel/src/misc/CMakeLists.txt index ff6057b6f..dc5b87e2c 100644 --- a/code/nel/src/misc/CMakeLists.txt +++ b/code/nel/src/misc/CMakeLists.txt @@ -55,5 +55,5 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-misc.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelmisc LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelmisc LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/net/CMakeLists.txt b/code/nel/src/net/CMakeLists.txt index f30232e8d..487516e74 100644 --- a/code/nel/src/net/CMakeLists.txt +++ b/code/nel/src/net/CMakeLists.txt @@ -26,5 +26,5 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-net.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelnet LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelnet LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/pacs/CMakeLists.txt b/code/nel/src/pacs/CMakeLists.txt index 492df88be..1fde3e6df 100644 --- a/code/nel/src/pacs/CMakeLists.txt +++ b/code/nel/src/pacs/CMakeLists.txt @@ -21,5 +21,5 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-pacs.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelpacs LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelpacs LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/src/sound/CMakeLists.txt b/code/nel/src/sound/CMakeLists.txt index 1122551cc..9d2e0dd82 100644 --- a/code/nel/src/sound/CMakeLists.txt +++ b/code/nel/src/sound/CMakeLists.txt @@ -114,7 +114,7 @@ ENDIF(WITH_PCH) NL_GEN_PC(nel-sound.pc) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelsound LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelsound LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) ADD_SUBDIRECTORY(driver) diff --git a/code/nel/src/sound/driver/CMakeLists.txt b/code/nel/src/sound/driver/CMakeLists.txt index 68ad208bb..64e73cb1d 100644 --- a/code/nel/src/sound/driver/CMakeLists.txt +++ b/code/nel/src/sound/driver/CMakeLists.txt @@ -17,7 +17,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelsnd_lowlevel LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS nelsnd_lowlevel LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) IF(WITH_DRIVER_OPENAL) diff --git a/code/nel/src/sound/driver/dsound/CMakeLists.txt b/code/nel/src/sound/driver/dsound/CMakeLists.txt index 284b9eeae..5bde8f1b1 100644 --- a/code/nel/src/sound/driver/dsound/CMakeLists.txt +++ b/code/nel/src/sound/driver/dsound/CMakeLists.txt @@ -14,7 +14,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib COMPONENT driverssound) + INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/fmod/CMakeLists.txt b/code/nel/src/sound/driver/fmod/CMakeLists.txt index 982c24bca..5e8eed000 100644 --- a/code/nel/src/sound/driver/fmod/CMakeLists.txt +++ b/code/nel/src/sound/driver/fmod/CMakeLists.txt @@ -14,7 +14,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib COMPONENT driverssound) + INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/openal/CMakeLists.txt b/code/nel/src/sound/driver/openal/CMakeLists.txt index 5e3fcb90b..adf2b584f 100644 --- a/code/nel/src/sound/driver/openal/CMakeLists.txt +++ b/code/nel/src/sound/driver/openal/CMakeLists.txt @@ -45,7 +45,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS ${NLDRV_AL_LIB} RUNTIME DESTINATION ${NL_DRIVER_PREFIX} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib COMPONENT driverssound) + INSTALL(TARGETS ${NLDRV_AL_LIB} RUNTIME DESTINATION ${NL_DRIVER_PREFIX} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS ${NLDRV_AL_LIB} RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/xaudio2/CMakeLists.txt b/code/nel/src/sound/driver/xaudio2/CMakeLists.txt index c0d49bd5e..13a6be8d8 100644 --- a/code/nel/src/sound/driver/xaudio2/CMakeLists.txt +++ b/code/nel/src/sound/driver/xaudio2/CMakeLists.txt @@ -41,7 +41,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION lib COMPONENT driverssound) + INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/tools/3d/ligo/plugin_max/CMakeLists.txt b/code/nel/tools/3d/ligo/plugin_max/CMakeLists.txt index af00c788a..ddf009188 100644 --- a/code/nel/tools/3d/ligo/plugin_max/CMakeLists.txt +++ b/code/nel/tools/3d/ligo/plugin_max/CMakeLists.txt @@ -22,7 +22,7 @@ NL_ADD_LIB_SUFFIX(ligoscape_utility) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ligoscape_utility RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ligoscape_utility RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) INSTALL(FILES ligoscript.txt DESTINATION maxplugin/docs) INSTALL(DIRECTORY scripts/ DESTINATION maxplugin/scripts/ diff --git a/code/nel/tools/3d/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer/CMakeLists.txt index e22e4dc51..15d24ba7a 100644 --- a/code/nel/tools/3d/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer/CMakeLists.txt @@ -21,7 +21,7 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(object_viewer_dll ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.h ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS object_viewer_dll LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS object_viewer_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) INSTALL(FILES object_viewer.cfg DESTINATION bin COMPONENT tools3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS object_viewer_dll RUNTIME DESTINATION maxplugin COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index 9e54a1857..4dd05de9d 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -6,7 +6,7 @@ #----------------------------------------------------------------------------- # This tells the application(s) where to fidn the installed data. -ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_PREFIX}/object_viewer_qt/\\"") +ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt/\\"") IF(UNIX AND WITH_STATIC) MESSAGE(FATAL_ERROR "OVQT does not work with static NeL builds on Unix atm.") diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt index 08adfb89c..746cc48b6 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt @@ -44,4 +44,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_bnp_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index 77f3562e6..dcd9bd81c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -55,4 +55,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_core) ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt index 790af3ef6..0876d192c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt @@ -40,4 +40,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) \ No newline at end of file +INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt index f34309a74..9e6b308a6 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt @@ -38,4 +38,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt index 3661decef..2e8610dfa 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt @@ -44,4 +44,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt index c7450586e..ebff67fa5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -45,4 +45,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt index 31569ae6b..a65fe1b9f 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt @@ -36,4 +36,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt index ac262ad56..61a55a94d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt @@ -46,4 +46,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt index 7f084fbb1..e0a4697c7 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt @@ -1,166 +1,166 @@ -INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ${LIBXML2_INCLUDE_DIR} - ${QT_INCLUDES}) - -FILE(GLOB SRC *.cpp *.h) - -SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h - ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h - ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h) - -SET(OBJECT_VIEWER_PLUGIN_HDR object_viewer_plugin.h - main_window.h - graphics_viewport.h - animation_dialog.h - animation_set_dialog.h - setup_fog_dialog.h - slot_manager_dialog.h - particle_control_dialog.h - particle_workspace_dialog.h - particle_tree_model.h - particle_system_page.h - particle_workspace_page.h - edit_range_widget.h - emitter_page.h - attrib_widget.h - located_bindable_page.h - located_page.h - particle_force_page.h - particle_light_page.h - particle_zone_page.h - particle_sound_page.h - basic_edit_widget.h - direction_widget.h - color_edit_widget.h - particle_property_dialog.h - ps_mover_page.h - value_blender_dialog.h - value_gradient_dialog.h - value_from_emitter_dialog.h - curve_dialog.h - bin_op_dialog.h - hoverpoints.h - mesh_widget.h - morph_mesh_dialog.h - constraint_mesh_widget.h - tail_particle_widget.h - auto_lod_dialog.h - particle_texture_widget.h - particle_texture_anim_widget.h - multi_tex_dialog.h - spinner_dialog.h - follow_path_dialog.h - water_pool_dialog.h - skeleton_scale_dialog.h - skeleton_tree_model.h - particle_link_skeleton_dialog.h - vegetable_dialog.h - global_wind_dialog.h - day_night_dialog.h - sun_color_dialog.h - vegetable_noise_value_widget.h - vegetable_density_page.h - vegetable_landscape_page.h - vegetable_scale_page.h - vegetable_appearance_page.h - vegetable_rotate_page.h - tune_mrm_dialog.h - tune_timer_dialog.h - camera_control.h - graphics_settings_page.h - sound_settings_page.h - vegetable_settings_page.h - scheme_bank_dialog.h) - -SET(OBJECT_VIEWER_PLUGIN_UIS animation_form.ui - animation_set_form.ui - setup_fog_form.ui - slot_form.ui - particle_control_form.ui - particle_workspace_form.ui - edit_range_float_form.ui - edit_range_uint_form.ui - particle_system_form.ui - workspace_form.ui - attrib_form.ui - emitter_form.ui - located_bindable_form.ui - located_form.ui - particle_force_form.ui - particle_light_form.ui - particle_zone_form.ui - particle_sound_form.ui - basic_edit_form.ui - direction_form.ui - color_edit_form.ui - ps_mover_form.ui - curve_form.ui - mesh_form.ui - morph_mesh_form.ui - constraint_mesh_form.ui - tail_form.ui - auto_lod_form.ui - particle_texture_form.ui - particle_texture_anim_form.ui - multi_tex_form.ui - skeleton_scale_form.ui - particle_link_skeleton_form.ui - water_pool_form.ui - vegetable_dialog_form.ui - vegetable_noise_value_form.ui - global_wind_form.ui - sun_color_form.ui - day_night_form.ui - vegetable_density_form.ui - vegetable_apperance_form.ui - vegetable_landscape_form.ui - vegetable_rotate_form.ui - vegetable_scale_form.ui - tune_mrm_form.ui - tune_timer_form.ui - graphics_settings_page.ui - sound_settings_page.ui - vegetable_settings_page.ui - scheme_bank_form.ui - value_gradient_form.ui) - -SET(OBJECT_VIEWER_PLUGIN_RCS object_viewer.qrc) - -SET(QT_USE_QTGUI TRUE) -SET(QT_USE_QTOPENGL TRUE) - -QT4_ADD_RESOURCES(OBJECT_VIEWER_PLUGIN_RC_SRCS ${OBJECT_VIEWER_PLUGIN_RCS}) -QT4_WRAP_CPP(OBJECT_VIEWER_PLUGIN_MOC_SRC ${OBJECT_VIEWER_PLUGIN_HDR}) -QT4_WRAP_UI(OBJECT_VIEWER_PLUGIN_UI_HDRS ${OBJECT_VIEWER_PLUGIN_UIS}) - -SOURCE_GROUP(QtResources FILES ${OBJECT_VIEWER_PLUGIN_UIS}) -SOURCE_GROUP(QtGeneratedUiHdr FILES ${OBJECT_VIEWER_PLUGIN_UI_HDRS}) -SOURCE_GROUP(QtGeneratedMocSrc FILES ${OBJECT_VIEWER_PLUGIN_MOC_SRC}) -SOURCE_GROUP("Object Viewer Plugin" FILES ${SRC}) -SOURCE_GROUP("OVQT Extension System" FILES ${OVQT_EXT_SYS_SRC}) - -ADD_LIBRARY(ovqt_plugin_object_viewer MODULE ${SRC} ${OBJECT_VIEWER_PLUGIN_MOC_SRC} ${OVQT_EXT_SYS_SRC} ${OBJECT_VIEWER_PLUGIN_UI_HDRS} ${OBJECT_VIEWER_PLUGIN_RC_SRCS}) - -TARGET_LINK_LIBRARIES(ovqt_plugin_object_viewer - ovqt_plugin_core - nelmisc - nel3d - nelsound - nelligo - nelgeorges - ${QT_LIBRARIES} - ${QT_QTOPENGL_LIBRARY}) - -NL_DEFAULT_PROPS(ovqt_plugin_object_viewer "NeL, Tools, 3D: Object Viewer Qt Plugin: Object Viewer") - +INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${LIBXML2_INCLUDE_DIR} + ${QT_INCLUDES}) + +FILE(GLOB SRC *.cpp *.h) + +SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h + ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h + ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h) + +SET(OBJECT_VIEWER_PLUGIN_HDR object_viewer_plugin.h + main_window.h + graphics_viewport.h + animation_dialog.h + animation_set_dialog.h + setup_fog_dialog.h + slot_manager_dialog.h + particle_control_dialog.h + particle_workspace_dialog.h + particle_tree_model.h + particle_system_page.h + particle_workspace_page.h + edit_range_widget.h + emitter_page.h + attrib_widget.h + located_bindable_page.h + located_page.h + particle_force_page.h + particle_light_page.h + particle_zone_page.h + particle_sound_page.h + basic_edit_widget.h + direction_widget.h + color_edit_widget.h + particle_property_dialog.h + ps_mover_page.h + value_blender_dialog.h + value_gradient_dialog.h + value_from_emitter_dialog.h + curve_dialog.h + bin_op_dialog.h + hoverpoints.h + mesh_widget.h + morph_mesh_dialog.h + constraint_mesh_widget.h + tail_particle_widget.h + auto_lod_dialog.h + particle_texture_widget.h + particle_texture_anim_widget.h + multi_tex_dialog.h + spinner_dialog.h + follow_path_dialog.h + water_pool_dialog.h + skeleton_scale_dialog.h + skeleton_tree_model.h + particle_link_skeleton_dialog.h + vegetable_dialog.h + global_wind_dialog.h + day_night_dialog.h + sun_color_dialog.h + vegetable_noise_value_widget.h + vegetable_density_page.h + vegetable_landscape_page.h + vegetable_scale_page.h + vegetable_appearance_page.h + vegetable_rotate_page.h + tune_mrm_dialog.h + tune_timer_dialog.h + camera_control.h + graphics_settings_page.h + sound_settings_page.h + vegetable_settings_page.h + scheme_bank_dialog.h) + +SET(OBJECT_VIEWER_PLUGIN_UIS animation_form.ui + animation_set_form.ui + setup_fog_form.ui + slot_form.ui + particle_control_form.ui + particle_workspace_form.ui + edit_range_float_form.ui + edit_range_uint_form.ui + particle_system_form.ui + workspace_form.ui + attrib_form.ui + emitter_form.ui + located_bindable_form.ui + located_form.ui + particle_force_form.ui + particle_light_form.ui + particle_zone_form.ui + particle_sound_form.ui + basic_edit_form.ui + direction_form.ui + color_edit_form.ui + ps_mover_form.ui + curve_form.ui + mesh_form.ui + morph_mesh_form.ui + constraint_mesh_form.ui + tail_form.ui + auto_lod_form.ui + particle_texture_form.ui + particle_texture_anim_form.ui + multi_tex_form.ui + skeleton_scale_form.ui + particle_link_skeleton_form.ui + water_pool_form.ui + vegetable_dialog_form.ui + vegetable_noise_value_form.ui + global_wind_form.ui + sun_color_form.ui + day_night_form.ui + vegetable_density_form.ui + vegetable_apperance_form.ui + vegetable_landscape_form.ui + vegetable_rotate_form.ui + vegetable_scale_form.ui + tune_mrm_form.ui + tune_timer_form.ui + graphics_settings_page.ui + sound_settings_page.ui + vegetable_settings_page.ui + scheme_bank_form.ui + value_gradient_form.ui) + +SET(OBJECT_VIEWER_PLUGIN_RCS object_viewer.qrc) + +SET(QT_USE_QTGUI TRUE) +SET(QT_USE_QTOPENGL TRUE) + +QT4_ADD_RESOURCES(OBJECT_VIEWER_PLUGIN_RC_SRCS ${OBJECT_VIEWER_PLUGIN_RCS}) +QT4_WRAP_CPP(OBJECT_VIEWER_PLUGIN_MOC_SRC ${OBJECT_VIEWER_PLUGIN_HDR}) +QT4_WRAP_UI(OBJECT_VIEWER_PLUGIN_UI_HDRS ${OBJECT_VIEWER_PLUGIN_UIS}) + +SOURCE_GROUP(QtResources FILES ${OBJECT_VIEWER_PLUGIN_UIS}) +SOURCE_GROUP(QtGeneratedUiHdr FILES ${OBJECT_VIEWER_PLUGIN_UI_HDRS}) +SOURCE_GROUP(QtGeneratedMocSrc FILES ${OBJECT_VIEWER_PLUGIN_MOC_SRC}) +SOURCE_GROUP("Object Viewer Plugin" FILES ${SRC}) +SOURCE_GROUP("OVQT Extension System" FILES ${OVQT_EXT_SYS_SRC}) + +ADD_LIBRARY(ovqt_plugin_object_viewer MODULE ${SRC} ${OBJECT_VIEWER_PLUGIN_MOC_SRC} ${OVQT_EXT_SYS_SRC} ${OBJECT_VIEWER_PLUGIN_UI_HDRS} ${OBJECT_VIEWER_PLUGIN_RC_SRCS}) + +TARGET_LINK_LIBRARIES(ovqt_plugin_object_viewer + ovqt_plugin_core + nelmisc + nel3d + nelsound + nelligo + nelgeorges + ${QT_LIBRARIES} + ${QT_QTOPENGL_LIBRARY}) + +NL_DEFAULT_PROPS(ovqt_plugin_object_viewer "NeL, Tools, 3D: Object Viewer Qt Plugin: Object Viewer") + IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(ovqt_plugin_object_viewer ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) -ENDIF(WITH_PCH) - -NL_ADD_RUNTIME_FLAGS(ovqt_plugin_object_viewer) -NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) - -ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) - -INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +ENDIF(WITH_PCH) + +NL_ADD_RUNTIME_FLAGS(ovqt_plugin_object_viewer) +NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) + +ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) + +INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt index 2d4ddaa9d..bdb3e68e6 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt @@ -29,4 +29,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt index 505340487..befb70845 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt @@ -48,4 +48,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt index 2ddbe868e..a40a0eb94 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt @@ -42,4 +42,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_widget/CMakeLists.txt b/code/nel/tools/3d/object_viewer_widget/CMakeLists.txt index 4967e8206..20e5b69e8 100644 --- a/code/nel/tools/3d/object_viewer_widget/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_widget/CMakeLists.txt @@ -6,7 +6,7 @@ #----------------------------------------------------------------------------- # This tells the application(s) where to find the installed data. -#ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_PREFIX}/georges_editor_qt/\\"") +#ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/georges_editor_qt/\\"") ADD_SUBDIRECTORY(src) diff --git a/code/nel/tools/3d/plugin_max/nel_3dsmax_shared/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_3dsmax_shared/CMakeLists.txt index 7233f2f76..3a596badc 100644 --- a/code/nel/tools/3d/plugin_max/nel_3dsmax_shared/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_3dsmax_shared/CMakeLists.txt @@ -22,4 +22,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(nel_3dsmax_shared ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS nel_3dsmax_shared RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_3dsmax_shared RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_export/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_export/CMakeLists.txt index 32bac9067..93ae28370 100644 --- a/code/nel/tools/3d/plugin_max/nel_export/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_export/CMakeLists.txt @@ -31,4 +31,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(nel_export ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.h ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS nel_export RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_export RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_mesh_lib/CMakeLists.txt index 555edd263..a6161338d 100644 --- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/CMakeLists.txt @@ -12,4 +12,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(nel_mesh_lib ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS nel_mesh_lib RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_mesh_lib RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_converter/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_patch_converter/CMakeLists.txt index d414375ba..c173232b3 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_converter/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_patch_converter/CMakeLists.txt @@ -18,4 +18,4 @@ NL_DEFAULT_PROPS(nel_patch_converter "MAX Plugin: NeL Patch Converter") NL_ADD_RUNTIME_FLAGS(nel_patch_converter) NL_ADD_LIB_SUFFIX(nel_patch_converter) -INSTALL(TARGETS nel_patch_converter RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_patch_converter RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_patch_edit/CMakeLists.txt index ff2c11245..82cc06611 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit/CMakeLists.txt @@ -22,4 +22,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(nel_patch_edit ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS nel_patch_edit RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_patch_edit RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_edit_adv/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_patch_edit_adv/CMakeLists.txt index c63db300f..08b8f49ab 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_edit_adv/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_patch_edit_adv/CMakeLists.txt @@ -18,4 +18,4 @@ NL_DEFAULT_PROPS(nel_patch_edit_adv "MAX Plugin: NeL Patch Edit (Adv)") NL_ADD_RUNTIME_FLAGS(nel_patch_edit_adv) NL_ADD_LIB_SUFFIX(nel_patch_edit_adv) -INSTALL(TARGETS nel_patch_edit_adv RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_patch_edit_adv RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_lib/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_patch_lib/CMakeLists.txt index faaac3f5d..63f0a5bcc 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_lib/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_patch_lib/CMakeLists.txt @@ -8,4 +8,4 @@ NL_DEFAULT_PROPS(nel_patch_lib "MAX Plugin: NeL Patch Library") NL_ADD_RUNTIME_FLAGS(nel_patch_lib) NL_ADD_LIB_SUFFIX(nel_patch_lib) -INSTALL(TARGETS nel_patch_lib RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_patch_lib RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/nel_patch_paint/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_patch_paint/CMakeLists.txt index 54f2c1724..628cb3120 100644 --- a/code/nel/tools/3d/plugin_max/nel_patch_paint/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_patch_paint/CMakeLists.txt @@ -24,5 +24,5 @@ NL_ADD_LIB_SUFFIX(nel_patch_paint) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS nel_patch_paint RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_patch_paint RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) INSTALL(FILES keys.cfg DESTINATION maxplugin/plugins ) \ No newline at end of file diff --git a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/CMakeLists.txt b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/CMakeLists.txt index 2f910ac9a..9c4f6deb2 100644 --- a/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/CMakeLists.txt @@ -19,4 +19,4 @@ NL_DEFAULT_PROPS(nel_vertex_tree_paint "MAX Plugin: NeL Vertex Tree Painter") NL_ADD_RUNTIME_FLAGS(nel_vertex_tree_paint) NL_ADD_LIB_SUFFIX(nel_vertex_tree_paint) -INSTALL(TARGETS nel_vertex_tree_paint RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS nel_vertex_tree_paint RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/plugin_max/tile_utility/CMakeLists.txt b/code/nel/tools/3d/plugin_max/tile_utility/CMakeLists.txt index 772efe8b9..7f0122cda 100644 --- a/code/nel/tools/3d/plugin_max/tile_utility/CMakeLists.txt +++ b/code/nel/tools/3d/plugin_max/tile_utility/CMakeLists.txt @@ -18,4 +18,4 @@ NL_DEFAULT_PROPS(tile_utility "MAX Plugin: Tile Utility") NL_ADD_RUNTIME_FLAGS(tile_utility) NL_ADD_LIB_SUFFIX(tile_utility) -INSTALL(TARGETS tile_utility RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS tile_utility RUNTIME DESTINATION maxplugin/plugins LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) diff --git a/code/nel/tools/3d/zviewer/CMakeLists.txt b/code/nel/tools/3d/zviewer/CMakeLists.txt index 04d72ff27..f695534be 100644 --- a/code/nel/tools/3d/zviewer/CMakeLists.txt +++ b/code/nel/tools/3d/zviewer/CMakeLists.txt @@ -13,5 +13,5 @@ NL_DEFAULT_PROPS(zviewer "NeL, Tools, 3D: Zone Viewer") NL_ADD_RUNTIME_FLAGS(zviewer) INSTALL(TARGETS zviewer RUNTIME DESTINATION bin COMPONENT tools3d) -INSTALL(FILES zviewer.cfg DESTINATION etc/nel COMPONENT tools3d) -INSTALL(FILES readme.txt DESTINATION share/nel/zviewer COMPONENT tools3d) +INSTALL(FILES zviewer.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT tools3d) +INSTALL(FILES readme.txt DESTINATION ${NL_SHARE_PREFIX}/zviewer COMPONENT tools3d) diff --git a/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt b/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt index c2e0661d1..f65ff800f 100644 --- a/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt +++ b/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt @@ -15,4 +15,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(logic_editor_dll ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS logic_editor_dll LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT toolsmisc) +INSTALL(TARGETS logic_editor_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/make_sheet_id/CMakeLists.txt b/code/nel/tools/misc/make_sheet_id/CMakeLists.txt index 2b5da139e..22730ce5c 100644 --- a/code/nel/tools/misc/make_sheet_id/CMakeLists.txt +++ b/code/nel/tools/misc/make_sheet_id/CMakeLists.txt @@ -9,4 +9,4 @@ NL_DEFAULT_PROPS(make_sheet_id "NeL, Tools, Misc: make_sheet_id") NL_ADD_RUNTIME_FLAGS(make_sheet_id) INSTALL(TARGETS make_sheet_id RUNTIME DESTINATION bin COMPONENT toolsmisc) -INSTALL(FILES make_sheet_id.cfg DESTINATION etc/nel COMPONENT toolsmisc) +INSTALL(FILES make_sheet_id.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/words_dic_qt/CMakeLists.txt b/code/nel/tools/misc/words_dic_qt/CMakeLists.txt index dcfb2a9f6..c112d6885 100644 --- a/code/nel/tools/misc/words_dic_qt/CMakeLists.txt +++ b/code/nel/tools/misc/words_dic_qt/CMakeLists.txt @@ -28,5 +28,5 @@ NL_ADD_RUNTIME_FLAGS(words_dic_qt) ADD_DEFINITIONS(${QT_DEFINITIONS}) INSTALL(TARGETS words_dic_qt RUNTIME DESTINATION bin COMPONENT toolsmisc) -INSTALL(FILES words_dic.cfg DESTINATION etc/nel COMPONENT toolsmisc) +INSTALL(FILES words_dic.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt b/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt index 6700863af..c3d22d8a5 100644 --- a/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt +++ b/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt @@ -9,4 +9,4 @@ NL_DEFAULT_PROPS(build_ig_boxes "NeL, Tools, PACS: build_ig_boxes") NL_ADD_RUNTIME_FLAGS(build_ig_boxes) INSTALL(TARGETS build_ig_boxes RUNTIME DESTINATION bin COMPONENT toolspacs) -INSTALL(FILES build_ig_boxes.cfg DESTINATION etc/nel COMPONENT toolspacs) +INSTALL(FILES build_ig_boxes.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt b/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt index ff23551c0..8e5f73b2d 100644 --- a/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt +++ b/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt @@ -9,4 +9,4 @@ NL_DEFAULT_PROPS(build_indoor_rbank "NeL, Tools, PACS: build_indoor_rbank") NL_ADD_RUNTIME_FLAGS(build_indoor_rbank) INSTALL(TARGETS build_indoor_rbank RUNTIME DESTINATION bin COMPONENT toolspacs) -INSTALL(FILES build_indoor_rbank.cfg DESTINATION etc/nel COMPONENT toolspacs) +INSTALL(FILES build_indoor_rbank.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nel/tools/pacs/build_rbank/CMakeLists.txt b/code/nel/tools/pacs/build_rbank/CMakeLists.txt index f16cfb407..9c908bce1 100644 --- a/code/nel/tools/pacs/build_rbank/CMakeLists.txt +++ b/code/nel/tools/pacs/build_rbank/CMakeLists.txt @@ -13,4 +13,4 @@ NL_ADD_RUNTIME_FLAGS(build_rbank) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS build_rbank RUNTIME DESTINATION bin COMPONENT toolspacs) -INSTALL(FILES build_rbank.cfg DESTINATION etc/nel COMPONENT toolspacs) +INSTALL(FILES build_rbank.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nelns/admin_executor_service/CMakeLists.txt b/code/nelns/admin_executor_service/CMakeLists.txt index 25749af66..620c1a78a 100644 --- a/code/nelns/admin_executor_service/CMakeLists.txt +++ b/code/nelns/admin_executor_service/CMakeLists.txt @@ -14,4 +14,4 @@ NL_ADD_RUNTIME_FLAGS(admin_executor_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS admin_executor_service RUNTIME DESTINATION sbin COMPONENT aes) -INSTALL(FILES admin_executor_service.cfg common.cfg DESTINATION etc/nel/nelns COMPONENT aes) +INSTALL(FILES admin_executor_service.cfg common.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT aes) diff --git a/code/nelns/admin_service/CMakeLists.txt b/code/nelns/admin_service/CMakeLists.txt index 88d5aaeb9..a7eee50a1 100644 --- a/code/nelns/admin_service/CMakeLists.txt +++ b/code/nelns/admin_service/CMakeLists.txt @@ -17,4 +17,4 @@ NL_ADD_RUNTIME_FLAGS(admin_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS admin_service RUNTIME DESTINATION sbin COMPONENT as) -INSTALL(FILES admin_service.cfg common.cfg DESTINATION etc/nel/nelns COMPONENT as) +INSTALL(FILES admin_service.cfg common.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT as) diff --git a/code/nelns/login_service/CMakeLists.txt b/code/nelns/login_service/CMakeLists.txt index 5ae88df7c..1ee7260fe 100644 --- a/code/nelns/login_service/CMakeLists.txt +++ b/code/nelns/login_service/CMakeLists.txt @@ -17,4 +17,4 @@ NL_ADD_RUNTIME_FLAGS(login_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS login_service RUNTIME DESTINATION sbin COMPONENT ls) -INSTALL(FILES login_service.cfg common.cfg DESTINATION etc/nel/nelns COMPONENT ls) +INSTALL(FILES login_service.cfg common.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT ls) diff --git a/code/nelns/login_system/nel_launcher_qt/CMakeLists.txt b/code/nelns/login_system/nel_launcher_qt/CMakeLists.txt index 3bd503eef..7e128f1b7 100644 --- a/code/nelns/login_system/nel_launcher_qt/CMakeLists.txt +++ b/code/nelns/login_system/nel_launcher_qt/CMakeLists.txt @@ -37,5 +37,5 @@ INSTALL(TARGETS nel_launcher_qt RUNTIME DESTINATION bin COMPONENT launcher) IF(WIN32) INSTALL(FILES nel_launcher.cfg DESTINATION bin COMPONENT launcher) ELSE(WIN32) - INSTALL(FILES nel_launcher.cfg DESTINATION etc/nel/nelns COMPONENT launcher) + INSTALL(FILES nel_launcher.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT launcher) ENDIF(WIN32) diff --git a/code/nelns/naming_service/CMakeLists.txt b/code/nelns/naming_service/CMakeLists.txt index 4073d1193..9616ca957 100644 --- a/code/nelns/naming_service/CMakeLists.txt +++ b/code/nelns/naming_service/CMakeLists.txt @@ -15,4 +15,4 @@ NL_ADD_RUNTIME_FLAGS(naming_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS naming_service RUNTIME DESTINATION sbin COMPONENT ns) -INSTALL(FILES naming_service.cfg common.cfg DESTINATION etc/nel/nelns COMPONENT ns) +INSTALL(FILES naming_service.cfg common.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT ns) diff --git a/code/nelns/welcome_service/CMakeLists.txt b/code/nelns/welcome_service/CMakeLists.txt index e25c08a0c..c6819d97d 100644 --- a/code/nelns/welcome_service/CMakeLists.txt +++ b/code/nelns/welcome_service/CMakeLists.txt @@ -15,4 +15,4 @@ NL_ADD_RUNTIME_FLAGS(welcome_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) INSTALL(TARGETS welcome_service RUNTIME DESTINATION sbin COMPONENT ws) -INSTALL(FILES welcome_service.cfg common.cfg DESTINATION etc/nel/nelns COMPONENT ws) +INSTALL(FILES welcome_service.cfg common.cfg DESTINATION ${NL_ETC_PREFIX}/nelns COMPONENT ws) diff --git a/code/ryzom/client/src/client_sheets/CMakeLists.txt b/code/ryzom/client/src/client_sheets/CMakeLists.txt index 4f21ecf9d..57bf75af5 100644 --- a/code/ryzom/client/src/client_sheets/CMakeLists.txt +++ b/code/ryzom/client/src/client_sheets/CMakeLists.txt @@ -14,5 +14,5 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS ryzom_clientsheets LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS ryzom_clientsheets LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/ryzom/client/src/seven_zip/CMakeLists.txt b/code/ryzom/client/src/seven_zip/CMakeLists.txt index 85212084e..ba4073783 100644 --- a/code/ryzom/client/src/seven_zip/CMakeLists.txt +++ b/code/ryzom/client/src/seven_zip/CMakeLists.txt @@ -20,6 +20,6 @@ NL_ADD_LIB_SUFFIX(ryzom_sevenzip) ADD_DEFINITIONS(-D_SZ_ONE_DIRECTORY) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS ryzom_sevenzip LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS ryzom_sevenzip LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) INSTALL(TARGETS 7zDec RUNTIME DESTINATION bin COMPONENT client) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/ryzom/common/src/game_share/CMakeLists.txt b/code/ryzom/common/src/game_share/CMakeLists.txt index 61292431c..2648416ec 100644 --- a/code/ryzom/common/src/game_share/CMakeLists.txt +++ b/code/ryzom/common/src/game_share/CMakeLists.txt @@ -42,5 +42,5 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS ryzom_gameshare LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) + INSTALL(TARGETS ryzom_gameshare LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/ryzom/server/src/admin_modules/CMakeLists.txt b/code/ryzom/server/src/admin_modules/CMakeLists.txt index 7eb6af309..ea8d8a5ff 100644 --- a/code/ryzom/server/src/admin_modules/CMakeLists.txt +++ b/code/ryzom/server/src/admin_modules/CMakeLists.txt @@ -11,4 +11,4 @@ NL_ADD_LIB_SUFFIX(ryzom_adminmodules) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_adminmodules LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_adminmodules LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/server/src/ai_share/CMakeLists.txt b/code/ryzom/server/src/ai_share/CMakeLists.txt index 67f659109..700e788e9 100644 --- a/code/ryzom/server/src/ai_share/CMakeLists.txt +++ b/code/ryzom/server/src/ai_share/CMakeLists.txt @@ -22,4 +22,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(ryzom_aishare ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS ryzom_aishare LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_aishare LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/server/src/gameplay_module_lib/CMakeLists.txt b/code/ryzom/server/src/gameplay_module_lib/CMakeLists.txt index 48b9ed299..727392235 100644 --- a/code/ryzom/server/src/gameplay_module_lib/CMakeLists.txt +++ b/code/ryzom/server/src/gameplay_module_lib/CMakeLists.txt @@ -11,4 +11,4 @@ NL_ADD_LIB_SUFFIX(ryzom_gameplaymodule) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_gameplaymodule LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_gameplaymodule LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/server/src/pd_lib/CMakeLists.txt b/code/ryzom/server/src/pd_lib/CMakeLists.txt index 46974a9ae..f4568064f 100644 --- a/code/ryzom/server/src/pd_lib/CMakeLists.txt +++ b/code/ryzom/server/src/pd_lib/CMakeLists.txt @@ -16,4 +16,4 @@ NL_ADD_LIB_SUFFIX(ryzom_pd) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_pd LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_pd LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/server/src/server_share/CMakeLists.txt b/code/ryzom/server/src/server_share/CMakeLists.txt index d043c55ca..c208f3ecc 100644 --- a/code/ryzom/server/src/server_share/CMakeLists.txt +++ b/code/ryzom/server/src/server_share/CMakeLists.txt @@ -31,4 +31,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(ryzom_servershare ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS ryzom_servershare LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_servershare LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/export/CMakeLists.txt b/code/ryzom/tools/leveldesign/export/CMakeLists.txt index d8125d882..c1d34519d 100644 --- a/code/ryzom/tools/leveldesign/export/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/export/CMakeLists.txt @@ -12,5 +12,5 @@ NL_ADD_LIB_SUFFIX(ryzom_export) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_export LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_export LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt index 92263a73c..99f60aea7 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt @@ -16,4 +16,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(georges_dll ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS georges_dll LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS georges_dll LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt index 985b00cf9..54cbc63c0 100644 --- a/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt @@ -6,7 +6,7 @@ #----------------------------------------------------------------------------- # This tells the application(s) where to find the installed data. -ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_PREFIX}/georges_editor_qt/\\"") +ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/georges_editor_qt/\\"") ADD_SUBDIRECTORY(src) diff --git a/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt index 29f77d650..76f8e63f7 100644 --- a/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt @@ -23,4 +23,4 @@ NL_ADD_LIB_SUFFIX(georges_plugin_sound) ADD_DEFINITIONS(${MFC_DEFINITIONS}) -INSTALL(TARGETS georges_plugin_sound LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS georges_plugin_sound LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt b/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt index c2dd48d41..5c5ce949c 100644 --- a/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt @@ -14,7 +14,7 @@ NL_DEFAULT_PROPS(ryzom_mission_compiler_lib "Ryzom, Library: Mission Compiler") NL_ADD_RUNTIME_FLAGS(ryzom_mission_compiler_lib) NL_ADD_LIB_SUFFIX(ryzom_mission_compiler_lib) -INSTALL(TARGETS ryzom_mission_compiler_lib LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_mission_compiler_lib LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) FILE(GLOB EXESRC main.cpp) diff --git a/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt index ab6386118..89fb06086 100644 --- a/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt @@ -12,5 +12,5 @@ NL_ADD_LIB_SUFFIX(ryzom_landexport) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_landexport LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT libraries) +INSTALL(TARGETS ryzom_landexport LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt index 04e11fd50..417ed83b6 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_fauna_graph_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_fauna_graph_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_fauna_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt index 4fc58a958..3c9e57857 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt @@ -18,5 +18,5 @@ NL_ADD_LIB_SUFFIX(world_editor_graph_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_graph_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt index f12eab168..3c93ab01b 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt @@ -21,6 +21,6 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(world_editor_plugin ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS world_editor_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) INSTALL(FILES WorldEditorPlugin.cfg DESTINATION bin COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt index 4175cb8f9..0449ec5d5 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_primitive_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_primitive_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_primitive_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt index fdfa3e1ca..64da758a7 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt @@ -18,5 +18,5 @@ NL_ADD_LIB_SUFFIX(world_editor_shard_monitor_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_shard_monitor_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_shard_monitor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt index 298c0cc0d..9337af50b 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_sound_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_sound_plugin LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) +INSTALL(TARGETS world_editor_sound_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) From 8ab293a6ece2110066a2b7998cc70c80a8671e59 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 22 Sep 2012 23:42:40 +0200 Subject: [PATCH 006/125] Changed: #1493 Fixed some directories --- code/nel/samples/3d/cluster_viewer/CMakeLists.txt | 2 +- code/nel/tools/3d/object_viewer_qt/CMakeLists.txt | 2 +- .../login_system/nel_launcher_windows_ext2/CMakeLists.txt | 2 +- code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt index a68bf0d84..3acb450c5 100644 --- a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt +++ b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt @@ -23,7 +23,7 @@ INSTALL(DIRECTORY fonts/ PATTERN ".svn" EXCLUDE PATTERN "Makefile*" EXCLUDE) INSTALL(DIRECTORY max/ - DESTINATION ${NL_SHARE_PREFIX}/nel/nl_sample_clusterview/max + DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview/max COMPONENT samples3d PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index 4dd05de9d..9d4a7bd34 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -15,7 +15,7 @@ ENDIF() ADD_SUBDIRECTORY(src) INSTALL(DIRECTORY data/ - DESTINATION share/object_viewer_qt/data + DESTINATION ${NL_SHARE_PREFIX}/object_viewer_qt/data COMPONENT data PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nelns/login_system/nel_launcher_windows_ext2/CMakeLists.txt b/code/nelns/login_system/nel_launcher_windows_ext2/CMakeLists.txt index 79093faef..f139252b8 100644 --- a/code/nelns/login_system/nel_launcher_windows_ext2/CMakeLists.txt +++ b/code/nelns/login_system/nel_launcher_windows_ext2/CMakeLists.txt @@ -20,4 +20,4 @@ IF(WITH_PCH) ENDIF(WITH_PCH) INSTALL(TARGETS nel_launcher_ext2 RUNTIME DESTINATION bin COMPONENT launcher) -INSTALL(FILES nel_launcher.cfg DESTINATION etc/nel COMPONENT launcher) +INSTALL(FILES nel_launcher.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT launcher) diff --git a/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt index 54cbc63c0..3edbb69fb 100644 --- a/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_editor_qt/CMakeLists.txt @@ -6,12 +6,12 @@ #----------------------------------------------------------------------------- # This tells the application(s) where to find the installed data. -ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/georges_editor_qt/\\"") +ADD_DEFINITIONS(-DDATA_DIR="\\"${RYZOM_SHARE_ABSOLUTE_PREFIX}/georges_editor_qt/\\"") ADD_SUBDIRECTORY(src) INSTALL(DIRECTORY data/ - DESTINATION share/georges_editor_qt/data + DESTINATION ${RYZOM_SHARE_PREFIX}/georges_editor_qt/data COMPONENT data PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE From e8e75d05c026c67c078aa919aee8dd6b9ae6caab Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 22 Sep 2012 23:53:46 +0200 Subject: [PATCH 007/125] Changed: Synchronization with SVN --- .../data/gamedev/interfaces_v3/help.xml | 2 +- .../gamedev/interfaces_v3/out_v2_select.xml | 4 +- .../interface_v3/group_in_scene_user_info.cpp | 16 ++++-- .../client/src/interface_v3/guild_manager.cpp | 51 ++++++++++--------- 4 files changed, 43 insertions(+), 30 deletions(-) diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/help.xml b/code/ryzom/client/data/gamedev/interfaces_v3/help.xml index 4d74b184c..39cfb1af4 100644 --- a/code/ryzom/client/data/gamedev/interfaces_v3/help.xml +++ b/code/ryzom/client/data/gamedev/interfaces_v3/help.xml @@ -864,7 +864,7 @@ + value="http://app.ryzom.com/ticket_system/index.php?mode=load" /> - - + + getDisplayName(); ucstring entityTitle = entity->getTitle(); + // For some NPC's the name is empty and only a title is given, + // in that case, treat the title as the name. + if (entityName.empty()) + { + entityName = entityTitle; + entityTitle.clear(); + } + ucstring entityTag1 = entity->getTag(1); ucstring entityTag2 = entity->getTag(2); ucstring entityTag3 = entity->getTag(3); @@ -174,7 +182,7 @@ CGroupInSceneUserInfo *CGroupInSceneUserInfo::build (CEntityCL *entity) bars[i]= false; name= !entityName.empty() && pIM->getDbProp(dbEntry+"NPCNAME")->getValueBool(); symbol= false; - title= (entityName.empty() && pIM->getDbProp(dbEntry+"NPCNAME")->getValueBool()) || pIM->getDbProp(dbEntry+"NPCTITLE")->getValueBool(); + title= !entityTitle.empty() && pIM->getDbProp(dbEntry+"NPCTITLE")->getValueBool(); guildName= false; templateName = "in_scene_user_info"; rpTags = (!entityTag1.empty() || !entityTag2.empty() || !entityTag3.empty() || !entityTag4.empty() ) && pIM->getDbProp(dbEntry+"RPTAGS")->getValueBool(); @@ -511,13 +519,13 @@ CGroupInSceneUserInfo *CGroupInSceneUserInfo::build (CEntityCL *entity) { info->delView(logoOver); } - //leftGroup->setW( leftGroup->getW() + 42 ); + leftGroup->setW( leftGroup->getW() + 42 ); } else { info->delView(logo); info->delView(logoOver); - //leftGroup->setX(0); + leftGroup->setX(0); } leftGroup->invalidateCoords(); } @@ -887,6 +895,8 @@ void CGroupInSceneUserInfo::updateDynamicData () _Name->setColor(entityColor); _Name->setModulateGlobalColor(false); ucstring entityName = _Entity->getDisplayName(); + if (entityName.empty()) + entityName = _Entity->getTitle(); if (pPlayer != NULL) if (pPlayer->isAFK()) entityName += CI18N::get("uiAFK"); diff --git a/code/ryzom/client/src/interface_v3/guild_manager.cpp b/code/ryzom/client/src/interface_v3/guild_manager.cpp index d1f8a2c9f..dce9558f9 100644 --- a/code/ryzom/client/src/interface_v3/guild_manager.cpp +++ b/code/ryzom/client/src/interface_v3/guild_manager.cpp @@ -362,44 +362,47 @@ void CGuildManager::update() if (node && node->getValueBool()) { // See if we need to show any online/offline messages - static vector CachedGuildMembers; + static map CachedGuildMembers; ucstring onlineMessage = CI18N::get("uiPlayerOnline"); ucstring offlineMessage = CI18N::get("uiPlayerOffline"); for (uint i = 0; i < _GuildMembers.size(); ++i) { - for (uint j = 0; j < CachedGuildMembers.size(); ++j) + map::const_iterator it = CachedGuildMembers.find(_GuildMembers[i].Name); + if ( it != CachedGuildMembers.end() ) { - // Status change is from offline to online/abroad online or vice versa. - TCharConnectionState prevState = CachedGuildMembers[j].Online; - TCharConnectionState curState = _GuildMembers[i].Online; - bool showMsg = (prevState != curState) && - (CachedGuildMembers[j].Name == _GuildMembers[i].Name) && - (prevState == ccs_offline || curState == ccs_offline); - - if (showMsg) + if ( (*it).second.Online == _GuildMembers[i].Online) { - ucstring msg = (_GuildMembers[i].Online != ccs_offline) ? onlineMessage : offlineMessage; - strFindReplace(msg, "%s", _GuildMembers[i].Name); - string cat = getStringCategory(msg, msg); - map::const_iterator it; - NLMISC::CRGBA col = CRGBA::Yellow; - it = ClientCfg.SystemInfoParams.find(toLower(cat)); - if (it != ClientCfg.SystemInfoParams.end()) - { - col = it->second.Color; - } - bool dummy; - PeopleInterraction.ChatInput.Guild.displayMessage(msg, col, 2, &dummy); - break; + // Online status not changed for this member + continue; } + + if ( (*it).second.Online != ccs_offline && _GuildMembers[i].Online != ccs_offline) + { + // Not from offline, or to offline, so don't show anything + continue; + } + + ucstring msg = (_GuildMembers[i].Online != ccs_offline) ? onlineMessage : offlineMessage; + strFindReplace(msg, "%s", _GuildMembers[i].Name); + string cat = getStringCategory(msg, msg); + map::const_iterator it; + NLMISC::CRGBA col = CRGBA::Yellow; + it = ClientCfg.SystemInfoParams.find(toLower(cat)); + if (it != ClientCfg.SystemInfoParams.end()) + { + col = it->second.Color; + } + bool dummy; + PeopleInterraction.ChatInput.Guild.displayMessage(msg, col, 2, &dummy); + break; } } CachedGuildMembers.clear(); for (uint i = 0; i < _GuildMembers.size(); ++i) { - CachedGuildMembers.push_back(_GuildMembers[i]); + CachedGuildMembers.insert(make_pair(_GuildMembers[i].Name, _GuildMembers[i])); } } From ece10f2965347269430ee94ffddf86b9c8c73623 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 23 Sep 2012 20:26:26 +0200 Subject: [PATCH 008/125] Fixed: Compilation with GCC --- code/ryzom/tools/leveldesign/mp_generator/utils.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ryzom/tools/leveldesign/mp_generator/utils.h b/code/ryzom/tools/leveldesign/mp_generator/utils.h index 6804a5bc7..63148f61f 100644 --- a/code/ryzom/tools/leveldesign/mp_generator/utils.h +++ b/code/ryzom/tools/leveldesign/mp_generator/utils.h @@ -245,7 +245,7 @@ public: } private: - + CLookup _Indices [NC]; CItems _Items; @@ -280,7 +280,7 @@ public: { throw Exception("Could not open html: %s", filename.c_str()); } - fprintf( _File, ("\n\n" + title + "\n\n").c_str() ); + fprintf( _File, "\n\n%s\n\n", title.c_str() ); } /// @@ -289,7 +289,7 @@ public: if ( ! _Enabled ) return; - fprintf( _File, htmlCode.c_str() ); + fprintf( _File, "%s", htmlCode.c_str() ); } /// From 1604cb3f8cea45679976f6600e7cecfd3abbe6de Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 23 Sep 2012 20:27:51 +0200 Subject: [PATCH 009/125] Changed: Compiler flags must be defined after options declaration --- code/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 926f66e35..3f5fa94d5 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -48,9 +48,6 @@ SET(NL_VERSION_MINOR 8) SET(NL_VERSION_PATCH 0) SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}") -NL_SETUP_BUILD() -NL_SETUP_BUILD_FLAGS() - #----------------------------------------------------------------------------- # Redirect output files SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -87,6 +84,9 @@ RYZOM_SETUP_PREFIX_PATHS() NL_CONFIGURE_CHECKS() +NL_SETUP_BUILD() +NL_SETUP_BUILD_FLAGS() + #----------------------------------------------------------------------------- #Platform specifics From 6f480b4a87934b9949dd6ff24105f75552e52e67 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 23 Sep 2012 20:30:28 +0200 Subject: [PATCH 010/125] Fixed: #1493 Remove also -O flags from environment variables --- code/CMakeModules/nel.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 5768987e3..fcf25b258 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -422,8 +422,9 @@ MACRO(NL_SETUP_BUILD) SET(PLATFORM_CFLAGS "$ENV{CFLAGS} ${PLATFORM_CFLAGS}") SET(PLATFORM_LINKFLAGS "$ENV{LDFLAGS} ${PLATFORM_LINKFLAGS}") - # Remove -g flag because we are managing it ourself + # Remove -g and -O flag because we are managing them ourself STRING(REPLACE "-g" "" PLATFORM_CFLAGS ${PLATFORM_CFLAGS}) + STRING(REGEX REPLACE "-O[0-9s]" "" PLATFORM_CFLAGS ${PLATFORM_CFLAGS}) # Strip spaces STRING(STRIP ${PLATFORM_CFLAGS} PLATFORM_CFLAGS) From 52d086fb8a65cda628d6396fd5e098b3cf263390 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 23 Sep 2012 23:56:34 +0200 Subject: [PATCH 011/125] Changed: #1493 Fixed absolute prefixes --- code/CMakeModules/nel.cmake | 73 +++++++++++++------------------------ code/config.h.cmake | 1 - 2 files changed, 25 insertions(+), 49 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index fcf25b258..29bedb4f4 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -621,92 +621,87 @@ MACRO(NL_SETUP_BUILD_FLAGS) SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${PLATFORM_LINKFLAGS} ${NL_RELEASE_LINKFLAGS}" CACHE STRING "" FORCE) ENDMACRO(NL_SETUP_BUILD_FLAGS) +# Macro to create x_ABSOLUTE_PREFIX from x_PREFIX +MACRO(NL_MAKE_ABSOLUTE_PREFIX NAME_RELATIVE NAME_ABSOLUTE) + IF(IS_ABSOLUTE ${NAME_RELATIVE}) + SET(${NAME_ABSOLUTE} ${NAME_RELATIVE}) + ELSE(IS_ABSOLUTE ${NAME_RELATIVE}) + IF(WIN32) + SET(${NAME_ABSOLUTE} ${${NAME_RELATIVE}}) + ELSE(WIN32) + SET(${NAME_ABSOLUTE} ${CMAKE_INSTALL_PREFIX}/${${NAME_RELATIVE}}) + ENDIF(WIN32) + ENDIF(IS_ABSOLUTE ${NAME_RELATIVE}) +ENDMACRO(NL_MAKE_ABSOLUTE_PREFIX) + MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/etc path. IF(NOT NL_ETC_PREFIX) IF(WIN32) SET(NL_ETC_PREFIX "../etc/nel" CACHE PATH "Installation path for configurations") - SET(NL_ETC_ABSOLUTE_PREFIX ${NL_ETC_PREFIX}) ELSE(WIN32) SET(NL_ETC_PREFIX "etc/nel" CACHE PATH "Installation path for configurations") - SET(NL_ETC_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_ETC_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_ETC_PREFIX) - SET(NL_ETC_ABSOLUTE_PREFIX ${NL_ETC_PREFIX}) ENDIF(NOT NL_ETC_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_ETC_PREFIX NL_ETC_ABSOLUTE_PREFIX) ## Allow override of install_prefix/share path. IF(NOT NL_SHARE_PREFIX) IF(WIN32) SET(NL_SHARE_PREFIX "../share/nel" CACHE PATH "Installation path for data.") - SET(NL_SHARE_ABSOLUTE_PREFIX ${NL_SHARE_PREFIX}) ELSE(WIN32) SET(NL_SHARE_PREFIX "share/nel" CACHE PATH "Installation path for data.") - SET(NL_SHARE_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_SHARE_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_SHARE_PREFIX) - SET(NL_SHARE_ABSOLUTE_PREFIX ${NL_SHARE_PREFIX}) ENDIF(NOT NL_SHARE_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_SHARE_PREFIX NL_SHARE_ABSOLUTE_PREFIX) ## Allow override of install_prefix/sbin path. IF(NOT NL_SBIN_PREFIX) IF(WIN32) SET(NL_SBIN_PREFIX "../sbin" CACHE PATH "Installation path for admin tools and services.") - SET(NL_SBIN_ABSOLUTE_PREFIX ${NL_SBIN_PREFIX}) ELSE(WIN32) SET(NL_SBIN_PREFIX "sbin" CACHE PATH "Installation path for admin tools and services.") - SET(NL_SBIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_SBIN_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_SBIN_PREFIX) - SET(NL_SBIN_ABSOLUTE_PREFIX ${NL_SBIN_PREFIX}) ENDIF(NOT NL_SBIN_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_SBIN_PREFIX NL_SBIN_ABSOLUTE_PREFIX) ## Allow override of install_prefix/bin path. IF(NOT NL_BIN_PREFIX) IF(WIN32) SET(NL_BIN_PREFIX "../bin" CACHE PATH "Installation path for tools and applications.") - SET(NL_BIN_ABSOLUTE_PREFIX ${NL_BIN_PREFIX}) ELSE(WIN32) SET(NL_BIN_PREFIX "bin" CACHE PATH "Installation path for tools and applications.") - SET(NL_BIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_BIN_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_BIN_PREFIX) - SET(NL_BIN_ABSOLUTE_PREFIX ${NL_BIN_PREFIX}) ENDIF(NOT NL_BIN_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_BIN_PREFIX NL_BIN_ABSOLUTE_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT NL_LIB_PREFIX) IF(WIN32) SET(NL_LIB_PREFIX "../lib" CACHE PATH "Installation path for libraries.") - SET(NL_LIB_ABSOLUTE_PREFIX ${NL_LIB_PREFIX}) ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) SET(NL_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") ELSE(CMAKE_LIBRARY_ARCHITECTURE) SET(NL_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") ENDIF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_LIB_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_LIB_PREFIX) - SET(NL_LIB_ABSOLUTE_PREFIX ${NL_LIB_PREFIX}) ENDIF(NOT NL_LIB_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_LIB_PREFIX NL_LIB_ABSOLUTE_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT NL_DRIVER_PREFIX) IF(WIN32) SET(NL_DRIVER_PREFIX "../lib" CACHE PATH "Installation path for drivers.") - SET(NL_DRIVER_ABSOLUTE_PREFIX ${NL_DRIVER_PREFIX}) ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) SET(NL_DRIVER_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") ELSE(CMAKE_LIBRARY_ARCHITECTURE) SET(NL_DRIVER_PREFIX "lib/nel" CACHE PATH "Installation path for drivers.") ENDIF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_DRIVER_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${NL_DRIVER_PREFIX}) ENDIF(WIN32) - ELSE(NOT NL_DRIVER_PREFIX) - SET(NL_DRIVER_ABSOLUTE_PREFIX ${NL_DRIVER_PREFIX}) ENDIF(NOT NL_DRIVER_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(NL_DRIVER_PREFIX NL_DRIVER_ABSOLUTE_PREFIX) ENDMACRO(NL_SETUP_PREFIX_PATHS) @@ -715,83 +710,65 @@ MACRO(RYZOM_SETUP_PREFIX_PATHS) IF(NOT RYZOM_ETC_PREFIX) IF(WIN32) SET(RYZOM_ETC_PREFIX "." CACHE PATH "Installation path for configurations") - SET(RYZOM_ETC_ABSOLUTE_PREFIX ${RYZOM_ETC_PREFIX}) ELSE(WIN32) SET(RYZOM_ETC_PREFIX "etc/ryzom" CACHE PATH "Installation path for configurations") - SET(RYZOM_ETC_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_ETC_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_ETC_PREFIX) - SET(RYZOM_ETC_ABSOLUTE_PREFIX ${RYZOM_ETC_PREFIX}) ENDIF(NOT RYZOM_ETC_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_ETC_PREFIX RYZOM_ETC_ABSOLUTE_PREFIX) ## Allow override of install_prefix/share path. IF(NOT RYZOM_SHARE_PREFIX) IF(WIN32) SET(RYZOM_SHARE_PREFIX "." CACHE PATH "Installation path for data.") - SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${RYZOM_SHARE_PREFIX}) ELSE(WIN32) SET(RYZOM_SHARE_PREFIX "share/ryzom" CACHE PATH "Installation path for data.") - SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_SHARE_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_SHARE_PREFIX) - SET(RYZOM_SHARE_ABSOLUTE_PREFIX ${RYZOM_SHARE_PREFIX}) ENDIF(NOT RYZOM_SHARE_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_SHARE_PREFIX RYZOM_SHARE_ABSOLUTE_PREFIX) ## Allow override of install_prefix/sbin path. IF(NOT RYZOM_SBIN_PREFIX) IF(WIN32) SET(RYZOM_SBIN_PREFIX "." CACHE PATH "Installation path for admin tools and services.") - SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${RYZOM_SBIN_PREFIX}) ELSE(WIN32) SET(RYZOM_SBIN_PREFIX "sbin" CACHE PATH "Installation path for admin tools and services.") - SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_SBIN_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_SBIN_PREFIX) - SET(RYZOM_SBIN_ABSOLUTE_PREFIX ${RYZOM_SBIN_PREFIX}) ENDIF(NOT RYZOM_SBIN_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_SBIN_PREFIX RYZOM_SBIN_ABSOLUTE_PREFIX) ## Allow override of install_prefix/bin path. IF(NOT RYZOM_BIN_PREFIX) IF(WIN32) SET(RYZOM_BIN_PREFIX "." CACHE PATH "Installation path for tools and applications.") - SET(RYZOM_BIN_ABSOLUTE_PREFIX ${RYZOM_BIN_PREFIX}) ELSE(WIN32) SET(RYZOM_BIN_PREFIX "bin" CACHE PATH "Installation path for tools.") - SET(RYZOM_BIN_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_BIN_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_BIN_PREFIX) - SET(RYZOM_BIN_ABSOLUTE_PREFIX ${RYZOM_BIN_PREFIX}) ENDIF(NOT RYZOM_BIN_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_BIN_PREFIX RYZOM_BIN_ABSOLUTE_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT RYZOM_LIB_PREFIX) IF(WIN32) SET(RYZOM_LIB_PREFIX "." CACHE PATH "Installation path for libraries.") - SET(RYZOM_LIB_ABSOLUTE_PREFIX ${RYZOM_LIB_PREFIX}) ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) SET(RYZOM_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") ELSE(CMAKE_LIBRARY_ARCHITECTURE) SET(RYZOM_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") ENDIF(CMAKE_LIBRARY_ARCHITECTURE) - SET(RYZOM_LIB_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_LIB_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_LIB_PREFIX) - SET(RYZOM_LIB_ABSOLUTE_PREFIX ${RYZOM_LIB_PREFIX}) ENDIF(NOT RYZOM_LIB_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_LIB_PREFIX RYZOM_LIB_ABSOLUTE_PREFIX) ## Allow override of install_prefix/games path. IF(NOT RYZOM_GAMES_PREFIX) IF(WIN32) SET(RYZOM_GAMES_PREFIX "." CACHE PATH "Installation path for tools and applications.") - SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${RYZOM_GAMES_PREFIX}) ELSE(WIN32) SET(RYZOM_GAMES_PREFIX "games" CACHE PATH "Installation path for client.") - SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${CMAKE_INSTALL_PREFIX}/${RYZOM_GAMES_PREFIX}) ENDIF(WIN32) - ELSE(NOT RYZOM_GAMES_PREFIX) - SET(RYZOM_GAMES_ABSOLUTE_PREFIX ${RYZOM_GAMES_PREFIX}) ENDIF(NOT RYZOM_GAMES_PREFIX) + NL_MAKE_ABSOLUTE_PREFIX(RYZOM_GAMES_PREFIX RYZOM_GAMES_ABSOLUTE_PREFIX) ENDMACRO(RYZOM_SETUP_PREFIX_PATHS) diff --git a/code/config.h.cmake b/code/config.h.cmake index 6368e179b..d3c9f701d 100644 --- a/code/config.h.cmake +++ b/code/config.h.cmake @@ -49,7 +49,6 @@ #cmakedefine NL_LIB_PREFIX "${NL_LIB_ABSOLUTE_PREFIX}" #cmakedefine NL_DRIVER_PREFIX "${NL_DRIVER_ABSOLUTE_PREFIX}" -#cmakedefine RYZOM_PREFIX "${RYZOM_ABSOLUTE_PREFIX}" #cmakedefine RYZOM_BIN_PREFIX "${RYZOM_BIN_ABSOLUTE_PREFIX}" #cmakedefine RYZOM_ETC_PREFIX "${RYZOM_ETC_ABSOLUTE_PREFIX}" #cmakedefine RYZOM_SHARE_PREFIX "${RYZOM_SHARE_ABSOLUTE_PREFIX}" From 8d9c96a97a8499ecc0406c89f49a491df00da291 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 23 Sep 2012 23:58:03 +0200 Subject: [PATCH 012/125] Changed: Use "lib" prefix under unices for plugins --- .../3d/object_viewer_qt/src/extension_system/plugin_spec.cpp | 3 ++- .../3d/object_viewer_qt/src/extension_system/plugin_spec.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp index 30e35f8c1..f45eae4a1 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp @@ -71,6 +71,7 @@ PluginSpec::PluginSpec() # error "Unknown compilation mode, can't build suffix" # endif #elif defined (NL_OS_UNIX) + m_prefix = "lib"; m_suffix = ".so"; #else # error "You must define the lib suffix for your platform" @@ -139,7 +140,7 @@ QList PluginSpec::dependencySpecs() const bool PluginSpec::setFileName(const QString &fileName) { - m_fileName = fileName + m_suffix; + m_fileName = m_prefix + fileName + m_suffix; m_filePath = m_location + "/" + m_fileName; nlinfo(m_filePath.toStdString().c_str()); diff --git a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.h b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.h index c28980d69..0ce74d004 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.h +++ b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.h @@ -84,6 +84,7 @@ private: QString m_description; QString m_nameSpecFile; + QString m_prefix; QString m_suffix; int m_state; bool m_enabled, m_enabledStartup; From 202803421407fb7f353babf75487660b606edef5 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 08:25:47 +0200 Subject: [PATCH 013/125] Changed: Install plugins specs in ${NL_SHARE_PREFIX}/object_viewer_qt/plugins under Linux --- code/nel/tools/3d/object_viewer_qt/CMakeLists.txt | 12 ++++++++++-- code/nel/tools/3d/object_viewer_qt/src/main.cpp | 6 +++--- .../src/plugins/bnp_manager/CMakeLists.txt | 1 + .../object_viewer_qt/src/plugins/core/CMakeLists.txt | 1 + .../src/plugins/disp_sheet_id/CMakeLists.txt | 1 + .../src/plugins/example/CMakeLists.txt | 1 + .../src/plugins/georges_editor/CMakeLists.txt | 1 + .../src/plugins/landscape_editor/CMakeLists.txt | 1 + .../object_viewer_qt/src/plugins/log/CMakeLists.txt | 1 + .../src/plugins/mission_compiler/CMakeLists.txt | 1 + .../src/plugins/object_viewer/CMakeLists.txt | 1 + .../src/plugins/ovqt_sheet_builder/CMakeLists.txt | 1 + .../src/plugins/translation_manager/CMakeLists.txt | 1 + .../src/plugins/zone_painter/CMakeLists.txt | 1 + 14 files changed, 25 insertions(+), 5 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index 9d4a7bd34..b87416280 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -5,8 +5,16 @@ # #----------------------------------------------------------------------------- -# This tells the application(s) where to fidn the installed data. -ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt/\\"") +# This tells the application(s) where to find the installed data. +IF(WIN32) + SET(OVQT_PLUGIN_DIR "plugins") +ELSEIF(APPLE) + # TODO: under Mac OS X, don't install but copy files in application package + SET(OVQT_PLUGIN_DIR "plugins") +ELSE(WIN32) + SET(OVQT_PLUGIN_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/plugins) + ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt/\\"") +ENDIF(WIN32) IF(UNIX AND WITH_STATIC) MESSAGE(FATAL_ERROR "OVQT does not work with static NeL builds on Unix atm.") diff --git a/code/nel/tools/3d/object_viewer_qt/src/main.cpp b/code/nel/tools/3d/object_viewer_qt/src/main.cpp index 7e9e05a77..fd5432a3c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/main.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/main.cpp @@ -151,10 +151,10 @@ sint main(int argc, char **argv) ExtensionSystem::PluginManager pluginManager; pluginManager.setSettings(settings); QStringList pluginPaths; -#if !defined(NL_OS_MAC) - pluginPaths << settings->value("PluginPath", "./plugins").toString(); -#else +#if defined(NL_OS_MAC) pluginPaths << settings->value("PluginPath", qApp->applicationDirPath() + QString("/../PlugIns/ovqt")).toString(); +#else + pluginPaths << settings->value("PluginPath", QString("%1/plugins").arg(DATA_DIR)).toString(); #endif pluginManager.setPluginPaths(pluginPaths); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt index 746cc48b6..d84708f23 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt @@ -45,3 +45,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_bnp_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index dcd9bd81c..a88c6501c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -56,3 +56,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_core) ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt index 0876d192c..0b31363c0 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt @@ -41,3 +41,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt index 9e6b308a6..d0ad34245 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt @@ -39,3 +39,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt index 2e8610dfa..ac73e5503 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt @@ -45,3 +45,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt index ebff67fa5..098b2e086 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -46,3 +46,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt index a65fe1b9f..71a6a32fd 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt @@ -37,3 +37,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt index 61a55a94d..7c0272a7c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt @@ -47,3 +47,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt index e0a4697c7..61838ff3c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt @@ -164,3 +164,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt index bdb3e68e6..28c8a373d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt @@ -30,3 +30,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt index befb70845..e142c9b9d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt @@ -49,3 +49,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt index a40a0eb94..02a4a73fc 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt @@ -43,3 +43,4 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) From cb8cb918dda5f659abfe1296862468f78c39ae43 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 08:56:10 +0200 Subject: [PATCH 014/125] Changed: #1493 Fixed absolute prefixes --- code/CMakeModules/nel.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 29bedb4f4..0c784786f 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -623,15 +623,15 @@ ENDMACRO(NL_SETUP_BUILD_FLAGS) # Macro to create x_ABSOLUTE_PREFIX from x_PREFIX MACRO(NL_MAKE_ABSOLUTE_PREFIX NAME_RELATIVE NAME_ABSOLUTE) - IF(IS_ABSOLUTE ${NAME_RELATIVE}) - SET(${NAME_ABSOLUTE} ${NAME_RELATIVE}) - ELSE(IS_ABSOLUTE ${NAME_RELATIVE}) + IF(IS_ABSOLUTE "${${NAME_RELATIVE}}") + SET(${NAME_ABSOLUTE} ${${NAME_RELATIVE}}) + ELSE(IS_ABSOLUTE "${${{NAME_RELATIVE}}") IF(WIN32) SET(${NAME_ABSOLUTE} ${${NAME_RELATIVE}}) ELSE(WIN32) SET(${NAME_ABSOLUTE} ${CMAKE_INSTALL_PREFIX}/${${NAME_RELATIVE}}) ENDIF(WIN32) - ENDIF(IS_ABSOLUTE ${NAME_RELATIVE}) + ENDIF(IS_ABSOLUTE "${${NAME_RELATIVE}}") ENDMACRO(NL_MAKE_ABSOLUTE_PREFIX) MACRO(NL_SETUP_PREFIX_PATHS) From 476377dd887034fa220b2da3d986fe253ffe3467 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 08:56:49 +0200 Subject: [PATCH 015/125] Changed: Fixed plugins specs name to install --- .../3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt | 3 ++- .../tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt | 3 ++- .../object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt | 3 ++- .../3d/object_viewer_qt/src/plugins/example/CMakeLists.txt | 3 ++- .../object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt | 3 ++- .../src/plugins/landscape_editor/CMakeLists.txt | 3 ++- .../tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt | 3 ++- .../src/plugins/mission_compiler/CMakeLists.txt | 3 ++- .../object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt | 3 ++- .../src/plugins/ovqt_sheet_builder/CMakeLists.txt | 3 ++- .../src/plugins/translation_manager/CMakeLists.txt | 3 ++- .../object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt | 3 ++- 12 files changed, 24 insertions(+), 12 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt index d84708f23..d3b1e745c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt @@ -45,4 +45,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_bnp_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_bnp_manager.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index a88c6501c..7e36c6107 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -56,4 +56,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_core) ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_core.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt index 0b31363c0..f89042c7c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt @@ -41,4 +41,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_disp_sheet_id.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt index d0ad34245..c2496a2f8 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt @@ -39,4 +39,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_example.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt index ac73e5503..a69af5a27 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt @@ -45,4 +45,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt index 098b2e086..fc82afc8a 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -46,4 +46,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt index 71a6a32fd..0d9021cdb 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt @@ -37,4 +37,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_log.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt index 7c0272a7c..afd7b064a 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt @@ -47,4 +47,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_mission_compiler.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt index 61838ff3c..21349ebd5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt @@ -164,4 +164,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_object_viewer.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt index 28c8a373d..bdaa3f4c9 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt @@ -30,4 +30,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_sheet_builder.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt index e142c9b9d..0bf25a16d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt @@ -49,4 +49,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_translation_manager.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt index 02a4a73fc..8ccdd0286 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt @@ -43,4 +43,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_zone_painter.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + From 541a147d34da320016eff773a87b76abeaca79f3 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 09:49:52 +0200 Subject: [PATCH 016/125] Changed: Homogeneous carriage returns --- code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt index 7dc1445bb..099408caa 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt @@ -21,12 +21,12 @@ SET(OBJECT_VIEWER_TS translations/object_viewer_qt_en.ts SET(QT_USE_QTGUI TRUE) SET(QT_USE_QTOPENGL TRUE) - -IF(WIN32) - SET(OBJECT_VIEWER_RC object_viewer_qt.rc) + +IF(WIN32) + SET(OBJECT_VIEWER_RC object_viewer_qt.rc) ENDIF(WIN32) -QT4_ADD_TRANSLATION(OBJECT_VIEWER_QM ${OBJECT_VIEWER_TS}) +QT4_ADD_TRANSLATION(OBJECT_VIEWER_QM ${OBJECT_VIEWER_TS}) QT4_ADD_RESOURCES( OBJECT_VIEWER_RC_SRCS ${OBJECT_VIEWER_RCS}) QT4_WRAP_CPP( OBJECT_VIEWER_MOC_SRCS ${OBJECT_VIEWER_HDR} ) From ddd33c609096570f6b2ca56f83052c47575a3e07 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 09:52:35 +0200 Subject: [PATCH 017/125] Fixed: OVQT plugins loading under Unices (in the order: local, OVQT plugins, system) --- .../tools/3d/object_viewer_qt/CMakeLists.txt | 2 +- .../src/extension_system/plugin_spec.cpp | 45 +++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index b87416280..41896e9c5 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -13,7 +13,7 @@ ELSEIF(APPLE) SET(OVQT_PLUGIN_DIR "plugins") ELSE(WIN32) SET(OVQT_PLUGIN_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/plugins) - ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt/\\"") + ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt\\"" -DPLUGINS_DIR="\\"${NL_LIB_ABSOLUTE_PREFIX}/object_viewer_qt\\"") ENDIF(WIN32) IF(UNIX AND WITH_STATIC) diff --git a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp index f45eae4a1..f24cbcfb1 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp @@ -31,6 +31,10 @@ #include #include +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + namespace ExtensionSystem { const char *const PLUGIN_SPEC_NAME = "name"; @@ -143,9 +147,44 @@ bool PluginSpec::setFileName(const QString &fileName) m_fileName = m_prefix + fileName + m_suffix; m_filePath = m_location + "/" + m_fileName; + QFile file; + file.setFileName(m_filePath); + + bool exists = file.exists(); + +#ifdef NL_OS_UNIX + +#ifdef PLUGINS_DIR + if (!exists) + { + // if plugin can't be found in the same directory as spec file, + // looks for it in PLUGINS_DIR + m_filePath = QString("%1/%2").arg(PLUGINS_DIR).arg(m_fileName); + + file.setFileName(m_filePath); + + exists = file.exists(); + } +#endif + +#ifdef NL_LIB_PREFIX + if (!exists) + { + // if plugin can't be found in the same directory as spec file or PLUGINS_DIR, + // looks for it in NL_LIB_PREFIX + m_filePath = QString("%1/%2").arg(NL_LIB_PREFIX).arg(m_fileName); + + file.setFileName(m_filePath); + + exists = file.exists(); + } +#endif + +#endif + nlinfo(m_filePath.toStdString().c_str()); - QFile file(m_filePath); - if (!file.exists()) + + if (!exists) return reportError(QCoreApplication::translate("PluginSpec", "File does not exist: %1").arg(file.fileName())); if (!file.open(QIODevice::ReadOnly)) return reportError(QCoreApplication::translate("PluginSpec", "Could not open file for read: %1").arg(file.fileName())); @@ -391,4 +430,4 @@ bool PluginSpec::reportError(const QString &err) return false; } -} // namespace ExtensionSystem \ No newline at end of file +} // namespace ExtensionSystem From 0d4f383a7f5fc26967cfe2df693cdc4cf1950b8f Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 24 Sep 2012 14:02:33 +0200 Subject: [PATCH 018/125] Changed: Plugins specs and plugins installation --- code/nel/tools/3d/object_viewer_qt/CMakeLists.txt | 11 +++++++++-- .../nel/tools/3d/object_viewer_qt/ovqt_config.h.cmake | 7 +++++++ .../src/extension_system/plugin_spec.cpp | 4 ++++ code/nel/tools/3d/object_viewer_qt/src/main.cpp | 6 +++++- .../src/plugins/bnp_manager/CMakeLists.txt | 4 ++-- .../object_viewer_qt/src/plugins/core/CMakeLists.txt | 2 +- .../src/plugins/disp_sheet_id/CMakeLists.txt | 4 ++-- .../src/plugins/example/CMakeLists.txt | 4 ++-- .../src/plugins/georges_editor/CMakeLists.txt | 4 ++-- .../src/plugins/landscape_editor/CMakeLists.txt | 4 ++-- .../object_viewer_qt/src/plugins/log/CMakeLists.txt | 4 ++-- .../src/plugins/mission_compiler/CMakeLists.txt | 4 ++-- .../src/plugins/object_viewer/CMakeLists.txt | 4 ++-- .../src/plugins/ovqt_sheet_builder/CMakeLists.txt | 4 ++-- .../src/plugins/translation_manager/CMakeLists.txt | 4 ++-- .../src/plugins/zone_painter/CMakeLists.txt | 4 ++-- 16 files changed, 48 insertions(+), 26 deletions(-) create mode 100644 code/nel/tools/3d/object_viewer_qt/ovqt_config.h.cmake diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index 41896e9c5..7ee463688 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -7,13 +7,20 @@ # This tells the application(s) where to find the installed data. IF(WIN32) + SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins") ELSEIF(APPLE) # TODO: under Mac OS X, don't install but copy files in application package + SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins") ELSE(WIN32) - SET(OVQT_PLUGIN_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/plugins) - ADD_DEFINITIONS(-DDATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt\\"" -DPLUGINS_DIR="\\"${NL_LIB_ABSOLUTE_PREFIX}/object_viewer_qt\\"") + SET(OVQT_PLUGIN_SPECS_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/plugins) + SET(OVQT_PLUGIN_DIR ${NL_LIB_PREFIX}/object_viewer_qt) + + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ovqt_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ovqt_config.h) + INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) + + ADD_DEFINITIONS(-DHAVE_OVQT_CONFIG_H) ENDIF(WIN32) IF(UNIX AND WITH_STATIC) diff --git a/code/nel/tools/3d/object_viewer_qt/ovqt_config.h.cmake b/code/nel/tools/3d/object_viewer_qt/ovqt_config.h.cmake new file mode 100644 index 000000000..5b3a49654 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/ovqt_config.h.cmake @@ -0,0 +1,7 @@ +#ifndef OVQT_CONFIG_H +#define OVQT_CONFIG_H + +#define DATA_DIR "${NL_SHARE_ABSOLUTE_PREFIX}/object_viewer_qt" +#define PLUGINS_DIR "${NL_LIB_ABSOLUTE_PREFIX}/object_viewer_qt" + +#endif diff --git a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp index f24cbcfb1..fea606af2 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/extension_system/plugin_spec.cpp @@ -35,6 +35,10 @@ #include "config.h" #endif +#ifdef HAVE_OVQT_CONFIG_H +#include "ovqt_config.h" +#endif + namespace ExtensionSystem { const char *const PLUGIN_SPEC_NAME = "name"; diff --git a/code/nel/tools/3d/object_viewer_qt/src/main.cpp b/code/nel/tools/3d/object_viewer_qt/src/main.cpp index fd5432a3c..ea78905fa 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/main.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/main.cpp @@ -41,6 +41,10 @@ #include #include +#ifdef HAVE_OVQT_CONFIG_H +#include "ovqt_config.h" +#endif + static const char *appNameC = "ObjectViewerQt"; // nel_qt log file name @@ -198,4 +202,4 @@ sint main(int argc, char **argv) int result = app.exec(); return result; -} \ No newline at end of file +} diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt index d3b1e745c..f1cc41b40 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt @@ -44,6 +44,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_bnp_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_bnp_manager.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_bnp_manager.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index 7e36c6107..242a16262 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -56,5 +56,5 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_core) ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_core.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_core.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt index f89042c7c..d22f4bb03 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt @@ -40,6 +40,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_disp_sheet_id.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_disp_sheet_id.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt index c2496a2f8..6cdcd2138 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt @@ -38,6 +38,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_example.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_example.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt index a69af5a27..caeb6fc7d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt @@ -44,6 +44,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt index fc82afc8a..2e1ee0473 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -45,6 +45,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt index 0d9021cdb..22526259f 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt @@ -36,6 +36,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_log.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_log.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt index afd7b064a..44693552d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt @@ -46,6 +46,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_mission_compiler.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_mission_compiler.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt index 21349ebd5..0e2d84c71 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt @@ -163,6 +163,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_object_viewer.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_object_viewer.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt index bdaa3f4c9..5efc09bba 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt @@ -29,6 +29,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_sheet_builder.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_sheet_builder.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt index 0bf25a16d..be5fefa54 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt @@ -48,6 +48,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_translation_manager.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_translation_manager.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt index 8ccdd0286..bfc414832 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt @@ -42,6 +42,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_zone_painter.xml DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_zone_painter.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) From b858478e31a9c9941a67972203d424c0a6e0937a Mon Sep 17 00:00:00 2001 From: sfb Date: Mon, 24 Sep 2012 08:18:46 -0500 Subject: [PATCH 019/125] Removed: #1378 Removed the reference implementation, the full implementation is available at code/web/app and code/web/api. --- .../tools/server/www/webig/app_hello.php | 29 -- code/ryzom/tools/server/www/webig/index.php | 133 ------ .../tools/server/www/webig/lib/config.php | 23 - .../tools/server/www/webig/lib/functions.php | 394 ------------------ .../tools/server/www/webig/lib/pdr_util.php | 124 ------ .../www/webig/lib/pdr_util_character.php | 46 -- .../server/www/webig/lib/pdr_util_guild.php | 47 --- 7 files changed, 796 deletions(-) delete mode 100644 code/ryzom/tools/server/www/webig/app_hello.php delete mode 100644 code/ryzom/tools/server/www/webig/index.php delete mode 100644 code/ryzom/tools/server/www/webig/lib/config.php delete mode 100644 code/ryzom/tools/server/www/webig/lib/functions.php delete mode 100644 code/ryzom/tools/server/www/webig/lib/pdr_util.php delete mode 100644 code/ryzom/tools/server/www/webig/lib/pdr_util_character.php delete mode 100644 code/ryzom/tools/server/www/webig/lib/pdr_util_guild.php diff --git a/code/ryzom/tools/server/www/webig/app_hello.php b/code/ryzom/tools/server/www/webig/app_hello.php deleted file mode 100644 index 0589d9ec2..000000000 --- a/code/ryzom/tools/server/www/webig/app_hello.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - App Hello World! - - -

APP Hello World!

- - indexlogout' : '')?> - -

Character

-
- - diff --git a/code/ryzom/tools/server/www/webig/index.php b/code/ryzom/tools/server/www/webig/index.php deleted file mode 100644 index 57ddd7b55..000000000 --- a/code/ryzom/tools/server/www/webig/index.php +++ /dev/null @@ -1,133 +0,0 @@ -login error

'; - } - echo ' - - - WebIG - Login - - Login -
- - Char name
- Password
- -
- - '; - exit; -} - -// if this was login request from app, then redirect back there -$redirect = is($_GET['redirect'], ''); -if(!empty($redirect)){ - header('Location: '.$redirect); - exit; -} - -// check user privileges -$is_admin = webig_is_admin($user['cid']>>4); - -// get more info about character - race, civlization, cult, guild, etc -$character = webig_load_character($user['cid']); - -// user is verified -?> - - - App Index - - -

Hello ""!

- - index | Hello APPlogout' : '')?> - -User info'; -echo 'USER:'.dump_array($user); -echo 'CHARACTER:'.dump_array($character); - - $__end = microtime(true); - echo "
\n---\npage created ".sprintf("%.5fsec", $__end - $__start).'
'; - -?> - - - - - - '; - $c=0; - foreach($array as $k => $v){ - if(is_array($v)){ - $v = dump_array($v); - }else{ - // make value safe for html - $v = h($v); - } - echo ' - - - - '; - $c++; - } - echo ' -
'.h($k).''.$v.'
- - - '; - - return ob_get_clean(); -} - -function display_teleport_list(){ - $places = array( - 'Ranger Camp' => array(10314,-11734), - 'Shining Lake' => array(9056, -10822), - ); -?> -

Teleport destinations

- - -
- - $xyz){ - echo ' - - - - '; - $c++; - } ?> -
'.h($txt).''.join(',', $xyz).'
-
-_pdo = new PDO('mysql:host='.$GLOBALS['DBHost'].';dbname='.$GLOBALS['DBName'].';charset=utf-8', $GLOBALS['DBUserName'], $GLOBALS['DBPassword'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8')); - $this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } - - public function getInstance(){ - static $instance = null; - if($instance === null){ - $instance = new DB(); - } - return $instance; - } - - /** - * @param string $sql - * @param array $params (optional) - * @return PDOStatement - */ - function query($sql, $params=array()){ - if(empty($params)){ - $stmt = $this->_pdo->query($sql); - }else{ - $stmt = $this->_pdo->prepare($sql); - $stmt->execute($params); - } - return $stmt; - } -} - -/** - * Verify and log-in user - * - * @return mixed user info array or boolean FALSE when user was not verified - */ -function app_authenticate(){ - // mask possible double session_start() warning - @session_start(); - - if(isWEBIG){ - // ingame login - - // gather user from $_GET or $_POST variables - $user = webig_user(); - - // verify it against database - $user = webig_auth($user); - }else{ - // outgame login - - if(isset($_POST['login'])){ - // login request - $shardid = is($_POST['login']['shardid'], ''); - $name = is($_POST['login']['name'], ''); - $passwd = is($_POST['login']['passwd'], ''); - - // verify character and password against database and populate $_GET with user info - $user = login_auth($shardid, $name, $passwd); - $_SESSION['login']['error'] = ($user === false); - }elseif(isset($_GET['logout'])){ - // logout request - unset($_SESSION['user']); - unset($_SESSION['authkey']); - - // redirect to self without URL parameters - header('Location: '.$_SERVER['PHP_SELF']); - exit; - }else{ - // continue session - $user = is($_SESSION['user'], false); - - // verify user in session against database (e.g. user might be deleted) - $user = load_user($user['shardid'], null, $user['cid']); - } - } - - // auth failed? - if(empty($user)){ - return false; - } - - // remove values we do not need to keep in session - unset($user['password']); - unset($user['cookie']); - - // return user info array on success - $_SESSION['user'] = $user; - return $user; -} - -// get user info that WebIG sends us -function webig_user(){ - $user = array(); - - // shard id (302) - $user['shardid'] = ryzom_get_param('shardid'); - - // character name (User) - $user['name'] = ryzom_get_param('name'); - - // character id (16), user id is calculated as 'uid = cid >> 4'; - $user['cid'] = ryzom_get_param('cid'); - - // language - $user['lang'] = ryzom_get_param('lang'); - - $user['authkey'] = ryzom_get_param('authkey'); - - return $user; -} - -/** - * Verify character using info from ig browser - * - * @param array $user - * @return bool return user info array on success and FALSE on error - */ -function webig_auth($user){ - // find user by shard and character id (name might be temporarily changed in game) - $result = load_user($user['shardid'], null, $user['cid']); - if(empty($result)){ - // should not happen, but user was not found - return false; - } - - // Create auth key by using cookie from DB and user info from user - $authkey = webig_create_authkey($user, $result['cookie']); - if($user['authkey'] !== $authkey){ - // something is out of sync - either user info or cookie - return false; - } - - // return result from DB - return $result; -} - -/** - * Verify character - * - * @param int $shardid character shard id - * @param string $name character name - * @param string $passwd plain text password - * @return mixed return user info array on success or boolean false on error - */ -function login_auth($shardid, $name, $passwd){ - // get character from db - $user = load_user($shardid, $name); - if(empty($user)){ - // user was not found - return false; - } - - $passwd = crypt($passwd, substr($user['password'], 0, 2)); - if($passwd !== $user['password']){ - // password failed - return false; - } - - return $user; -} - -/** - * Fetch user info from db - * - * If name is NULL, then $cid is used - * - * @param int $shardid - * @param string $name - * @param int $cid - * @return array - */ -function load_user($shardid, $name, $cid = null){ - // `nel`.`user` has password - // `ring_open`.`ring_users` has cookie - // `ring_open`.`characters` has char_id, char_name, home_mainland_session_id(==shardid) - - $sql = 'SELECT c.`char_id` cid, c.`char_name` name, c.`home_mainland_session_id` shardid, n.`password`, u.`cookie` - FROM `ring_open`.`characters` c - JOIN `ring_open`.`ring_users` u on u.`user_id` = c.`user_id` - JOIN `nel`.`user` n on n.`uid` = c.`user_id` - WHERE c.`home_mainland_session_id` = :shardid'; - $params = array('shardid' => $shardid); - if($name !== null){ - $sql .= ' AND c.`char_name` = :name'; - $params['name'] = $name; - }elseif($cid !== null){ - $sql .= ' AND c.`char_id` = :cid'; - $params['cid'] = $cid; - }else{ - // $name or $cid both empty - return false; - } - - $result = DB::getInstance()->query($sql, $params)->fetch(PDO::FETCH_ASSOC); - return $result; -} - -/** - * Verify user info that ig browser sent us using cookie from database - * - * @param array $user user info array - * @param string $cookie User login cookie from database - * @return string md5 hash - */ -function webig_create_authkey($user, $cookie){ - return md5($user['shardid'].$user['name'].$user['cid'].'\''.$cookie.'\''); -} - -/** - * Return user privileges from DB - * - * @param int $uid user id (uid = cid >> 4) - * @return mixed array of user privileges or boolean FALSE when user was not found - */ -function webig_get_privileges($uid){ - $sql = 'select `privilege` from `nel`.`user` where `uid` = :id'; - $params = array('id' => $uid); - - $result = DB::getInstance()->query($sql, $params)->fetchColumn(0); - - if($result !== false){ - $result = explode(':', $result); - $ret = array(); - foreach($result as $k=>$v){ - if($v != ''){ - $ret[]=$v; - } - } - $result = $ret; - } - - return $result; -} - -/** - * Test user privileges - * - * @param int $uid user id - * @param array $priv array of privileges, like array('DEV', 'GM') - * @return bool - */ -function webig_has_privileges($uid, $priv){ - $userpriv = webig_get_privileges($uid); - $result = array_intersect($priv, $userpriv); - return !empty($result); -} - -/** - * Test user privileges against (DEV, SGM, GM) - * - * @param int $uid user id - * @return bool - */ -function webig_is_admin($uid){ - // entities_game_service/player_manager/player_manager.cpp defines order - // DEV > SGM > EM > GM > EG > VG > SG > G > OBSERVER > PR - return webig_has_privileges($uid, array('DEV', 'SGM', 'EM', 'GM')); -} - -/** - * Load character from shard save binary file - * - * @param int $cid - * @return mixed array with character info or boolean FALSE on error - */ -function webig_load_character($cid){ - $pdr = CharacterPdr::createDefault(); - $char = $pdr->load($cid); - if(empty($char)){ - return false; - } - - $result = array( - 'id' => (int) $cid, - 'name' => (string) $char->EntityBase->_Name['value'], - 'title' => (string) $char->_Title['value'], - 'race' => (string) $char->EntityBase->_Race['value'], - 'gender' => (int) $char->EntityBase->_Gender['value'] == '0' ? 'male' : 'female', - 'cult' => (string) $char->DeclaredCult['value'], - 'civ' => (string) $char->DeclaredCiv['value'], - 'guild' => false, - ); - - $guild_id = (int) $char->_GuildId['value']; - if($guild_id>0){ - // if char is in guild, then also get guild info - $result['guild'] = webig_load_guild($guild_id); - - // get guild rank (also from guild file) - $result['guild_membership'] = webig_load_guild_membership($guild_id, $cid); - } - unset($char); - - return $result; -} - -/** - * Load basic guild info (name, description, motd, culv, civ) - * - * @param int $guild_id - * @return mixed array with guild info or boolean FALSE on error - */ -function webig_load_guild($guild_id){ - $pdr = GuildPdr::createDefault(); - $guild = $pdr->load($guild_id); - if(empty($guild)){ - return false; - } - - $result = array( - 'id' => (int) $guild_id, - 'icon' => (string) $guild->Icon['value'], - 'name' => (string) $guild->_Name['value'], - 'description' => (string) $guild->_Description['value'], - 'motd' => (string) $guild->_MessageOfTheDay['value'], - 'cult' => (string) $guild->DeclaredCult['value'], - 'civ' => (string) $guild->DeclaredCiv['value'], - ); - unset($guild); - - return $result; -} - -/** - * Load guild member info - * - * @param int $guild_id - * @param int $char_id - * @return mixed array with guild member info or boolean FALSE if guild or character not found - */ -function webig_load_guild_membership($guild_id, $char_id){ - $pdr = GuildPdr::createDefault(); - $guild = $pdr->load($guild_id); - if(empty($guild)){ - return false; - } - - $result = false; - - // test for 'id' and type (CHAR == 0), ignore creator (should be 0x00) and dynamic - // 0x0000000013:00:00:87 - $eid = sprintf('0x%010x:00:', $char_id); - $i = 0; - while(isset($guild->Members->__Key__[$i])){ - $key = $guild->Members->__Key__[$i]; - $pos = strpos((string)$key['value'], $eid); - if($pos === 1){ - $val = $guild->Members->__Val__[$i]; - $result = array( - 'grade' => (string) $val->Members->Grade['value'], - 'joined' => (int) $val->Members->EnterTime['value'], - ); - break; - } - $i++; - } - unset($guild); - - return $result; -} - -// shortcut for 'isset() ? .. : ..' -function is(&$var, $default = null){ - return isset($var) ? $var : $default; -} - -// escape string so it's safe for HTML -function h($str){ - return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); -} - -// return $_GET[var] or $_POST[var] or $default -function ryzom_get_param($var, $default=''){ - return is($_GET[$var], is($_POST[$var], $default)); -} \ No newline at end of file diff --git a/code/ryzom/tools/server/www/webig/lib/pdr_util.php b/code/ryzom/tools/server/www/webig/lib/pdr_util.php deleted file mode 100644 index 1e28124a8..000000000 --- a/code/ryzom/tools/server/www/webig/lib/pdr_util.php +++ /dev/null @@ -1,124 +0,0 @@ -_shard_save = $shard_save; - $this->_sheetid_dir = $sheetid_dir; - - $this->_unpack_dir = $unpack; - } - - function setShardSaveDirectory($dir){ - $this->_shard_save = $dir; - } - function getShardSaveDirectory(){ - return $this->_shard_save; - } - - function setSheetIdDirectory($dir){ - $this->_sheetid_dir = $dir; - } - function getSheetIdDirectory(){ - return $this->_sheetid_dir; - } - - function setUnpackDirectory($dir){ - $this->_unpack_dir = $dir; - } - function getUnpackDirectory(){ - return $this->_unpack_dir; - } - - /** - * Extract $pdr file to $xml file - * - * @param string $pdr - * @param string $xml - * @return bool - */ - function extract($pdr, $xml){ - if(!file_exists($pdr)){ - return false; - } - - $pdr_mtime = filemtime($pdr); - if(file_exists($xml)){ - $xml_mtime = filemtime($xml); - }else{ - $xml_mtime = 0; - } - - $diff = $pdr_mtime - $xml_mtime; - if($diff > self::CACHE_MIN_TIME){ - // remove expired xml file - @unlink($xml); - - // change working directory to unpack directory to keep pdr_util log file in one place - $pwd = getcwd(); - chdir($this->_unpack_dir); - - // run pdr_util - $cmd = sprintf(' -s%s -x -o%s %s', $this->_sheetid_dir, $xml, $pdr); - exec(CMD_PDR_UTIL.' '.$cmd); - - // change working directory back what it was before - chdir($pwd); - } - - // if pdr_util failed, then there is no xml file - return file_exists($xml); - } - - /** - * @param string $fname - * @return string ShardSaveDirectory + fname - */ - function getSaveFileName($fname){ - return $this->getShardSaveDirectory().'/'.$fname; - } - - /** - * @param string $fname - * return string TempDirectory + $fname - */ - function getXmlFileName($fname){ - return $this->getUnpackDirectory().'/'.$fname; - } - -} - diff --git a/code/ryzom/tools/server/www/webig/lib/pdr_util_character.php b/code/ryzom/tools/server/www/webig/lib/pdr_util_character.php deleted file mode 100644 index 7e2d689ce..000000000 --- a/code/ryzom/tools/server/www/webig/lib/pdr_util_character.php +++ /dev/null @@ -1,46 +0,0 @@ -getSaveFileName($char_id >> 4, $char_id & 0x0F); - $xml_file = $this->getXmlFileName($char_id); - - if($this->extract($char_save, $xml_file)){ - return simplexml_load_file($xml_file); - } - - // extract failed - return false; - } - - /** - * @param int $uid user id - * @param int $slot character slot, starting from 0 - * @return string character save path + filename - */ - function getSaveFileName($uid, $slot){ - return parent::getSaveFileName(sprintf('characters/%03d/account_%d_%d_pdr.bin', $uid, $uid, $slot)); - } - - /** - * @param $char_id - * return string character xml file in unpack directory - */ - function getXmlFileName($char_id){ - return parent::getXmlFileName(sprintf('character_%d.xml', $char_id)); - } -} diff --git a/code/ryzom/tools/server/www/webig/lib/pdr_util_guild.php b/code/ryzom/tools/server/www/webig/lib/pdr_util_guild.php deleted file mode 100644 index 54249f781..000000000 --- a/code/ryzom/tools/server/www/webig/lib/pdr_util_guild.php +++ /dev/null @@ -1,47 +0,0 @@ -getSaveFileName($guild_id); - $xml_file = $this->getXmlFileName($guild_id); - - if($this->extract($guild_save, $xml_file)){ - return simplexml_load_file($xml_file); - } - - // extract failed - return false; - } - - /** - * @param int $guild_id - * @return string full path to guild binary file - */ - function getSaveFileName($guild_id){ - // chop off shard component from guild id - return parent::getSaveFileName(sprintf('guilds/guild_%05d.bin', $guild_id & 0xFFFFF)); - } - - /** - * @param $guild_id - * return string full path to extracted guild xml file - */ - function getXmlFileName($guild_id){ - return parent::getXmlFileName(sprintf('guild_%d.xml', $guild_id)); - } -} - From fc8c26ff9f7fa8da3b9d6ae0ebcc55b4751734c1 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 25 Sep 2012 12:19:13 +0200 Subject: [PATCH 020/125] Fixed: #1254 Error while compiling with current stable squish --- code/CMakeModules/FindSquish.cmake | 7 ++++++- code/nel/tools/3d/CMakeLists.txt | 1 + code/nel/tools/3d/hls_bank_maker/CMakeLists.txt | 6 ++---- code/nel/tools/3d/panoply_maker/CMakeLists.txt | 6 ++---- .../tools/3d/s3tc_compressor_lib/CMakeLists.txt | 16 ++++++++++++++++ .../3d/s3tc_compressor_lib/s3tc_compressor.cpp | 4 ++++ code/nel/tools/3d/tga_2_dds/CMakeLists.txt | 6 ++---- 7 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt diff --git a/code/CMakeModules/FindSquish.cmake b/code/CMakeModules/FindSquish.cmake index 04f657485..ad0f7ce80 100644 --- a/code/CMakeModules/FindSquish.cmake +++ b/code/CMakeModules/FindSquish.cmake @@ -12,7 +12,7 @@ IF(SQUISH_LIBRARIES AND SQUISH_INCLUDE_DIR) SET(SQUISH_FIND_QUIETLY TRUE) ENDIF(SQUISH_LIBRARIES AND SQUISH_INCLUDE_DIR) -FIND_PATH(SQUISH_INCLUDE_DIR +FIND_PATH(SQUISH_INCLUDE_DIR squish.h PATHS /usr/local/include @@ -67,6 +67,11 @@ IF(SQUISH_FOUND) IF(NOT SQUISH_FIND_QUIETLY) MESSAGE(STATUS "Found Squish: ${SQUISH_LIBRARIES}") ENDIF(NOT SQUISH_FIND_QUIETLY) + FILE(STRINGS ${SQUISH_INCLUDE_DIR}/squish.h METRIC REGEX "metric = 0") + IF(METRIC) + SET(SQUISH_COMPRESS_HAS_METRIC ON) + SET(SQUISH_DEFINITIONS -DSQUISH_COMPRESS_HAS_METRIC) + ENDIF(METRIC) ELSE(SQUISH_FOUND) IF(NOT SQUISH_FIND_QUIETLY) MESSAGE(STATUS "Warning: Unable to find Squish!") diff --git a/code/nel/tools/3d/CMakeLists.txt b/code/nel/tools/3d/CMakeLists.txt index 2d8c4a03a..58360aec0 100644 --- a/code/nel/tools/3d/CMakeLists.txt +++ b/code/nel/tools/3d/CMakeLists.txt @@ -51,6 +51,7 @@ IF(WITH_QT) ENDIF(WITH_QT) IF(SQUISH_FOUND) + ADD_SUBDIRECTORY(s3tc_compressor_lib) ADD_SUBDIRECTORY(panoply_maker) ADD_SUBDIRECTORY(tga_2_dds) ADD_SUBDIRECTORY(hls_bank_maker) diff --git a/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt b/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt index 4b4717087..5b3189b2d 100644 --- a/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt +++ b/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt @@ -1,10 +1,8 @@ -FILE(GLOB SRC *.cpp *.h ../panoply_maker/hls_bank_texture_info.cpp ../panoply_maker/hls_bank_texture_info.h ../s3tc_compressor_lib/*.cpp ../s3tc_compressor_lib/*.h) +FILE(GLOB SRC *.cpp *.h ../panoply_maker/hls_bank_texture_info.cpp ../panoply_maker/hls_bank_texture_info.h) ADD_EXECUTABLE(hls_bank_maker ${SRC}) -INCLUDE_DIRECTORIES(${SQUISH_INCLUDE_DIR}) - -TARGET_LINK_LIBRARIES(hls_bank_maker ${SQUISH_LIBRARIES} nelmisc nel3d) +TARGET_LINK_LIBRARIES(hls_bank_maker s3tc_compressor nelmisc nel3d) NL_DEFAULT_PROPS(hls_bank_maker "NeL, Tools, 3D: hls_bank_maker") NL_ADD_RUNTIME_FLAGS(hls_bank_maker) diff --git a/code/nel/tools/3d/panoply_maker/CMakeLists.txt b/code/nel/tools/3d/panoply_maker/CMakeLists.txt index 4a39ab154..2b17b4877 100644 --- a/code/nel/tools/3d/panoply_maker/CMakeLists.txt +++ b/code/nel/tools/3d/panoply_maker/CMakeLists.txt @@ -1,10 +1,8 @@ -FILE(GLOB SRC *.cpp *.h ../s3tc_compressor_lib/*.h ../s3tc_compressor_lib/*.cpp) +FILE(GLOB SRC *.cpp *.h) ADD_EXECUTABLE(panoply_maker ${SRC}) -INCLUDE_DIRECTORIES(${SQUISH_INCLUDE_DIR}) - -TARGET_LINK_LIBRARIES(panoply_maker ${SQUISH_LIBRARIES} nelmisc nel3d) +TARGET_LINK_LIBRARIES(panoply_maker s3tc_compressor nelmisc nel3d) NL_DEFAULT_PROPS(panoply_maker "NeL, Tools, 3D: panoply_maker") NL_ADD_RUNTIME_FLAGS(panoply_maker) diff --git a/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt b/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt new file mode 100644 index 000000000..e40b5abf8 --- /dev/null +++ b/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt @@ -0,0 +1,16 @@ +FILE(GLOB SRC *.cpp) +FILE(GLOB HEADER *.h) + +INCLUDE_DIRECTORIES(${SQUISH_INCLUDE_DIR}) + +NL_TARGET_LIB(s3tc_compressor ${SRC} ${HEADER}) + +TARGET_LINK_LIBRARIES(s3tc_compressor ${SQUISH_LIBRARIES}) +NL_DEFAULT_PROPS(s3tc_compressor "NeL, Tools, 3D: S3TC Compressor Library") +NL_ADD_RUNTIME_FLAGS(s3tc_compressor) + +ADD_DEFINITIONS(${SQUISH_DEFINITIONS}) + +IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) + INSTALL(TARGETS s3tc_compressor LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/tools/3d/s3tc_compressor_lib/s3tc_compressor.cpp b/code/nel/tools/3d/s3tc_compressor_lib/s3tc_compressor.cpp index f714dcd6d..6423f77f2 100644 --- a/code/nel/tools/3d/s3tc_compressor_lib/s3tc_compressor.cpp +++ b/code/nel/tools/3d/s3tc_compressor_lib/s3tc_compressor.cpp @@ -60,8 +60,12 @@ static void compressMipMap(uint8 *pixSrc, sint width, sint height, vector Date: Tue, 25 Sep 2012 12:33:02 +0200 Subject: [PATCH 021/125] Changed: #825 Remove all warnings when compiling Ryzom --- code/CMakeModules/nel.cmake | 4 +- code/nel/include/nel/misc/eval_num_expr.h | 2 +- code/nel/include/nel/net/message_recorder.h | 2 +- code/nel/src/3d/tangent_space_build.cpp | 6 +- code/nel/src/misc/eval_num_expr.cpp | 2 +- code/nel/src/misc/i18n.cpp | 6 +- code/nel/src/misc/time_nl.cpp | 6 + .../tools/3d/tile_edit_qt/browser_model.cpp | 17 ++- code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c | 2 +- .../tools/3d/tile_edit_qt/pic/Pic_Manage.c | 2 +- code/nel/tools/3d/tile_edit_qt/pic/pic.h | 2 +- .../tools/3d/tile_edit_qt/pic/pic_private.h | 140 +++++++++--------- code/ryzom/client/src/character_cl.cpp | 2 +- code/ryzom/client/src/init.cpp | 3 +- .../src/interface_v3/action_handler_help.cpp | 4 +- .../interface_v3/animal_position_state.cpp | 2 +- .../src/interface_v3/brick_learned_callback.h | 1 + .../client/src/interface_v3/chat_window.h | 2 +- .../client/src/interface_v3/group_html.cpp | 4 +- .../client/src/interface_v3/group_menu.cpp | 2 +- .../client/src/interface_v3/interface_anim.h | 4 +- .../src/interface_v3/interface_expr.cpp | 4 +- .../src/interface_v3/interface_manager.h | 1 + code/ryzom/client/src/r2/dmc/dmc.h | 2 +- code/ryzom/common/src/game_share/ai_wrapper.h | 4 + code/ryzom/tools/assoc_mem/field.h | 2 +- code/ryzom/tools/assoc_mem/node.h | 2 +- code/ryzom/tools/assoc_mem/record.h | 2 +- .../src/georgesform_model.cpp | 2 + .../src/georgesform_proxy_model.cpp | 2 + .../translation_tools/extract_bot_names.cpp | 4 +- 31 files changed, 135 insertions(+), 105 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 0c784786f..fb7ff9a3f 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -527,7 +527,7 @@ MACRO(NL_SETUP_BUILD) ENDIF(HOST_CPU STREQUAL "x86" AND TARGET_CPU STREQUAL "x86_64") ENDIF(APPLE) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -D_REENTRANT -pipe -ftemplate-depth-48 -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") + SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -D_REENTRANT -pipe -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") IF(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -ansi") @@ -581,7 +581,7 @@ MACRO(NL_SETUP_BUILD) SET(PLATFORM_CFLAGS "-fPIC ${PLATFORM_CFLAGS}") ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) - SET(PLATFORM_CXXFLAGS ${PLATFORM_CFLAGS}) + SET(PLATFORM_CXXFLAGS "${PLATFORM_CFLAGS} -ftemplate-depth-48") IF(NOT APPLE) SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--no-undefined -Wl,--as-needed") diff --git a/code/nel/include/nel/misc/eval_num_expr.h b/code/nel/include/nel/misc/eval_num_expr.h index 18cb14725..8551e49df 100644 --- a/code/nel/include/nel/misc/eval_num_expr.h +++ b/code/nel/include/nel/misc/eval_num_expr.h @@ -241,7 +241,7 @@ private: LogicalXor, // ^^ OperatorCount, // NotOperator, // This is not an operator - ExtOperator, // This is a 2 charcters operator + ExtOperator, // This is a 2 characters operator }; // Functions diff --git a/code/nel/include/nel/net/message_recorder.h b/code/nel/include/nel/net/message_recorder.h index a7b5ac51f..5874aca4c 100644 --- a/code/nel/include/nel/net/message_recorder.h +++ b/code/nel/include/nel/net/message_recorder.h @@ -79,7 +79,7 @@ struct TMessageRecord stream.serial( s_event ); uint32 sockId; stream.serialHex( sockId ); - SockId = (NLNET::TSockId)sockId; + SockId = (NLNET::TSockId)(size_t)sockId; len = Message.length(); stream.serial( len ); stream.serialBuffer( const_cast(Message.buffer()), len ); // assumes the message contains plain text diff --git a/code/nel/src/3d/tangent_space_build.cpp b/code/nel/src/3d/tangent_space_build.cpp index 17e106615..8a1b1100a 100644 --- a/code/nel/src/3d/tangent_space_build.cpp +++ b/code/nel/src/3d/tangent_space_build.cpp @@ -214,9 +214,9 @@ bool BuildTangentSpace(CMesh::CMeshBuild &outMeshBuild, const CMesh::CMeshBuild if (!canShare) continue; // Get indices of vertices of current tri - const uint indices[] = { f.Corner[0].Vertex, - f.Corner[1].Vertex, - f.Corner[2].Vertex }; + const uint indices[] = { (uint)f.Corner[0].Vertex, + (uint)f.Corner[1].Vertex, + (uint)f.Corner[2].Vertex }; NLMISC::CTriangle tri; // Build it BuildTriFromMB(outMeshBuild, indices, tri); diff --git a/code/nel/src/misc/eval_num_expr.cpp b/code/nel/src/misc/eval_num_expr.cpp index cf543c260..de7f3b2bf 100644 --- a/code/nel/src/misc/eval_num_expr.cpp +++ b/code/nel/src/misc/eval_num_expr.cpp @@ -1309,7 +1309,7 @@ const int CEvalNumExpr::_OperatorPrecedence[]= 9, // LogicalAnd 10, // LogicalOr 11, // LogicalXor - 0xffffffff, // OperatorCount + -1, // OperatorCount 20, // NotOperator }; diff --git a/code/nel/src/misc/i18n.cpp b/code/nel/src/misc/i18n.cpp index 92da17250..c68b190c5 100644 --- a/code/nel/src/misc/i18n.cpp +++ b/code/nel/src/misc/i18n.cpp @@ -914,9 +914,9 @@ void CI18N::_readTextFile(const string &filename, void CI18N::readTextBuffer(uint8 *buffer, uint size, ucstring &result, bool forceUtf8) { - static uint8 utf16Header[] = {char(0xff), char(0xfe)}; - static uint8 utf16RevHeader[] = {char(0xfe), char(0xff)}; - static uint8 utf8Header[] = {char(0xef), char(0xbb), char(0xbf)}; + static uint8 utf16Header[] = { 0xffu, 0xfeu }; + static uint8 utf16RevHeader[] = { 0xfeu, 0xffu }; + static uint8 utf8Header[] = { 0xefu, 0xbbu, 0xbfu }; if (forceUtf8) { diff --git a/code/nel/src/misc/time_nl.cpp b/code/nel/src/misc/time_nl.cpp index dd43fd2f7..422ba192f 100644 --- a/code/nel/src/misc/time_nl.cpp +++ b/code/nel/src/misc/time_nl.cpp @@ -280,11 +280,17 @@ void CTime::probeTimerInfo(CTime::CTimerInfo &result) else result.RequiresSingleCore = false; if (result.HighPrecisionResolution == 14318180) + { nldebug("Detected known HPET era timer frequency"); + } if (result.HighPrecisionResolution == 3579545) + { nldebug("Detected known AHCI era timer frequency"); + } if (result.HighPrecisionResolution == 1193182) + { nldebug("Detected known i8253/i8254 era timer frequency"); + } } } diff --git a/code/nel/tools/3d/tile_edit_qt/browser_model.cpp b/code/nel/tools/3d/tile_edit_qt/browser_model.cpp index 8b8e4ae75..6b22e2f8e 100644 --- a/code/nel/tools/3d/tile_edit_qt/browser_model.cpp +++ b/code/nel/tools/3d/tile_edit_qt/browser_model.cpp @@ -317,6 +317,8 @@ bool TileList::setTile128 (int tile, const std::string& name, NL3D::CTile::TBitm case CTile::alpha: theList128[tile].alphaLoaded=0; break; + default: + break; } Reload(tile, tile + 1, _128x128); } @@ -378,6 +380,8 @@ bool TileList::setTile256 (int tile, const std::string& name, NL3D::CTile::TBitm case CTile::alpha: theList256[tile].alphaLoaded=0; break; + default: + break; } Reload(tile, tile + 1, _256x256); } @@ -442,6 +446,8 @@ bool TileList::setTileTransition (int tile, const std::string& name, NL3D::CTile case CTile::alpha: theListTransition[tile].alphaLoaded=0; break; + default: + break; } Reload(tile, tile + 1, Transition); } @@ -603,6 +609,8 @@ void TileList::clearTile128 (int index, CTile::TBitmap bitmap) case CTile::alpha: nlassert(0); break; + default: + break; } tileBankBrowser.getTileSet (_tileSet)->clearTile128 (index, bitmap, tileBankBrowser); } @@ -622,6 +630,8 @@ void TileList::clearTile256 (int index, CTile::TBitmap bitmap) case CTile::alpha: nlassert(0); break; + default: + break; } tileBankBrowser.getTileSet (_tileSet)->clearTile256 (index, bitmap, tileBankBrowser); } @@ -642,6 +652,8 @@ void TileList::clearTransition (int index, CTile::TBitmap bitmap) theListTransition[index].alphaLoaded=0; theListTransition[index].alphaBits.resize(0); break; + default: + break; } tileBankBrowser.getTileSet (_tileSet)->clearTransition ((CTileSet::TTransition)index, bitmap, tileBankBrowser); } @@ -660,6 +672,8 @@ void TileList::clearDisplacement (int index, CTile::TBitmap bitmap) case CTile::alpha: nlassert(0); break; + default: + break; } tileBankBrowser.getTileSet (_tileSet)->clearDisplacement ((CTileSet::TDisplacement)index, tileBankBrowser); @@ -717,7 +731,8 @@ void TileList::Reload(int first, int last, TileType n) //recharge en memoire une theList[n][i].Load (index, NULL); break; } - + default: + break; } } } diff --git a/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c b/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c index 332ee1b0d..53dc957f5 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c @@ -31,7 +31,7 @@ typedef struct BMP_HEADER /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_BMP_Write( unsigned char *FileName, +unsigned long Pic_BMP_Write( const char *FileName, unsigned char *pPal,unsigned char *pDatas, unsigned long w, unsigned long h, unsigned long d) diff --git a/code/nel/tools/3d/tile_edit_qt/pic/Pic_Manage.c b/code/nel/tools/3d/tile_edit_qt/pic/Pic_Manage.c index 6efaf0f03..ccc8cdc12 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/Pic_Manage.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/Pic_Manage.c @@ -504,7 +504,7 @@ static char* ConvPic(PIC_PICTURE *pic, unsigned long type, char* pErr) /* ---------------------------------------- */ -unsigned long PIC_Save(unsigned long id, char* FileName, unsigned long type, unsigned long qual) +unsigned long PIC_Save(unsigned long id, const char* FileName, unsigned long type, unsigned long qual) { PIC_PICTURE *pic; unsigned char err; diff --git a/code/nel/tools/3d/tile_edit_qt/pic/pic.h b/code/nel/tools/3d/tile_edit_qt/pic/pic.h index 761073552..cec5a0ff0 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/pic.h +++ b/code/nel/tools/3d/tile_edit_qt/pic/pic.h @@ -22,7 +22,7 @@ extern unsigned long PIC_Load(char* FileName, unsigned char Quantize); extern unsigned long PIC_Create(unsigned char* pPal, unsigned char* pDatas, unsigned long w, unsigned long h, unsigned long d); -extern unsigned long PIC_Save(unsigned long id, char* FileName, unsigned long type, unsigned long qual); +extern unsigned long PIC_Save(unsigned long id, const char* FileName, unsigned long type, unsigned long qual); extern unsigned long PIC_GetInfos( unsigned long id, unsigned char* *ppPal, unsigned char* *ppDatas, diff --git a/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h b/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h index 2ecd984b7..53166396d 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h +++ b/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h @@ -1,71 +1,71 @@ -#ifndef _PIC_PRIVATE_H_ -#define _PIC_PRIVATE_H_ -#ifdef __cplusplus -extern "C" { -#endif - -/* ---------------------------------------------------------------------------------------------------------------------------------- */ - -typedef struct PIC_PICTURE -{ - unsigned long ID; - unsigned long Width; - unsigned long Height; - unsigned long Depth; - unsigned char *pDatas; - unsigned char *pPal; - struct PIC_PICTURE *Next; -} PIC_PICTURE; - -/* ---------------------------------------------------------------------------------------------------------------------------------- */ - - -/* - * JPG - */ - - -extern unsigned long Pic_JPG_Read( unsigned char *FileName, - unsigned char **ppPal, unsigned char **ppDatas, - unsigned long *w, unsigned long *h); - -extern unsigned long Pic_JPG_Write( unsigned char *FileName, - unsigned long Qual, - unsigned char *pDatas, - unsigned long w, unsigned long h); -/* - * TGA - */ -extern unsigned long Pic_TGA_Read( unsigned char *FileName, - unsigned char **ppPal, unsigned char **ppDatas, - unsigned long *pWidth, unsigned long *pHeight, - unsigned long *pDepth); -extern unsigned long Pic_TGA_Write( unsigned char *FileName, - unsigned char *pPal,unsigned char *pDatas, - unsigned long w, unsigned long h, unsigned long d); -/* - * BMP - */ -extern unsigned long Pic_BMP_Read( unsigned char *FileName, - unsigned char **ppPal, unsigned char **ppDatas, - unsigned long *pWidth, unsigned long *pHeight, - unsigned long *pDepth); - -extern unsigned long Pic_BMP_Write( unsigned char *FileName, - unsigned char *pPal,unsigned char *pDatas, - unsigned long w, unsigned long h, unsigned long d); -/* - * System - */ -extern void* Pic_malloc(unsigned long size); -extern void* Pic_calloc(unsigned long count, unsigned long size); -extern void Pic_free(void *memblock); -extern unsigned long Pic__msize(void *memblock); -extern void Pic_SetError(unsigned char *msg, ...); - -/* ---------------------------------------------------------------------------------------------------------------------------------- */ - -#ifdef __cplusplus -} -#endif +#ifndef _PIC_PRIVATE_H_ +#define _PIC_PRIVATE_H_ +#ifdef __cplusplus +extern "C" { +#endif + +/* ---------------------------------------------------------------------------------------------------------------------------------- */ + +typedef struct PIC_PICTURE +{ + unsigned long ID; + unsigned long Width; + unsigned long Height; + unsigned long Depth; + unsigned char *pDatas; + unsigned char *pPal; + struct PIC_PICTURE *Next; +} PIC_PICTURE; + +/* ---------------------------------------------------------------------------------------------------------------------------------- */ + + +/* + * JPG + */ + + +extern unsigned long Pic_JPG_Read( unsigned char *FileName, + unsigned char **ppPal, unsigned char **ppDatas, + unsigned long *w, unsigned long *h); + +extern unsigned long Pic_JPG_Write( unsigned char *FileName, + unsigned long Qual, + unsigned char *pDatas, + unsigned long w, unsigned long h); +/* + * TGA + */ +extern unsigned long Pic_TGA_Read( unsigned char *FileName, + unsigned char **ppPal, unsigned char **ppDatas, + unsigned long *pWidth, unsigned long *pHeight, + unsigned long *pDepth); +extern unsigned long Pic_TGA_Write( unsigned char *FileName, + unsigned char *pPal,unsigned char *pDatas, + unsigned long w, unsigned long h, unsigned long d); +/* + * BMP + */ +extern unsigned long Pic_BMP_Read( unsigned char *FileName, + unsigned char **ppPal, unsigned char **ppDatas, + unsigned long *pWidth, unsigned long *pHeight, + unsigned long *pDepth); + +extern unsigned long Pic_BMP_Write( const char *FileName, + unsigned char *pPal,unsigned char *pDatas, + unsigned long w, unsigned long h, unsigned long d); +/* + * System + */ +extern void* Pic_malloc(unsigned long size); +extern void* Pic_calloc(unsigned long count, unsigned long size); +extern void Pic_free(void *memblock); +extern unsigned long Pic__msize(void *memblock); +extern void Pic_SetError(unsigned char *msg, ...); + +/* ---------------------------------------------------------------------------------------------------------------------------------- */ + +#ifdef __cplusplus +} +#endif #endif diff --git a/code/ryzom/client/src/character_cl.cpp b/code/ryzom/client/src/character_cl.cpp index 435698226..2f947e198 100644 --- a/code/ryzom/client/src/character_cl.cpp +++ b/code/ryzom/client/src/character_cl.cpp @@ -4522,7 +4522,7 @@ void CCharacterCL::applyBehaviourFlyingHPs(const CBehaviourContext &bc, const MB { if(behaviour.DeltaHP != 0) { - CRGBA deltaHPColor; + CRGBA deltaHPColor(0, 0, 0); // if it's a hit if( behaviour.DeltaHP < 0 ) { diff --git a/code/ryzom/client/src/init.cpp b/code/ryzom/client/src/init.cpp index bb2540824..ba6fc74f6 100644 --- a/code/ryzom/client/src/init.cpp +++ b/code/ryzom/client/src/init.cpp @@ -787,7 +787,6 @@ void prelogInit() CPath::remapExtension ("png", "tga", true); FPU_CHECKER_ONCE - uint i; addPreDataPaths(ProgressBar); FPU_CHECKER_ONCE @@ -1045,7 +1044,7 @@ void prelogInit() // Set the monitor color properties CMonitorColorProperties monitorColor; - for (i=0; i<3; i++) + for (uint i=0; i<3; i++) { monitorColor.Contrast[i] = ClientCfg.Contrast; monitorColor.Luminosity[i] = ClientCfg.Luminosity; diff --git a/code/ryzom/client/src/interface_v3/action_handler_help.cpp b/code/ryzom/client/src/interface_v3/action_handler_help.cpp index 4717cc8aa..10a814401 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_help.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_help.cpp @@ -1827,7 +1827,7 @@ void getSkillModVsType(CDBCtrlSheet *item, const CItemSheet*pIS, ucstring &itemT void getArmorBonus(CDBCtrlSheet *item, ucstring &itemText, const CItemSheet*pIS) { ucstring armor_bonus(""); - sint32 level; + sint32 level = 0; if (pIS->Armor.ArmorType == ARMORTYPE::HEAVY) level = item->getQuality(); @@ -3613,7 +3613,7 @@ public: uint8 index; fromString(Params, index); --index; // Param is 1-based so subtract 1 - if (index < 0 || index >= MAX_INVENTORY_ANIMAL) + if (index >= MAX_INVENTORY_ANIMAL) { return; } diff --git a/code/ryzom/client/src/interface_v3/animal_position_state.cpp b/code/ryzom/client/src/interface_v3/animal_position_state.cpp index d702a6226..074c1a556 100644 --- a/code/ryzom/client/src/interface_v3/animal_position_state.cpp +++ b/code/ryzom/client/src/interface_v3/animal_position_state.cpp @@ -255,7 +255,7 @@ void CAnimalPositionState::serial(NLMISC::IStream &f) // *************************************************************************** CEntityCL *CNamedEntityPositionState::getEntity() { - if (!dbOk()) return false; + if (!dbOk()) return NULL; return EntitiesMngr.getEntityByName(_Name->getValue32()); } diff --git a/code/ryzom/client/src/interface_v3/brick_learned_callback.h b/code/ryzom/client/src/interface_v3/brick_learned_callback.h index a0c9a4c48..8d8566443 100644 --- a/code/ryzom/client/src/interface_v3/brick_learned_callback.h +++ b/code/ryzom/client/src/interface_v3/brick_learned_callback.h @@ -30,6 +30,7 @@ class IBrickLearnedCallback { public: + virtual ~IBrickLearnedCallback() { } virtual void onBrickLearned() =0; }; diff --git a/code/ryzom/client/src/interface_v3/chat_window.h b/code/ryzom/client/src/interface_v3/chat_window.h index baf146f0a..ea68140b8 100644 --- a/code/ryzom/client/src/interface_v3/chat_window.h +++ b/code/ryzom/client/src/interface_v3/chat_window.h @@ -153,7 +153,7 @@ protected: // ctor CChatWindow(); // dtor - ~CChatWindow(); + virtual ~CChatWindow(); protected: IChatWindowListener *_Listener; NLMISC::CRefPtr _Chat; diff --git a/code/ryzom/client/src/interface_v3/group_html.cpp b/code/ryzom/client/src/interface_v3/group_html.cpp index 5b8a03d56..034214d3d 100644 --- a/code/ryzom/client/src/interface_v3/group_html.cpp +++ b/code/ryzom/client/src/interface_v3/group_html.cpp @@ -3221,7 +3221,7 @@ void CGroupHTML::handle () else { /* Add our own request terminate handler. Nb: pass as param a UID, not the ptr */ - HTNet_addAfter(requestTerminater, NULL, (void*)_GroupHtmlUID, HT_ALL, HT_FILTER_LAST); + HTNet_addAfter(requestTerminater, NULL, (void*)(size_t)_GroupHtmlUID, HT_ALL, HT_FILTER_LAST); /* Set the timeout for long we are going to wait for a response */ HTHost_setEventTimeout(60000); @@ -3367,7 +3367,7 @@ void CGroupHTML::handle () else { /* Add our own request terminate handler. Nb: pass as param a UID, not the ptr */ - HTNet_addAfter(requestTerminater, NULL, (void*)_GroupHtmlUID, HT_ALL, HT_FILTER_LAST); + HTNet_addAfter(requestTerminater, NULL, (void*)(size_t)_GroupHtmlUID, HT_ALL, HT_FILTER_LAST); /* Start the first request */ diff --git a/code/ryzom/client/src/interface_v3/group_menu.cpp b/code/ryzom/client/src/interface_v3/group_menu.cpp index 758225205..36dfaeebe 100644 --- a/code/ryzom/client/src/interface_v3/group_menu.cpp +++ b/code/ryzom/client/src/interface_v3/group_menu.cpp @@ -102,7 +102,7 @@ void CViewTextMenu::setAlpha (sint32 a) { OldShadowColor.A = OldColor.A = (uint8)a; OldShadowColorOver.A = OldColorOver.A = (uint8)a; - OldShadowColorGrayed.A = OldShadowColorGrayed.A = (uint8)a; + OldShadowColorGrayed.A = OldColorGrayed.A = (uint8)a; } // ------------------------------------------------------------------------------------------------ diff --git a/code/ryzom/client/src/interface_v3/interface_anim.h b/code/ryzom/client/src/interface_v3/interface_anim.h index abce8f41e..8401f88e4 100644 --- a/code/ryzom/client/src/interface_v3/interface_anim.h +++ b/code/ryzom/client/src/interface_v3/interface_anim.h @@ -37,7 +37,7 @@ class CInterfaceTrack public: CInterfaceTrack(); - ~CInterfaceTrack(); + virtual ~CInterfaceTrack(); virtual bool parse (xmlNodePtr cur, CInterfaceGroup *parentGroup); @@ -90,7 +90,7 @@ class CInterfaceAnim public: CInterfaceAnim(); - ~CInterfaceAnim(); + virtual ~CInterfaceAnim(); virtual bool parse (xmlNodePtr cur, CInterfaceGroup *parentGroup); diff --git a/code/ryzom/client/src/interface_v3/interface_expr.cpp b/code/ryzom/client/src/interface_v3/interface_expr.cpp index 3f395e0b4..656c0f642 100644 --- a/code/ryzom/client/src/interface_v3/interface_expr.cpp +++ b/code/ryzom/client/src/interface_v3/interface_expr.cpp @@ -78,11 +78,11 @@ CInterfaceExprNode *CInterfaceExpr::buildExprTree(const std::string &expr) { std::string tempStr; formatLuaCall(expr, tempStr); - if (!buildExprTree(tempStr.c_str(), node)) return false; + if (buildExprTree(tempStr.c_str(), node) == NULL) return false; } else { - if (!buildExprTree(expr.c_str(), node)) return false; + if (buildExprTree(expr.c_str(), node) == NULL) return false; } return node; diff --git a/code/ryzom/client/src/interface_v3/interface_manager.h b/code/ryzom/client/src/interface_v3/interface_manager.h index 0de08d491..85ee99b67 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.h +++ b/code/ryzom/client/src/interface_v3/interface_manager.h @@ -222,6 +222,7 @@ public: class IStringProcess { public: + virtual ~IStringProcess() { } virtual bool cbIDStringReceived(ucstring &inOut) = 0; // called when string or id is received (return true if valid the change) }; diff --git a/code/ryzom/client/src/r2/dmc/dmc.h b/code/ryzom/client/src/r2/dmc/dmc.h index 1d6f9c121..9dca0e5fc 100644 --- a/code/ryzom/client/src/r2/dmc/dmc.h +++ b/code/ryzom/client/src/r2/dmc/dmc.h @@ -65,7 +65,7 @@ namespace R2 void loadFeatures(); - ~CDynamicMapClient(); + virtual ~CDynamicMapClient(); void loadDefaultPalette(); diff --git a/code/ryzom/common/src/game_share/ai_wrapper.h b/code/ryzom/common/src/game_share/ai_wrapper.h index a3a98c61a..c0bac40a2 100644 --- a/code/ryzom/common/src/game_share/ai_wrapper.h +++ b/code/ryzom/common/src/game_share/ai_wrapper.h @@ -47,6 +47,10 @@ namespace R2 class IAiWrapper { public: + virtual ~IAiWrapper() + { + } + virtual void init(NLLIGO::CLigoConfig * ligoConfig) { } diff --git a/code/ryzom/tools/assoc_mem/field.h b/code/ryzom/tools/assoc_mem/field.h index 25e201aa1..8ab8e52b4 100644 --- a/code/ryzom/tools/assoc_mem/field.h +++ b/code/ryzom/tools/assoc_mem/field.h @@ -32,7 +32,7 @@ class CField { public: CField(); CField(std::string); - ~CField(); + virtual ~CField(); virtual const std::vector &getPossibleValues() const; virtual void addPossibleValue(IValue *); virtual ICondNode *createNode(int, int, std::vector &) = 0; diff --git a/code/ryzom/tools/assoc_mem/node.h b/code/ryzom/tools/assoc_mem/node.h index e740c6fad..50efc7f4f 100644 --- a/code/ryzom/tools/assoc_mem/node.h +++ b/code/ryzom/tools/assoc_mem/node.h @@ -23,7 +23,7 @@ class INode { public: INode(); - ~INode(); + virtual ~INode(); virtual bool propagRecord(CRecord *) = 0; }; diff --git a/code/ryzom/tools/assoc_mem/record.h b/code/ryzom/tools/assoc_mem/record.h index 259ee6567..9310890cd 100644 --- a/code/ryzom/tools/assoc_mem/record.h +++ b/code/ryzom/tools/assoc_mem/record.h @@ -27,7 +27,7 @@ class CRecord { public: CRecord(); CRecord(std::vector &); - ~CRecord(); + virtual ~CRecord(); const std::vector &getValues(); void addValue(IValue *); void addValue(std::string &); diff --git a/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.cpp b/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.cpp index 21c1e25ef..b16e0123c 100644 --- a/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.cpp +++ b/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.cpp @@ -126,6 +126,8 @@ namespace NLQT } // end default } // end switch valueFrom } // end case nodeForm + default: + break; } // end switch nodeFrom return QVariant(); } diff --git a/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.cpp b/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.cpp index 68b990b30..0c4c5b7eb 100644 --- a/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.cpp +++ b/code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.cpp @@ -79,6 +79,8 @@ namespace NLQT } } } + default: + break; } return true; } diff --git a/code/ryzom/tools/translation_tools/extract_bot_names.cpp b/code/ryzom/tools/translation_tools/extract_bot_names.cpp index e8198e63d..4c3268e1f 100644 --- a/code/ryzom/tools/translation_tools/extract_bot_names.cpp +++ b/code/ryzom/tools/translation_tools/extract_bot_names.cpp @@ -507,7 +507,7 @@ int extractBotNames(int argc, char *argv[]) map::iterator first(SimpleNames.begin()), last(SimpleNames.end()); for (; first != last; ++first) { - uint rowIdx; + uint rowIdx = 0; if (!botNames.findRow(botIdCol, first->first, rowIdx)) { // we need to add the entry @@ -524,7 +524,7 @@ int extractBotNames(int argc, char *argv[]) { // set/update the sheet name info // try to restore the existing translation - uint transRowIdx; + uint transRowIdx = 0; if (transBotNames.findRow(transIdCol, first->first, transRowIdx)) { ucstring wkBotName = botNames.getData(rowIdx, ucstring("bot name")); From 1374286cab7eba5029f03d7de027c0630d35d3d0 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 25 Sep 2012 13:20:25 +0200 Subject: [PATCH 022/125] Changed: #825 Remove all warnings when compiling Ryzom --- .../3d/object_viewer_qt/src/plugins/example/qnel_widget.cpp | 2 +- code/ryzom/client/src/interface_v3/interface_expr.cpp | 4 ++-- code/ryzom/common/src/game_share/dms.h | 2 +- code/ryzom/tools/assoc_mem/value.h | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/qnel_widget.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/qnel_widget.cpp index 4872923db..d512521f7 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/qnel_widget.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/qnel_widget.cpp @@ -60,7 +60,7 @@ QNLWidget::~QNLWidget() void QNLWidget::init() { // create the driver - m_driver = NL3D::UDriver::createDriver(NULL, false, NULL); + m_driver = NL3D::UDriver::createDriver(0, false); nlassert(m_driver); // initialize the nel 3d viewport diff --git a/code/ryzom/client/src/interface_v3/interface_expr.cpp b/code/ryzom/client/src/interface_v3/interface_expr.cpp index 656c0f642..91a6cb7f3 100644 --- a/code/ryzom/client/src/interface_v3/interface_expr.cpp +++ b/code/ryzom/client/src/interface_v3/interface_expr.cpp @@ -78,11 +78,11 @@ CInterfaceExprNode *CInterfaceExpr::buildExprTree(const std::string &expr) { std::string tempStr; formatLuaCall(expr, tempStr); - if (buildExprTree(tempStr.c_str(), node) == NULL) return false; + if (buildExprTree(tempStr.c_str(), node) == NULL) return NULL; } else { - if (buildExprTree(expr.c_str(), node) == NULL) return false; + if (buildExprTree(expr.c_str(), node) == NULL) return NULL; } return node; diff --git a/code/ryzom/common/src/game_share/dms.h b/code/ryzom/common/src/game_share/dms.h index 149c626c8..b53b8626d 100644 --- a/code/ryzom/common/src/game_share/dms.h +++ b/code/ryzom/common/src/game_share/dms.h @@ -148,7 +148,7 @@ namespace R2 public: CDynamicMapService( NLMISC::CConfigFile& confFile, NLNET::IModuleSocket * gateway); - ~CDynamicMapService(); + virtual ~CDynamicMapService(); static CDynamicMapService* getInstance(); diff --git a/code/ryzom/tools/assoc_mem/value.h b/code/ryzom/tools/assoc_mem/value.h index 321d47a14..96f0fed46 100644 --- a/code/ryzom/tools/assoc_mem/value.h +++ b/code/ryzom/tools/assoc_mem/value.h @@ -21,6 +21,8 @@ class IValue { public: + virtual ~IValue() { } + virtual void getValue(IValue &) = 0; virtual void setValue(IValue &) = 0; From cb12a7546ad164f86755d6a22c7b3d22b4ba97ac Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 25 Sep 2012 13:20:37 +0200 Subject: [PATCH 023/125] Changed: #1254 Error while compiling with current stable squish --- code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt b/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt index e40b5abf8..4062f6905 100644 --- a/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt +++ b/code/nel/tools/3d/s3tc_compressor_lib/CMakeLists.txt @@ -5,7 +5,7 @@ INCLUDE_DIRECTORIES(${SQUISH_INCLUDE_DIR}) NL_TARGET_LIB(s3tc_compressor ${SRC} ${HEADER}) -TARGET_LINK_LIBRARIES(s3tc_compressor ${SQUISH_LIBRARIES}) +TARGET_LINK_LIBRARIES(s3tc_compressor ${SQUISH_LIBRARIES} nelmisc nel3d) NL_DEFAULT_PROPS(s3tc_compressor "NeL, Tools, 3D: S3TC Compressor Library") NL_ADD_RUNTIME_FLAGS(s3tc_compressor) From e7d490d9a87704f4c86d20d668efee8dddd0ffeb Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 25 Sep 2012 14:15:04 +0200 Subject: [PATCH 024/125] Changed: #825 Remove all warnings when compiling Ryzom --- code/ryzom/client/src/login_patch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/client/src/login_patch.cpp b/code/ryzom/client/src/login_patch.cpp index c14488de0..bf3910dcf 100644 --- a/code/ryzom/client/src/login_patch.cpp +++ b/code/ryzom/client/src/login_patch.cpp @@ -254,7 +254,7 @@ void CPatchManager::init(const std::vector& patchURIs, const std::s } srand(NLMISC::CTime::getSecondsSince1970()); - UsedServer = (sint)((float)(rand() / (RAND_MAX+1)) * (sint)PatchServers.size()); + UsedServer = (sint)(((double)rand() / ((double)RAND_MAX+1.0)) * (double)PatchServers.size()); ServerPath = CPath::standardizePath (sServerPath); ServerVersion = sServerVersion; From edee553e1bb8da44f2a952ea7f095122c41240e8 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 25 Sep 2012 21:21:58 +0200 Subject: [PATCH 025/125] Fixed: Don't compress textures in DXTC when used as buttons --- .../client/src/interface_v3/ctrl_button.cpp | 21 ++++++------------- .../client/src/interface_v3/view_bitmap.cpp | 3 --- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/ctrl_button.cpp b/code/ryzom/client/src/interface_v3/ctrl_button.cpp index a6fa08146..0c7dd2aa5 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_button.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_button.cpp @@ -50,24 +50,21 @@ bool CCtrlButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup) if (prop) { string TxName = (const char *) prop; - TxName = strlwr(TxName); - _TextureIdNormal.setTexture(TxName.c_str()); + setTexture(toLower(TxName)); } prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" ); if (prop) { string TxName = (const char *) prop; - TxName = strlwr(TxName); - _TextureIdPushed.setTexture(TxName.c_str()); + setTexturePushed(toLower(TxName)); } prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" ); if (prop) { string TxName = (const char *) prop; - TxName = strlwr(TxName); - _TextureIdOver.setTexture(TxName.c_str()); + setTextureOver(toLower(TxName)); } // *** Misc. @@ -261,25 +258,19 @@ void CCtrlButton::updateCoords() // ---------------------------------------------------------------------------- void CCtrlButton::setTexture(const std::string&name) { -// CInterfaceManager *pIM = CInterfaceManager::getInstance(); -// CViewRenderer &rVR = pIM->getViewRenderer(); - _TextureIdNormal.setTexture(name.c_str()); + _TextureIdNormal.setTexture(name.c_str (), 0, 0, 0, 0, false); } // ---------------------------------------------------------------------------- void CCtrlButton::setTexturePushed(const std::string&name) { -// CInterfaceManager *pIM = CInterfaceManager::getInstance(); -// CViewRenderer &rVR = pIM->getViewRenderer(); - _TextureIdPushed.setTexture(name.c_str()); + _TextureIdPushed.setTexture(name.c_str (), 0, 0, 0, 0, false); } // ---------------------------------------------------------------------------- void CCtrlButton::setTextureOver(const std::string&name) { -// CInterfaceManager *pIM = CInterfaceManager::getInstance(); -// CViewRenderer &rVR = pIM->getViewRenderer(); - _TextureIdOver.setTexture(name.c_str()); + _TextureIdOver.setTexture(name.c_str (), 0, 0, 0, 0, false); } // ---------------------------------------------------------------------------- diff --git a/code/ryzom/client/src/interface_v3/view_bitmap.cpp b/code/ryzom/client/src/interface_v3/view_bitmap.cpp index 3960cb674..b71cbb464 100644 --- a/code/ryzom/client/src/interface_v3/view_bitmap.cpp +++ b/code/ryzom/client/src/interface_v3/view_bitmap.cpp @@ -221,9 +221,6 @@ void CViewBitmap::updateCoords() // ---------------------------------------------------------------------------- void CViewBitmap::setTexture(const std::string & TxName) { -// CInterfaceManager *pIM = CInterfaceManager::getInstance(); -// CViewRenderer &rVR = pIM->getViewRenderer(); - _TextureId.setTexture (TxName.c_str (), _TxtOffsetX, _TxtOffsetY, _TxtWidth, _TxtHeight, false); } From 493f033e025272844c657ea641d14b478ebbe660 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 00:02:27 +0200 Subject: [PATCH 026/125] Changed: Added a warning when a texture can't be created in D3D driver --- .../3d/driver/direct3d/driver_direct3d_texture.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp index 2cd16bf1c..cfafaf5f9 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d_texture.cpp @@ -442,7 +442,7 @@ bool CDriverD3D::generateD3DTexture (ITexture& tex, bool textureDegradation, D3D if (d3dtext->Texture == NULL) { // profiling: count TextureMemory usage. - uint32 textureMeory = computeTextureMemoryUsage (width, height, levels, destFormat, cube); + uint32 textureMemory = computeTextureMemoryUsage (width, height, levels, destFormat, cube); // Create the texture bool createSuccess; @@ -465,7 +465,14 @@ bool CDriverD3D::generateD3DTexture (ITexture& tex, bool textureDegradation, D3D _DeviceInterface->SetSamplerState(0, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP); } - createSuccess = _DeviceInterface->CreateTexture (width, height, levels, renderTarget?D3DUSAGE_RENDERTARGET:0, destFormat, renderTarget?D3DPOOL_DEFAULT:D3DPOOL_MANAGED, &(d3dtext->Texture2d), NULL) == D3D_OK; + HRESULT hr = _DeviceInterface->CreateTexture (width, height, levels, renderTarget?D3DUSAGE_RENDERTARGET:0, destFormat, renderTarget?D3DPOOL_DEFAULT:D3DPOOL_MANAGED, &(d3dtext->Texture2d), NULL); + + if (hr != D3D_OK) + { + nlwarning("CreateTexture failed with code 0x%x for texture %s in %ux%u", hr, tex.getShareName().c_str(), width, height); + } + + createSuccess = hr == D3D_OK; d3dtext->Texture = d3dtext->Texture2d; } @@ -473,7 +480,7 @@ bool CDriverD3D::generateD3DTexture (ITexture& tex, bool textureDegradation, D3D return false; // Stats - d3dtext->TextureMemory = textureMeory; + d3dtext->TextureMemory = textureMemory; _AllocatedTextureMemory += d3dtext->TextureMemory; // Copy parameters From a9fa9bb78aa6b5b8c6ddb9d41e428fc4816cc0ae Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:43:18 +0200 Subject: [PATCH 027/125] Changed: Install data_leveldesign if WITH_RYZOM_TOOLS is enabled --- code/ryzom/common/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/ryzom/common/CMakeLists.txt b/code/ryzom/common/CMakeLists.txt index dbf1c937d..109876929 100644 --- a/code/ryzom/common/CMakeLists.txt +++ b/code/ryzom/common/CMakeLists.txt @@ -8,3 +8,7 @@ ADD_SUBDIRECTORY(src) #INSTALL(TARGETS data_common ARCHIVE DESTINATION ${RYZOM_SHARE_PREFIX}/data) #INSTALL(FILES "${CMAKE_BINARY_DIR}/share/data_common.bnp" DESTINATION "${RYZOM_SHARE_PREFIX}/data") + +#IF(WITH_RYZOM_TOOLS) + INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data_leveldesign" DESTINATION "${RYZOM_SHARE_PREFIX}") +#ENDIF(WITH_RYZOM_TOOLS) From 62435e4f2f2e32b11c2c6a3f46ae959c73b68098 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:44:03 +0200 Subject: [PATCH 028/125] Changed: Don't compile 7zDec if WITH_RYZOM_TOOLS is disabled --- .../ryzom/client/src/seven_zip/CMakeLists.txt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/code/ryzom/client/src/seven_zip/CMakeLists.txt b/code/ryzom/client/src/seven_zip/CMakeLists.txt index ba4073783..8cdade76f 100644 --- a/code/ryzom/client/src/seven_zip/CMakeLists.txt +++ b/code/ryzom/client/src/seven_zip/CMakeLists.txt @@ -1,16 +1,9 @@ -FILE(GLOB SRC *.cpp *.h) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) FILE(GLOB LIB_SRC *.cpp *.h) LIST(REMOVE_ITEM LIB_SRC ${CMAKE_CURRENT_SOURCE_DIR}/7zMain.cpp) -ADD_EXECUTABLE(7zDec ${SRC}) - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) -#TARGET_LINK_LIBRARIES(7zDec ${PLATFORM_LINKFLAGS}) -NL_DEFAULT_PROPS(7zDec "Ryzom, Tools, Misc: Seven Zip Decoder") -NL_ADD_RUNTIME_FLAGS(7zDec) - NL_TARGET_LIB(ryzom_sevenzip ${LIB_SRC}) # TARGET_LINK_LIBRARIES(ryzom_sevenzip ${PLATFORM_LINKFLAGS}) NL_DEFAULT_PROPS(ryzom_sevenzip "Ryzom, Library: Seven Zip") @@ -21,5 +14,14 @@ ADD_DEFINITIONS(-D_SZ_ONE_DIRECTORY) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) INSTALL(TARGETS ryzom_sevenzip LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) - INSTALL(TARGETS 7zDec RUNTIME DESTINATION bin COMPONENT client) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) + +IF(WITH_RYZOM_TOOLS) + ADD_EXECUTABLE(7zDec ${CMAKE_CURRENT_SOURCE_DIR}/7zMain.cpp) + + TARGET_LINK_LIBRARIES(7zDec ryzom_sevenzip) + NL_DEFAULT_PROPS(7zDec "Ryzom, Tools, Misc: Seven Zip Decoder") + NL_ADD_RUNTIME_FLAGS(7zDec) + + INSTALL(TARGETS 7zDec RUNTIME DESTINATION bin COMPONENT client) +ENDIF(WITH_RYZOM_TOOLS) From 2e4df39c5bd41342b706926ec26d1864122b5168 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:44:52 +0200 Subject: [PATCH 029/125] Fixed: Don't compress textures in DXTC when used as buttons --- code/ryzom/client/src/interface_v3/ctrl_button.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/ctrl_button.cpp b/code/ryzom/client/src/interface_v3/ctrl_button.cpp index 0c7dd2aa5..89f102e0b 100644 --- a/code/ryzom/client/src/interface_v3/ctrl_button.cpp +++ b/code/ryzom/client/src/interface_v3/ctrl_button.cpp @@ -258,19 +258,19 @@ void CCtrlButton::updateCoords() // ---------------------------------------------------------------------------- void CCtrlButton::setTexture(const std::string&name) { - _TextureIdNormal.setTexture(name.c_str (), 0, 0, 0, 0, false); + _TextureIdNormal.setTexture(name.c_str (), 0, 0, -1, -1, false); } // ---------------------------------------------------------------------------- void CCtrlButton::setTexturePushed(const std::string&name) { - _TextureIdPushed.setTexture(name.c_str (), 0, 0, 0, 0, false); + _TextureIdPushed.setTexture(name.c_str (), 0, 0, -1, -1, false); } // ---------------------------------------------------------------------------- void CCtrlButton::setTextureOver(const std::string&name) { - _TextureIdOver.setTexture(name.c_str (), 0, 0, 0, 0, false); + _TextureIdOver.setTexture(name.c_str (), 0, 0, -1, -1, false); } // ---------------------------------------------------------------------------- From a5218b92580d72341e69aefb364452f17ccf4dde Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:45:34 +0200 Subject: [PATCH 030/125] Changed: Synchronization with SVN --- code/ryzom/client/src/commands.cpp | 2 +- code/ryzom/client/src/user_entity.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ryzom/client/src/commands.cpp b/code/ryzom/client/src/commands.cpp index 1990003b0..81b9689a4 100644 --- a/code/ryzom/client/src/commands.cpp +++ b/code/ryzom/client/src/commands.cpp @@ -5770,7 +5770,7 @@ NLMISC_COMMAND(em, "emote command", "") -NLMISC_COMMAND(guildmotd, "Set the guild message of the day","") +NLMISC_COMMAND(guildmotd, "Set or see the guild message of the day","") { CBitMemStream out; if (!GenericMsgHeaderMngr.pushNameToStream("COMMAND:GUILDMOTD", out)) diff --git a/code/ryzom/client/src/user_entity.cpp b/code/ryzom/client/src/user_entity.cpp index 254b02cb5..c0dec5500 100644 --- a/code/ryzom/client/src/user_entity.cpp +++ b/code/ryzom/client/src/user_entity.cpp @@ -3555,8 +3555,8 @@ void CUserEntity::CSpeedFactor::update(ICDBNode *node) // virtual if(_Value > 2.0f) { //nlwarning("HACK: you try to change the speed factor to %f", _Value); - nlstop; - _Value = 2.0f; + //nlstop; + //_Value = 2.0f; } }// CSpeedFactor::update // From 8e2009279d62526fc4c53e9e8794c5e2ae2ca925 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:46:43 +0200 Subject: [PATCH 031/125] Changed: Drivers runtimes should go in NL_DRIVER_PREFIX --- code/nel/src/3d/driver/direct3d/CMakeLists.txt | 2 +- code/nel/src/3d/driver/opengl/CMakeLists.txt | 2 +- code/nel/src/3d/driver/opengles/CMakeLists.txt | 2 +- code/nel/src/sound/driver/dsound/CMakeLists.txt | 2 +- code/nel/src/sound/driver/fmod/CMakeLists.txt | 2 +- code/nel/src/sound/driver/xaudio2/CMakeLists.txt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/CMakeLists.txt b/code/nel/src/3d/driver/direct3d/CMakeLists.txt index 52a4ecd06..ede76f06c 100644 --- a/code/nel/src/3d/driver/direct3d/CMakeLists.txt +++ b/code/nel/src/3d/driver/direct3d/CMakeLists.txt @@ -17,7 +17,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_direct3d_win LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS nel_drv_direct3d_win LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_DRIVER_PREFIX} COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_direct3d_win RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/3d/driver/opengl/CMakeLists.txt b/code/nel/src/3d/driver/opengl/CMakeLists.txt index 232d38706..8fa99d488 100644 --- a/code/nel/src/3d/driver/opengl/CMakeLists.txt +++ b/code/nel/src/3d/driver/opengl/CMakeLists.txt @@ -74,7 +74,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS ${NLDRV_OGL_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS ${NLDRV_OGL_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_DRIVER_PREFIX} COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS ${NLDRV_OGL_LIB} RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/3d/driver/opengles/CMakeLists.txt b/code/nel/src/3d/driver/opengles/CMakeLists.txt index 415da1791..74f0ddff3 100644 --- a/code/nel/src/3d/driver/opengles/CMakeLists.txt +++ b/code/nel/src/3d/driver/opengles/CMakeLists.txt @@ -77,7 +77,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS ${NLDRV_OGLES_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin COMPONENT drivers3d) + INSTALL(TARGETS ${NLDRV_OGLES_LIB} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_DRIVER_PREFIX} COMPONENT drivers3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS ${NLDRV_OGLES_LIB} RUNTIME DESTINATION maxplugin COMPONENT drivers3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/dsound/CMakeLists.txt b/code/nel/src/sound/driver/dsound/CMakeLists.txt index 5bde8f1b1..74d431084 100644 --- a/code/nel/src/sound/driver/dsound/CMakeLists.txt +++ b/code/nel/src/sound/driver/dsound/CMakeLists.txt @@ -14,7 +14,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) + INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION ${NL_DRIVER_PREFIX} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_dsound_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/fmod/CMakeLists.txt b/code/nel/src/sound/driver/fmod/CMakeLists.txt index 5e8eed000..d8ee31ba7 100644 --- a/code/nel/src/sound/driver/fmod/CMakeLists.txt +++ b/code/nel/src/sound/driver/fmod/CMakeLists.txt @@ -14,7 +14,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) + INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION ${NL_DRIVER_PREFIX} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_fmod_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/src/sound/driver/xaudio2/CMakeLists.txt b/code/nel/src/sound/driver/xaudio2/CMakeLists.txt index 13a6be8d8..9113bd022 100644 --- a/code/nel/src/sound/driver/xaudio2/CMakeLists.txt +++ b/code/nel/src/sound/driver/xaudio2/CMakeLists.txt @@ -41,7 +41,7 @@ IF(WITH_PCH) ENDIF(WITH_PCH) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC_DRIVERS) OR NOT WITH_STATIC_DRIVERS) - INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) + INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION ${NL_DRIVER_PREFIX} LIBRARY DESTINATION ${NL_DRIVER_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT driverssound) IF(WITH_MAXPLUGIN) INSTALL(TARGETS nel_drv_xaudio2_win RUNTIME DESTINATION maxplugin COMPONENT driverssound) ENDIF(WITH_MAXPLUGIN) From 3a3fb5ea1ab0bb76bbd267e231b0cb9313931037 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:47:13 +0200 Subject: [PATCH 032/125] Changed: Added zbuffer formats (commented) --- code/nel/src/3d/driver/direct3d/driver_direct3d.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 3a542687a..2b18c8698 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -2715,6 +2715,8 @@ bool CDriverD3D::fillPresentParameter (D3DPRESENT_PARAMETERS ¶meters, D3DFOR // Choose a zbuffer format D3DFORMAT zbufferFormats[]= { + //uncomment to save zbuffer D3DFMT_D32F_LOCKABLE, + //uncomment to save zbuffer D3DFMT_D16_LOCKABLE, /*D3DFMT_D32, D3DFMT_D24X8,*/ D3DFMT_D24S8, From e67c6e9b1eedbd71846f59f73be7ef531afd1b05 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:51:11 +0200 Subject: [PATCH 034/125] Changed: Under Windows, install all files in the same folder excepted includes and libs --- code/CMakeModules/nel.cmake | 38 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index fb7ff9a3f..488ad952d 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -638,7 +638,7 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/etc path. IF(NOT NL_ETC_PREFIX) IF(WIN32) - SET(NL_ETC_PREFIX "../etc/nel" CACHE PATH "Installation path for configurations") + SET(NL_ETC_PREFIX "." CACHE PATH "Installation path for configurations") ELSE(WIN32) SET(NL_ETC_PREFIX "etc/nel" CACHE PATH "Installation path for configurations") ENDIF(WIN32) @@ -648,7 +648,7 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/share path. IF(NOT NL_SHARE_PREFIX) IF(WIN32) - SET(NL_SHARE_PREFIX "../share/nel" CACHE PATH "Installation path for data.") + SET(NL_SHARE_PREFIX "." CACHE PATH "Installation path for data.") ELSE(WIN32) SET(NL_SHARE_PREFIX "share/nel" CACHE PATH "Installation path for data.") ENDIF(WIN32) @@ -658,7 +658,7 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/sbin path. IF(NOT NL_SBIN_PREFIX) IF(WIN32) - SET(NL_SBIN_PREFIX "../sbin" CACHE PATH "Installation path for admin tools and services.") + SET(NL_SBIN_PREFIX "." CACHE PATH "Installation path for admin tools and services.") ELSE(WIN32) SET(NL_SBIN_PREFIX "sbin" CACHE PATH "Installation path for admin tools and services.") ENDIF(WIN32) @@ -668,7 +668,7 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/bin path. IF(NOT NL_BIN_PREFIX) IF(WIN32) - SET(NL_BIN_PREFIX "../bin" CACHE PATH "Installation path for tools and applications.") + SET(NL_BIN_PREFIX "." CACHE PATH "Installation path for tools and applications.") ELSE(WIN32) SET(NL_BIN_PREFIX "bin" CACHE PATH "Installation path for tools and applications.") ENDIF(WIN32) @@ -677,22 +677,18 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/lib path. IF(NOT NL_LIB_PREFIX) - IF(WIN32) - SET(NL_LIB_PREFIX "../lib" CACHE PATH "Installation path for libraries.") - ELSE(WIN32) - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") - ELSE(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) - ENDIF(WIN32) + IF(CMAKE_LIBRARY_ARCHITECTURE) + SET(NL_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + ELSE(CMAKE_LIBRARY_ARCHITECTURE) + SET(NL_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") + ENDIF(CMAKE_LIBRARY_ARCHITECTURE) ENDIF(NOT NL_LIB_PREFIX) NL_MAKE_ABSOLUTE_PREFIX(NL_LIB_PREFIX NL_LIB_ABSOLUTE_PREFIX) ## Allow override of install_prefix/lib path. IF(NOT NL_DRIVER_PREFIX) IF(WIN32) - SET(NL_DRIVER_PREFIX "../lib" CACHE PATH "Installation path for drivers.") + SET(NL_DRIVER_PREFIX "." CACHE PATH "Installation path for drivers.") ELSE(WIN32) IF(CMAKE_LIBRARY_ARCHITECTURE) SET(NL_DRIVER_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") @@ -748,15 +744,11 @@ MACRO(RYZOM_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/lib path. IF(NOT RYZOM_LIB_PREFIX) - IF(WIN32) - SET(RYZOM_LIB_PREFIX "." CACHE PATH "Installation path for libraries.") - ELSE(WIN32) - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(RYZOM_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") - ELSE(CMAKE_LIBRARY_ARCHITECTURE) - SET(RYZOM_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) - ENDIF(WIN32) + IF(CMAKE_LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + ELSE(CMAKE_LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") + ENDIF(CMAKE_LIBRARY_ARCHITECTURE) ENDIF(NOT RYZOM_LIB_PREFIX) NL_MAKE_ABSOLUTE_PREFIX(RYZOM_LIB_PREFIX RYZOM_LIB_ABSOLUTE_PREFIX) From f7ee271a8fc6619cf8cb2ff60fd2cf9933024444 Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 26 Sep 2012 12:53:03 +0200 Subject: [PATCH 035/125] Changed: Use RYZOM_SHARE_PREFIX as prefix to look for leveldesign data --- .../src/plugins/core/general_settings_page.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp index 9031fcb9f..e21edafec 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp @@ -31,6 +31,10 @@ #include #include +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + namespace Core { @@ -83,11 +87,18 @@ void GeneralSettingsPage::applyGeneralSettings() QApplication::setPalette(m_originalPalette); settings->endGroup(); + QString levelDesignPrefix; +#if defined(_DEBUG) && defined(NL_OS_WINDOWS) + levelDesignPrefix = "l:"; +#else + levelDesignPrefix = QString("%1/data_leveldesign").arg(RYZOM_SHARE_PREFIX); +#endif + // Add primitives path and ligo config file to CPath settings->beginGroup(Core::Constants::DATA_PATH_SECTION); - QString primitivePath = settings->value(Core::Constants::PRIMITIVES_PATH, "l:/primitives").toString(); - QString ligoConfigFile = settings->value(Core::Constants::LIGOCONFIG_FILE, "l:/leveldesign/world_editor_files/world_editor_classes.xml").toString(); - QString leveldesignPath = settings->value(Core::Constants::LEVELDESIGN_PATH, "l:/leveldesign").toString(); + QString primitivePath = settings->value(Core::Constants::PRIMITIVES_PATH, QString("%1/primitives").arg(levelDesignPrefix)).toString(); + QString ligoConfigFile = settings->value(Core::Constants::LIGOCONFIG_FILE, QString("%1/leveldesign/world_editor_files/world_editor_classes.xml").arg(levelDesignPrefix)).toString(); + QString leveldesignPath = settings->value(Core::Constants::LEVELDESIGN_PATH, QString("%1/leveldesign").arg(levelDesignPrefix)).toString(); NLMISC::CPath::addSearchPath(primitivePath.toStdString(), true, false); NLMISC::CPath::display(); NLMISC::CPath::addSearchFile(ligoConfigFile.toStdString()); From 6c0bd82c2a1774b69f9f15ce5b16837c05830dab Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 27 Sep 2012 22:11:26 +0200 Subject: [PATCH 036/125] Changed: Use *_PREFIX instead of fixed values with INSTALL --- code/CMakeLists.txt | 16 ++++++++-------- code/nel/samples/3d/cegui/CMakeLists.txt | 2 +- .../nel/samples/3d/cluster_viewer/CMakeLists.txt | 2 +- code/nel/samples/3d/font/CMakeLists.txt | 2 +- code/nel/samples/3d/qtnel/CMakeLists.txt | 2 +- code/nel/samples/3d/shape_viewer/CMakeLists.txt | 2 +- code/nel/samples/georges/CMakeLists.txt | 2 +- code/nel/samples/misc/command/CMakeLists.txt | 2 +- code/nel/samples/misc/configfile/CMakeLists.txt | 2 +- code/nel/samples/misc/debug/CMakeLists.txt | 2 +- code/nel/samples/misc/i18n/CMakeLists.txt | 2 +- code/nel/samples/misc/log/CMakeLists.txt | 2 +- code/nel/samples/misc/strings/CMakeLists.txt | 2 +- code/nel/samples/misc/types_check/CMakeLists.txt | 2 +- code/nel/samples/net/chat/CMakeLists.txt | 2 +- .../samples/net/class_transport/CMakeLists.txt | 2 +- code/nel/samples/net/login_system/CMakeLists.txt | 2 +- code/nel/samples/net/udp/CMakeLists.txt | 2 +- code/nel/samples/pacs/CMakeLists.txt | 2 +- .../samples/sound/sound_sources/CMakeLists.txt | 2 +- .../nel/samples/sound/stream_file/CMakeLists.txt | 2 +- .../sound/stream_ogg_vorbis/CMakeLists.txt | 2 +- code/nel/src/cegui/CMakeLists.txt | 2 +- code/nel/tools/3d/anim_builder/CMakeLists.txt | 2 +- .../3d/animation_set_builder/CMakeLists.txt | 2 +- code/nel/tools/3d/build_clod_bank/CMakeLists.txt | 2 +- code/nel/tools/3d/build_clodtex/CMakeLists.txt | 2 +- .../tools/3d/build_coarse_mesh/CMakeLists.txt | 2 +- code/nel/tools/3d/build_far_bank/CMakeLists.txt | 2 +- code/nel/tools/3d/build_interface/CMakeLists.txt | 2 +- .../tools/3d/build_shadow_skin/CMakeLists.txt | 2 +- code/nel/tools/3d/build_smallbank/CMakeLists.txt | 2 +- code/nel/tools/3d/cluster_viewer/CMakeLists.txt | 2 +- code/nel/tools/3d/file_info/CMakeLists.txt | 2 +- code/nel/tools/3d/get_neighbors/CMakeLists.txt | 2 +- code/nel/tools/3d/hls_bank_maker/CMakeLists.txt | 2 +- code/nel/tools/3d/ig_add/CMakeLists.txt | 2 +- code/nel/tools/3d/ig_elevation/CMakeLists.txt | 2 +- code/nel/tools/3d/ig_info/CMakeLists.txt | 2 +- code/nel/tools/3d/ig_lighter/CMakeLists.txt | 2 +- .../tools/3d/lightmap_optimizer/CMakeLists.txt | 2 +- code/nel/tools/3d/object_viewer/CMakeLists.txt | 4 ++-- .../tools/3d/object_viewer_exe/CMakeLists.txt | 2 +- .../nel/tools/3d/object_viewer_qt/CMakeLists.txt | 5 ++++- .../tools/3d/object_viewer_qt/src/CMakeLists.txt | 2 +- .../src/plugins/bnp_manager/CMakeLists.txt | 2 +- .../src/plugins/core/CMakeLists.txt | 15 ++++++++++++++- .../src/plugins/disp_sheet_id/CMakeLists.txt | 2 +- .../src/plugins/example/CMakeLists.txt | 2 +- .../src/plugins/georges_editor/CMakeLists.txt | 2 +- .../src/plugins/landscape_editor/CMakeLists.txt | 2 +- .../src/plugins/log/CMakeLists.txt | 2 +- .../src/plugins/mission_compiler/CMakeLists.txt | 2 +- .../src/plugins/object_viewer/CMakeLists.txt | 2 +- .../plugins/ovqt_sheet_builder/CMakeLists.txt | 2 +- .../plugins/translation_manager/CMakeLists.txt | 2 +- .../src/plugins/zone_painter/CMakeLists.txt | 2 +- .../3d/object_viewer_widget/src/CMakeLists.txt | 2 +- code/nel/tools/3d/panoply_maker/CMakeLists.txt | 2 +- code/nel/tools/3d/shapes_exporter/CMakeLists.txt | 2 +- code/nel/tools/3d/tga_2_dds/CMakeLists.txt | 2 +- code/nel/tools/3d/tga_cut/CMakeLists.txt | 2 +- code/nel/tools/3d/tga_resize/CMakeLists.txt | 2 +- code/nel/tools/3d/tile_edit/CMakeLists.txt | 2 +- code/nel/tools/3d/tile_edit_qt/CMakeLists.txt | 2 +- code/nel/tools/3d/zone_check_bind/CMakeLists.txt | 2 +- .../tools/3d/zone_dependencies/CMakeLists.txt | 2 +- code/nel/tools/3d/zone_dump/CMakeLists.txt | 2 +- code/nel/tools/3d/zone_ig_lighter/CMakeLists.txt | 2 +- code/nel/tools/3d/zone_lighter/CMakeLists.txt | 2 +- code/nel/tools/3d/zone_welder/CMakeLists.txt | 2 +- code/nel/tools/3d/zviewer/CMakeLists.txt | 2 +- .../nel/tools/georges/georges2csv/CMakeLists.txt | 2 +- .../tools/logic/logic_editor_dll/CMakeLists.txt | 2 +- .../tools/logic/logic_editor_exe/CMakeLists.txt | 2 +- code/nel/tools/memory/memlog/CMakeLists.txt | 2 +- code/nel/tools/misc/bnp_make/CMakeLists.txt | 2 +- .../nel/tools/misc/branch_patcher/CMakeLists.txt | 2 +- code/nel/tools/misc/data_mirror/CMakeLists.txt | 2 +- code/nel/tools/misc/disp_sheet_id/CMakeLists.txt | 2 +- code/nel/tools/misc/exec_timeout/CMakeLists.txt | 2 +- .../tools/misc/extract_filename/CMakeLists.txt | 2 +- code/nel/tools/misc/lock/CMakeLists.txt | 2 +- code/nel/tools/misc/log_analyser/CMakeLists.txt | 2 +- .../extract_warnings/CMakeLists.txt | 2 +- code/nel/tools/misc/make_sheet_id/CMakeLists.txt | 2 +- code/nel/tools/misc/message_box/CMakeLists.txt | 2 +- .../nel/tools/misc/message_box_qt/CMakeLists.txt | 2 +- .../tools/misc/multi_cd_setup_fix/CMakeLists.txt | 2 +- code/nel/tools/misc/probe_timers/CMakeLists.txt | 2 +- code/nel/tools/misc/words_dic/CMakeLists.txt | 2 +- code/nel/tools/misc/words_dic_qt/CMakeLists.txt | 2 +- code/nel/tools/misc/xml_packer/CMakeLists.txt | 2 +- code/nel/tools/nel_unit_test/CMakeLists.txt | 2 +- .../nel/tools/pacs/build_ig_boxes/CMakeLists.txt | 2 +- .../tools/pacs/build_indoor_rbank/CMakeLists.txt | 2 +- code/nel/tools/pacs/build_rbank/CMakeLists.txt | 2 +- .../tools/sound/build_samplebank/CMakeLists.txt | 2 +- code/nel/tools/sound/build_sound/CMakeLists.txt | 2 +- .../tools/sound/build_soundbank/CMakeLists.txt | 2 +- 100 files changed, 124 insertions(+), 108 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 3f5fa94d5..07bd52eba 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -230,7 +230,7 @@ IF(WIN32) "${QT_LIBRARY_DIR}/../bin/QtGuid4.dll" "${QT_LIBRARY_DIR}/../bin/QtXmld4.dll" "${QT_LIBRARY_DIR}/../bin/QtCored4.dll" - DESTINATION bin) + DESTINATION ${NL_BIN_PREFIX}) ENDIF(WITH_QT) ELSE(NOT CMAKE_BUILD_TYPE STREQUAL "Release") IF(WITH_QT) @@ -239,18 +239,18 @@ IF(WIN32) "${QT_LIBRARY_DIR}/../bin/QtGui4.dll" "${QT_LIBRARY_DIR}/../bin/QtXml4.dll" "${QT_LIBRARY_DIR}/../bin/QtCore4.dll" - DESTINATION bin) + DESTINATION ${NL_BIN_PREFIX}) ENDIF(WITH_QT) ENDIF(NOT CMAKE_BUILD_TYPE STREQUAL "Release") # Install CEGUI and its dependencies. IF(WITH_NEL_CEGUI) - INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIBase.dll" DESTINATION bin) - INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIDevilImageCodec.dll" DESTINATION bin) - INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIExpatParser.dll" DESTINATION bin) - INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIFalagardWRBase.dll" DESTINATION bin) - INSTALL(FILES "${CEGUI_LIB_DIR}/Devil.dll" DESTINATION bin) - INSTALL(FILES "${CEGUI_LIB_DIR}/ILU.dll" DESTINATION bin) + INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIBase.dll" DESTINATION ${NL_BIN_PREFIX}) + INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIDevilImageCodec.dll" DESTINATION ${NL_BIN_PREFIX}) + INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIExpatParser.dll" DESTINATION ${NL_BIN_PREFIX}) + INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIFalagardWRBase.dll" DESTINATION ${NL_BIN_PREFIX}) + INSTALL(FILES "${CEGUI_LIB_DIR}/Devil.dll" DESTINATION ${NL_BIN_PREFIX}) + INSTALL(FILES "${CEGUI_LIB_DIR}/ILU.dll" DESTINATION ${NL_BIN_PREFIX}) ENDIF(WITH_NEL_CEGUI) # Only the tools require MFC. diff --git a/code/nel/samples/3d/cegui/CMakeLists.txt b/code/nel/samples/3d/cegui/CMakeLists.txt index b9afa5729..3a8650a19 100644 --- a/code/nel/samples/3d/cegui/CMakeLists.txt +++ b/code/nel/samples/3d/cegui/CMakeLists.txt @@ -10,7 +10,7 @@ TARGET_LINK_LIBRARIES(nl_sample_cegui ${CEGUI_LIBRARY} nelmisc nel3d) NL_DEFAULT_PROPS(nl_sample_cegui "NeL, Samples, 3D: NeL CEGUI Demo") NL_ADD_RUNTIME_FLAGS(nl_sample_cegui) -INSTALL(TARGETS nl_sample_cegui RUNTIME DESTINATION bin COMPONENT samples3d) +INSTALL(TARGETS nl_sample_cegui RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samples3d) INSTALL(DIRECTORY datafiles/ DESTINATION ${NL_SHARE_PREFIX}/nl_sample_cegui/datafiles COMPONENT samples3d diff --git a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt index 3acb450c5..ad8bdb98d 100644 --- a/code/nel/samples/3d/cluster_viewer/CMakeLists.txt +++ b/code/nel/samples/3d/cluster_viewer/CMakeLists.txt @@ -8,7 +8,7 @@ TARGET_LINK_LIBRARIES(nl_sample_clusterview nelmisc nel3d) NL_ADD_RUNTIME_FLAGS(nl_sample_clusterview) NL_DEFAULT_PROPS(nl_sample_clusterview "NeL, Samples, 3D: Cluster Viewer") -INSTALL(TARGETS nl_sample_clusterview RUNTIME DESTINATION bin COMPONENT samples3d) +INSTALL(TARGETS nl_sample_clusterview RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samples3d) INSTALL(FILES main.cvs readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview COMPONENT samples3d) INSTALL(DIRECTORY groups/ DESTINATION ${NL_SHARE_PREFIX}/nl_sample_clusterview/groups diff --git a/code/nel/samples/3d/font/CMakeLists.txt b/code/nel/samples/3d/font/CMakeLists.txt index eb01575da..a944ef643 100644 --- a/code/nel/samples/3d/font/CMakeLists.txt +++ b/code/nel/samples/3d/font/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(nl_sample_font nelmisc nel3d) NL_DEFAULT_PROPS(nl_sample_font "NeL, Samples, 3D: Font") NL_ADD_RUNTIME_FLAGS(nl_sample_font) -INSTALL(TARGETS nl_sample_font RUNTIME DESTINATION bin COMPONENT samples3d) +INSTALL(TARGETS nl_sample_font RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samples3d) INSTALL(FILES beteckna.ttf DESTINATION ${NL_SHARE_PREFIX}/nl_sample_font COMPONENT samples3d) diff --git a/code/nel/samples/3d/qtnel/CMakeLists.txt b/code/nel/samples/3d/qtnel/CMakeLists.txt index 5b996a33e..1730cd4b3 100644 --- a/code/nel/samples/3d/qtnel/CMakeLists.txt +++ b/code/nel/samples/3d/qtnel/CMakeLists.txt @@ -27,5 +27,5 @@ NL_ADD_RUNTIME_FLAGS(qtnel) ADD_DEFINITIONS(${QT_DEFINITIONS}) -INSTALL(TARGETS qtnel RUNTIME DESTINATION bin COMPONENT samples3d) +INSTALL(TARGETS qtnel RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samples3d) diff --git a/code/nel/samples/3d/shape_viewer/CMakeLists.txt b/code/nel/samples/3d/shape_viewer/CMakeLists.txt index 57f2ddd5a..9262a7cd7 100644 --- a/code/nel/samples/3d/shape_viewer/CMakeLists.txt +++ b/code/nel/samples/3d/shape_viewer/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_shapeview nelmisc nel3d) NL_DEFAULT_PROPS(nl_sample_shapeview "NeL, Samples, 3D: Shape Viewer") NL_ADD_RUNTIME_FLAGS(nl_sample_shapeview) -INSTALL(TARGETS nl_sample_shapeview RUNTIME DESTINATION bin COMPONENT samples3d) +INSTALL(TARGETS nl_sample_shapeview RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samples3d) diff --git a/code/nel/samples/georges/CMakeLists.txt b/code/nel/samples/georges/CMakeLists.txt index 474575337..ed83e9ce3 100644 --- a/code/nel/samples/georges/CMakeLists.txt +++ b/code/nel/samples/georges/CMakeLists.txt @@ -8,6 +8,6 @@ TARGET_LINK_LIBRARIES(nl_sample_georges nelgeorges nelmisc) NL_DEFAULT_PROPS(nl_sample_georges "NeL, Samples: Georges") NL_ADD_RUNTIME_FLAGS(nl_sample_georges) -INSTALL(TARGETS nl_sample_georges RUNTIME DESTINATION bin COMPONENT samplesgeorges) +INSTALL(TARGETS nl_sample_georges RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesgeorges) INSTALL(FILES boolean.typ coolfilesinfo.dfn default.sample_config int.typ positiondata.dfn sample_config.dfn string.typ sheet_id.bin DESTINATION ${NL_SHARE_PREFIX}/nl_sample_georges/ COMPONENT samplesgeorges) diff --git a/code/nel/samples/misc/command/CMakeLists.txt b/code/nel/samples/misc/command/CMakeLists.txt index 5ffe1f42d..8069e8bd0 100644 --- a/code/nel/samples/misc/command/CMakeLists.txt +++ b/code/nel/samples/misc/command/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_command nelmisc) NL_DEFAULT_PROPS(nl_sample_command "NeL, Samples, Misc: Commands") NL_ADD_RUNTIME_FLAGS(nl_sample_command) -INSTALL(TARGETS nl_sample_command RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_command RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/configfile/CMakeLists.txt b/code/nel/samples/misc/configfile/CMakeLists.txt index 723f65b29..3d29c082c 100644 --- a/code/nel/samples/misc/configfile/CMakeLists.txt +++ b/code/nel/samples/misc/configfile/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(nl_sample_configfile nelmisc) NL_DEFAULT_PROPS(nl_sample_configfile "NeL, Samples, Misc: Config Files") NL_ADD_RUNTIME_FLAGS(nl_sample_configfile) -INSTALL(TARGETS nl_sample_configfile RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_configfile RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) INSTALL(FILES simpletest.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_configfile COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/debug/CMakeLists.txt b/code/nel/samples/misc/debug/CMakeLists.txt index 16c3ae42b..c2cd617a3 100644 --- a/code/nel/samples/misc/debug/CMakeLists.txt +++ b/code/nel/samples/misc/debug/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_debug nelmisc) NL_DEFAULT_PROPS(nl_sample_debug "NeL, Samples, Misc: Debugging") NL_ADD_RUNTIME_FLAGS(nl_sample_debug) -INSTALL(TARGETS nl_sample_debug RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_debug RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/i18n/CMakeLists.txt b/code/nel/samples/misc/i18n/CMakeLists.txt index c5a510201..5238b6180 100644 --- a/code/nel/samples/misc/i18n/CMakeLists.txt +++ b/code/nel/samples/misc/i18n/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(nl_sample_i18n nelmisc) NL_DEFAULT_PROPS(nl_sample_i18n "NeL, Samples, Misc: I18N") NL_ADD_RUNTIME_FLAGS(nl_sample_i18n) -INSTALL(TARGETS nl_sample_i18n RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_i18n RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) INSTALL(FILES de.uxt en.uxt fr.uxt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_i18n COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/log/CMakeLists.txt b/code/nel/samples/misc/log/CMakeLists.txt index c106fc00c..dca8c76a8 100644 --- a/code/nel/samples/misc/log/CMakeLists.txt +++ b/code/nel/samples/misc/log/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_log nelmisc) NL_DEFAULT_PROPS(nl_sample_log "NeL, Samples, Misc: Logging") NL_ADD_RUNTIME_FLAGS(nl_sample_log) -INSTALL(TARGETS nl_sample_log RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_log RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/strings/CMakeLists.txt b/code/nel/samples/misc/strings/CMakeLists.txt index e0806591b..d4ffc3c1a 100644 --- a/code/nel/samples/misc/strings/CMakeLists.txt +++ b/code/nel/samples/misc/strings/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_strings nelmisc) NL_DEFAULT_PROPS(nl_sample_strings "NeL, Samples, Misc: Strings") NL_ADD_RUNTIME_FLAGS(nl_sample_strings) -INSTALL(TARGETS nl_sample_strings RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_strings RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) diff --git a/code/nel/samples/misc/types_check/CMakeLists.txt b/code/nel/samples/misc/types_check/CMakeLists.txt index a8b628979..9b3172eb2 100644 --- a/code/nel/samples/misc/types_check/CMakeLists.txt +++ b/code/nel/samples/misc/types_check/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_sample_types_check nelmisc) NL_DEFAULT_PROPS(nl_sample_types_check "Samples, MISC: Types check sample") NL_ADD_RUNTIME_FLAGS(nl_sample_types_check) -INSTALL(TARGETS nl_sample_types_check RUNTIME DESTINATION bin COMPONENT samplesmisc) +INSTALL(TARGETS nl_sample_types_check RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesmisc) diff --git a/code/nel/samples/net/chat/CMakeLists.txt b/code/nel/samples/net/chat/CMakeLists.txt index 7db4550d6..b5c66d67c 100644 --- a/code/nel/samples/net/chat/CMakeLists.txt +++ b/code/nel/samples/net/chat/CMakeLists.txt @@ -12,5 +12,5 @@ TARGET_LINK_LIBRARIES(nl_sample_chatserver nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_chatserver "NeL, Samples, Net, Chat: Chat Server") NL_ADD_RUNTIME_FLAGS(nl_sample_chatserver) -INSTALL(TARGETS nl_sample_chatclient nl_sample_chatserver RUNTIME DESTINATION bin COMPONENT samplesnet) +INSTALL(TARGETS nl_sample_chatclient nl_sample_chatserver RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesnet) INSTALL(FILES chat_service.cfg client.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_chat COMPONENT samplesnet) diff --git a/code/nel/samples/net/class_transport/CMakeLists.txt b/code/nel/samples/net/class_transport/CMakeLists.txt index 3247d0745..3561221d4 100644 --- a/code/nel/samples/net/class_transport/CMakeLists.txt +++ b/code/nel/samples/net/class_transport/CMakeLists.txt @@ -12,5 +12,5 @@ TARGET_LINK_LIBRARIES(nl_sample_ct_gd_service nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_ct_gd_service "NeL, Samples, Net, Class Transport: GD Service") NL_ADD_RUNTIME_FLAGS(nl_sample_ct_gd_service) -INSTALL(TARGETS nl_sample_ct_ai_service nl_sample_ct_gd_service RUNTIME DESTINATION bin COMPONENT samplesnet) +INSTALL(TARGETS nl_sample_ct_ai_service nl_sample_ct_gd_service RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesnet) INSTALL(FILES ai_service.cfg gd_service.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_class_transport COMPONENT samplesnet) diff --git a/code/nel/samples/net/login_system/CMakeLists.txt b/code/nel/samples/net/login_system/CMakeLists.txt index 4d83420da..97436fc90 100644 --- a/code/nel/samples/net/login_system/CMakeLists.txt +++ b/code/nel/samples/net/login_system/CMakeLists.txt @@ -12,5 +12,5 @@ TARGET_LINK_LIBRARIES(nl_sample_ls_fes nelmisc nelnet) NL_DEFAULT_PROPS(nl_sample_ls_fes "NeL, Samples, Net, Login Service: LS Frontend") NL_ADD_RUNTIME_FLAGS(nl_sample_ls_fes) -INSTALL(TARGETS nl_sample_ls_client nl_sample_ls_fes RUNTIME DESTINATION bin COMPONENT samplesnet) +INSTALL(TARGETS nl_sample_ls_client nl_sample_ls_fes RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesnet) INSTALL(FILES frontend_service.cfg client.cfg DESTINATION ${NL_SHARE_PREFIX}/nl_sample_login_system COMPONENT samplesnet) diff --git a/code/nel/samples/net/udp/CMakeLists.txt b/code/nel/samples/net/udp/CMakeLists.txt index f47da915c..a4528c4db 100644 --- a/code/nel/samples/net/udp/CMakeLists.txt +++ b/code/nel/samples/net/udp/CMakeLists.txt @@ -17,7 +17,7 @@ NL_DEFAULT_PROPS(nl_sample_udpserver "NeL, Samples, Net, UDP: UDP Server") NL_ADD_RUNTIME_FLAGS(nl_sample_udpclient) NL_ADD_RUNTIME_FLAGS(nl_sample_udpserver) -INSTALL(TARGETS nl_sample_udpclient nl_sample_udpserver RUNTIME DESTINATION bin COMPONENT samplesnet) +INSTALL(TARGETS nl_sample_udpclient nl_sample_udpserver RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplesnet) INSTALL(FILES bench_service.cfg client.cfg readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_udp COMPONENT samplesnet) IF(WITH_3D) diff --git a/code/nel/samples/pacs/CMakeLists.txt b/code/nel/samples/pacs/CMakeLists.txt index 28b726234..79839c126 100644 --- a/code/nel/samples/pacs/CMakeLists.txt +++ b/code/nel/samples/pacs/CMakeLists.txt @@ -8,7 +8,7 @@ TARGET_LINK_LIBRARIES(nl_sample_pacs nelmisc nelpacs nel3d) NL_DEFAULT_PROPS(nl_sample_pacs "NeL, Samples: PACS") NL_ADD_RUNTIME_FLAGS(nl_sample_pacs) -INSTALL(TARGETS nl_sample_pacs RUNTIME DESTINATION bin COMPONENT samplespacs) +INSTALL(TARGETS nl_sample_pacs RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplespacs) INSTALL(FILES readme.txt DESTINATION ${NL_SHARE_PREFIX}/nl_sample_pacs COMPONENT samplespacs) INSTALL(DIRECTORY shapes/ DESTINATION ${NL_SHARE_PREFIX}/nl_sample_pacs/shapes diff --git a/code/nel/samples/sound/sound_sources/CMakeLists.txt b/code/nel/samples/sound/sound_sources/CMakeLists.txt index 6a3ea9028..f484c1b76 100644 --- a/code/nel/samples/sound/sound_sources/CMakeLists.txt +++ b/code/nel/samples/sound/sound_sources/CMakeLists.txt @@ -10,7 +10,7 @@ TARGET_LINK_LIBRARIES(nl_sample_sound_sources nelmisc nelsound) NL_DEFAULT_PROPS(nl_sample_sound_sources "NeL, Samples: Sound: Sound Sources") NL_ADD_RUNTIME_FLAGS(nl_sample_sound_sources) -INSTALL(TARGETS nl_sample_sound_sources RUNTIME DESTINATION bin COMPONENT samplessound) +INSTALL(TARGETS nl_sample_sound_sources RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplessound) INSTALL(DIRECTORY data/ DESTINATION ${NL_SHARE_PREFIX}/nl_sample_sound/data COMPONENT samplespacs diff --git a/code/nel/samples/sound/stream_file/CMakeLists.txt b/code/nel/samples/sound/stream_file/CMakeLists.txt index 5bd39cdb1..e3afd814d 100644 --- a/code/nel/samples/sound/stream_file/CMakeLists.txt +++ b/code/nel/samples/sound/stream_file/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(nl_sample_stream_file nelmisc nelsound) NL_DEFAULT_PROPS(nl_sample_stream_file "NeL, Samples: Sound: Stream File") NL_ADD_RUNTIME_FLAGS(nl_sample_stream_file) -INSTALL(TARGETS nl_sample_stream_file RUNTIME DESTINATION bin COMPONENT samplessound) +INSTALL(TARGETS nl_sample_stream_file RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplessound) diff --git a/code/nel/samples/sound/stream_ogg_vorbis/CMakeLists.txt b/code/nel/samples/sound/stream_ogg_vorbis/CMakeLists.txt index 6a80d2db7..62f446290 100644 --- a/code/nel/samples/sound/stream_ogg_vorbis/CMakeLists.txt +++ b/code/nel/samples/sound/stream_ogg_vorbis/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(nl_sample_stream_ogg_vorbis nelmisc nelsound) NL_DEFAULT_PROPS(nl_sample_stream_ogg_vorbis "NeL, Samples: Sound: Stream OGG Vorbis") NL_ADD_RUNTIME_FLAGS(nl_sample_stream_ogg_vorbis) -INSTALL(TARGETS nl_sample_stream_ogg_vorbis RUNTIME DESTINATION bin COMPONENT samplessound) +INSTALL(TARGETS nl_sample_stream_ogg_vorbis RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT samplessound) diff --git a/code/nel/src/cegui/CMakeLists.txt b/code/nel/src/cegui/CMakeLists.txt index 928ebc4cb..b815eb139 100644 --- a/code/nel/src/cegui/CMakeLists.txt +++ b/code/nel/src/cegui/CMakeLists.txt @@ -12,5 +12,5 @@ NL_ADD_LIB_SUFFIX(nelceguirenderer) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DNEL_CEGUIRENDERER_EXPORTS) IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) - INSTALL(TARGETS nelceguirenderer RUNTIME DESTINATION bin LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) + INSTALL(TARGETS nelceguirenderer RUNTIME DESTINATION ${NL_BIN_PREFIX} LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries) ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/nel/tools/3d/anim_builder/CMakeLists.txt b/code/nel/tools/3d/anim_builder/CMakeLists.txt index fada1485f..61188b461 100644 --- a/code/nel/tools/3d/anim_builder/CMakeLists.txt +++ b/code/nel/tools/3d/anim_builder/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(anim_builder nelmisc nel3d) NL_DEFAULT_PROPS(anim_builder "NeL, Tools, 3D: anim_builder") NL_ADD_RUNTIME_FLAGS(anim_builder) -INSTALL(TARGETS anim_builder RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS anim_builder RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/animation_set_builder/CMakeLists.txt b/code/nel/tools/3d/animation_set_builder/CMakeLists.txt index 8ebf1fff7..da81b1de3 100644 --- a/code/nel/tools/3d/animation_set_builder/CMakeLists.txt +++ b/code/nel/tools/3d/animation_set_builder/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(animation_set_builder nel3d nelmisc) NL_DEFAULT_PROPS(animation_set_builder "NeL, Tools, 3D: anim_set_builder") NL_ADD_RUNTIME_FLAGS(animation_set_builder) -INSTALL(TARGETS animation_set_builder RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS animation_set_builder RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_clod_bank/CMakeLists.txt b/code/nel/tools/3d/build_clod_bank/CMakeLists.txt index 3b7704f24..2bd4846d7 100644 --- a/code/nel/tools/3d/build_clod_bank/CMakeLists.txt +++ b/code/nel/tools/3d/build_clod_bank/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_clod_bank nel3d nelmisc) NL_DEFAULT_PROPS(build_clod_bank "NeL, Tools, 3D: build_clod_bank") NL_ADD_RUNTIME_FLAGS(build_clod_bank) -INSTALL(TARGETS build_clod_bank RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_clod_bank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_clodtex/CMakeLists.txt b/code/nel/tools/3d/build_clodtex/CMakeLists.txt index a6cefc40c..558962421 100644 --- a/code/nel/tools/3d/build_clodtex/CMakeLists.txt +++ b/code/nel/tools/3d/build_clodtex/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_clodtex nel3d nelmisc) NL_DEFAULT_PROPS(build_clodtex "NeL, Tools, 3D: build_clodtex") NL_ADD_RUNTIME_FLAGS(build_clodtex) -INSTALL(TARGETS build_clodtex RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_clodtex RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_coarse_mesh/CMakeLists.txt b/code/nel/tools/3d/build_coarse_mesh/CMakeLists.txt index 2247b01df..93eba1bfc 100644 --- a/code/nel/tools/3d/build_coarse_mesh/CMakeLists.txt +++ b/code/nel/tools/3d/build_coarse_mesh/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_coarse_mesh nel3d nelmisc) NL_DEFAULT_PROPS(build_coarse_mesh "NeL, Tools, 3D: build_coarse_mesh") NL_ADD_RUNTIME_FLAGS(build_coarse_mesh) -INSTALL(TARGETS build_coarse_mesh RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_coarse_mesh RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_far_bank/CMakeLists.txt b/code/nel/tools/3d/build_far_bank/CMakeLists.txt index adc3afb08..7a858d560 100644 --- a/code/nel/tools/3d/build_far_bank/CMakeLists.txt +++ b/code/nel/tools/3d/build_far_bank/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_far_bank nel3d nelmisc) NL_DEFAULT_PROPS(build_far_bank "NeL, Tools, 3D: build_far_bank") NL_ADD_RUNTIME_FLAGS(build_far_bank) -INSTALL(TARGETS build_far_bank RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_far_bank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_interface/CMakeLists.txt b/code/nel/tools/3d/build_interface/CMakeLists.txt index ce3aae1f1..243bc326d 100644 --- a/code/nel/tools/3d/build_interface/CMakeLists.txt +++ b/code/nel/tools/3d/build_interface/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_interface nelmisc) NL_DEFAULT_PROPS(build_interface "NeL, Tools, 3D: build_interface") NL_ADD_RUNTIME_FLAGS(build_interface) -INSTALL(TARGETS build_interface RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_interface RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_shadow_skin/CMakeLists.txt b/code/nel/tools/3d/build_shadow_skin/CMakeLists.txt index 60cc83980..78bbd712d 100644 --- a/code/nel/tools/3d/build_shadow_skin/CMakeLists.txt +++ b/code/nel/tools/3d/build_shadow_skin/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_shadow_skin nelmisc nel3d) NL_DEFAULT_PROPS(build_shadow_skin "NeL, Tools, 3D: build_shadow_skin") NL_ADD_RUNTIME_FLAGS(build_shadow_skin) -INSTALL(TARGETS build_shadow_skin RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_shadow_skin RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/build_smallbank/CMakeLists.txt b/code/nel/tools/3d/build_smallbank/CMakeLists.txt index 7cfccdaf9..260f6b9aa 100644 --- a/code/nel/tools/3d/build_smallbank/CMakeLists.txt +++ b/code/nel/tools/3d/build_smallbank/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(build_smallbank nel3d nelmisc) NL_DEFAULT_PROPS(build_smallbank "NeL, Tools, 3D: build_smallbank") NL_ADD_RUNTIME_FLAGS(build_smallbank) -INSTALL(TARGETS build_smallbank RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS build_smallbank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/cluster_viewer/CMakeLists.txt b/code/nel/tools/3d/cluster_viewer/CMakeLists.txt index 98d0c800e..a0db8cd68 100644 --- a/code/nel/tools/3d/cluster_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/cluster_viewer/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(cluster_viewer nel3d nelmisc) NL_DEFAULT_PROPS(cluster_viewer "NeL, Tools, 3D: Cluster Viewer") NL_ADD_RUNTIME_FLAGS(cluster_viewer) -INSTALL(TARGETS cluster_viewer RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS cluster_viewer RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/file_info/CMakeLists.txt b/code/nel/tools/3d/file_info/CMakeLists.txt index ce935c4e4..43cb359fd 100644 --- a/code/nel/tools/3d/file_info/CMakeLists.txt +++ b/code/nel/tools/3d/file_info/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(file_info nel3d nelmisc) NL_DEFAULT_PROPS(file_info "NeL, Tools, 3D: file_info") NL_ADD_RUNTIME_FLAGS(file_info) -INSTALL(TARGETS file_info RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS file_info RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/get_neighbors/CMakeLists.txt b/code/nel/tools/3d/get_neighbors/CMakeLists.txt index 9ed4f6e2c..d8de69ff5 100644 --- a/code/nel/tools/3d/get_neighbors/CMakeLists.txt +++ b/code/nel/tools/3d/get_neighbors/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(get_neighbors nelmisc) NL_DEFAULT_PROPS(get_neighbors "NeL, Tools, 3D: get_neighbors") NL_ADD_RUNTIME_FLAGS(get_neighbors) -INSTALL(TARGETS get_neighbors RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS get_neighbors RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt b/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt index 5b3189b2d..d2482c276 100644 --- a/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt +++ b/code/nel/tools/3d/hls_bank_maker/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(hls_bank_maker s3tc_compressor nelmisc nel3d) NL_DEFAULT_PROPS(hls_bank_maker "NeL, Tools, 3D: hls_bank_maker") NL_ADD_RUNTIME_FLAGS(hls_bank_maker) -INSTALL(TARGETS hls_bank_maker RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS hls_bank_maker RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/ig_add/CMakeLists.txt b/code/nel/tools/3d/ig_add/CMakeLists.txt index 60f5305c0..2ae993d51 100644 --- a/code/nel/tools/3d/ig_add/CMakeLists.txt +++ b/code/nel/tools/3d/ig_add/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(ig_add nel3d nelmisc) NL_DEFAULT_PROPS(ig_add "NeL, Tools, 3D: ig_add") NL_ADD_RUNTIME_FLAGS(ig_add) -INSTALL(TARGETS ig_add RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS ig_add RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/ig_elevation/CMakeLists.txt b/code/nel/tools/3d/ig_elevation/CMakeLists.txt index e453ed1ce..eb59adf22 100644 --- a/code/nel/tools/3d/ig_elevation/CMakeLists.txt +++ b/code/nel/tools/3d/ig_elevation/CMakeLists.txt @@ -10,4 +10,4 @@ NL_ADD_RUNTIME_FLAGS(ig_elevation) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ig_elevation RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS ig_elevation RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/ig_info/CMakeLists.txt b/code/nel/tools/3d/ig_info/CMakeLists.txt index bf39e3e16..59f32f9ca 100644 --- a/code/nel/tools/3d/ig_info/CMakeLists.txt +++ b/code/nel/tools/3d/ig_info/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(ig_info nel3d nelmisc) NL_DEFAULT_PROPS(ig_info "NeL, Tools, 3D: ig_info") NL_ADD_RUNTIME_FLAGS(ig_info) -INSTALL(TARGETS ig_info RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS ig_info RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/ig_lighter/CMakeLists.txt b/code/nel/tools/3d/ig_lighter/CMakeLists.txt index 6636329c3..54f703566 100644 --- a/code/nel/tools/3d/ig_lighter/CMakeLists.txt +++ b/code/nel/tools/3d/ig_lighter/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(ig_lighter nelmisc nel3d nelpacs) NL_DEFAULT_PROPS(ig_lighter "NeL, Tools, 3D: ig_lighter") NL_ADD_RUNTIME_FLAGS(ig_lighter) -INSTALL(TARGETS ig_lighter RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS ig_lighter RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/lightmap_optimizer/CMakeLists.txt b/code/nel/tools/3d/lightmap_optimizer/CMakeLists.txt index 0427ba6e4..36e5b2aa4 100644 --- a/code/nel/tools/3d/lightmap_optimizer/CMakeLists.txt +++ b/code/nel/tools/3d/lightmap_optimizer/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(lightmap_optimizer nel3d nelmisc) NL_DEFAULT_PROPS(lightmap_optimizer "NeL, Tools, 3D: lightmap_optimizer") NL_ADD_RUNTIME_FLAGS(lightmap_optimizer) -INSTALL(TARGETS lightmap_optimizer RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS lightmap_optimizer RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer/CMakeLists.txt index 15d24ba7a..f99f49c68 100644 --- a/code/nel/tools/3d/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer/CMakeLists.txt @@ -21,8 +21,8 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(object_viewer_dll ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.h ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS object_viewer_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES object_viewer.cfg DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS object_viewer_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES object_viewer.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT tools3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS object_viewer_dll RUNTIME DESTINATION maxplugin COMPONENT tools3d) INSTALL(FILES object_viewer.cfg DESTINATION maxplugin COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_exe/CMakeLists.txt b/code/nel/tools/3d/object_viewer_exe/CMakeLists.txt index 605030308..d6adb9694 100644 --- a/code/nel/tools/3d/object_viewer_exe/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_exe/CMakeLists.txt @@ -19,7 +19,7 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(object_viewer ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.h ${CMAKE_CURRENT_SOURCE_DIR}/std_afx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS object_viewer RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS object_viewer RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) IF(WITH_MAXPLUGIN) INSTALL(TARGETS object_viewer RUNTIME DESTINATION maxplugin COMPONENT tools3d) ENDIF(WITH_MAXPLUGIN) diff --git a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt index 7ee463688..ff1128b9f 100644 --- a/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/CMakeLists.txt @@ -9,13 +9,16 @@ IF(WIN32) SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins") + SET(OVQT_DATA_DIR ".") ELSEIF(APPLE) # TODO: under Mac OS X, don't install but copy files in application package SET(OVQT_PLUGIN_SPECS_DIR "plugins") SET(OVQT_PLUGIN_DIR "plugins") + SET(OVQT_DATA_DIR ".") ELSE(WIN32) SET(OVQT_PLUGIN_SPECS_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/plugins) SET(OVQT_PLUGIN_DIR ${NL_LIB_PREFIX}/object_viewer_qt) + SET(OVQT_DATA_DIR ${NL_SHARE_PREFIX}/object_viewer_qt/data) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ovqt_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ovqt_config.h) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) @@ -30,7 +33,7 @@ ENDIF() ADD_SUBDIRECTORY(src) INSTALL(DIRECTORY data/ - DESTINATION ${NL_SHARE_PREFIX}/object_viewer_qt/data + DESTINATION ${OVQT_DATA_DIR} COMPONENT data PATTERN "CVS" EXCLUDE PATTERN ".svn" EXCLUDE diff --git a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt index 099408caa..d77b0e6a1 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/CMakeLists.txt @@ -50,4 +50,4 @@ NL_ADD_RUNTIME_FLAGS(object_viewer_qt) ADD_SUBDIRECTORY(plugins) -INSTALL(TARGETS object_viewer_qt RUNTIME DESTINATION bin COMPONENT runtime BUNDLE DESTINATION /Applications) +INSTALL(TARGETS object_viewer_qt RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT runtime BUNDLE DESTINATION /Applications) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt index f1cc41b40..2991da073 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/bnp_manager/CMakeLists.txt @@ -44,6 +44,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_bnp_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_bnp_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_bnp_manager.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index 242a16262..17172c488 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -55,6 +55,19 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_core) ADD_DEFINITIONS(-DCORE_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT tools3d) +IF(WIN32) + IF(WITH_INSTALL_LIBRARIES) + INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + ELSE(WITH_INSTALL_LIBRARIES) + INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) + ENDIF(WITH_INSTALL_LIBRARIES) +ELSE(WIN32) + IF(WITH_INSTALL_LIBRARIES) + INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) + ELSE(WITH_INSTALL_LIBRARIES) + INSTALL(TARGETS ovqt_plugin_core LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) + ENDIF(WITH_INSTALL_LIBRARIES) +ENDIF(WIN32) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_core.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt index d22f4bb03..f7bb49daf 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/disp_sheet_id/CMakeLists.txt @@ -40,6 +40,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_disp_sheet_id) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_disp_sheet_id LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_disp_sheet_id.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt index 6cdcd2138..4b24a0363 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/CMakeLists.txt @@ -38,6 +38,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_example) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_example LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_example.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt index caeb6fc7d..514657535 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/georges_editor/CMakeLists.txt @@ -44,6 +44,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_georges_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt index 2e1ee0473..dc7a8a541 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -45,6 +45,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_landscape_editor.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt index 22526259f..1e0511a1c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/CMakeLists.txt @@ -36,6 +36,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_log) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_log LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_log.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt index 44693552d..03f1a6a2f 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/CMakeLists.txt @@ -46,6 +46,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_mission_compiler) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_mission_compiler LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_mission_compiler.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt index 0e2d84c71..b5af7f1e9 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/CMakeLists.txt @@ -163,6 +163,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_object_viewer) ADD_DEFINITIONS(-DQT_NO_KEYWORDS ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_object_viewer LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_object_viewer.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt index 5efc09bba..52965a3d4 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/ovqt_sheet_builder/CMakeLists.txt @@ -29,6 +29,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_sheet_builder) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_sheet_builder LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_sheet_builder.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt index be5fefa54..a7de55dfb 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/CMakeLists.txt @@ -48,6 +48,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_translation_manager) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_translation_manager LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_translation_manager.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt index bfc414832..e9023c4b9 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/zone_painter/CMakeLists.txt @@ -42,6 +42,6 @@ NL_ADD_LIB_SUFFIX(ovqt_plugin_zone_painter) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) -INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) +INSTALL(TARGETS ovqt_plugin_zone_painter LIBRARY DESTINATION ${OVQT_PLUGIN_DIR} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${OVQT_PLUGIN_DIR} COMPONENT tools3d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ovqt_plugin_zone_painter.xml DESTINATION ${OVQT_PLUGIN_SPECS_DIR} COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_widget/src/CMakeLists.txt b/code/nel/tools/3d/object_viewer_widget/src/CMakeLists.txt index 160aca337..0943f61fa 100644 --- a/code/nel/tools/3d/object_viewer_widget/src/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_widget/src/CMakeLists.txt @@ -39,4 +39,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(object_viewer_widget_qt ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) ENDIF(WITH_PCH) -#INSTALL(TARGETS object_viewer_widget_qt RUNTIME DESTINATION bin COMPONENT runtime BUNDLE DESTINATION /Applications) +#INSTALL(TARGETS object_viewer_widget_qt RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT runtime BUNDLE DESTINATION /Applications) diff --git a/code/nel/tools/3d/panoply_maker/CMakeLists.txt b/code/nel/tools/3d/panoply_maker/CMakeLists.txt index 2b17b4877..8fd25fef6 100644 --- a/code/nel/tools/3d/panoply_maker/CMakeLists.txt +++ b/code/nel/tools/3d/panoply_maker/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(panoply_maker s3tc_compressor nelmisc nel3d) NL_DEFAULT_PROPS(panoply_maker "NeL, Tools, 3D: panoply_maker") NL_ADD_RUNTIME_FLAGS(panoply_maker) -INSTALL(TARGETS panoply_maker RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS panoply_maker RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/shapes_exporter/CMakeLists.txt b/code/nel/tools/3d/shapes_exporter/CMakeLists.txt index 725ef3dec..1df5eafa0 100644 --- a/code/nel/tools/3d/shapes_exporter/CMakeLists.txt +++ b/code/nel/tools/3d/shapes_exporter/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(shapes_exporter nelmisc nel3d) NL_DEFAULT_PROPS(shapes_exporter "NeL, Tools, 3D: Shapes Exporter") NL_ADD_RUNTIME_FLAGS(shapes_exporter) -INSTALL(TARGETS shapes_exporter RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS shapes_exporter RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/tga_2_dds/CMakeLists.txt b/code/nel/tools/3d/tga_2_dds/CMakeLists.txt index 7f82c18a1..10620af5b 100644 --- a/code/nel/tools/3d/tga_2_dds/CMakeLists.txt +++ b/code/nel/tools/3d/tga_2_dds/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(tga2dds s3tc_compressor nelmisc nel3d) NL_DEFAULT_PROPS(tga2dds "NeL, Tools, 3D: tga2dds") NL_ADD_RUNTIME_FLAGS(tga2dds) -INSTALL(TARGETS tga2dds RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS tga2dds RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/tga_cut/CMakeLists.txt b/code/nel/tools/3d/tga_cut/CMakeLists.txt index a4cfaba40..6d0147328 100644 --- a/code/nel/tools/3d/tga_cut/CMakeLists.txt +++ b/code/nel/tools/3d/tga_cut/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(tga_cut nelmisc) NL_DEFAULT_PROPS(tga_cut "NeL, Tools, 3D: tga_cut") NL_ADD_RUNTIME_FLAGS(tga_cut) -INSTALL(TARGETS tga_cut RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS tga_cut RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/tga_resize/CMakeLists.txt b/code/nel/tools/3d/tga_resize/CMakeLists.txt index 170415f7d..48642473e 100644 --- a/code/nel/tools/3d/tga_resize/CMakeLists.txt +++ b/code/nel/tools/3d/tga_resize/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(tga_resize nelmisc) NL_DEFAULT_PROPS(tga_resize "NeL, Tools, 3D: tga_resize") NL_ADD_RUNTIME_FLAGS(tga_resize) -INSTALL(TARGETS tga_resize RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS tga_resize RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/tile_edit/CMakeLists.txt b/code/nel/tools/3d/tile_edit/CMakeLists.txt index 70c056c39..ea7e1ac77 100644 --- a/code/nel/tools/3d/tile_edit/CMakeLists.txt +++ b/code/nel/tools/3d/tile_edit/CMakeLists.txt @@ -17,4 +17,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(tile_edit ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS tile_edit RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS tile_edit RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/tile_edit_qt/CMakeLists.txt b/code/nel/tools/3d/tile_edit_qt/CMakeLists.txt index 2348b81bc..18ced90ed 100644 --- a/code/nel/tools/3d/tile_edit_qt/CMakeLists.txt +++ b/code/nel/tools/3d/tile_edit_qt/CMakeLists.txt @@ -27,5 +27,5 @@ NL_ADD_RUNTIME_FLAGS(tile_edit_qt) ADD_DEFINITIONS(${QT_DEFINITIONS}) -INSTALL(TARGETS tile_edit_qt RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS tile_edit_qt RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_check_bind/CMakeLists.txt b/code/nel/tools/3d/zone_check_bind/CMakeLists.txt index b0b059341..212f7e18b 100644 --- a/code/nel/tools/3d/zone_check_bind/CMakeLists.txt +++ b/code/nel/tools/3d/zone_check_bind/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_check_bind nel3d nelmisc) NL_DEFAULT_PROPS(zone_check_bind "NeL, Tools, 3D: zone_check_bind") NL_ADD_RUNTIME_FLAGS(zone_check_bind) -INSTALL(TARGETS zone_check_bind RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_check_bind RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_dependencies/CMakeLists.txt b/code/nel/tools/3d/zone_dependencies/CMakeLists.txt index f841a30c0..9efb49f0e 100644 --- a/code/nel/tools/3d/zone_dependencies/CMakeLists.txt +++ b/code/nel/tools/3d/zone_dependencies/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_dependencies nel3d nelgeorges nelmisc) NL_DEFAULT_PROPS(zone_dependencies "NeL, Tools, 3D: zone_dependencies") NL_ADD_RUNTIME_FLAGS(zone_dependencies) -INSTALL(TARGETS zone_dependencies RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_dependencies RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_dump/CMakeLists.txt b/code/nel/tools/3d/zone_dump/CMakeLists.txt index e9f162fb3..8bc10b811 100644 --- a/code/nel/tools/3d/zone_dump/CMakeLists.txt +++ b/code/nel/tools/3d/zone_dump/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_dump nel3d nelmisc) NL_DEFAULT_PROPS(zone_dump "NeL, Tools, 3D: zone_dump") NL_ADD_RUNTIME_FLAGS(zone_dump) -INSTALL(TARGETS zone_dump RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_dump RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_ig_lighter/CMakeLists.txt b/code/nel/tools/3d/zone_ig_lighter/CMakeLists.txt index 096469b5e..30f84cea8 100644 --- a/code/nel/tools/3d/zone_ig_lighter/CMakeLists.txt +++ b/code/nel/tools/3d/zone_ig_lighter/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_ig_lighter nelmisc nel3d) NL_DEFAULT_PROPS(zone_ig_lighter "NeL, Tools, 3D: zone_ig_lighter") NL_ADD_RUNTIME_FLAGS(zone_ig_lighter) -INSTALL(TARGETS zone_ig_lighter RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_ig_lighter RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_lighter/CMakeLists.txt b/code/nel/tools/3d/zone_lighter/CMakeLists.txt index 816b8a841..e0c15f9e8 100644 --- a/code/nel/tools/3d/zone_lighter/CMakeLists.txt +++ b/code/nel/tools/3d/zone_lighter/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_lighter nel3d nelgeorges nelmisc) NL_DEFAULT_PROPS(zone_lighter "NeL, Tools, 3D: zone_lighter") NL_ADD_RUNTIME_FLAGS(zone_lighter) -INSTALL(TARGETS zone_lighter RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_lighter RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zone_welder/CMakeLists.txt b/code/nel/tools/3d/zone_welder/CMakeLists.txt index 2e8acb118..396d22f58 100644 --- a/code/nel/tools/3d/zone_welder/CMakeLists.txt +++ b/code/nel/tools/3d/zone_welder/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(zone_welder nel3d nelmisc) NL_DEFAULT_PROPS(zone_welder "NeL, Tools, 3D: zone_welder") NL_ADD_RUNTIME_FLAGS(zone_welder) -INSTALL(TARGETS zone_welder RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zone_welder RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) diff --git a/code/nel/tools/3d/zviewer/CMakeLists.txt b/code/nel/tools/3d/zviewer/CMakeLists.txt index f695534be..a7a5150b7 100644 --- a/code/nel/tools/3d/zviewer/CMakeLists.txt +++ b/code/nel/tools/3d/zviewer/CMakeLists.txt @@ -12,6 +12,6 @@ TARGET_LINK_LIBRARIES(zviewer nelmisc nel3d) NL_DEFAULT_PROPS(zviewer "NeL, Tools, 3D: Zone Viewer") NL_ADD_RUNTIME_FLAGS(zviewer) -INSTALL(TARGETS zviewer RUNTIME DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS zviewer RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d) INSTALL(FILES zviewer.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT tools3d) INSTALL(FILES readme.txt DESTINATION ${NL_SHARE_PREFIX}/zviewer COMPONENT tools3d) diff --git a/code/nel/tools/georges/georges2csv/CMakeLists.txt b/code/nel/tools/georges/georges2csv/CMakeLists.txt index e64d85772..b52de14ea 100644 --- a/code/nel/tools/georges/georges2csv/CMakeLists.txt +++ b/code/nel/tools/georges/georges2csv/CMakeLists.txt @@ -10,4 +10,4 @@ NL_ADD_RUNTIME_FLAGS(georges2csv) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS georges2csv RUNTIME DESTINATION bin COMPONENT toolsgeorges) +INSTALL(TARGETS georges2csv RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsgeorges) diff --git a/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt b/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt index f65ff800f..e538799a0 100644 --- a/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt +++ b/code/nel/tools/logic/logic_editor_dll/CMakeLists.txt @@ -15,4 +15,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(logic_editor_dll ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS logic_editor_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT toolsmisc) +INSTALL(TARGETS logic_editor_dll LIBRARY DESTINATION ${NL_LIB_PREFIX} RUNTIME DESTINATION ${NL_BIN_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/logic/logic_editor_exe/CMakeLists.txt b/code/nel/tools/logic/logic_editor_exe/CMakeLists.txt index 764a0901e..7a210a71a 100644 --- a/code/nel/tools/logic/logic_editor_exe/CMakeLists.txt +++ b/code/nel/tools/logic/logic_editor_exe/CMakeLists.txt @@ -10,4 +10,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(logic_editor ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS logic_editor RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS logic_editor RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/memory/memlog/CMakeLists.txt b/code/nel/tools/memory/memlog/CMakeLists.txt index 9b471519b..f479a1579 100644 --- a/code/nel/tools/memory/memlog/CMakeLists.txt +++ b/code/nel/tools/memory/memlog/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(memlog nelmisc) NL_DEFAULT_PROPS(memlog "NeL, Tools, Memory: memlog") NL_ADD_RUNTIME_FLAGS(memlog) -INSTALL(TARGETS memlog RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS memlog RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/bnp_make/CMakeLists.txt b/code/nel/tools/misc/bnp_make/CMakeLists.txt index d0e4c4aa0..d27252fb6 100644 --- a/code/nel/tools/misc/bnp_make/CMakeLists.txt +++ b/code/nel/tools/misc/bnp_make/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(bnp_make nelmisc) NL_DEFAULT_PROPS(bnp_make "NeL, Tools, Misc: bnp_make") NL_ADD_RUNTIME_FLAGS(bnp_make) -INSTALL(TARGETS bnp_make RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS bnp_make RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/branch_patcher/CMakeLists.txt b/code/nel/tools/misc/branch_patcher/CMakeLists.txt index 13cd96605..010e7defd 100644 --- a/code/nel/tools/misc/branch_patcher/CMakeLists.txt +++ b/code/nel/tools/misc/branch_patcher/CMakeLists.txt @@ -8,4 +8,4 @@ NL_ADD_RUNTIME_FLAGS(branch_patcher) ADD_DEFINITIONS(${MFC_DEFINITIONS}) -INSTALL(TARGETS branch_patcher RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS branch_patcher RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/data_mirror/CMakeLists.txt b/code/nel/tools/misc/data_mirror/CMakeLists.txt index 3b87782b5..9727576ba 100644 --- a/code/nel/tools/misc/data_mirror/CMakeLists.txt +++ b/code/nel/tools/misc/data_mirror/CMakeLists.txt @@ -8,4 +8,4 @@ NL_ADD_RUNTIME_FLAGS(data_mirror) ADD_DEFINITIONS(${MFC_DEFINITIONS}) -INSTALL(TARGETS data_mirror RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS data_mirror RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/disp_sheet_id/CMakeLists.txt b/code/nel/tools/misc/disp_sheet_id/CMakeLists.txt index 13b8cb09a..0ab03d736 100644 --- a/code/nel/tools/misc/disp_sheet_id/CMakeLists.txt +++ b/code/nel/tools/misc/disp_sheet_id/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(disp_sheet_id nelmisc) NL_DEFAULT_PROPS(disp_sheet_id "NeL, Tools, Misc: disp_sheet_id") NL_ADD_RUNTIME_FLAGS(disp_sheet_id) -INSTALL(TARGETS disp_sheet_id RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS disp_sheet_id RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/exec_timeout/CMakeLists.txt b/code/nel/tools/misc/exec_timeout/CMakeLists.txt index daadd75d5..18654e169 100644 --- a/code/nel/tools/misc/exec_timeout/CMakeLists.txt +++ b/code/nel/tools/misc/exec_timeout/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(exec_timeout nelmisc) NL_DEFAULT_PROPS(exec_timeout "NeL, Tools, Misc: exec_timeout") NL_ADD_RUNTIME_FLAGS(exec_timeout) -INSTALL(TARGETS exec_timeout RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS exec_timeout RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/extract_filename/CMakeLists.txt b/code/nel/tools/misc/extract_filename/CMakeLists.txt index c46e9f1fc..7f20cc6d6 100644 --- a/code/nel/tools/misc/extract_filename/CMakeLists.txt +++ b/code/nel/tools/misc/extract_filename/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(extract_filename nelmisc) NL_DEFAULT_PROPS(extract_filename "NeL, Tools, Misc: extract_filename") NL_ADD_RUNTIME_FLAGS(extract_filename) -INSTALL(TARGETS extract_filename RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS extract_filename RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/lock/CMakeLists.txt b/code/nel/tools/misc/lock/CMakeLists.txt index 23771299a..52afeee24 100644 --- a/code/nel/tools/misc/lock/CMakeLists.txt +++ b/code/nel/tools/misc/lock/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(lock nelmisc) NL_DEFAULT_PROPS(lock "NeL, Tools, Misc: lock") NL_ADD_RUNTIME_FLAGS(lock) -INSTALL(TARGETS lock RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS lock RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/log_analyser/CMakeLists.txt b/code/nel/tools/misc/log_analyser/CMakeLists.txt index fbc124b91..e852de2bc 100644 --- a/code/nel/tools/misc/log_analyser/CMakeLists.txt +++ b/code/nel/tools/misc/log_analyser/CMakeLists.txt @@ -8,4 +8,4 @@ NL_ADD_RUNTIME_FLAGS(log_analyser) ADD_DEFINITIONS(${MFC_DEFINITIONS}) -INSTALL(TARGETS log_analyser RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS log_analyser RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/log_analyser_plug_ins/extract_warnings/CMakeLists.txt b/code/nel/tools/misc/log_analyser_plug_ins/extract_warnings/CMakeLists.txt index 5524f1012..9fc570623 100644 --- a/code/nel/tools/misc/log_analyser_plug_ins/extract_warnings/CMakeLists.txt +++ b/code/nel/tools/misc/log_analyser_plug_ins/extract_warnings/CMakeLists.txt @@ -8,4 +8,4 @@ NL_ADD_RUNTIME_FLAGS(extract_warnings) NL_ADD_LIB_SUFFIX(extract_warnings) -INSTALL(TARGETS extract_warnings RUNTIME DESTINATION bin LIBRARY DESTINATION lib/log_analyser COMPONENT toolsmisc) +INSTALL(TARGETS extract_warnings RUNTIME DESTINATION ${NL_BIN_PREFIX} LIBRARY DESTINATION lib/log_analyser COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/make_sheet_id/CMakeLists.txt b/code/nel/tools/misc/make_sheet_id/CMakeLists.txt index 22730ce5c..553f7fddb 100644 --- a/code/nel/tools/misc/make_sheet_id/CMakeLists.txt +++ b/code/nel/tools/misc/make_sheet_id/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(make_sheet_id nelmisc) NL_DEFAULT_PROPS(make_sheet_id "NeL, Tools, Misc: make_sheet_id") NL_ADD_RUNTIME_FLAGS(make_sheet_id) -INSTALL(TARGETS make_sheet_id RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS make_sheet_id RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) INSTALL(FILES make_sheet_id.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/message_box/CMakeLists.txt b/code/nel/tools/misc/message_box/CMakeLists.txt index 8aec80959..764071d9d 100644 --- a/code/nel/tools/misc/message_box/CMakeLists.txt +++ b/code/nel/tools/misc/message_box/CMakeLists.txt @@ -6,4 +6,4 @@ ADD_EXECUTABLE(message_box WIN32 ${SRC}) NL_DEFAULT_PROPS(message_box "NeL, Tools, Misc: message_box") NL_ADD_RUNTIME_FLAGS(message_box) -INSTALL(TARGETS message_box RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS message_box RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/message_box_qt/CMakeLists.txt b/code/nel/tools/misc/message_box_qt/CMakeLists.txt index f71143341..408bf867e 100644 --- a/code/nel/tools/misc/message_box_qt/CMakeLists.txt +++ b/code/nel/tools/misc/message_box_qt/CMakeLists.txt @@ -14,5 +14,5 @@ NL_ADD_RUNTIME_FLAGS(message_box_qt) ADD_DEFINITIONS(${QT_DEFINITIONS}) -INSTALL(TARGETS message_box_qt RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS message_box_qt RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/multi_cd_setup_fix/CMakeLists.txt b/code/nel/tools/misc/multi_cd_setup_fix/CMakeLists.txt index 550547cce..3a5f7da4e 100644 --- a/code/nel/tools/misc/multi_cd_setup_fix/CMakeLists.txt +++ b/code/nel/tools/misc/multi_cd_setup_fix/CMakeLists.txt @@ -6,4 +6,4 @@ ADD_EXECUTABLE(multi_cd_setup_fix WIN32 ${SRC} multi_cd_setup_fix.rc) NL_DEFAULT_PROPS(multi_cd_setup_fix "NeL, Tools, Misc: multi_cd_setup_fix") NL_ADD_RUNTIME_FLAGS(multi_cd_setup_fix) -INSTALL(TARGETS multi_cd_setup_fix RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS multi_cd_setup_fix RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/probe_timers/CMakeLists.txt b/code/nel/tools/misc/probe_timers/CMakeLists.txt index df0f34926..cb17490df 100644 --- a/code/nel/tools/misc/probe_timers/CMakeLists.txt +++ b/code/nel/tools/misc/probe_timers/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(nl_probe_timers nelmisc) NL_DEFAULT_PROPS(nl_probe_timers "NeL, Tools, Misc: Probe Timers") NL_ADD_RUNTIME_FLAGS(nl_probe_timers) -INSTALL(TARGETS nl_probe_timers RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS nl_probe_timers RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/words_dic/CMakeLists.txt b/code/nel/tools/misc/words_dic/CMakeLists.txt index 1769422e5..c3f3975f2 100644 --- a/code/nel/tools/misc/words_dic/CMakeLists.txt +++ b/code/nel/tools/misc/words_dic/CMakeLists.txt @@ -12,4 +12,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(words_dic ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS words_dic RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS words_dic RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/words_dic_qt/CMakeLists.txt b/code/nel/tools/misc/words_dic_qt/CMakeLists.txt index c112d6885..2f755dfc1 100644 --- a/code/nel/tools/misc/words_dic_qt/CMakeLists.txt +++ b/code/nel/tools/misc/words_dic_qt/CMakeLists.txt @@ -27,6 +27,6 @@ NL_ADD_RUNTIME_FLAGS(words_dic_qt) ADD_DEFINITIONS(${QT_DEFINITIONS}) -INSTALL(TARGETS words_dic_qt RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS words_dic_qt RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) INSTALL(FILES words_dic.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/misc/xml_packer/CMakeLists.txt b/code/nel/tools/misc/xml_packer/CMakeLists.txt index 70d5a3270..c9dcd4c6b 100644 --- a/code/nel/tools/misc/xml_packer/CMakeLists.txt +++ b/code/nel/tools/misc/xml_packer/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(xml_packer nelmisc) NL_DEFAULT_PROPS(xml_packer "NeL, Tools, Misc: xml_packer") NL_ADD_RUNTIME_FLAGS(xml_packer) -INSTALL(TARGETS xml_packer RUNTIME DESTINATION bin COMPONENT toolsmisc) +INSTALL(TARGETS xml_packer RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc) diff --git a/code/nel/tools/nel_unit_test/CMakeLists.txt b/code/nel/tools/nel_unit_test/CMakeLists.txt index 5b2f2d0d4..8c53ff1c6 100644 --- a/code/nel/tools/nel_unit_test/CMakeLists.txt +++ b/code/nel/tools/nel_unit_test/CMakeLists.txt @@ -10,4 +10,4 @@ NL_ADD_RUNTIME_FLAGS(nel_unit_test) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DNEL_UNIT_BASE="${PROJECT_SOURCE_DIR}/tools/nel_unit_test/") -INSTALL(TARGETS nel_unit_test RUNTIME DESTINATION bin) +INSTALL(TARGETS nel_unit_test RUNTIME DESTINATION ${NL_BIN_PREFIX}) diff --git a/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt b/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt index c3d22d8a5..fb2feedbe 100644 --- a/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt +++ b/code/nel/tools/pacs/build_ig_boxes/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(build_ig_boxes nelmisc nelpacs nel3d) NL_DEFAULT_PROPS(build_ig_boxes "NeL, Tools, PACS: build_ig_boxes") NL_ADD_RUNTIME_FLAGS(build_ig_boxes) -INSTALL(TARGETS build_ig_boxes RUNTIME DESTINATION bin COMPONENT toolspacs) +INSTALL(TARGETS build_ig_boxes RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolspacs) INSTALL(FILES build_ig_boxes.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt b/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt index 8e5f73b2d..85f1984bf 100644 --- a/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt +++ b/code/nel/tools/pacs/build_indoor_rbank/CMakeLists.txt @@ -8,5 +8,5 @@ TARGET_LINK_LIBRARIES(build_indoor_rbank nelmisc nelpacs) NL_DEFAULT_PROPS(build_indoor_rbank "NeL, Tools, PACS: build_indoor_rbank") NL_ADD_RUNTIME_FLAGS(build_indoor_rbank) -INSTALL(TARGETS build_indoor_rbank RUNTIME DESTINATION bin COMPONENT toolspacs) +INSTALL(TARGETS build_indoor_rbank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolspacs) INSTALL(FILES build_indoor_rbank.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nel/tools/pacs/build_rbank/CMakeLists.txt b/code/nel/tools/pacs/build_rbank/CMakeLists.txt index 9c908bce1..b35cb808c 100644 --- a/code/nel/tools/pacs/build_rbank/CMakeLists.txt +++ b/code/nel/tools/pacs/build_rbank/CMakeLists.txt @@ -12,5 +12,5 @@ NL_ADD_RUNTIME_FLAGS(build_rbank) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS build_rbank RUNTIME DESTINATION bin COMPONENT toolspacs) +INSTALL(TARGETS build_rbank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolspacs) INSTALL(FILES build_rbank.cfg DESTINATION ${NL_ETC_PREFIX} COMPONENT toolspacs) diff --git a/code/nel/tools/sound/build_samplebank/CMakeLists.txt b/code/nel/tools/sound/build_samplebank/CMakeLists.txt index e53b54e11..ab427373c 100644 --- a/code/nel/tools/sound/build_samplebank/CMakeLists.txt +++ b/code/nel/tools/sound/build_samplebank/CMakeLists.txt @@ -10,4 +10,4 @@ TARGET_LINK_LIBRARIES(build_samplebank nelmisc nelsound) NL_DEFAULT_PROPS(build_samplebank "NeL, Tools, Sound: build_samplebank") NL_ADD_RUNTIME_FLAGS(build_samplebank) -INSTALL(TARGETS build_samplebank RUNTIME DESTINATION bin COMPONENT toolssound) +INSTALL(TARGETS build_samplebank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolssound) diff --git a/code/nel/tools/sound/build_sound/CMakeLists.txt b/code/nel/tools/sound/build_sound/CMakeLists.txt index 5549e4284..7813e4e8f 100644 --- a/code/nel/tools/sound/build_sound/CMakeLists.txt +++ b/code/nel/tools/sound/build_sound/CMakeLists.txt @@ -10,4 +10,4 @@ TARGET_LINK_LIBRARIES(build_sound nelmisc nelsound) NL_DEFAULT_PROPS(build_sound "NeL, Tools, Sound: build_sound") NL_ADD_RUNTIME_FLAGS(build_sound) -INSTALL(TARGETS build_sound RUNTIME DESTINATION bin COMPONENT toolssound) +INSTALL(TARGETS build_sound RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolssound) diff --git a/code/nel/tools/sound/build_soundbank/CMakeLists.txt b/code/nel/tools/sound/build_soundbank/CMakeLists.txt index 27148ed26..4431a47b8 100644 --- a/code/nel/tools/sound/build_soundbank/CMakeLists.txt +++ b/code/nel/tools/sound/build_soundbank/CMakeLists.txt @@ -10,4 +10,4 @@ TARGET_LINK_LIBRARIES(build_soundbank nelmisc nelsound) NL_DEFAULT_PROPS(build_soundbank "NeL, Tools, Sound: build_soundbank") NL_ADD_RUNTIME_FLAGS(build_soundbank) -INSTALL(TARGETS build_soundbank RUNTIME DESTINATION bin COMPONENT toolssound) +INSTALL(TARGETS build_soundbank RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolssound) From 8eaf7d889a149dfb06236ed32d7be8b04e8568a4 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 27 Sep 2012 22:17:47 +0200 Subject: [PATCH 037/125] Changed: Use *_PREFIX instead of fixed values with INSTALL --- code/ryzom/client/src/seven_zip/CMakeLists.txt | 2 +- code/ryzom/tools/assoc_mem/CMakeLists.txt | 2 +- code/ryzom/tools/client/client_patcher/CMakeLists.txt | 2 +- .../tools/leveldesign/alias_synchronizer/CMakeLists.txt | 4 ++-- code/ryzom/tools/leveldesign/csv_transform/CMakeLists.txt | 2 +- code/ryzom/tools/leveldesign/export/CMakeLists.txt | 5 +++-- code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt | 2 +- .../leveldesign/georges_editor_qt/src/CMakeLists.txt | 2 +- code/ryzom/tools/leveldesign/georges_exe/CMakeLists.txt | 2 +- .../tools/leveldesign/georges_plugin_sound/CMakeLists.txt | 2 +- code/ryzom/tools/leveldesign/icon_search/CMakeLists.txt | 2 +- .../tools/leveldesign/mission_compiler_fe/CMakeLists.txt | 2 +- .../tools/leveldesign/mission_compiler_lib/CMakeLists.txt | 6 ++++-- code/ryzom/tools/leveldesign/mp_generator/CMakeLists.txt | 2 +- .../tools/leveldesign/named_items_2_csv/CMakeLists.txt | 2 +- code/ryzom/tools/leveldesign/prim_export/CMakeLists.txt | 4 ++-- code/ryzom/tools/leveldesign/uni_conv/CMakeLists.txt | 6 +++--- .../leveldesign/world_editor/land_export/CMakeLists.txt | 4 ++-- .../world_editor/land_export_lib/CMakeLists.txt | 5 +++-- .../leveldesign/world_editor/world_editor/CMakeLists.txt | 4 ++-- .../world_editor_fauna_graph_plugin/CMakeLists.txt | 2 +- .../world_editor/world_editor_graph_plugin/CMakeLists.txt | 2 +- .../world_editor/world_editor_plugin/CMakeLists.txt | 4 ++-- .../world_editor_primitive_plugin/CMakeLists.txt | 2 +- .../world_editor_shard_monitor_plugin/CMakeLists.txt | 2 +- .../world_editor/world_editor_sound_plugin/CMakeLists.txt | 2 +- code/ryzom/tools/make_alias_file/CMakeLists.txt | 4 ++-- code/ryzom/tools/make_anim_by_race/CMakeLists.txt | 4 ++-- code/ryzom/tools/make_anim_melee_impact/CMakeLists.txt | 4 ++-- code/ryzom/tools/occ2huff/CMakeLists.txt | 2 +- code/ryzom/tools/patch_gen/CMakeLists.txt | 8 ++++---- code/ryzom/tools/pd_parser/CMakeLists.txt | 4 ++-- code/ryzom/tools/pdr_util/CMakeLists.txt | 4 ++-- code/ryzom/tools/phrase_generator/CMakeLists.txt | 2 +- code/ryzom/tools/server/ai_build_wmap/CMakeLists.txt | 2 +- .../tools/server/build_world_packed_col/CMakeLists.txt | 2 +- code/ryzom/tools/sheet_random_generator/CMakeLists.txt | 2 +- code/ryzom/tools/sheets_packer/CMakeLists.txt | 2 +- code/ryzom/tools/skill_extractor/CMakeLists.txt | 4 ++-- code/ryzom/tools/stats_scan/CMakeLists.txt | 4 ++-- code/ryzom/tools/translation_tools/CMakeLists.txt | 4 ++-- code/snowballs2/client/src/CMakeLists.txt | 2 +- 42 files changed, 67 insertions(+), 63 deletions(-) diff --git a/code/ryzom/client/src/seven_zip/CMakeLists.txt b/code/ryzom/client/src/seven_zip/CMakeLists.txt index 8cdade76f..cc152757b 100644 --- a/code/ryzom/client/src/seven_zip/CMakeLists.txt +++ b/code/ryzom/client/src/seven_zip/CMakeLists.txt @@ -23,5 +23,5 @@ IF(WITH_RYZOM_TOOLS) NL_DEFAULT_PROPS(7zDec "Ryzom, Tools, Misc: Seven Zip Decoder") NL_ADD_RUNTIME_FLAGS(7zDec) - INSTALL(TARGETS 7zDec RUNTIME DESTINATION bin COMPONENT client) + INSTALL(TARGETS 7zDec RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) ENDIF(WITH_RYZOM_TOOLS) diff --git a/code/ryzom/tools/assoc_mem/CMakeLists.txt b/code/ryzom/tools/assoc_mem/CMakeLists.txt index 5c6fc82a3..97a73c491 100644 --- a/code/ryzom/tools/assoc_mem/CMakeLists.txt +++ b/code/ryzom/tools/assoc_mem/CMakeLists.txt @@ -9,4 +9,4 @@ ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) NL_DEFAULT_PROPS(assoc_mem "Ryzom, Tools, Misc: assoc_mem") NL_ADD_RUNTIME_FLAGS(assoc_mem) -INSTALL(TARGETS assoc_mem RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS assoc_mem RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/client/client_patcher/CMakeLists.txt b/code/ryzom/tools/client/client_patcher/CMakeLists.txt index 4a8b47bdf..e5b845e43 100644 --- a/code/ryzom/tools/client/client_patcher/CMakeLists.txt +++ b/code/ryzom/tools/client/client_patcher/CMakeLists.txt @@ -36,4 +36,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(ryzom_client_patcher ${CMAKE_SOURCE_DIR}/ryzom/client/src/stdpch.h ${CMAKE_SOURCE_DIR}/ryzom/client/src/stdpch.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS ryzom_client_patcher RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications) +INSTALL(TARGETS ryzom_client_patcher RUNTIME DESTINATION ${RYZOM_GAMES_PREFIX} COMPONENT client BUNDLE DESTINATION /Applications) diff --git a/code/ryzom/tools/leveldesign/alias_synchronizer/CMakeLists.txt b/code/ryzom/tools/leveldesign/alias_synchronizer/CMakeLists.txt index 6967308dd..2596c1f17 100644 --- a/code/ryzom/tools/leveldesign/alias_synchronizer/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/alias_synchronizer/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(alias_synchronizer ${LIBXML2_LIBRARIES} nelmisc nelligo) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(alias_synchronizer "Ryzom, Tools, Misc: Alias Synchronizer") +NL_DEFAULT_PROPS(alias_synchronizer "Ryzom, Tools, Misc: Alias Synchronizer") NL_ADD_RUNTIME_FLAGS(alias_synchronizer) -INSTALL(TARGETS alias_synchronizer RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS alias_synchronizer RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/csv_transform/CMakeLists.txt b/code/ryzom/tools/leveldesign/csv_transform/CMakeLists.txt index f9b4ea109..efb10b91c 100644 --- a/code/ryzom/tools/leveldesign/csv_transform/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/csv_transform/CMakeLists.txt @@ -8,4 +8,4 @@ TARGET_LINK_LIBRARIES(csv_transform nelmisc) NL_DEFAULT_PROPS(csv_transform "Ryzom, Tools, Misc: CSV Transform") NL_ADD_RUNTIME_FLAGS(csv_transform) -INSTALL(TARGETS csv_transform RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS csv_transform RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/export/CMakeLists.txt b/code/ryzom/tools/leveldesign/export/CMakeLists.txt index c1d34519d..7d93dd7f9 100644 --- a/code/ryzom/tools/leveldesign/export/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/export/CMakeLists.txt @@ -12,5 +12,6 @@ NL_ADD_LIB_SUFFIX(ryzom_export) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_export LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) - +IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) + INSTALL(TARGETS ryzom_export LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt index 99f60aea7..0192615ca 100644 --- a/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_dll/CMakeLists.txt @@ -16,4 +16,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(georges_dll ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS georges_dll LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +INSTALL(TARGETS georges_dll LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/georges_editor_qt/src/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_editor_qt/src/CMakeLists.txt index 869d9d1c4..81327442a 100644 --- a/code/ryzom/tools/leveldesign/georges_editor_qt/src/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_editor_qt/src/CMakeLists.txt @@ -71,4 +71,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(georges_editor_qt ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS georges_editor_qt RUNTIME DESTINATION bin COMPONENT runtime BUNDLE DESTINATION /Applications) +INSTALL(TARGETS georges_editor_qt RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT runtime BUNDLE DESTINATION /Applications) diff --git a/code/ryzom/tools/leveldesign/georges_exe/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_exe/CMakeLists.txt index 064f1985e..07ac799c9 100644 --- a/code/ryzom/tools/leveldesign/georges_exe/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_exe/CMakeLists.txt @@ -9,4 +9,4 @@ TARGET_LINK_LIBRARIES(georges_exe nelmisc nelgeorges georges_dll) NL_DEFAULT_PROPS(georges_exe "Ryzom, Tools, Georges: Georges Exe") NL_ADD_RUNTIME_FLAGS(georges_exe) -INSTALL(TARGETS georges_exe RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS georges_exe RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt b/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt index 76f8e63f7..c88246a98 100644 --- a/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/georges_plugin_sound/CMakeLists.txt @@ -23,4 +23,4 @@ NL_ADD_LIB_SUFFIX(georges_plugin_sound) ADD_DEFINITIONS(${MFC_DEFINITIONS}) -INSTALL(TARGETS georges_plugin_sound LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +INSTALL(TARGETS georges_plugin_sound LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) diff --git a/code/ryzom/tools/leveldesign/icon_search/CMakeLists.txt b/code/ryzom/tools/leveldesign/icon_search/CMakeLists.txt index 8e5063f64..c1d2a47e1 100644 --- a/code/ryzom/tools/leveldesign/icon_search/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/icon_search/CMakeLists.txt @@ -6,4 +6,4 @@ TARGET_LINK_LIBRARIES(icon_search nelmisc) NL_DEFAULT_PROPS(icon_search "Ryzom, Tools, Misc: Icon Search") NL_ADD_RUNTIME_FLAGS(icon_search) -INSTALL(TARGETS icon_search RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS icon_search RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/mission_compiler_fe/CMakeLists.txt b/code/ryzom/tools/leveldesign/mission_compiler_fe/CMakeLists.txt index 572060089..c8c1211bc 100644 --- a/code/ryzom/tools/leveldesign/mission_compiler_fe/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/mission_compiler_fe/CMakeLists.txt @@ -13,4 +13,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(ryzom_mission_compiler_fe ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS ryzom_mission_compiler_fe RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS ryzom_mission_compiler_fe RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt b/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt index 5c5ce949c..23b13be97 100644 --- a/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/mission_compiler_lib/CMakeLists.txt @@ -14,7 +14,9 @@ NL_DEFAULT_PROPS(ryzom_mission_compiler_lib "Ryzom, Library: Mission Compiler") NL_ADD_RUNTIME_FLAGS(ryzom_mission_compiler_lib) NL_ADD_LIB_SUFFIX(ryzom_mission_compiler_lib) -INSTALL(TARGETS ryzom_mission_compiler_lib LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) + INSTALL(TARGETS ryzom_mission_compiler_lib LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) FILE(GLOB EXESRC main.cpp) @@ -24,4 +26,4 @@ TARGET_LINK_LIBRARIES(ryzom_mission_compiler ryzom_mission_compiler_lib) NL_DEFAULT_PROPS(ryzom_mission_compiler "Ryzom, Tools, Misc: Mission Compiler") NL_ADD_RUNTIME_FLAGS(ryzom_mission_compiler) -INSTALL(TARGETS ryzom_mission_compiler RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS ryzom_mission_compiler RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/mp_generator/CMakeLists.txt b/code/ryzom/tools/leveldesign/mp_generator/CMakeLists.txt index 11b529b8d..7d177bd02 100644 --- a/code/ryzom/tools/leveldesign/mp_generator/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/mp_generator/CMakeLists.txt @@ -13,4 +13,4 @@ NL_ADD_RUNTIME_FLAGS(mp_generator) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS mp_generator RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS mp_generator RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/named_items_2_csv/CMakeLists.txt b/code/ryzom/tools/leveldesign/named_items_2_csv/CMakeLists.txt index 8cb16330b..990c1dd08 100644 --- a/code/ryzom/tools/leveldesign/named_items_2_csv/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/named_items_2_csv/CMakeLists.txt @@ -13,4 +13,4 @@ NL_ADD_RUNTIME_FLAGS(named2csv) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS named2csv RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS named2csv RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/prim_export/CMakeLists.txt b/code/ryzom/tools/leveldesign/prim_export/CMakeLists.txt index 655209ef0..21fe7166b 100644 --- a/code/ryzom/tools/leveldesign/prim_export/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/prim_export/CMakeLists.txt @@ -11,7 +11,7 @@ TARGET_LINK_LIBRARIES(prim_export ${LIBXML2_LIBRARIES}) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(prim_export "Ryzom, Tools, World: Primitive Export") +NL_DEFAULT_PROPS(prim_export "Ryzom, Tools, World: Primitive Export") NL_ADD_RUNTIME_FLAGS(prim_export) -INSTALL(TARGETS prim_export RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS prim_export RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/uni_conv/CMakeLists.txt b/code/ryzom/tools/leveldesign/uni_conv/CMakeLists.txt index b616f7cee..8fc43d376 100644 --- a/code/ryzom/tools/leveldesign/uni_conv/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/uni_conv/CMakeLists.txt @@ -5,8 +5,8 @@ ADD_EXECUTABLE(uni_conv ${SRC}) INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(uni_conv ${LIBXML2_LIBRARIES} nelmisc) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) - -NL_DEFAULT_PROPS(uni_conv "Ryzom, Tools, Misc: Unicode Conversion Tool") + +NL_DEFAULT_PROPS(uni_conv "Ryzom, Tools, Misc: Unicode Conversion Tool") NL_ADD_RUNTIME_FLAGS(uni_conv) -INSTALL(TARGETS uni_conv RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS uni_conv RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/world_editor/land_export/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/land_export/CMakeLists.txt index 6ac51f423..3ac1128e9 100644 --- a/code/ryzom/tools/leveldesign/world_editor/land_export/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/land_export/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(land_export ${LIBXML2_LIBRARIES} nelmisc nelligo ryzom_landexport) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(land_export "Ryzom, Tools, World: Land Export") +NL_DEFAULT_PROPS(land_export "Ryzom, Tools, World: Land Export") NL_ADD_RUNTIME_FLAGS(land_export) -INSTALL(TARGETS land_export RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS land_export RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt index 89fb06086..e130751a2 100644 --- a/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/land_export_lib/CMakeLists.txt @@ -12,5 +12,6 @@ NL_ADD_LIB_SUFFIX(ryzom_landexport) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ryzom_landexport LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) - +IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) + INSTALL(TARGETS ryzom_landexport LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT libraries) +ENDIF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor/CMakeLists.txt index a490ca0e9..e4790eeea 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor/CMakeLists.txt @@ -20,11 +20,11 @@ TARGET_LINK_LIBRARIES(world_editor ${LIBXML2_LIBRARIES}) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(world_editor "Ryzom, Tools, World: World Editor") +NL_DEFAULT_PROPS(world_editor "Ryzom, Tools, World: World Editor") NL_ADD_RUNTIME_FLAGS(world_editor) IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(world_editor ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS world_editor RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS world_editor RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt index 417ed83b6..3d1f18473 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_fauna_graph_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_fauna_graph_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_fauna_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(TARGETS world_editor_fauna_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt index 3c9e57857..8895ac93b 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_graph_plugin/CMakeLists.txt @@ -18,5 +18,5 @@ NL_ADD_LIB_SUFFIX(world_editor_graph_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(TARGETS world_editor_graph_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt index 3c93ab01b..81b77c4f1 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_plugin/CMakeLists.txt @@ -21,6 +21,6 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(world_editor_plugin ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS world_editor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) -INSTALL(FILES WorldEditorPlugin.cfg DESTINATION bin COMPONENT tools3d) +INSTALL(TARGETS world_editor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(FILES WorldEditorPlugin.cfg DESTINATION ${RYZOM_ETC_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt index 0449ec5d5..d33bd7032 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_primitive_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_primitive_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_primitive_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(TARGETS world_editor_primitive_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt index 64da758a7..c821f5de9 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_shard_monitor_plugin/CMakeLists.txt @@ -18,5 +18,5 @@ NL_ADD_LIB_SUFFIX(world_editor_shard_monitor_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_shard_monitor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(TARGETS world_editor_shard_monitor_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt index 9337af50b..997777d56 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor_sound_plugin/CMakeLists.txt @@ -17,5 +17,5 @@ NL_ADD_LIB_SUFFIX(world_editor_sound_plugin) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${MFC_DEFINITIONS} -DWIN32_DLL_EXPORTS) -INSTALL(TARGETS world_editor_sound_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) +INSTALL(TARGETS world_editor_sound_plugin LIBRARY DESTINATION ${RYZOM_LIB_PREFIX} RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} ARCHIVE DESTINATION ${RYZOM_LIB_PREFIX} COMPONENT tools3d) diff --git a/code/ryzom/tools/make_alias_file/CMakeLists.txt b/code/ryzom/tools/make_alias_file/CMakeLists.txt index 4142dfdcc..3711a6120 100644 --- a/code/ryzom/tools/make_alias_file/CMakeLists.txt +++ b/code/ryzom/tools/make_alias_file/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(make_alias_file ${LIBXML2_LIBRARIES} nelmisc nelgeorges) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(make_alias_file "Ryzom, Tools, Misc: Make Alias File") +NL_DEFAULT_PROPS(make_alias_file "Ryzom, Tools, Misc: Make Alias File") NL_ADD_RUNTIME_FLAGS(make_alias_file) -INSTALL(TARGETS make_alias_file RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS make_alias_file RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/make_anim_by_race/CMakeLists.txt b/code/ryzom/tools/make_anim_by_race/CMakeLists.txt index 597eb0bb4..3a67971c3 100644 --- a/code/ryzom/tools/make_anim_by_race/CMakeLists.txt +++ b/code/ryzom/tools/make_anim_by_race/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(make_anim_by_race ${LIBXML2_LIBRARIES} nelmisc) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(make_anim_by_race "Ryzom, Tools, Misc: Make Anim By Race") +NL_DEFAULT_PROPS(make_anim_by_race "Ryzom, Tools, Misc: Make Anim By Race") NL_ADD_RUNTIME_FLAGS(make_anim_by_race) -INSTALL(TARGETS make_anim_by_race RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS make_anim_by_race RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/make_anim_melee_impact/CMakeLists.txt b/code/ryzom/tools/make_anim_melee_impact/CMakeLists.txt index 089444aee..7dd34fb7d 100644 --- a/code/ryzom/tools/make_anim_melee_impact/CMakeLists.txt +++ b/code/ryzom/tools/make_anim_melee_impact/CMakeLists.txt @@ -3,7 +3,7 @@ FILE(GLOB SRC *.cpp *.h) ADD_EXECUTABLE(make_anim_melee_impact ${SRC}) TARGET_LINK_LIBRARIES(make_anim_melee_impact nelmisc) -NL_DEFAULT_PROPS(make_anim_melee_impact "Ryzom, Tools, Misc: Make Anim Melee Impact") +NL_DEFAULT_PROPS(make_anim_melee_impact "Ryzom, Tools, Misc: Make Anim Melee Impact") NL_ADD_RUNTIME_FLAGS(make_anim_melee_impact) -INSTALL(TARGETS make_anim_melee_impact RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS make_anim_melee_impact RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/occ2huff/CMakeLists.txt b/code/ryzom/tools/occ2huff/CMakeLists.txt index d73db604e..6be696d60 100644 --- a/code/ryzom/tools/occ2huff/CMakeLists.txt +++ b/code/ryzom/tools/occ2huff/CMakeLists.txt @@ -13,4 +13,4 @@ NL_ADD_RUNTIME_FLAGS(occ2huff) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS occ2huff RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS occ2huff RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/patch_gen/CMakeLists.txt b/code/ryzom/tools/patch_gen/CMakeLists.txt index d7407756a..7a5117a60 100644 --- a/code/ryzom/tools/patch_gen/CMakeLists.txt +++ b/code/ryzom/tools/patch_gen/CMakeLists.txt @@ -10,10 +10,10 @@ NL_ADD_RUNTIME_FLAGS(patch_gen) ADD_EXECUTABLE(patch_gen_service WIN32 ${SERVICE_SRC}) TARGET_LINK_LIBRARIES(patch_gen_service ryzom_gameshare nelmisc nelnet nelligo nelgeorges) -NL_DEFAULT_PROPS(patch_gen_service "Ryzom, Tools: Patch Generator Service") -NL_ADD_RUNTIME_FLAGS(patch_gen_service) +NL_DEFAULT_PROPS(patch_gen_service "Ryzom, Tools: Patch Generator Service") +NL_ADD_RUNTIME_FLAGS(patch_gen_service) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS patch_gen RUNTIME DESTINATION bin COMPONENT tools) -INSTALL(TARGETS patch_gen_service RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS patch_gen RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) +INSTALL(TARGETS patch_gen_service RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/pd_parser/CMakeLists.txt b/code/ryzom/tools/pd_parser/CMakeLists.txt index 1a26f5f46..676c2786a 100644 --- a/code/ryzom/tools/pd_parser/CMakeLists.txt +++ b/code/ryzom/tools/pd_parser/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(pd_parser ${LIBXML2_LIBRARIES} nelmisc) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(pd_parser "Ryzom, Tools: PD Parser") +NL_DEFAULT_PROPS(pd_parser "Ryzom, Tools: PD Parser") NL_ADD_RUNTIME_FLAGS(pd_parser) -INSTALL(TARGETS pd_parser RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS pd_parser RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/pdr_util/CMakeLists.txt b/code/ryzom/tools/pdr_util/CMakeLists.txt index ab4ed6aeb..52d2d66d2 100644 --- a/code/ryzom/tools/pdr_util/CMakeLists.txt +++ b/code/ryzom/tools/pdr_util/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(pdr_util ryzom_gameshare ${LIBXML2_LIBRARIES} nelmisc nelnet nelligo nelgeorges) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(pdr_util "Ryzom, Tools: PDR Utility") +NL_DEFAULT_PROPS(pdr_util "Ryzom, Tools: PDR Utility") NL_ADD_RUNTIME_FLAGS(pdr_util) -INSTALL(TARGETS pdr_util RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS pdr_util RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/phrase_generator/CMakeLists.txt b/code/ryzom/tools/phrase_generator/CMakeLists.txt index da885c9fa..8e06c8f26 100644 --- a/code/ryzom/tools/phrase_generator/CMakeLists.txt +++ b/code/ryzom/tools/phrase_generator/CMakeLists.txt @@ -14,4 +14,4 @@ NL_ADD_RUNTIME_FLAGS(phrase_generator) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS phrase_generator RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS phrase_generator RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/server/ai_build_wmap/CMakeLists.txt b/code/ryzom/tools/server/ai_build_wmap/CMakeLists.txt index 24c9f5b6b..9cdf3c8cc 100644 --- a/code/ryzom/tools/server/ai_build_wmap/CMakeLists.txt +++ b/code/ryzom/tools/server/ai_build_wmap/CMakeLists.txt @@ -15,4 +15,4 @@ NL_ADD_RUNTIME_FLAGS(ai_build_wmap) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -INSTALL(TARGETS ai_build_wmap RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS ai_build_wmap RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/server/build_world_packed_col/CMakeLists.txt b/code/ryzom/tools/server/build_world_packed_col/CMakeLists.txt index 4a6e8c265..a693108ce 100644 --- a/code/ryzom/tools/server/build_world_packed_col/CMakeLists.txt +++ b/code/ryzom/tools/server/build_world_packed_col/CMakeLists.txt @@ -19,4 +19,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(build_world_packed_col ${CMAKE_CURRENT_SOURCE_DIR}/std_header.h ${CMAKE_CURRENT_SOURCE_DIR}/std_header.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS build_world_packed_col RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS build_world_packed_col RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/sheet_random_generator/CMakeLists.txt b/code/ryzom/tools/sheet_random_generator/CMakeLists.txt index 9f5405d71..5b80507c0 100644 --- a/code/ryzom/tools/sheet_random_generator/CMakeLists.txt +++ b/code/ryzom/tools/sheet_random_generator/CMakeLists.txt @@ -18,4 +18,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(sheet_random_generator ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.h ${CMAKE_CURRENT_SOURCE_DIR}/StdAfx.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS sheet_random_generator RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS sheet_random_generator RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/sheets_packer/CMakeLists.txt b/code/ryzom/tools/sheets_packer/CMakeLists.txt index 48d024774..ab3129d14 100644 --- a/code/ryzom/tools/sheets_packer/CMakeLists.txt +++ b/code/ryzom/tools/sheets_packer/CMakeLists.txt @@ -25,4 +25,4 @@ IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(sheets_packer ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.h ${CMAKE_CURRENT_SOURCE_DIR}/stdpch.cpp) ENDIF(WITH_PCH) -INSTALL(TARGETS sheets_packer RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS sheets_packer RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/skill_extractor/CMakeLists.txt b/code/ryzom/tools/skill_extractor/CMakeLists.txt index 76f302fb1..c34de1aa9 100644 --- a/code/ryzom/tools/skill_extractor/CMakeLists.txt +++ b/code/ryzom/tools/skill_extractor/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(skill_extractor ${LIBXML2_LIBRARIES} nelmisc) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(skill_extractor "Ryzom, Tools, Misc: Skill Extractor") +NL_DEFAULT_PROPS(skill_extractor "Ryzom, Tools, Misc: Skill Extractor") NL_ADD_RUNTIME_FLAGS(skill_extractor) -INSTALL(TARGETS skill_extractor RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS skill_extractor RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/stats_scan/CMakeLists.txt b/code/ryzom/tools/stats_scan/CMakeLists.txt index 3d49e5fc4..fbb54e449 100644 --- a/code/ryzom/tools/stats_scan/CMakeLists.txt +++ b/code/ryzom/tools/stats_scan/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(stats_scan ryzom_gameshare ${LIBXML2_LIBRARIES} nelmisc nelnet nelligo nelgeorges) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(stats_scan "Ryzom, Tools, Misc: Stats Scan") +NL_DEFAULT_PROPS(stats_scan "Ryzom, Tools, Misc: Stats Scan") NL_ADD_RUNTIME_FLAGS(stats_scan) -INSTALL(TARGETS stats_scan RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS stats_scan RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/ryzom/tools/translation_tools/CMakeLists.txt b/code/ryzom/tools/translation_tools/CMakeLists.txt index ddb048f65..29cdd78de 100644 --- a/code/ryzom/tools/translation_tools/CMakeLists.txt +++ b/code/ryzom/tools/translation_tools/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(translation_tools ${LIBXML2_LIBRARIES} nelmisc nelligo nelgeorges) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS}) -NL_DEFAULT_PROPS(translation_tools "Ryzom, Tools, Misc: Translation Tools") +NL_DEFAULT_PROPS(translation_tools "Ryzom, Tools, Misc: Translation Tools") NL_ADD_RUNTIME_FLAGS(translation_tools) -INSTALL(TARGETS translation_tools RUNTIME DESTINATION bin COMPONENT tools) +INSTALL(TARGETS translation_tools RUNTIME DESTINATION ${RYZOM_BIN_PREFIX} COMPONENT tools) diff --git a/code/snowballs2/client/src/CMakeLists.txt b/code/snowballs2/client/src/CMakeLists.txt index b08ee3a43..0b402f133 100644 --- a/code/snowballs2/client/src/CMakeLists.txt +++ b/code/snowballs2/client/src/CMakeLists.txt @@ -17,4 +17,4 @@ IF(ENABLE_SOUND) TARGET_LINK_LIBRARIES(snowballs_client ${NELSOUND_LIBRARY}) ENDIF(ENABLE_SOUND) -INSTALL(TARGETS snowballs_client RUNTIME DESTINATION bin COMPONENT snowballsclient) +INSTALL(TARGETS snowballs_client RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT snowballsclient) From 04d9b961bc0bec2e7fd1fb3c0a233915c86cc9b7 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 27 Sep 2012 22:23:06 +0200 Subject: [PATCH 038/125] Changed: Renamed some Linux files to not conflict with Ryzom package --- code/ryzom/client/unix/CMakeLists.txt | 20 +++++++++--------- ...zom.desktop.in => ryzom_client.desktop.in} | 0 .../unix/{ryzom.png => ryzom_client.png} | Bin .../unix/{ryzom.xpm => ryzom_client.xpm} | 0 4 files changed, 10 insertions(+), 10 deletions(-) rename code/ryzom/client/unix/{ryzom.desktop.in => ryzom_client.desktop.in} (100%) rename code/ryzom/client/unix/{ryzom.png => ryzom_client.png} (100%) rename code/ryzom/client/unix/{ryzom.xpm => ryzom_client.xpm} (100%) diff --git a/code/ryzom/client/unix/CMakeLists.txt b/code/ryzom/client/unix/CMakeLists.txt index fef098783..54f2ed881 100644 --- a/code/ryzom/client/unix/CMakeLists.txt +++ b/code/ryzom/client/unix/CMakeLists.txt @@ -1,11 +1,11 @@ -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/ryzom.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/ryzom.desktop") +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/ryzom_client.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/ryzom_client.desktop") -INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/ryzom.desktop" DESTINATION share/applications) -INSTALL(FILES ryzom.png DESTINATION share/pixmaps) -INSTALL(FILES ryzom.xpm DESTINATION share/pixmaps) -INSTALL(FILES ryzom_16x16.png DESTINATION share/icons/hicolor/16x16/apps RENAME ryzom.png) -INSTALL(FILES ryzom_22x22.png DESTINATION share/icons/hicolor/22x22/apps RENAME ryzom.png) -INSTALL(FILES ryzom_24x24.png DESTINATION share/icons/hicolor/24x24/apps RENAME ryzom.png) -INSTALL(FILES ryzom_32x32.png DESTINATION share/icons/hicolor/32x32/apps RENAME ryzom.png) -INSTALL(FILES ryzom_48x48.png DESTINATION share/icons/hicolor/48x48/apps RENAME ryzom.png) -INSTALL(FILES ryzom_128x128.png DESTINATION share/icons/hicolor/128x128/apps RENAME ryzom.png) +INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/ryzom_client.desktop" DESTINATION share/applications) +INSTALL(FILES ryzom_client.png DESTINATION share/pixmaps) +INSTALL(FILES ryzom_client.xpm DESTINATION share/pixmaps) +INSTALL(FILES ryzom_16x16.png DESTINATION share/icons/hicolor/16x16/apps RENAME ryzom_client.png) +INSTALL(FILES ryzom_22x22.png DESTINATION share/icons/hicolor/22x22/apps RENAME ryzom_client.png) +INSTALL(FILES ryzom_24x24.png DESTINATION share/icons/hicolor/24x24/apps RENAME ryzom_client.png) +INSTALL(FILES ryzom_32x32.png DESTINATION share/icons/hicolor/32x32/apps RENAME ryzom_client.png) +INSTALL(FILES ryzom_48x48.png DESTINATION share/icons/hicolor/48x48/apps RENAME ryzom_client.png) +INSTALL(FILES ryzom_128x128.png DESTINATION share/icons/hicolor/128x128/apps RENAME ryzom_client.png) diff --git a/code/ryzom/client/unix/ryzom.desktop.in b/code/ryzom/client/unix/ryzom_client.desktop.in similarity index 100% rename from code/ryzom/client/unix/ryzom.desktop.in rename to code/ryzom/client/unix/ryzom_client.desktop.in diff --git a/code/ryzom/client/unix/ryzom.png b/code/ryzom/client/unix/ryzom_client.png similarity index 100% rename from code/ryzom/client/unix/ryzom.png rename to code/ryzom/client/unix/ryzom_client.png diff --git a/code/ryzom/client/unix/ryzom.xpm b/code/ryzom/client/unix/ryzom_client.xpm similarity index 100% rename from code/ryzom/client/unix/ryzom.xpm rename to code/ryzom/client/unix/ryzom_client.xpm From 6c1f14778eed0b09138f359fbb2097c278497fa2 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 27 Sep 2012 22:25:00 +0200 Subject: [PATCH 039/125] Changed: #825 Remove all warnings when compiling Ryzom --- code/nel/src/misc/sheet_id.cpp | 2 +- .../mission_compiler_main_window.cpp | 2 +- .../nel/tools/3d/tile_edit_qt/pic/PIC_System.c | 16 ++++++++-------- code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c | 2 +- code/nel/tools/3d/tile_edit_qt/pic/Pic_JPG.c | 4 ++-- code/nel/tools/3d/tile_edit_qt/pic/Pic_TGA.c | 4 ++-- .../tools/3d/tile_edit_qt/pic/pic_private.h | 18 +++++++++--------- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/code/nel/src/misc/sheet_id.cpp b/code/nel/src/misc/sheet_id.cpp index 0ff90b1f8..9a9b8813f 100644 --- a/code/nel/src/misc/sheet_id.cpp +++ b/code/nel/src/misc/sheet_id.cpp @@ -157,7 +157,7 @@ bool CSheetId::buildSheetId(const std::string& sheetName) { _FileExtensions.push_back(sheetType); _DevSheetIdToName.push_back(std::vector()); - typeId = _FileExtensions.size() - 1; + typeId = (uint32)_FileExtensions.size() - 1; _DevTypeNameToId[sheetType] = typeId; std::string unknownNewType = std::string("unknown." + sheetType); _DevSheetIdToName[typeId].push_back(unknownNewType); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/mission_compiler_main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/mission_compiler_main_window.cpp index 9a3f4fe61..0c791aa7c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/mission_compiler_main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/mission_compiler/mission_compiler_main_window.cpp @@ -381,7 +381,7 @@ bool MissionCompilerMainWindow::parsePrimForMissions(NLLIGO::IPrimitive const *p { std::string value; // if the node is a mission parse it - if (prim->getPropertyByName("class",value) && !NLMISC::stricmp(value.c_str(),"mission") ) + if (prim->getPropertyByName("class",value) && !NLMISC::nlstricmp(value.c_str(),"mission") ) { std::string name; prim->getPropertyByName("name",name); diff --git a/code/nel/tools/3d/tile_edit_qt/pic/PIC_System.c b/code/nel/tools/3d/tile_edit_qt/pic/PIC_System.c index 4e97fed78..498e5d302 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/PIC_System.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/PIC_System.c @@ -8,8 +8,8 @@ #define PIC_ERRSIZE 256 -static unsigned long PIC_Sys_MEM_Allocated; -static unsigned long PIC_Sys_MEM_NbAllocs; +static size_t PIC_Sys_MEM_Allocated; +static size_t PIC_Sys_MEM_NbAllocs; #if defined(__APPLE__) #define _msize malloc_size @@ -31,7 +31,7 @@ void *Pic_malloc(unsigned long size) return(mem); } /* ----- */ -void *Pic_calloc(unsigned long count, unsigned long size) +void *Pic_calloc(size_t count, size_t size) { void *mem; mem=calloc(count,size); @@ -45,24 +45,24 @@ void *Pic_calloc(unsigned long count, unsigned long size) /* ----- */ void Pic_free(void *memblock) { - unsigned long size; + size_t size; size=_msize(memblock); PIC_Sys_MEM_Allocated-=size; PIC_Sys_MEM_NbAllocs--; free(memblock); } /* ----- */ -unsigned long Pic__msize(void *memblock) +size_t Pic__msize(void *memblock) { return(_msize(memblock)); } /* ----- */ -unsigned long PIC_GetMemNbAllocs(void) +size_t PIC_GetMemNbAllocs(void) { return(PIC_Sys_MEM_NbAllocs); } /* ----- */ -unsigned long PIC_GetMemAllocated(void) +size_t PIC_GetMemAllocated(void) { return(PIC_Sys_MEM_Allocated); } @@ -74,7 +74,7 @@ static unsigned char PIC_ErrorString[PIC_ERRSIZE]; static unsigned char PIC_Sys_FnctActive=0; static void (*PIC_Sys_Fnct)(void); -void Pic_SetError(unsigned char *msg, ...) +void Pic_SetError(const char *msg, ...) { unsigned char curerr[PIC_ERRSIZE],olderr[PIC_ERRSIZE]; va_list args; diff --git a/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c b/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c index 53dc957f5..1119766da 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/Pic_BMP.c @@ -117,7 +117,7 @@ unsigned long Pic_BMP_Write( const char *FileName, /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_BMP_Read( unsigned char *FileName, +unsigned long Pic_BMP_Read( const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *pWidth, unsigned long *pHeight, unsigned long *pDepth) diff --git a/code/nel/tools/3d/tile_edit_qt/pic/Pic_JPG.c b/code/nel/tools/3d/tile_edit_qt/pic/Pic_JPG.c index f13f93b13..dc22afadf 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/Pic_JPG.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/Pic_JPG.c @@ -31,7 +31,7 @@ void my_error_exit(j_common_ptr cinfo) /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_JPG_Read(unsigned char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *w, unsigned long *h) +unsigned long Pic_JPG_Read(const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *w, unsigned long *h) { struct jpeg_decompress_struct cinfo; struct my_error_mgr jerr; @@ -114,7 +114,7 @@ unsigned long Pic_JPG_Read(unsigned char *FileName, unsigned char **ppPal, unsig /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_JPG_Write(unsigned char *FileName, unsigned long Qual, unsigned char *pDatas, unsigned long w, unsigned long h) +unsigned long Pic_JPG_Write(const char *FileName, unsigned long Qual, unsigned char *pDatas, unsigned long w, unsigned long h) { struct jpeg_compress_struct cinfo; struct my_error_mgr jerr; diff --git a/code/nel/tools/3d/tile_edit_qt/pic/Pic_TGA.c b/code/nel/tools/3d/tile_edit_qt/pic/Pic_TGA.c index 5f598d4eb..4c458dc83 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/Pic_TGA.c +++ b/code/nel/tools/3d/tile_edit_qt/pic/Pic_TGA.c @@ -27,7 +27,7 @@ typedef struct TGA_HEADER /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_TGA_Read( unsigned char *FileName, +unsigned long Pic_TGA_Read( const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *pWidth, unsigned long *pHeight, unsigned long *pDepth) @@ -140,7 +140,7 @@ unsigned long Pic_TGA_Read( unsigned char *FileName, /* ---------------------------------------------------------------------------------------------------------------------------------- */ -unsigned long Pic_TGA_Write( unsigned char *FileName, +unsigned long Pic_TGA_Write( const char *FileName, unsigned char *pPal,unsigned char *pDatas, unsigned long w, unsigned long h, unsigned long d) { diff --git a/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h b/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h index 53166396d..96b7a0e94 100644 --- a/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h +++ b/code/nel/tools/3d/tile_edit_qt/pic/pic_private.h @@ -25,28 +25,28 @@ typedef struct PIC_PICTURE */ -extern unsigned long Pic_JPG_Read( unsigned char *FileName, +extern unsigned long Pic_JPG_Read( const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *w, unsigned long *h); -extern unsigned long Pic_JPG_Write( unsigned char *FileName, +extern unsigned long Pic_JPG_Write( const char *FileName, unsigned long Qual, unsigned char *pDatas, unsigned long w, unsigned long h); /* * TGA */ -extern unsigned long Pic_TGA_Read( unsigned char *FileName, +extern unsigned long Pic_TGA_Read( const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *pWidth, unsigned long *pHeight, unsigned long *pDepth); -extern unsigned long Pic_TGA_Write( unsigned char *FileName, +extern unsigned long Pic_TGA_Write( const char *FileName, unsigned char *pPal,unsigned char *pDatas, unsigned long w, unsigned long h, unsigned long d); /* * BMP */ -extern unsigned long Pic_BMP_Read( unsigned char *FileName, +extern unsigned long Pic_BMP_Read( const char *FileName, unsigned char **ppPal, unsigned char **ppDatas, unsigned long *pWidth, unsigned long *pHeight, unsigned long *pDepth); @@ -57,11 +57,11 @@ extern unsigned long Pic_BMP_Write( const char *FileName, /* * System */ -extern void* Pic_malloc(unsigned long size); -extern void* Pic_calloc(unsigned long count, unsigned long size); +extern void* Pic_malloc(size_t size); +extern void* Pic_calloc(size_t count, size_t size); extern void Pic_free(void *memblock); -extern unsigned long Pic__msize(void *memblock); -extern void Pic_SetError(unsigned char *msg, ...); +extern size_t Pic__msize(void *memblock); +extern void Pic_SetError(const char *msg, ...); /* ---------------------------------------------------------------------------------------------------------------------------------- */ From b04836f40eb9bf377d43afb23f246016afda9ea6 Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 28 Sep 2012 20:51:53 +0200 Subject: [PATCH 040/125] Fixed: #1444 Add details for user-agent --- code/ryzom/client/src/libwww.cpp | 33 +++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/code/ryzom/client/src/libwww.cpp b/code/ryzom/client/src/libwww.cpp index 33e29fab7..4aa31d180 100644 --- a/code/ryzom/client/src/libwww.cpp +++ b/code/ryzom/client/src/libwww.cpp @@ -31,6 +31,10 @@ extern "C" #include "interface_v3/libwww_nel_stream.h" +#ifdef HAVE_REVISION_H +#include "revision.h" +#endif + using namespace NLMISC; /// the cookie value for session identification (nel cookie) @@ -552,8 +556,35 @@ void initLibWWW() /* Initiate libwww */ +#if defined(HAVE_X86_64) + #define RYZOM_ARCH "x64" +#elif defined(HAVE_X86) + #define RYZOM_ARCH "x86" +#elif defined(HAVE_ARM) + #define RYZOM_ARCH "arm" +#else + #define RYZOM_ARCH "unknow" +#endif + +#if defined(NL_OS_WINDOWS) + #define RYZOM_SYSTEM "windows" +#elif defined(NL_OS_MAC) + #define RYZOM_SYSTEM "mac" +#elif defined(NL_OS_UNIX) + #define RYZOM_SYSTEM "unix" +#else + #define RYZOM_SYSTEM "unkown" +#endif + char buffer[256]; + +#ifdef REVISION + sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH); +#else + sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH); +#endif + HTLib_setAppName("Ryzom"); - HTLib_setAppVersion(RYZOM_VERSION); + HTLib_setAppVersion(buffer); /* Set up TCP as transport */ VerifyLibWWW("HTTransport_add", HTTransport_add("buffered_tcp", HT_TP_SINGLE, HTReader_new, HTBufferWriter_new)); From c82a9d7304ea8808b07c5f266a70b597234ebc60 Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 28 Sep 2012 20:52:56 +0200 Subject: [PATCH 041/125] Changed: Use ryzom_client as icons --- code/ryzom/client/unix/ryzom_client.desktop.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ryzom/client/unix/ryzom_client.desktop.in b/code/ryzom/client/unix/ryzom_client.desktop.in index 6c967a61c..6520c1039 100644 --- a/code/ryzom/client/unix/ryzom_client.desktop.in +++ b/code/ryzom/client/unix/ryzom_client.desktop.in @@ -8,9 +8,9 @@ Comment=Ryzom client Comment[fr_FR]=Client Ryzom TryExec=${RYZOM_GAMES_PREFIX}/ryzom_client Exec=${RYZOM_GAMES_PREFIX}/ryzom_client -Icon=ryzom +Icon=ryzom_client Terminal=false Hidden=false Categories=Game;RolePlaying; -StartupWMClass=ryzom +StartupWMClass=ryzom_client X-AppInstall-Package=ryzom-client From 29359a552e3e85f363ba73d8eb9db3ba7d7542ef Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 29 Sep 2012 12:51:15 +0200 Subject: [PATCH 042/125] Fixed: #1496 Fall back to OpenAL default device (patch provided by simco, thanks!) --- code/nel/src/sound/driver/openal/sound_driver_al.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/nel/src/sound/driver/openal/sound_driver_al.cpp b/code/nel/src/sound/driver/openal/sound_driver_al.cpp index 65af8002c..40ea39d0b 100644 --- a/code/nel/src/sound/driver/openal/sound_driver_al.cpp +++ b/code/nel/src/sound/driver/openal/sound_driver_al.cpp @@ -246,7 +246,6 @@ static const ALchar *getDeviceInternal(const std::string &device) if (AlEnumerateAllExt) { const ALchar* deviceNames = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); - // const ALchar* defaultDevice = NULL; if(!strlen(deviceNames)) { nldebug("AL: No audio devices"); @@ -291,6 +290,7 @@ void CSoundDriverAL::initDevice(const std::string &device, ISoundDriver::TSoundO // OpenAL initialization const ALchar *dev = getDeviceInternal(device); + if (!dev) dev = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER); nldebug("AL: Opening device: '%s'", dev == NULL ? "NULL" : dev); _AlDevice = alcOpenDevice(dev); if (!_AlDevice) throw ESoundDriver("AL: Failed to open device"); From 5c82fcd39c6822a543d522d97affd5919a38db7e Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 29 Sep 2012 14:35:43 +0200 Subject: [PATCH 043/125] Fixed: #1497 optimize the drawing of radar by removing multiple access to local db (patch provided by yricl, a big thanks!) --- .../client/src/interface_v3/view_radar.cpp | 41 +++++++++++++++---- .../client/src/interface_v3/view_radar.h | 21 ++++++++-- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/code/ryzom/client/src/interface_v3/view_radar.cpp b/code/ryzom/client/src/interface_v3/view_radar.cpp index 6c5f4eaf4..5f3cb77d1 100644 --- a/code/ryzom/client/src/interface_v3/view_radar.cpp +++ b/code/ryzom/client/src/interface_v3/view_radar.cpp @@ -39,6 +39,25 @@ NLMISC_REGISTER_OBJECT(CViewBase, CViewRadar, std::string, "radar"); // ---------------------------------------------------------------------------- +CViewRadar::CViewRadar(const TCtorParam ¶m) + : CViewBase(param) +{ + CInterfaceManager *pIM = CInterfaceManager::getInstance(); + CCDBNodeLeaf *pUIMI = pIM->getDbProp( "UI:SAVE:INSCENE:FRIEND:MISSION_ICON" ); + if (pUIMI) + { + ICDBNode::CTextId textId; + pUIMI->addObserver( &_MissionIconsObs, textId); + } + + CCDBNodeLeaf *pUIMMI = pIM->getDbProp( "UI:SAVE:INSCENE:FRIEND:MINI_MISSION_ICON" ); + if (pUIMMI) + { + ICDBNode::CTextId textId; + pUIMMI->addObserver( &_MiniMissionSpotsObs, textId); + } +} + bool CViewRadar::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup) { CXMLAutoPtr prop; @@ -109,8 +128,9 @@ void CViewRadar::draw () CEntityCL *user = EntitiesMngr.entity(0); if (user == NULL) return; + CVectorD xyzRef = user->pos(); - CVector dir = user->front(); + const CVector dir = user->front(); float angle = (float)(atan2(dir.y, dir.x) - (Pi / 2.0)); CMatrix mat; @@ -124,9 +144,6 @@ void CViewRadar::draw () float maxSqrRadius= (float)sqr(_WorldSize/2); - const bool displayMissionSpots = pIM->getDbProp("UI:SAVE:INSCENE:FRIEND:MISSION_ICON")->getValueBool(); - const bool displayMiniMissionSpots = pIM->getDbProp("UI:SAVE:INSCENE:FRIEND:MINI_MISSION_ICON")->getValueBool(); - for (sint32 i = 1; i < 256; ++i) { CEntityCL *entity = EntitiesMngr.entity(i); @@ -160,8 +177,8 @@ void CViewRadar::draw () // Select the icon to display and draw it uint spotId = CNPCIconCache::getInstance().getNPCIcon(entity).getSpotId(); CRadarSpotDesc spotDesc = _SpotDescriptions[spotId]; - - if (!displayMissionSpots) + + if (!_MissionIconsObs._displayMissionSpots) spotDesc = _SpotDescriptions[0]; if (spotDesc.isMissionSpot) @@ -171,7 +188,7 @@ void CViewRadar::draw () spotId = 4; // to make it over other spots // Draw it (and make sure mission icons are drawn over regular dot; caution: don't exceed the render layer range) - if (spotDesc.isMissionSpot && displayMiniMissionSpots) + if (spotDesc.isMissionSpot && _MiniMissionSpotsObs._displayMiniMissionSpots) rVR.drawRotFlipBitmap (_RenderLayer+spotId, _XReal+x-(spotDesc.MTxW/2)+(_WReal/2), _YReal+y-(spotDesc.MTxH/2)+(_HReal/2), spotDesc.MTxW, spotDesc.MTxH, 0, false, spotDesc.MiniTextureId, col ); else @@ -185,3 +202,13 @@ void CViewRadar::updateCoords() { CViewBase::updateCoords(); } + +void CViewRadar::CDBMissionIconqObs::update(ICDBNode *node) +{ + _displayMissionSpots = ((CCDBNodeLeaf*)node)->getValueBool(); +} + +void CViewRadar::CDBMiniMissionSpotsObs::update(ICDBNode *node) +{ + _displayMiniMissionSpots = ((CCDBNodeLeaf*)node)->getValueBool(); +} diff --git a/code/ryzom/client/src/interface_v3/view_radar.h b/code/ryzom/client/src/interface_v3/view_radar.h index b2eb31685..0f9fc1a5f 100644 --- a/code/ryzom/client/src/interface_v3/view_radar.h +++ b/code/ryzom/client/src/interface_v3/view_radar.h @@ -45,9 +45,7 @@ public: }; /// Constructor - CViewRadar(const TCtorParam ¶m) : CViewBase(param) - { - } + CViewRadar(const TCtorParam ¶m); bool parse(xmlNodePtr cur,CInterfaceGroup * parentGroup); @@ -79,7 +77,24 @@ protected: sint32 MTxH; }; +private: CRadarSpotDesc _SpotDescriptions[NbRadarSpotIds]; + + class CDBMissionIconqObs : public ICDBNode::IPropertyObserver + { + public: + virtual void update(ICDBNode *node); + bool _displayMissionSpots; + }; + CDBMissionIconqObs _MissionIconsObs; + + class CDBMiniMissionSpotsObs : public ICDBNode::IPropertyObserver + { + public: + virtual void update(ICDBNode *node); + bool _displayMiniMissionSpots; + }; + CDBMiniMissionSpotsObs _MiniMissionSpotsObs; }; #endif // RY_VIEW_RADAR_H From 9bbbb79ba63aa491494d27fb0bd1f02edc1ea702 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 1 Oct 2012 10:07:09 +0200 Subject: [PATCH 044/125] Changed: Synchronization with SVN --- .../common/src/game_share/time_weather_season/time_and_season.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/common/src/game_share/time_weather_season/time_and_season.h b/code/ryzom/common/src/game_share/time_weather_season/time_and_season.h index be8a77aea..bf08129e8 100644 --- a/code/ryzom/common/src/game_share/time_weather_season/time_and_season.h +++ b/code/ryzom/common/src/game_share/time_weather_season/time_and_season.h @@ -31,7 +31,7 @@ const uint RYZOM_WEEK_IN_DAY = 6; const uint RYZOM_YEAR_IN_DAY = RYZOM_MONTH_IN_DAY*RYZOM_YEAR_IN_MONTH; const uint RYZOM_CYCLE_IN_MONTH = 12; -const uint RYZOM_START_YEAR = 2570-1; +const uint RYZOM_START_YEAR = 2570-2; const uint RYZOM_START_SPRING = 61; const uint RYZOM_START_DAY = 1111111; const uint RYZOM_START_HOUR = 9; From 0cf5c1f44a1694b91ca8307f9be101591ec35d72 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 1 Oct 2012 10:07:41 +0200 Subject: [PATCH 045/125] Changed: Install data_leveldesign if ryzom_tools are enabled --- code/ryzom/common/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ryzom/common/CMakeLists.txt b/code/ryzom/common/CMakeLists.txt index 109876929..1d3c3f844 100644 --- a/code/ryzom/common/CMakeLists.txt +++ b/code/ryzom/common/CMakeLists.txt @@ -9,6 +9,6 @@ ADD_SUBDIRECTORY(src) #INSTALL(TARGETS data_common ARCHIVE DESTINATION ${RYZOM_SHARE_PREFIX}/data) #INSTALL(FILES "${CMAKE_BINARY_DIR}/share/data_common.bnp" DESTINATION "${RYZOM_SHARE_PREFIX}/data") -#IF(WITH_RYZOM_TOOLS) +IF(WITH_RYZOM_TOOLS) INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data_leveldesign" DESTINATION "${RYZOM_SHARE_PREFIX}") -#ENDIF(WITH_RYZOM_TOOLS) +ENDIF(WITH_RYZOM_TOOLS) From 6f53c4cc2385e6c973a427bb846a83994ba0d398 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 1 Oct 2012 10:08:52 +0200 Subject: [PATCH 046/125] Changed: #878 Fix typos in comments/code --- code/ryzom/client/src/init.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/client/src/init.cpp b/code/ryzom/client/src/init.cpp index ba6fc74f6..ce6aa535c 100644 --- a/code/ryzom/client/src/init.cpp +++ b/code/ryzom/client/src/init.cpp @@ -686,7 +686,7 @@ void prelogInit() #ifdef NL_OS_WINDOWS _control87 (_EM_INVALID|_EM_DENORMAL/*|_EM_ZERODIVIDE|_EM_OVERFLOW*/|_EM_UNDERFLOW|_EM_INEXACT, _MCW_EM); #endif // NL_OS_WINDOWS - + CTime::CTimerInfo timerInfo; NLMISC::CTime::probeTimerInfo(timerInfo); if (timerInfo.RequiresSingleCore) // TODO: Also have a FV configuration value to force single core. From 4a1df6eb663f60300e295a27ddc941335cc367eb Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 2 Oct 2012 13:12:13 +0200 Subject: [PATCH 047/125] Changed: #1444 Allow to provide custom revision.h --- code/CMakeModules/nel.cmake | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 488ad952d..24092cfea 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -30,21 +30,28 @@ MACRO(NL_GEN_REVISION_H) ADD_DEFINITIONS(-DHAVE_REVISION_H) SET(HAVE_REVISION_H ON) - # a custom target that is always built - ADD_CUSTOM_TARGET(revision ALL - DEPENDS ${CMAKE_BINARY_DIR}/revision.h) + # if already generated + IF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) + # copy it + MESSAGE(STATUS "Copying provided revision.h...") + FILE(COPY ${CMAKE_SOURCE_DIR}/revision.h DESTINATION ${CMAKE_BINARY_DIR}) + ELSE(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) + # a custom target that is always built + ADD_CUSTOM_TARGET(revision ALL + DEPENDS ${CMAKE_BINARY_DIR}/revision.h) - # creates revision.h using cmake script - ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/revision.h - COMMAND ${CMAKE_COMMAND} - -DSOURCE_DIR=${CMAKE_SOURCE_DIR} - -DROOT_DIR=${CMAKE_SOURCE_DIR}/.. - -P ${CMAKE_SOURCE_DIR}/CMakeModules/GetRevision.cmake) + # creates revision.h using cmake script + ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/revision.h + COMMAND ${CMAKE_COMMAND} + -DSOURCE_DIR=${CMAKE_SOURCE_DIR} + -DROOT_DIR=${CMAKE_SOURCE_DIR}/.. + -P ${CMAKE_SOURCE_DIR}/CMakeModules/GetRevision.cmake) - # revision.h is a generated file - SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/revision.h - PROPERTIES GENERATED TRUE - HEADER_FILE_ONLY TRUE) + # revision.h is a generated file + SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/revision.h + PROPERTIES GENERATED TRUE + HEADER_FILE_ONLY TRUE) + ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h.in) ENDMACRO(NL_GEN_REVISION_H) From 122fef354c6eadc49825c3bc74c62134699aa03e Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 3 Oct 2012 10:08:56 +0200 Subject: [PATCH 048/125] Changed: Don't check Debian environment variables in CMake scripts (define options on cmake command-line instead) --- code/CMakeModules/nel.cmake | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 24092cfea..5a2abc665 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -13,11 +13,7 @@ ENDIF(NOT CMAKE_BUILD_TYPE) MACRO(NL_GEN_PC name) IF(NOT WIN32 AND WITH_INSTALL_LIBRARIES) CONFIGURE_FILE(${name}.in "${CMAKE_CURRENT_BINARY_DIR}/${name}") - IF(CMAKE_LIBRARY_ARCHITECTURE) - INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}" DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig) - ELSE(CMAKE_LIBRARY_ARCHITECTURE) - INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}" DESTINATION lib/pkgconfig) - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}" DESTINATION ${NL_LIB_PREFIX}/pkgconfig) ENDIF(NOT WIN32 AND WITH_INSTALL_LIBRARIES) ENDMACRO(NL_GEN_PC) @@ -250,16 +246,7 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS) ### # Optional support ### - - # Check if CMake is launched from a Debian packaging script - SET(DEB_HOST_GNU_CPU $ENV{DEB_HOST_GNU_CPU}) - - # Don't strip if generating a .deb - IF(DEB_HOST_GNU_CPU) - OPTION(WITH_SYMBOLS "Keep debug symbols in binaries" ON ) - ELSE(DEB_HOST_GNU_CPU) - OPTION(WITH_SYMBOLS "Keep debug symbols in binaries" OFF) - ENDIF(DEB_HOST_GNU_CPU) + OPTION(WITH_SYMBOLS "Keep debug symbols in binaries" OFF) IF(WIN32) OPTION(WITH_STLPORT "With STLport support." ON ) @@ -371,9 +358,6 @@ MACRO(NL_SETUP_BUILD) ENDIF(HOST_CPU MATCHES "amd64") # Determine target CPU - IF(NOT TARGET_CPU) - SET(TARGET_CPU $ENV{DEB_HOST_GNU_CPU}) - ENDIF(NOT TARGET_CPU) # If not specified, use the same CPU as host IF(NOT TARGET_CPU) @@ -386,9 +370,6 @@ MACRO(NL_SETUP_BUILD) SET(TARGET_CPU "x86") ENDIF(TARGET_CPU MATCHES "amd64") - # DEB_HOST_ARCH_ENDIAN is 'little' or 'big' - # DEB_HOST_ARCH_BITS is '32' or '64' - IF(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") SET(CLANG ON) MESSAGE(STATUS "Using Clang compiler") @@ -449,12 +430,6 @@ MACRO(NL_SETUP_BUILD) ENDIF(TARGET_CPU STREQUAL "x86_64") # Fix library paths suffixes for Debian MultiArch - SET(DEBIAN_MULTIARCH $ENV{DEB_HOST_MULTIARCH}) - - IF(DEBIAN_MULTIARCH) - SET(CMAKE_LIBRARY_ARCHITECTURE ${DEBIAN_MULTIARCH}) - ENDIF(DEBIAN_MULTIARCH) - IF(CMAKE_LIBRARY_ARCHITECTURE) SET(CMAKE_LIBRARY_PATH /lib/${CMAKE_LIBRARY_ARCHITECTURE} /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} ${CMAKE_LIBRARY_PATH}) IF(TARGET_X64) From af4ed15c36592042ddf715fa86a8bab4896a6c3a Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 3 Oct 2012 22:31:12 +0200 Subject: [PATCH 049/125] Changed: CXXFLAGS and CPPFLAGS support in CMake Changed: Use LIBRARY_ARCHITECTURE to override CMAKE_LIBRARY_ARCHITECTURE --- code/CMakeModules/nel.cmake | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 5a2abc665..4875be6d6 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -407,28 +407,40 @@ MACRO(NL_SETUP_BUILD) ENDIF("${HOST_CPU}" STREQUAL "${TARGET_CPU}") # Use values from environment variables - SET(PLATFORM_CFLAGS "$ENV{CFLAGS} ${PLATFORM_CFLAGS}") + SET(PLATFORM_CFLAGS "$ENV{CFLAGS} $ENV{CPPFLAGS} ${PLATFORM_CFLAGS}") + SET(PLATFORM_CXXFLAGS "$ENV{CXXFLAGS} $ENV{CPPFLAGS} ${PLATFORM_CXXFLAGS}") SET(PLATFORM_LINKFLAGS "$ENV{LDFLAGS} ${PLATFORM_LINKFLAGS}") # Remove -g and -O flag because we are managing them ourself STRING(REPLACE "-g" "" PLATFORM_CFLAGS ${PLATFORM_CFLAGS}) + STRING(REPLACE "-g" "" PLATFORM_CXXFLAGS ${PLATFORM_CXXFLAGS}) STRING(REGEX REPLACE "-O[0-9s]" "" PLATFORM_CFLAGS ${PLATFORM_CFLAGS}) + STRING(REGEX REPLACE "-O[0-9s]" "" PLATFORM_CXXFLAGS ${PLATFORM_CXXFLAGS}) # Strip spaces STRING(STRIP ${PLATFORM_CFLAGS} PLATFORM_CFLAGS) + STRING(STRIP ${PLATFORM_CXXFLAGS} PLATFORM_CXXFLAGS) STRING(STRIP ${PLATFORM_LINKFLAGS} PLATFORM_LINKFLAGS) IF(TARGET_CPU STREQUAL "x86_64") SET(TARGET_X64 1) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_X86_64") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_X86_64") ELSEIF(TARGET_CPU STREQUAL "x86") SET(TARGET_X86 1) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_X86") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_X86") ELSEIF(TARGET_CPU STREQUAL "arm") SET(TARGET_ARM 1) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_ARM") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_ARM") ENDIF(TARGET_CPU STREQUAL "x86_64") + # Override CMAKE_LIBRARY_ARCHITECTURE that is automatically determinated + IF(LIBRARY_ARCHITECTURE) + SET(CMAKE_LIBRARY_ARCHITECTURE ${LIBRARY_ARCHITECTURE}) + ENDIF(LIBRARY_ARCHITECTURE) + # Fix library paths suffixes for Debian MultiArch IF(CMAKE_LIBRARY_ARCHITECTURE) SET(CMAKE_LIBRARY_PATH /lib/${CMAKE_LIBRARY_ARCHITECTURE} /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} ${CMAKE_LIBRARY_PATH}) @@ -461,10 +473,12 @@ MACRO(NL_SETUP_BUILD) ENDIF(MSVC10) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zm1000 /MP /Gy-") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zm1000 /MP /Gy-") IF(TARGET_X64) # Fix a bug with Intellisense SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_WIN64") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} /D_WIN64") # Fix a compilation error for some big C++ files SET(MIN_OPTIMIZATIONS "${MIN_OPTIMIZATIONS} /bigobj") ELSE(TARGET_X64) @@ -473,7 +487,7 @@ MACRO(NL_SETUP_BUILD) ENDIF(TARGET_X64) # Exceptions are only set for C++ - SET(PLATFORM_CXXFLAGS "${PLATFORM_CFLAGS} /EHa") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} /EHa") IF(WITH_SYMBOLS) SET(NL_RELEASE_CFLAGS "/Zi ${NL_RELEASE_CFLAGS}") @@ -494,33 +508,41 @@ MACRO(NL_SETUP_BUILD) IF(APPLE) IF(TARGET_CPU STREQUAL "x86") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch i386") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch i386") ENDIF(TARGET_CPU STREQUAL "x86") IF(TARGET_CPU STREQUAL "x86_64") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch x86_64") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch x86_64") ENDIF(TARGET_CPU STREQUAL "x86_64") ELSE(APPLE) IF(HOST_CPU STREQUAL "x86_64" AND TARGET_CPU STREQUAL "x86") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -m32 -march=i686") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -m32 -march=i686") ENDIF(HOST_CPU STREQUAL "x86_64" AND TARGET_CPU STREQUAL "x86") IF(HOST_CPU STREQUAL "x86" AND TARGET_CPU STREQUAL "x86_64") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -m64") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -m64") ENDIF(HOST_CPU STREQUAL "x86" AND TARGET_CPU STREQUAL "x86_64") ENDIF(APPLE) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -D_REENTRANT -pipe -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -D_REENTRANT -pipe -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") IF(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -ansi") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ansi") ENDIF(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") IF(WITH_COVERAGE) SET(PLATFORM_CFLAGS "-fprofile-arcs -ftest-coverage ${PLATFORM_CFLAGS}") + SET(PLATFORM_CXXFLAGS "-fprofile-arcs -ftest-coverage ${PLATFORM_CXXFLAGS}") ENDIF(WITH_COVERAGE) IF(APPLE) SET(PLATFORM_CFLAGS "-gdwarf-2 ${PLATFORM_CFLAGS}") + SET(PLATFORM_CXXFLAGS "-gdwarf-2 ${PLATFORM_CXXFLAGS}") ENDIF(APPLE) IF(APPLE AND XCODE) @@ -538,6 +560,7 @@ MACRO(NL_SETUP_BUILD) IF(CMAKE_OSX_SYSROOT) SET(PLATFORM_CFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} ${PLATFORM_CFLAGS}") + SET(PLATFORM_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} ${PLATFORM_CXXFLAGS}") ELSE(CMAKE_OSX_SYSROOT) MESSAGE(FATAL_ERROR "CMAKE_OSX_SYSROOT can't be determinated") ENDIF(CMAKE_OSX_SYSROOT) @@ -545,10 +568,12 @@ MACRO(NL_SETUP_BUILD) IF(CMAKE_OSX_ARCHITECTURES) FOREACH(_ARCH ${CMAKE_OSX_ARCHITECTURES}) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch ${_ARCH}") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch ${_ARCH}") ENDFOREACH(_ARCH) ENDIF(CMAKE_OSX_ARCHITECTURES) IF(CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG) SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") ENDIF(CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG) SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-headerpad_max_install_names") @@ -561,9 +586,10 @@ MACRO(NL_SETUP_BUILD) # Fix "relocation R_X86_64_32 against.." error on x64 platforms IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) SET(PLATFORM_CFLAGS "-fPIC ${PLATFORM_CFLAGS}") + SET(PLATFORM_CXXFLAGS "-fPIC ${PLATFORM_CXXFLAGS}") ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) - SET(PLATFORM_CXXFLAGS "${PLATFORM_CFLAGS} -ftemplate-depth-48") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ftemplate-depth-48") IF(NOT APPLE) SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--no-undefined -Wl,--as-needed") From e4e12ff6c4ddb14b2587242e3a521b09404a1be6 Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 5 Oct 2012 14:57:05 +0200 Subject: [PATCH 050/125] Changed: Synchronization with SVN --- .../src/backup_service/backup_service.cpp | 5 +- .../src/entities_game_service/admin.cpp | 153 ++++++++++++++++-- .../building_manager/building_physical.cpp | 8 + .../entities_game_service/client_messages.cpp | 4 +- .../entities_game_service.cpp | 36 +---- .../guild_manager/guild.cpp | 32 +++- .../guild_manager/guild.h | 2 + .../mission_manager/mission_step_kill.cpp | 2 - .../outpost_manager/outpost_commands.cpp | 6 +- .../phrase_manager/faber_action.cpp | 2 +- .../phrase_manager/faber_phrase.cpp | 68 ++++---- .../phrase_manager/fg_extraction_phrase.cpp | 39 +++-- .../player_manager/character.cpp | 117 +++++++++++--- .../player_manager/character.h | 32 ++++ .../player_manager/character_inlines.h | 61 +++++++ .../player_manager/persistent_player_data.cpp | 10 +- .../pvp_manager/pvp_manager_2.cpp | 27 +++- .../entities_game_service/zone_manager.cpp | 2 +- .../server/src/monitor_service/mirrors.h | 2 +- 19 files changed, 475 insertions(+), 133 deletions(-) diff --git a/code/ryzom/server/src/backup_service/backup_service.cpp b/code/ryzom/server/src/backup_service/backup_service.cpp index bb0b71d3a..698cbc02f 100644 --- a/code/ryzom/server/src/backup_service/backup_service.cpp +++ b/code/ryzom/server/src/backup_service/backup_service.cpp @@ -532,7 +532,10 @@ static CMessage getFileClassImp( CMessage& msgin) for (uint j=0; j ,[, vector res; sint32 x = 0, y = 0, z = 0; + sint32 cell = 0; + if (get) { x = e->getState().X() / 1000; @@ -1229,6 +1232,10 @@ ENTITY_VARIABLE(Position, "Position of a player (in meter) ,[, x = entityBase->getState().X + sint32 (cos (entityBase->getState ().Heading) * 2000); y = entityBase->getState().Y + sint32 (sin (entityBase->getState ().Heading) * 2000); z = entityBase->getState().Z; + + TDataSetRow dsr = entityBase->getEntityRowId(); + CMirrorPropValueRO mirrorCell( TheDataset, dsr, DSPropertyCELL ); + cell = mirrorCell; } } } @@ -1258,11 +1265,11 @@ ENTITY_VARIABLE(Position, "Position of a player (in meter) ,[, // season included uint8 season; NLMISC::fromString(res[3], season); - c->teleportCharacter(x,y,z,true, false, 0.f, 0xFF, 0, season); + c->teleportCharacter(x,y,z,true, false, 0.f, 0xFF, cell, season); } else { - c->teleportCharacter(x,y,z,true); + c->teleportCharacter(x,y,z,true, false, 0.f, 0xFF, cell); } if ( cont ) @@ -3780,7 +3787,7 @@ NLMISC_COMMAND( monitorMissions, "monitor a player missions", "getMissionsBegin() == c->getMissionsEnd() ) + if ( c->getMissionsBegin() != c->getMissionsEnd() ) { CCharacter::sendDynamicSystemMessage( c->getEntityRowId() , "CSR_HAS_MISSION" ); return true; @@ -4014,8 +4021,6 @@ NLMISC_COMMAND (unmuteUniverse, "unmute the univers chat", "getGuildId(); CGuildManager::getInstance()->setGMGuild( guildId ); @@ -4450,8 +4455,8 @@ NLMISC_COMMAND (connectUserChannel, "Connect to user channels", " getUserDynChannel(name); + string name = toLower(args[1]); + TChanID channel = inst->getUserDynChannel(name); if (args.size() < 3) pass = toLower(name); @@ -4499,6 +4504,38 @@ NLMISC_COMMAND (connectUserChannel, "Connect to user channels", " ") +{ + if ((args.size() < 2) || (args.size() > 3)) + return false; + GET_CHARACTER + + CPVPManager2 *inst = CPVPManager2::getInstance(); + + string action; + string lang = args[1]; + if (lang != "en" && lang != "fr" && lang != "de" && lang != "ru" && lang != "es") + return false; + + TChanID channel = inst->getFactionDynChannel(lang); + + if (channel != DYN_CHAT_INVALID_CHAN) + { + if (!c->getLangChannel().empty()) { + TChanID current_channel = inst->getFactionDynChannel(c->getLangChannel()); + inst->removeFactionChannelForCharacter(current_channel, c); + } + inst->addFactionChannelToCharacter(channel, c, true); + c->setLangChannel(lang); + return true; + } + + SM_STATIC_PARAMS_1(params, STRING_MANAGER::literal); + params[0].Literal = lang; + CCharacter::sendDynamicSystemMessage( eid, "EGS_CHANNEL_INVALID_NAME", params ); + return false; +} + NLMISC_COMMAND (updateTarget, "Update current target", "") { GET_CHARACTER @@ -4601,9 +4638,15 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " = 6 && args[5] == "1") + bool new_separator = false; + // New check using HMagic + if (args.size() >= 6 && (args[5] == "1" || args[5] == "3")) new_check = true; + // New separator "|" + if (args.size() >= 6 && (args[5] == "2" || args[5] == "3")) + new_separator = true; + bool next_step = false; if (args.size() >= 7 && args[6] == "1") next_step = true; @@ -4680,7 +4723,10 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " command_args; - NLMISC::splitString(command, "!", command_args); + if (new_separator) + NLMISC::splitString(command, "|", command_args); + else + NLMISC::splitString(command, "!", command_args); if (command_args.empty()) return false; @@ -5317,8 +5363,10 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " setHairColor(value); + if (target) + target->setHairColor(value); + else + return false; } //************************************************* @@ -5468,12 +5516,35 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " getEntityRowId(); - ucstring name = ucstring(c->getName().toString()+"$"+command_args[1]+"$"); + c->setNewTitle(command_args[1]); + string fullname = c->getName().toString()+"$"+command_args[1]+"#"+c->getTagPvPA()+"#"+c->getTagPvPB()+"#"+c->getTagA()+"#"+c->getTagB()+"$"; + ucstring name; + name.fromUtf8(fullname); + NLNET::CMessage msgout("CHARACTER_NAME"); + msgout.serial(row); + msgout.serial(name); + sendMessageViaMirror("IOS", msgout); + } + + //************************************************* + //***************** set_tag + //************************************************* + + else if (command_args[0] == "set_tag") { + if (command_args.size () != 3) return false; + TDataSetRow row = c->getEntityRowId(); + if (command_args[1] == "pvpA") c->setTagPvPA(command_args[2]); + if (command_args[1] == "pvpB") c->setTagPvPB(command_args[2]); + if (command_args[1] == "A") c->setTagA(command_args[2]); + if (command_args[1] == "B") c->setTagB(command_args[2]); + string fullname = c->getName().toString()+"$"+c->getNewTitle()+"#"+c->getTagPvPA()+"#"+c->getTagPvPB()+"#"+c->getTagA()+"#"+c->getTagB()+"$"; + ucstring name; + name.fromUtf8(fullname); NLNET::CMessage msgout("CHARACTER_NAME"); msgout.serial(row); msgout.serial(name); @@ -5500,6 +5571,7 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " res; sint32 x = 0, y = 0, z = 0; float h = 0; + sint32 cell; if ( value.find(',') != string::npos ) // Position x,y,z,a { explode (value, string(","), res); @@ -5591,6 +5663,10 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " getState().Y + sint32 (sin (entityBase->getState ().Heading) * 2000); z = entityBase->getState().Z; h = entityBase->getState().Heading; + + TDataSetRow dsr = entityBase->getEntityRowId(); + CMirrorPropValueRO mirrorCell( TheDataset, dsr, DSPropertyCELL ); + cell = mirrorCell; } } } @@ -5620,7 +5696,7 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " applyRespawnEffects(); } - c->teleportCharacter(x,y,z,allowPetTp,true,h); + c->teleportCharacter(x,y,z,allowPetTp,true,h,0xFF,cell); if ( cont ) { @@ -5903,6 +5979,7 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " sendUrl(web_app_url+"&player_eid="+c->getId().toString()+"&event=failed&desc=no_enough_faction_points", getSalt()); + return true; } } else if (action=="set") @@ -5941,6 +6018,7 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " sendUrl(web_app_url+"&player_eid="+c->getId().toString()+"&event=failed&desc=no_enough_pvp_points", getSalt()); + return true; } } else if (action=="set") @@ -5957,6 +6035,51 @@ NLMISC_COMMAND (webExecCommand, "Execute a web command", " [1=Read/Write,0=ReadOnly(default)]") { - if (args.size() != 2) return false; + if (args.size() < 2 || args.size() > 3) return false; GET_CHARACTER TChanID chanID = DynChatEGS.getChanIDFromName(args[1]); if (chanID == DYN_CHAT_INVALID_CHAN) diff --git a/code/ryzom/server/src/entities_game_service/building_manager/building_physical.cpp b/code/ryzom/server/src/entities_game_service/building_manager/building_physical.cpp index 9e93b7ed9..30374ec3d 100644 --- a/code/ryzom/server/src/entities_game_service/building_manager/building_physical.cpp +++ b/code/ryzom/server/src/entities_game_service/building_manager/building_physical.cpp @@ -89,7 +89,15 @@ bool IBuildingPhysical::addUser(CCharacter * user, uint16 roomIdx, uint16 ownerI return false; } + + if (user->currentHp() <= 0 ) + { + nlwarning("user %s is dead",user->getId().toString().c_str()); + return false; + } + CCharacter *owner; + if (ownerIdx < _Players.size()) { owner = PlayerManager.getChar(_Players[ownerIdx] ); diff --git a/code/ryzom/server/src/entities_game_service/client_messages.cpp b/code/ryzom/server/src/entities_game_service/client_messages.cpp index 9c40edc4a..58dc114e2 100644 --- a/code/ryzom/server/src/entities_game_service/client_messages.cpp +++ b/code/ryzom/server/src/entities_game_service/client_messages.cpp @@ -2078,7 +2078,7 @@ void cbClientSit( NLNET::CMessage& msgin, const std::string &serviceName, NLNET: } -// client send a command to chang guild motd +// client send a command to change guild motd void cbClientGuildMotd( NLNET::CMessage& msgin, const std::string &serviceName, NLNET::TServiceId serviceId ) { H_AUTO(cbClientGuildMotd); @@ -2737,7 +2737,7 @@ void cbClientSetCharacterTitle( NLNET::CMessage& msgin, const std::string & serv } // kxu: TODO: check validity of title chosen by player - c->setTitle( (CHARACTER_TITLE::ECharacterTitle) title ); + c->setNewTitle(CHARACTER_TITLE::toString((CHARACTER_TITLE::ECharacterTitle)title)); c->registerName(); } diff --git a/code/ryzom/server/src/entities_game_service/entities_game_service.cpp b/code/ryzom/server/src/entities_game_service/entities_game_service.cpp index f431372cd..ef0f9404e 100644 --- a/code/ryzom/server/src/entities_game_service/entities_game_service.cpp +++ b/code/ryzom/server/src/entities_game_service/entities_game_service.cpp @@ -4321,41 +4321,7 @@ NLMISC_COMMAND(setAllSkillsToValue,"set all skills to value","getSkills(); - skills._Skills[ i ].Base = min( value, (sint32)SkillsTree->SkillsTree[ i ].MaxSkillValue ); - skills._Skills[ i ].Current = skills._Skills[ i ].Base; - skills._Skills[ i ].MaxLvlReached = skills._Skills[ i ].Base; - - // update all parent skill with new max children - SKILLS::ESkills skillUpdated = (SKILLS::ESkills)i; - while( SkillsTree->SkillsTree[ skillUpdated ].ParentSkill != SKILLS::unknown ) - { - if( skills._Skills[ i ].Base > skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxLvlReached ) - { - skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxLvlReached = skills._Skills[ i ].Base; - skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].Base = min( skills._Skills[ skillUpdated ].Base, (sint32)SkillsTree->SkillsTree[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxSkillValue ); - skillUpdated = SkillsTree->SkillsTree[ skillUpdated ].ParentSkill; - } - else - { - break; - } - } - -// e->_PropertyDatabase.x_setProp( string("CHARACTER_INFO:SKILLS:") + NLMISC::toStringEnum( i ) + string(":SKILL"), skills._Skills[ i ].Base ); - CBankAccessor_PLR::getCHARACTER_INFO().getSKILLS().getArray(i).setSKILL(e->_PropertyDatabase, checkedCast(skills._Skills[ i ].Base) ); -// e->_PropertyDatabase.x_setProp( string("CHARACTER_INFO:SKILLS:") + NLMISC::toStringEnum( i ) + string(":BaseSKILL"), skills._Skills[ i ].Base ); - CBankAccessor_PLR::getCHARACTER_INFO().getSKILLS().getArray(i).setBaseSKILL(e->_PropertyDatabase, checkedCast(skills._Skills[ i ].Base) ); - } + e->setSkillsToValue(value); } else { diff --git a/code/ryzom/server/src/entities_game_service/guild_manager/guild.cpp b/code/ryzom/server/src/entities_game_service/guild_manager/guild.cpp index 4e9b81911..b7277bc11 100644 --- a/code/ryzom/server/src/entities_game_service/guild_manager/guild.cpp +++ b/code/ryzom/server/src/entities_game_service/guild_manager/guild.cpp @@ -237,6 +237,16 @@ void CGuild::setMOTD( const std::string& motd, const NLMISC::CEntityId& eId) nlwarning("%s invalid member id %s",eId.toString().c_str()); return; } + + if ( motd == "?" ) + { + // Show the old MOTD + SM_STATIC_PARAMS_1(params, STRING_MANAGER::literal); + params[0].Literal= _MessageOfTheDay; + CCharacter::sendDynamicMessageToChatGroup(user->getEntityRowId(), "GMOTD", CChatGroup::guild, params); + return; + } + EGSPD::CGuildGrade::TGuildGrade memberGrade = member->getGrade(); if( memberGrade >= EGSPD::CGuildGrade::Member) { @@ -255,9 +265,10 @@ void CGuild::setMOTD( const std::string& motd, const NLMISC::CEntityId& eId) if(!_MessageOfTheDay.empty()) { + // Show new MOTD to all members SM_STATIC_PARAMS_1(params, STRING_MANAGER::literal); params[0].Literal= _MessageOfTheDay; - CCharacter::sendDynamicMessageToChatGroup(user->getEntityRowId(), "GMOTD", CChatGroup::guild, params); + sendMessageToGuildChat("GMOTD", params); } } else @@ -1408,6 +1419,25 @@ void CGuild::sendMessageToGuildMembers( const std::string & msg, const TVectorP IGuildUnifier::getInstance()->sendMessageToGuildMembers(this, msg, params); } +//---------------------------------------------------------------------------- +void CGuild::sendMessageToGuildChat( const std::string & msg, const TVectorParamCheck & params )const +{ + for ( std::map< EGSPD::TCharacterId, EGSPD::CGuildMemberPD*>::const_iterator it = getMembersBegin(); it != getMembersEnd(); ++it ) + { + CGuildMember * member = EGS_PD_CAST( (*it).second ); + EGS_PD_AST( member ); + + // continue if the player is offline + CGuildMemberModule * module = NULL; + if ( member->getReferencingModule(module) ) + { + CGuildCharProxy proxy; + module->getProxy(proxy); + proxy.sendDynamicMessageToChatGroup(msg, CChatGroup::guild, params); + } + } +} + //---------------------------------------------------------------------------- void CGuild::setMemberClientDB( CGuildMember* member ) { diff --git a/code/ryzom/server/src/entities_game_service/guild_manager/guild.h b/code/ryzom/server/src/entities_game_service/guild_manager/guild.h index e03556a0f..151c3ccce 100644 --- a/code/ryzom/server/src/entities_game_service/guild_manager/guild.h +++ b/code/ryzom/server/src/entities_game_service/guild_manager/guild.h @@ -165,6 +165,8 @@ public: void addMemberToGuildChat(CGuildMember *member); /// send a message to all members void sendMessageToGuildMembers( const std::string & msg, const TVectorParamCheck & params = TVectorParamCheck() )const; + /// send a message to all members in guild chat + void sendMessageToGuildChat( const std::string & msg, const TVectorParamCheck & params = TVectorParamCheck() )const; /// set information relative to a member in the guild client database void setMemberClientDB( CGuildMember* member ); /// return the best online user diff --git a/code/ryzom/server/src/entities_game_service/mission_manager/mission_step_kill.cpp b/code/ryzom/server/src/entities_game_service/mission_manager/mission_step_kill.cpp index d31f4e795..9124c1fc3 100644 --- a/code/ryzom/server/src/entities_game_service/mission_manager/mission_step_kill.cpp +++ b/code/ryzom/server/src/entities_game_service/mission_manager/mission_step_kill.cpp @@ -215,9 +215,7 @@ class CMissionStepKillFauna : public IMissionStepTemplate ret.clear(); ret.resize( _SubSteps.size() ); for ( uint i = 0; i < _SubSteps.size(); i++ ) - { ret[i] = _SubSteps[i].Quantity; - } } virtual void getTextParams( uint & nbSubSteps,const std::string* & textPtr,TVectorParamCheck& retParams, const std::vector& subStepStates) diff --git a/code/ryzom/server/src/entities_game_service/outpost_manager/outpost_commands.cpp b/code/ryzom/server/src/entities_game_service/outpost_manager/outpost_commands.cpp index d0973a82c..0270eb9e6 100644 --- a/code/ryzom/server/src/entities_game_service/outpost_manager/outpost_commands.cpp +++ b/code/ryzom/server/src/entities_game_service/outpost_manager/outpost_commands.cpp @@ -121,7 +121,7 @@ NLMISC_COMMAND(outpostSimulateTimer0End, "", " [ if (args.size()>1) { NLMISC::fromString(args[1], endTime); - if (args[1][0]=='+') + if (args[1].find('+')==0) endTime += CTime::getSecondsSince1970(); } if (endTime==0) endTime = 1; @@ -144,7 +144,7 @@ NLMISC_COMMAND(outpostSimulateTimer1End, "", " [ if (args.size()>1) { NLMISC::fromString(args[1], endTime); - if (args[1][0]=='+') + if (args[1].find('+')==0) endTime += CTime::getSecondsSince1970(); } if (endTime==0) endTime = 1; @@ -167,7 +167,7 @@ NLMISC_COMMAND(outpostSimulateTimer2End, "", " [ if (args.size()>1) { NLMISC::fromString(args[1], endTime); - if (args[1][0]=='+') + if (args[1].find('+')==0) endTime += CTime::getSecondsSince1970(); } if (endTime==0) endTime = 1; diff --git a/code/ryzom/server/src/entities_game_service/phrase_manager/faber_action.cpp b/code/ryzom/server/src/entities_game_service/phrase_manager/faber_action.cpp index 9101ac850..50a069b5e 100644 --- a/code/ryzom/server/src/entities_game_service/phrase_manager/faber_action.cpp +++ b/code/ryzom/server/src/entities_game_service/phrase_manager/faber_action.cpp @@ -281,7 +281,7 @@ public: } else { - c->wearRightHandItem(); + c->wearRightHandItem(phrase->getMps().size()/10); // report Xp Gain unless used tool is worned PROGRESSIONPVE::CCharacterProgressionPVE::getInstance()->actionReport( report, true, false ); diff --git a/code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.cpp b/code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.cpp index f74b81196..577544e13 100644 --- a/code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.cpp +++ b/code/ryzom/server/src/entities_game_service/phrase_manager/faber_phrase.cpp @@ -54,7 +54,7 @@ CFaberPhrase::CFaberPhrase() _CraftedItemStaticForm = 0; _RootFaberBricks = false; _RootFaberPlan = 0; - + // recommended skill level for using crafted item _Recommended = 0; @@ -67,13 +67,13 @@ CFaberPhrase::CFaberPhrase() _MBORange = 0.0f; _MBOProtection = 0.0f; _MBOSapLoad = 0.0f; - + // energy buff on item _MBOHitPoint = 0; _MBOSap = 0; _MBOStamina = 0; _MBOFocus = 0; - + _IsStatic = true; _PhraseType = BRICK_TYPE::FABER; } @@ -85,7 +85,7 @@ CFaberPhrase::CFaberPhrase() bool CFaberPhrase::build( const TDataSetRow & actorRowId, const std::vector< const CStaticBrick* >& bricks, bool buildToExecute ) { H_AUTO(CFaberPhrase_build); - + // we are sure there is at least one brick and that there are non NULL; nlassert( !bricks.empty() ); @@ -112,7 +112,7 @@ bool CFaberPhrase::build( const TDataSetRow & actorRowId, const std::vector< con return false; } } - else*/ if( ( brick.Family >= BRICK_FAMILIES::BeginFaberOption && brick.Family <= BRICK_FAMILIES::EndFaberOption ) + else*/ if( ( brick.Family >= BRICK_FAMILIES::BeginFaberOption && brick.Family <= BRICK_FAMILIES::EndFaberOption ) || ( brick.Family >= BRICK_FAMILIES::BeginFaberCredit && brick.Family <= BRICK_FAMILIES::EndFaberCredit ) ) { for ( uint j = 0 ; j < brick.Params.size() ; ++j) @@ -120,7 +120,7 @@ bool CFaberPhrase::build( const TDataSetRow & actorRowId, const std::vector< con const TBrickParam::IId* param = brick.Params[j]; switch(param->id()) - { + { case TBrickParam::FOCUS: INFOLOG("FOCUS: %i",((CSBrickParamCraftFocus *)param)->Focus); _FocusCost += ((CSBrickParamCraftFocus *)param)->Focus; @@ -217,10 +217,10 @@ bool CFaberPhrase::evaluate() bool CFaberPhrase::validate() { H_AUTO(CFaberPhrase_validate); - + if ( !CraftSystemEnabled ) return false; - + CCharacter * c = (CCharacter *) CEntityBaseManager::getEntityBasePtr( _ActorRowId ); if( c == 0 ) { @@ -234,7 +234,7 @@ bool CFaberPhrase::validate() return false; } - // check right hand item is a crafting tool + // check right hand item is a crafting tool CGameItemPtr rightHandItem = c->getRightHandItem(); if (rightHandItem == NULL || rightHandItem->getStaticForm() == NULL || rightHandItem->getStaticForm()->Family != ITEMFAMILY::CRAFTING_TOOL) { @@ -249,8 +249,16 @@ bool CFaberPhrase::validate() return false; } + + // check quality of right hand item (need be >= Recommended (level of item)) + if (rightHandItem->recommended()+49 < _Recommended) + { + PHRASE_UTILITIES::sendDynamicSystemMessage(_ActorRowId, "CRAFT_NEED_RECOMMENDED_CRAFTING_TOOL"); + return false; + } + // entities cant craft if in combat - /* commented as test of right hand item is now made... + /* commented as test of right hand item is now made... TDataSetRow entityRowId = CPhraseManager::getInstance().getEntityEngagedMeleeBy( _ActorRowId ); if (TheDataset.isAccessible(entityRowId)) { @@ -258,7 +266,7 @@ bool CFaberPhrase::validate() return false; } */ - + const sint32 focus = c->getScores()._PhysicalScores[ SCORES::focus ].Current; if ( focus < _FocusCost ) { @@ -318,7 +326,7 @@ bool CFaberPhrase::update() void CFaberPhrase::execute() { H_AUTO(CFaberPhrase_execute); - + CCharacter* player = PlayerManager.getChar(_ActorRowId); if (!player) return; @@ -336,13 +344,13 @@ void CFaberPhrase::execute() _FaberTime = (NLMISC::TGameCycle)(plan->CraftingDuration * 10); } nldebug("CFaberPhrase::execute> _FaberTime = %d",_FaberTime); - + const NLMISC::TGameCycle time = CTickEventHandler::getGameCycle(); - + _ExecutionEndDate = time + _FaberTime ; player->setCurrentAction(CLIENT_ACTION_TYPE::Faber,_ExecutionEndDate); - player->staticActionInProgress(true); + player->staticActionInProgress(true); // set behaviour PHRASE_UTILITIES::sendUpdateBehaviour( _ActorRowId, MBEHAV::FABER ); @@ -366,7 +374,7 @@ bool CFaberPhrase::launch() void CFaberPhrase::apply() { H_AUTO(CFaberPhrase_apply); - + CCharacter * c = dynamic_cast< CCharacter * > ( CEntityBaseManager::getEntityBasePtr( _ActorRowId ) ); if( c == 0 ) { @@ -410,7 +418,7 @@ void CFaberPhrase::apply() } nbMp = (sint32)_MpsFormula.size(); - + uint32 nbMpForumulaNeedeInPlan = 0; neededMp = (uint32)_RootFaberPlan->Faber->NeededMpsFormula.size(); for( uint mp = 0; mp < neededMp; ++mp ) @@ -418,7 +426,7 @@ void CFaberPhrase::apply() //for each type of Mp needed nbMpForumulaNeedeInPlan += _RootFaberPlan->Faber->NeededMpsFormula[ mp ].Quantity; } - + if( nbMpForumulaNeedeInPlan != _MpsFormula.size() ) { nlwarning(" Craft plan %s need %d Raw Material Formula and client send %d Raw Material Formula", c->getCraftPlan().toString().c_str(), _RootFaberPlan->Faber->NeededMpsFormula.size(), _MpsFormula.size() ); @@ -453,7 +461,7 @@ void CFaberPhrase::apply() stop(); return; } - + neededMp = (uint32)_RootFaberPlan->Faber->NeededMps.size(); EGSPD::CPeople::TPeople civRestriction = _RootFaberPlan->CivRestriction; uint32 usedMp=0; @@ -469,7 +477,7 @@ void CFaberPhrase::apply() { // for each Mp of one type (we have Quantity by type) uint32 NumMpParameters = (uint32)usedMps[u_mp]->Mp->MpFaberParameters.size(); - + // for each Faber parameters in Mp for( uint j = 0; j < NumMpParameters; ++j ) { @@ -571,7 +579,7 @@ void CFaberPhrase::apply() CGameItemPtr CFaberPhrase::systemCraftItem( const NLMISC::CSheetId& sheet, const std::vector< NLMISC::CSheetId >& Mp, const std::vector< NLMISC::CSheetId >& MpFormula ) { H_AUTO(CFaberPhrase_systemCraftItem); - + std::vector< const CStaticBrick* > bricks; _RootFaberPlan = CSheets::getSBrickForm( sheet ); const CStaticBrick * rootFaberBricks = CSheets::getSBrickForm( CSheetId("bcpa01.sbrick") ); @@ -586,7 +594,7 @@ CGameItemPtr CFaberPhrase::systemCraftItem( const NLMISC::CSheetId& sheet, const } CGameItemPtr craftedItem = 0; - + if( _RootFaberPlan && _RootFaberPlan->Faber ) { _CraftedItemStaticForm = CSheets::getForm( _RootFaberPlan->Faber->CraftedItem ); @@ -597,7 +605,7 @@ CGameItemPtr CFaberPhrase::systemCraftItem( const NLMISC::CSheetId& sheet, const bricks.push_back( rootFaberBricks ); bricks.push_back( _RootFaberPlan ); - + for( vector< NLMISC::CSheetId >::const_iterator it = Mp.begin(); it != Mp.end(); ++it ) { const CStaticItem * mp = CSheets::getForm( (*it) ); @@ -626,7 +634,7 @@ CGameItemPtr CFaberPhrase::systemCraftItem( const NLMISC::CSheetId& sheet, const } _MpsFormula.push_back( mp ); } - + // Check quantity of gived Mps formula if( _RootFaberPlan->Faber->NeededMpsFormula.size() > _MpsFormula.size() ) { @@ -658,7 +666,7 @@ CGameItemPtr CFaberPhrase::systemCraftItem( const NLMISC::CSheetId& sheet, const void CFaberPhrase::end() { H_AUTO(CFaberPhrase_end); - + CCharacter* player = PlayerManager.getChar(_ActorRowId); if (!player) return; @@ -679,7 +687,7 @@ void CFaberPhrase::end() void CFaberPhrase::stop() { H_AUTO(CFaberPhrase_stop); - + CCharacter* player = PlayerManager.getChar(_ActorRowId); if (!player) return; @@ -697,11 +705,11 @@ void CFaberPhrase::stop() } // stop // -NLMISC_COMMAND(simuCraft, "Simulation de craft pour verifier les probabilités de reusir un item","") +NLMISC_COMMAND(simuCraft, "Craft simulation to verify probabilities to succesfully craft an item","") { if (args.size() != 3) return false; - + uint32 nbSimu, skillLevel, itemQuality; NLMISC::fromString(args[0], nbSimu); NLMISC::fromString(args[1], skillLevel); @@ -733,7 +741,7 @@ NLMISC_COMMAND(simuCraft, "Simulation de craft pour verifier les probabilit if(sf == 1.0f) { ++nbFullSuccess; - XpGain += CStaticSuccessTable::getXPGain(SUCCESS_TABLE_TYPE::Craft, deltaLvlXp); + XpGain += CStaticSuccessTable::getXPGain(SUCCESS_TABLE_TYPE::Craft, deltaLvlXp); } else if( sf > 0.0f) { @@ -747,7 +755,7 @@ NLMISC_COMMAND(simuCraft, "Simulation de craft pour verifier les probabilit nlinfo("FaberSimu: Results after %d roll: Sucess: %d (%.2f%%), partial sucess: %d (%.2f%%), Miss: %d (%.2f%%), Xp Gain %d", nbSimu, nbFullSuccess, 100.0f*nbFullSuccess/nbSimu, - nbPartialSuccess, 100.0f*nbPartialSuccess/nbSimu, + nbPartialSuccess, 100.0f*nbPartialSuccess/nbSimu, nbMiss, 100.0f*nbMiss/nbSimu, uint32(1000.f*XpGain / (nbSimu-nbMiss/2) ) ); diff --git a/code/ryzom/server/src/entities_game_service/phrase_manager/fg_extraction_phrase.cpp b/code/ryzom/server/src/entities_game_service/phrase_manager/fg_extraction_phrase.cpp index f9d2efe0c..6032adcfc 100644 --- a/code/ryzom/server/src/entities_game_service/phrase_manager/fg_extraction_phrase.cpp +++ b/code/ryzom/server/src/entities_game_service/phrase_manager/fg_extraction_phrase.cpp @@ -107,7 +107,7 @@ CFgExtractionPhrase::CFgExtractionPhrase() bool CFgExtractionPhrase::build( const TDataSetRow & actorRowId, const std::vector< const CStaticBrick* >& bricks, bool buildToExecute ) { H_AUTO(CFgExtractionPhrase_build); - + _ActorRowId = actorRowId; // Check grammar @@ -120,7 +120,7 @@ bool CFgExtractionPhrase::build( const TDataSetRow & actorRowId, const std::vect for (std::vector::const_iterator ib=bricks.begin(); ib!=bricks.end(); ++ib ) { const CStaticBrick& brick = *(*ib); - + // Compute Sabrina credit and cost) if ( brick.SabrinaValue > 0 ) sabrinaCost += brick.SabrinaValue; @@ -156,7 +156,7 @@ bool CFgExtractionPhrase::build( const TDataSetRow & actorRowId, const std::vect break; case TBrickParam::FG_SRC_PRD: INFOLOG("FG_SRC_PRD: %g",((CSBrickParamForagePeriod *)param)->Period); - if ( ((CSBrickParamForagePeriod *)param)->Period != 0 ) + if ( ((CSBrickParamForagePeriod *)param)->Period != 0 ) _RequestedProps[CHarvestSource::S] = 1.0f / (((CSBrickParamForagePeriod *)param)->Period * 10.0f); // period converted from second to tick else _RequestedProps[CHarvestSource::S] = 1.0f; @@ -231,7 +231,7 @@ bool CFgExtractionPhrase::build( const TDataSetRow & actorRowId, const std::vect //nlerror( "TODO: Families" ); //if ( brick.Family >= BRICK_FAMILIES::BeginForage - + //insertProgressingSkill( brick.Skill, brick.SheetId ); } @@ -432,7 +432,7 @@ bool CFgExtractionPhrase::evaluate() bool CFgExtractionPhrase::validate() { H_AUTO(CFgExtractionPhrase_validate); - + if ( ! HarvestSystemEnabled ) return false; @@ -544,6 +544,15 @@ bool CFgExtractionPhrase::validate() return false; // has disappeared } + // test if tool have enough quality + sint depositQ = (sint)harvestSource->forageSite()->deposit()->maxQuality(); + + if ((depositQ > 0) && (item->recommended()+49 < depositQ)) + { + PHRASE_UTILITIES::sendDynamicSystemMessage(_ActorRowId, "FORAGE_TOOL_QUALITY_TOO_LOW"); + return false; + } + // Check the distance from the player to the source (ignoring Z because for tunnel case, player couldn't target the source) const CEntityState& state = player->getState(); CVector2f playerPos( (float)state.X / 1000.0f, (float)state.Y / 1000.0f ); @@ -589,7 +598,7 @@ bool CFgExtractionPhrase::validate() bool CFgExtractionPhrase::update() { H_AUTO(CFgExtractionPhrase_update); - + CCharacter* player = PlayerManager.getChar( _ActorRowId ); if ( ! player ) return false; @@ -600,7 +609,7 @@ bool CFgExtractionPhrase::update() if( idle() ) { idle(false); - + // check if actor can use action CBypassCheckFlags bypassCheckFlags = CBypassCheckFlags::NoFlags; if (player->canEntityUseAction(bypassCheckFlags,false) == false) @@ -633,7 +642,7 @@ bool CFgExtractionPhrase::update() void CFgExtractionPhrase::execute() { H_AUTO(CFgExtractionPhrase_execute); - + // Get character CCharacter* player = PlayerManager.getChar( _ActorRowId ); if (!player) @@ -676,7 +685,7 @@ void CFgExtractionPhrase::execute() void CFgExtractionPhrase::end() { H_AUTO(CFgExtractionPhrase_end); - + CCharacter* player = PlayerManager.getChar(_ActorRowId); if (!player) return; @@ -694,7 +703,7 @@ void CFgExtractionPhrase::end() void CFgExtractionPhrase::stop() { H_AUTO(CFgExtractionPhrase_stop); - + CCharacter* player = PlayerManager.getChar(_ActorRowId); if (!player) return; @@ -742,7 +751,7 @@ bool CFgExtractionPhrase::launch() void CFgExtractionPhrase::apply() { H_AUTO(CFgExtractionPhrase_apply); - + CCharacter* player = PlayerManager.getChar( _ActorRowId ); if (!player) return; @@ -778,7 +787,7 @@ void CFgExtractionPhrase::apply() void CFgExtractionPhrase::applyExtraction( CCharacter *player, float successFactor ) { H_AUTO(CFgExtractionPhrase_applyExtraction); - + nlassert( _Source ); if ( ! player->forageProgress() ) return; @@ -801,7 +810,7 @@ void CFgExtractionPhrase::applyExtraction( CCharacter *player, float successFact player->forageProgress()->fillFromExtraction( _Props.Extraction.ObtainedProps[CHarvestSource::A], _Props.Extraction.ObtainedProps[CHarvestSource::Q], player ); else return; - + // Report result of action if ( propDrop != CHarvestSource::NoDrop ) { @@ -864,7 +873,7 @@ struct CNonNullGameItemPtrPred : std::unary_function void CFgExtractionPhrase::doKamiOffering( CCharacter *player ) { H_AUTO(CFgExtractionPhrase_doKamiOffering); - + // Count the number of non empty slots // const vector &theBag = player->getInventory()[INVENTORIES::bag]()->getChildren(); CInventoryPtr theBag = player->getInventory(INVENTORIES::bag); @@ -912,7 +921,7 @@ void CFgExtractionPhrase::doKamiOffering( CCharacter *player ) (*ib)->getSheetId().toString().c_str()); */ // EGSPD::forageKamiItemOffering(player->getId(), _Source->depositForK()->name(), _Source->depositForK()->kamiAnger(), _Props.Care.KamiAngerDec[CHarvestSource::KamiAngerDec], item->getSheetId().toString()); - + // TODO: quantity, filter, etc. // player->destroyItem( INVENTORIES::bag, ib-theBag.begin(), 1/*(*ib).quantity()*/, false ); theBag->deleteItem(i); diff --git a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp index b493d041b..51d6a9c39 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp +++ b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp @@ -675,6 +675,9 @@ CCharacter::CCharacter(): CEntityBase(false), _FriendVisibility = VisibleToAll; + _LangChannel = "en"; + _NewTitle = "Refugee"; + initDatabase(); } // CCharacter // @@ -699,6 +702,7 @@ void CCharacter::clear() _ForbidAuraUseStartDate=0; _ForbidAuraUseEndDate=0; _Title= CHARACTER_TITLE::Refugee; + _NewTitle = "Refugee"; SET_STRUCT_MEMBER(_VisualPropertyA,PropertySubData.HatModel,0); SET_STRUCT_MEMBER(_VisualPropertyA,PropertySubData.HatColor,0); @@ -3851,9 +3855,9 @@ void CCharacter::sendBetaTesterStatus() sendReservedTitleStatus( CHARACTER_TITLE::FBT, p->isBetaTester() ); - if (!p->isBetaTester() && _Title == CHARACTER_TITLE::FBT) + if (!p->isBetaTester() && _NewTitle == "FBT") { - _Title = CHARACTER_TITLE::Refugee; + _NewTitle = "Refugee"; registerName(); } } @@ -3869,9 +3873,9 @@ void CCharacter::sendWindermeerStatus() sendReservedTitleStatus( CHARACTER_TITLE::WIND, p->isWindermeerCommunity() ); - if ( !p->isWindermeerCommunity() && _Title == CHARACTER_TITLE::WIND) + if ( !p->isWindermeerCommunity() && _NewTitle == "WIND") { - _Title = CHARACTER_TITLE::Refugee; + _NewTitle = "Refugee"; registerName(); } } @@ -6963,11 +6967,11 @@ double CCharacter::addXpToSkillInternal( double XpGain, const std::string& ContS CBankAccessor_PLR::getCHARACTER_INFO().getRING_XP_CATALYSER().setCount(_PropertyDatabase, checkedCast(ringCatalyserCount) ); } } - } - if (!p->isTrialPlayer()) - { - xpBonus = XpGain; + if (!p->isTrialPlayer()) + { + xpBonus = XpGain; + } } XpGain += xpBonus + ringXpBonus; @@ -7081,7 +7085,7 @@ double CCharacter::addXpToSkillInternal( double XpGain, const std::string& ContS SM_STATIC_PARAMS_3(paramsP, STRING_MANAGER::skill, STRING_MANAGER::integer, STRING_MANAGER::integer); paramsP[0].Enum = skillEnum; paramsP[1].Int = max((sint32)1, sint32(100*XpGain) ); - paramsP[2].Int = max((sint32)1, sint32(100*(XpGain - (xpBonus+ringXpBonus))) ); + paramsP[2].Int = max((sint32)1, sint32(100*(XpGain - xpBonus - ringXpBonus))); PHRASE_UTILITIES::sendDynamicSystemMessage(_EntityRowId, "XP_CATALYSER_PROGRESS_NORMAL_GAIN", paramsP); if( xpBonus > 0 ) @@ -7329,11 +7333,18 @@ double CCharacter::addXpToSkillInternal( double XpGain, const std::string& ContS return XpGainRemainder; } - //----------------------------------------------- // CCharacter::setSkillTreeToMaxValue Set skill tree of character to max value of each skill //----------------------------------------------- void CCharacter::setSkillsToMaxValue() +{ + setSkillsToValue(-1); +} + +//----------------------------------------------- +// CCharacter::setSkillTreeToMaxValue Set skill tree of character to max value of each skill +//----------------------------------------------- +void CCharacter::setSkillsToValue(const sint32& value) { // get pointer on static skills tree definition CSheetId sheet("skills.skill_tree"); @@ -7342,16 +7353,31 @@ void CCharacter::setSkillsToMaxValue() for( uint i = 0; i < SKILLS::NUM_SKILLS; ++i ) { - _Skills._Skills[ i ].Base = SkillsTree->SkillsTree[ i ].MaxSkillValue; + _Skills._Skills[ i ].Base = (value < 0) ? SkillsTree->SkillsTree[ i ].MaxSkillValue : min( value, (sint32)SkillsTree->SkillsTree[ i ].MaxSkillValue ); _Skills._Skills[ i ].Current = SkillsTree->SkillsTree[ i ].MaxSkillValue + _Skills._Skills[ i ].Modifier; -// _PropertyDatabase.setProp( _DataIndexReminder->CHARACTER_INFO.SKILLS.Skill[i], _Skills._Skills[ i ].Current ); - CBankAccessor_PLR::getCHARACTER_INFO().getSKILLS().getArray(i).setSKILL(_PropertyDatabase, checkedCast(_Skills._Skills[ i ].Current) ); -// _PropertyDatabase.setProp( _DataIndexReminder->CHARACTER_INFO.SKILLS.BaseSkill[i], _Skills._Skills[ i ].Base ); + _Skills._Skills[ i ].MaxLvlReached = _Skills._Skills[ i ].Current; + CBankAccessor_PLR::getCHARACTER_INFO().getSKILLS().getArray(i).setBaseSKILL(_PropertyDatabase, checkedCast(_Skills._Skills[ i ].Base) ); + CBankAccessor_PLR::getCHARACTER_INFO().getSKILLS().getArray(i).setSKILL(_PropertyDatabase, checkedCast(_Skills._Skills[ i ].Current) ); + + // update all parent skill with new max children + SKILLS::ESkills skillUpdated = (SKILLS::ESkills)i; + while( SkillsTree->SkillsTree[ skillUpdated ].ParentSkill != SKILLS::unknown ) + { + if( _Skills._Skills[ i ].Base > _Skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxLvlReached ) + { + _Skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxLvlReached = _Skills._Skills[ i ].Base; + _Skills._Skills[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].Base = min( _Skills._Skills[ skillUpdated ].Base, (sint32)SkillsTree->SkillsTree[ SkillsTree->SkillsTree[ skillUpdated ].ParentSkill ].MaxSkillValue ); + skillUpdated = SkillsTree->SkillsTree[ skillUpdated ].ParentSkill; + } + else + { + break; + } + } } } - //----------------------------------------------- // CCharacter::sendDynamicSystemMessage //----------------------------------------------- @@ -7949,6 +7975,7 @@ void CCharacter::setStartStatistics( const CCreateCharMsg& createCharMsg ) _Race = (EGSPD::CPeople::TPeople) createCharMsg.People; _Gender = createCharMsg.Sex; _Title = CHARACTER_TITLE::Refugee; + _NewTitle = "Refugee"; // fame information // Players start out as Neutral in their declared clans @@ -9787,7 +9814,7 @@ bool CCharacter::queryItemPrice( const CGameItemPtr item, uint32& price ) quality = theItem->quality(); if ( theItem->maxDurability() ) wornFactor = float(theItem->durability()) / float(theItem->maxDurability()); - price = (uint32) ( CShopTypeManager::computeBasePrice( theItem, quality ) * wornFactor ); + price = (uint32) ( CShopTypeManager::computeBasePrice( theItem, quality ) * wornFactor * 0.02 ); return true; } @@ -10214,6 +10241,35 @@ void CCharacter::initPvpPointDb() CBankAccessor_PLR::getUSER().getRRPS_LEVELS(0).setVALUE(_PropertyDatabase, _PvpPoint ); } +//----------------------------------------------------------------------------- +void CCharacter::setLangChannel(const string &lang) { + _LangChannel = lang; +} + +//----------------------------------------------------------------------------- +void CCharacter::setNewTitle(const string &title) { + _NewTitle = title; +} + +//----------------------------------------------------------------------------- +void CCharacter::setTagPvPA(const string &tag) { + _TagPvPA = tag; +} + +//----------------------------------------------------------------------------- +void CCharacter::setTagPvPB(const string &tag) { + _TagPvPB = tag; +} + +//----------------------------------------------------------------------------- +void CCharacter::setTagA(const string &tag) { + _TagA = tag; +} + +//----------------------------------------------------------------------------- +void CCharacter::setTagB(const string &tag) { + _TagB = tag; +} //----------------------------------------------------------------------------- void CCharacter::setOrganization(uint32 org) @@ -12895,7 +12951,7 @@ void CCharacter::registerName(const ucstring &newName) CMessage msgName("CHARACTER_NAME_LANG"); msgName.serial(_EntityRowId); - string sTitle = CHARACTER_TITLE::toString(_Title); + string sTitle = getFullTitle(); ucstring RegisteredName; if (newName.empty()) RegisteredName = getName() + string("$") + sTitle + string("$"); @@ -16161,15 +16217,30 @@ void CCharacter::applyGooDamage( float gooDistance ) if (hpLost < 1) hpLost = 1; if( hpLost > _PhysScores._PhysicalScores[ SCORES::hit_points ].Current ) { - _PhysScores._PhysicalScores[ SCORES::hit_points ].Current = 0; - // send message to player for inform is dead by goo - sendDynamicSystemMessage(_EntityRowId, "KILLED_BY_GOO"); + _PhysScores._PhysicalScores[ SCORES::hit_points ].Current = 0; + + // send message to player for inform is dead by goo or other + if (_CurrentContinent == CONTINENT::FYROS) + sendDynamicSystemMessage(_EntityRowId, "KILLED_BY_FIRE"); + else if (_CurrentContinent == CONTINENT::TRYKER) + sendDynamicSystemMessage(_EntityRowId, "KILLED_BY_STEAM"); + else if (_CurrentContinent == CONTINENT::MATIS) + sendDynamicSystemMessage(_EntityRowId, "KILLED_BY_POISON"); + else + sendDynamicSystemMessage(_EntityRowId, "KILLED_BY_GOO"); } else { _PhysScores._PhysicalScores[ SCORES::hit_points ].Current = _PhysScores._PhysicalScores[ SCORES::hit_points ].Current - hpLost; // send message to player for inform is suffer goo damage - sendDynamicSystemMessage(_EntityRowId, "SUFFER_GOO_DAMAGE"); + if (_CurrentContinent == CONTINENT::FYROS) + sendDynamicSystemMessage(_EntityRowId, "SUFFER_FIRE_DAMAGE"); + else if (_CurrentContinent == CONTINENT::TRYKER) + sendDynamicSystemMessage(_EntityRowId, "SUFFER_STEAM_DAMAGE"); + else if (_CurrentContinent == CONTINENT::MATIS) + sendDynamicSystemMessage(_EntityRowId, "SUFFER_POISON_DAMAGE"); + else + sendDynamicSystemMessage(_EntityRowId, "SUFFER_GOO_DAMAGE"); } } } @@ -19057,7 +19128,7 @@ void CCharacter::setStartupInstance(uint32 instanceId) void CCharacter::setTitle( CHARACTER_TITLE::ECharacterTitle title ) { - _Title = title; + setNewTitle(CHARACTER_TITLE::toString(title)); } @@ -20736,4 +20807,4 @@ bool CCharacter::initPetInventory(uint8 index) return true; } return false; -} \ No newline at end of file +} diff --git a/code/ryzom/server/src/entities_game_service/player_manager/character.h b/code/ryzom/server/src/entities_game_service/player_manager/character.h index f2ba0944b..8a3c127da 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/character.h +++ b/code/ryzom/server/src/entities_game_service/player_manager/character.h @@ -890,6 +890,9 @@ public: // Set skill tree of character to max value of each skill void setSkillsToMaxValue(); + // Set skill tree of character to specified value + void setSkillsToValue(const sint32& value); + // for respawn management, need to modify _TimeDeath in cbTpAcknownledge callback NLMISC::TGameTime& getTimeOfDeath(); void setTimeOfDeath( NLMISC::TGameTime t); @@ -2392,6 +2395,27 @@ public: uint32 getLastConnectedTime() const; uint32 getLastConnectedDate() const; uint32 getPlayedTime() const; + + const std::string& getLangChannel() const; + void setLangChannel(const std::string &lang); + + const std::string& getNewTitle() const; + void setNewTitle(const std::string &title); + + std::string getFullTitle() const; + + std::string getTagA() const; + void setTagA(const std::string &tag); + + std::string getTagB() const; + void setTagB(const std::string &tag); + + std::string getTagPvPA() const; + void setTagPvPA(const std::string &tag); + + std::string getTagPvPB() const; + void setTagPvPB(const std::string &tag); + uint32 getOrganization() const; uint32 getOrganizationStatus() const; const std::list& getLastLogStats() const; @@ -3032,6 +3056,14 @@ private: uint32 _OrganizationStatus; uint32 _OrganizationPoints; + std::string _LangChannel; + + std::string _NewTitle; + std::string _TagPvPA; + std::string _TagPvPB; + std::string _TagA; + std::string _TagB; + /// SDB path where player wins HoF points in PvP (if not empty) std::string _SDBPvPPath; diff --git a/code/ryzom/server/src/entities_game_service/player_manager/character_inlines.h b/code/ryzom/server/src/entities_game_service/player_manager/character_inlines.h index 7e2cd4248..615ddaeb8 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/character_inlines.h +++ b/code/ryzom/server/src/entities_game_service/player_manager/character_inlines.h @@ -894,6 +894,67 @@ inline uint32 CCharacter::getPlayedTime() const return _PlayedTime; } +//------------------------------------------------------------------------------ +inline const std::string& CCharacter::getLangChannel() const + +{ + return _LangChannel; +} + +//------------------------------------------------------------------------------ +inline const std::string& CCharacter::getNewTitle() const + +{ + return _NewTitle; +} + +//------------------------------------------------------------------------------ +inline std::string CCharacter::getTagA() const + +{ + if (_TagA.empty()) + return "_"; + return _TagA; +} + +//------------------------------------------------------------------------------ +inline std::string CCharacter::getTagB() const + +{ + if (_TagB.empty()) + return "_"; + return _TagB; +} + + +//------------------------------------------------------------------------------ +inline std::string CCharacter::getTagPvPA() const + +{ + if (_TagPvPA.empty()) + return "_"; + return _TagPvPA; +} + +//------------------------------------------------------------------------------ +inline std::string CCharacter::getTagPvPB() const + +{ + if (_TagPvPB.empty()) + return "_"; + return _TagPvPB; +} + + +//------------------------------------------------------------------------------ +inline std::string CCharacter::getFullTitle() const +{ + if (!_TagA.empty() || !_TagB.empty() || !_TagPvPA.empty() || !_TagPvPB.empty()) + return _NewTitle+"#"+getTagPvPA()+"#"+getTagPvPB()+"#"+getTagA()+"#"+getTagB(); + else + return _NewTitle; +} + //------------------------------------------------------------------------------ inline uint32 CCharacter::getOrganization() const diff --git a/code/ryzom/server/src/entities_game_service/player_manager/persistent_player_data.cpp b/code/ryzom/server/src/entities_game_service/player_manager/persistent_player_data.cpp index 703261a56..e777f3067 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/persistent_player_data.cpp +++ b/code/ryzom/server/src/entities_game_service/player_manager/persistent_player_data.cpp @@ -321,8 +321,8 @@ static void prepareCharacterPositionForStore ( COfflineEntityState & state, cons H_AUTO(CCharacterStore);\ CFameManager::getInstance().savePlayerFame(_Id, const_cast(*_Fames));\ /* Update the current playing session duration */ \ - if (_LastLogStats.size() > 0) _LastLogStats.begin()->Duration = CTime::getSecondsSince1970() - _LastLogStats.begin()->LoginTime; \ - else nlwarning("Cannot update play session duration, _LastLogStats is empty, new character?"); \ + if (!_LastLogStats.empty()) _LastLogStats.begin()->Duration = CTime::getSecondsSince1970() - _LastLogStats.begin()->LoginTime;\ + else nlwarning("Cannot update play session duration, _LastLogStats is empty, new character?");\ \ /* Unless the top of the position stack is locked, */ \ /* update the stored position stack with the current position */ \ @@ -415,6 +415,7 @@ static void prepareCharacterPositionForStore ( COfflineEntityState & state, cons PVP_CLAN::TPVPClan k=PVP_CLAN::fromString(key); if ((k>=PVP_CLAN::BeginClans) && (k<=PVP_CLAN::EndClans)) _FactionPoint[k-PVP_CLAN::BeginClans]=val)\ \ PROP(uint32,_PvpPoint)\ + PROP2(_LangChannel,string,_LangChannel,_LangChannel=val)\ PROP(uint32,_Organization)\ PROP(uint32,_OrganizationStatus)\ PROP(uint32,_OrganizationPoints)\ @@ -438,6 +439,11 @@ static void prepareCharacterPositionForStore ( COfflineEntityState & state, cons PROP_GAME_CYCLE_COMP(_ForbidAuraUseStartDate)\ PROP_GAME_CYCLE_COMP(_ForbidAuraUseEndDate)\ PROP2(_Title, string, CHARACTER_TITLE::toString(getTitle()), setTitle(CHARACTER_TITLE::toCharacterTitle(val)))\ + PROP2(_NewTitle, string, _NewTitle, _NewTitle=val)\ + PROP2(_TagPvPA, string, _TagPvPA, _TagPvPA=val)\ + PROP2(_TagPvPB, string, _TagPvPB, _TagPvPB=val)\ + PROP2(_TagA, string, _TagA, _TagA=val)\ + PROP2(_TagB, string, _TagB, _TagB=val)\ \ /* Visual Properties */\ PROP2(HairType, uint8, _VisualPropertyA().PropertySubData.HatModel, SET_STRUCT_MEMBER(_VisualPropertyA,PropertySubData.HatModel,val))\ diff --git a/code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager_2.cpp b/code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager_2.cpp index 3d09bc9fd..012877931 100644 --- a/code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager_2.cpp +++ b/code/ryzom/server/src/entities_game_service/pvp_manager/pvp_manager_2.cpp @@ -230,6 +230,22 @@ std::vector CPVPManager2::getCharacterChannels(CCharacter * user) } } + // Add lang channel + if (!user->getLangChannel().empty()) { + TMAPExtraFactionChannel::iterator it = _ExtraFactionChannel.find(user->getLangChannel()); + if (it != _ExtraFactionChannel.end()) + { + result.push_back((*it).second); + } + } else { + TMAPExtraFactionChannel::iterator it = _ExtraFactionChannel.find("en"); + if (it != _ExtraFactionChannel.end()) + { + result.push_back((*it).second); + } + } + + /* bool matis = CFameInterface::getInstance().getFameIndexed(user->getId(), 0) >= PVPFameRequired*6000; bool fyros = CFameInterface::getInstance().getFameIndexed(user->getId(), 1) >= PVPFameRequired*6000; bool tryker = CFameInterface::getInstance().getFameIndexed(user->getId(), 2) >= PVPFameRequired*6000; @@ -279,7 +295,7 @@ std::vector CPVPManager2::getCharacterChannels(CCharacter * user) result.push_back((*it).second); } } -// } +*/ return result; } @@ -1088,10 +1104,19 @@ bool CPVPManager2::addFactionWar( PVP_CLAN::TPVPClan clan1, PVP_CLAN::TPVPClan c void CPVPManager2::onIOSMirrorUp() { // create extra factions channels + /* createExtraFactionChannel("hominists"); createExtraFactionChannel("urasies"); createExtraFactionChannel("marauders"); createExtraFactionChannel("agnos"); + */ + + // Community Channels + createExtraFactionChannel("en"); + createExtraFactionChannel("fr"); + createExtraFactionChannel("de"); + createExtraFactionChannel("ru"); + createExtraFactionChannel("es"); for (uint i = PVP_CLAN::BeginClans; i <= PVP_CLAN::EndClans; i++) { diff --git a/code/ryzom/server/src/entities_game_service/zone_manager.cpp b/code/ryzom/server/src/entities_game_service/zone_manager.cpp index feb2e618c..dd9e817b1 100644 --- a/code/ryzom/server/src/entities_game_service/zone_manager.cpp +++ b/code/ryzom/server/src/entities_game_service/zone_manager.cpp @@ -1508,7 +1508,7 @@ bool CZoneManager::getPlace( sint32 x, sint32 y, float& gooDistance, const CPlac } for (uint k = 0; k < _Continents[i].getRegions()[j]->getPlaces().size(); k++ ) { - if( _Continents[i].getRegions()[j]->getPlaces()[k]->isGooPath() == false ) + if(!_Continents[i].getRegions()[j]->getPlaces()[k]->isGooActive()) { if ( _Continents[i].getRegions()[j]->getPlaces()[k]->contains( vect ) ) { diff --git a/code/ryzom/server/src/monitor_service/mirrors.h b/code/ryzom/server/src/monitor_service/mirrors.h index 407292238..30031dcc1 100644 --- a/code/ryzom/server/src/monitor_service/mirrors.h +++ b/code/ryzom/server/src/monitor_service/mirrors.h @@ -47,7 +47,7 @@ public: // TODO: check if good static bool exists( const TDataSetRow& entityIndex ); static const NLMISC::CEntityId& getEntityId( const TDataSetRow& entityIndex ); - static const uint16 getTeamId(const TDataSetRow& entityIndex); + static uint16 getTeamId(const TDataSetRow& entityIndex); static CAICoord x( const TDataSetRow& entityIndex ); static CAICoord y( const TDataSetRow& entityIndex ); From 9a5b97dfff59fb2777d34078d03e71dc11d10d62 Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 5 Oct 2012 20:36:10 +0200 Subject: [PATCH 051/125] Fixed: Compilation under Mac OS X --- code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp index 81fea5333..4064c8819 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp @@ -17,7 +17,7 @@ #include "stdopengl.h" #include "driver_opengl.h" -#ifdef NL_OS_UNIX +#if defined(NL_OS_UNIX) && !defined(NL_OS_MAC) # include # ifdef HAVE_XRENDER # include @@ -25,7 +25,7 @@ # ifdef HAVE_XCURSOR # include # endif // HAVE_XCURSOR -#endif // NL_OS_UNIX +#endif // defined(NL_OS_UNIX) && !defined(NL_OS_MAC) #include "nel/misc/mouse_device.h" #include "nel/misc/di_event_emitter.h" From 7c4be0fb748e6eb1c1ec7ef24fdd29bebdcb569f Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 5 Oct 2012 20:37:15 +0200 Subject: [PATCH 052/125] Changed: Synchronization with SVN --- code/ryzom/server/data_shard/client_commands_privileges.txt | 1 + code/ryzom/server/data_shard/game_event.txt | 2 +- code/ryzom/server/sheet_pack_cfg/input_output_service.cfg | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/ryzom/server/data_shard/client_commands_privileges.txt b/code/ryzom/server/data_shard/client_commands_privileges.txt index 5ce9fe6fa..b9f28f95f 100644 --- a/code/ryzom/server/data_shard/client_commands_privileges.txt +++ b/code/ryzom/server/data_shard/client_commands_privileges.txt @@ -100,6 +100,7 @@ summon :DEV:SGM:GM:VG:SG:EM: // Summon a player in front of the CSR: - <_Date type="UINT32" value="0"/> + <_Name type="STRING" value=""/> <_EventFaction1Name type="STRING" value=""/> <_EventFaction2Name type="STRING" value=""/> diff --git a/code/ryzom/server/sheet_pack_cfg/input_output_service.cfg b/code/ryzom/server/sheet_pack_cfg/input_output_service.cfg index f1059d234..8772cf07f 100644 --- a/code/ryzom/server/sheet_pack_cfg/input_output_service.cfg +++ b/code/ryzom/server/sheet_pack_cfg/input_output_service.cfg @@ -126,7 +126,7 @@ SystemCmd = {}; ReadTranslationWork = 0; TranslationWorkPath = "translation/work"; -//Paths = { "data_leveldesign/leveldesign/Game_elem" }; +//Paths += { "data_leveldesign/leveldesign/Game_elem" }; // Global shard bot name translation file. You sould overide this // in input_output_service.cfg to specialize the file From 5516d7bbd070fdc39ae76d2f0fbb6b0070e629cc Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 5 Oct 2012 21:34:10 +0200 Subject: [PATCH 053/125] Changed: libxml2 requires liblzma under Mac OS X --- code/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 07bd52eba..8cf86ecc2 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -111,10 +111,11 @@ IF(WITH_STATIC) SET(LIBXML2_DEFINITIONS ${LIBXML2_DEFINITIONS} -DLIBXML_STATIC) SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${WINSOCK2_LIB}) - # on Mac OS X libxml2 requieres iconv + # on Mac OS X libxml2 requires iconv and liblzma IF(APPLE) FIND_PACKAGE(Iconv REQUIRED) - SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${ICONV_LIBRARIES}) + FIND_PACKAGE(LibLZMA REQUIRED) + SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${ICONV_LIBRARIES} ${LIBLZMA_LIBRARIES}) INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR}) ENDIF(APPLE) ENDIF(WITH_STATIC) From 152df7402b9ea9220af7cfb9b5473fddc926abbe Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 6 Oct 2012 15:49:27 +0200 Subject: [PATCH 054/125] Changed: Updated description for CBitmap::load and CBitmap::loadSize --- code/nel/include/nel/misc/bitmap.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/nel/include/nel/misc/bitmap.h b/code/nel/include/nel/misc/bitmap.h index f3d532311..0b6940629 100644 --- a/code/nel/include/nel/misc/bitmap.h +++ b/code/nel/include/nel/misc/bitmap.h @@ -297,8 +297,8 @@ public: void swap(CBitmap &other); /** - * Read a bitmap(TGA or DDS) from an IStream. - * Bitmap supported are DDS (DXTC1, DXTC1 with Alpha, DXTC3, DXTC5, and + * Read a bitmap(TGA, JPEG, PNG or DDS) from an IStream. + * Bitmap supported are DDS (DXTC1, DXTC1 with Alpha, DXTC3, DXTC5), PNG, JPEG and * uncompressed TGA (24 and 32 bits). * \param IStream The stream must be in reading mode. * \param mipMapSkip if the file is a DDS with mipMap. N=mipMapSkip mipmaps are skipped. @@ -310,7 +310,7 @@ public: /** * Determinate the bitmap size from a bitmap(TGA or DDS) from an IStream. load just header of the file. - * Bitmap supported are DDS (DXTC1, DXTC1 with Alpha, DXTC3, DXTC5, and + * Bitmap supported are DDS (DXTC1, DXTC1 with Alpha, DXTC3, DXTC5), PNG, JPEG and * uncompressed TGA (24 and 32 bits). * NB: at the end, f is seeked to begin. * \param IStream The stream must be in reading mode. From 3d50e0160d0bb9b1009b1410b80aa250d645ed64 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 6 Oct 2012 17:09:03 +0200 Subject: [PATCH 055/125] Changed: #878 Fix typos in comments/code --- code/ryzom/client/src/app_bundle_utils.cpp | 2 +- code/ryzom/client/src/session_browser.cpp | 2 +- code/ryzom/server/backup_service.cfg | 4 +- code/ryzom/server/backup_service_default.cfg | 25 +++++------ code/ryzom/server/common.cfg | 5 ++- .../server/entities_game_service_default.cfg | 14 +++--- code/ryzom/server/gpm_service_default.cfg | 2 +- .../server/input_output_service_default.cfg | 43 ++++++++++--------- .../server/mail_forum_service_default.cfg | 19 ++++---- code/ryzom/server/mirror_service_default.cfg | 4 +- code/ryzom/server/session_browser_server.cfg | 3 +- .../server/shard_unifier_service_default.cfg | 2 +- .../player_manager/character.cpp | 1 - 13 files changed, 65 insertions(+), 61 deletions(-) diff --git a/code/ryzom/client/src/app_bundle_utils.cpp b/code/ryzom/client/src/app_bundle_utils.cpp index b6321ad20..b42b00b98 100644 --- a/code/ryzom/client/src/app_bundle_utils.cpp +++ b/code/ryzom/client/src/app_bundle_utils.cpp @@ -21,7 +21,7 @@ #include #endif -std::string getAppBundlePath() +std::string getAppBundlePath() { static std::string cachedPathToBundle; diff --git a/code/ryzom/client/src/session_browser.cpp b/code/ryzom/client/src/session_browser.cpp index e6932c4a2..4cae87fee 100644 --- a/code/ryzom/client/src/session_browser.cpp +++ b/code/ryzom/client/src/session_browser.cpp @@ -165,7 +165,7 @@ void CSessionBrowser::run() } disconnected: - // unconnected, waiting for message to send + // disconnected, waiting for message to send while (adaptor->_SendQueue.empty()) { nlSleep(100); diff --git a/code/ryzom/server/backup_service.cfg b/code/ryzom/server/backup_service.cfg index 2f95dea97..16d870748 100644 --- a/code/ryzom/server/backup_service.cfg +++ b/code/ryzom/server/backup_service.cfg @@ -8,7 +8,7 @@ AESAliasName = "bms_master"; -Paths = { +Paths += { ".", "../common/data_leveldesign", }; @@ -25,7 +25,7 @@ WriteFilesDirectory = "data_shard"; WebPort = 49970; - // ---- service custom variables (used by CVariable class) +// ---- service custom variables (used by CVariable class) // BS - Root directory where data are backuped to IncrementalBackupDirectory = "../incremental_backup"; diff --git a/code/ryzom/server/backup_service_default.cfg b/code/ryzom/server/backup_service_default.cfg index 6e8263dca..3e73c8928 100644 --- a/code/ryzom/server/backup_service_default.cfg +++ b/code/ryzom/server/backup_service_default.cfg @@ -1,22 +1,23 @@ #include "common.cfg" - -// ---- service NeL variables (used by ConfigFile class) - + +// ---- service NeL variables (used by ConfigFile class) + DontUseNS = 1; -// ---- service NeL variables (used by CVariable class) +// ---- service NeL variables (used by CVariable class) ListeningPort = 49990; - -// ---- service custom variables (used by ConfigFile class) - + +// ---- service custom variables (used by ConfigFile class) + // Listening port for the Web server to connect in - + WebPort = 49898; - + BSReadState = 1; - - // ---- service custom variables (used by CVariable class) + + +// ---- service custom variables (used by CVariable class) // Port for the Layer 3 interface of the backup service L3ListeningPort = 49950; @@ -25,7 +26,7 @@ L3ListeningPort = 49950; SaveTemplatePath = "$shard/characters/account_$userid_$charid$ext"; // character saves possible extension list -SaveExtList = "_pdr.bin _pdr.xml .bin"; +SaveExtList = "_pdr.bin _pdr.xml .bin"; //BSFilePrefix = "R:/code/ryzom/r2_shard/"; //BSFileSubst = "r2_shard/"; diff --git a/code/ryzom/server/common.cfg b/code/ryzom/server/common.cfg index 2c209c152..4dac4468d 100644 --- a/code/ryzom/server/common.cfg +++ b/code/ryzom/server/common.cfg @@ -4,7 +4,7 @@ ShardId = 302; // Used by CVariable in WS -PlayerLimit = 5000; +PlayerLimit = 5000; // Used to connect to AES (this file) and to set up AES service (admin_executor_service.cfg) AESPort="46702"; @@ -96,4 +96,5 @@ WriteFilesDirectory = "data_shard"; // ---- service custom variables (used by ConfigFile class) - // ---- service custom variables (used by CVariable class) + +// ---- service custom variables (used by CVariable class) diff --git a/code/ryzom/server/entities_game_service_default.cfg b/code/ryzom/server/entities_game_service_default.cfg index 82cb40d1d..3016a6f99 100644 --- a/code/ryzom/server/entities_game_service_default.cfg +++ b/code/ryzom/server/entities_game_service_default.cfg @@ -22,22 +22,22 @@ StartCommands += "lgs_gw.transportAdd L3Client masterL3c", // open the transport "lgs_gw.transportCmd masterL3c(connect addr="+MasterLGSHost+":"+L3MasterLGSPort+")", -}; - +}; + #ifndef DONT_USE_LGS_SLAVE - + StartCommands += { // add a layer 3 server transport for slave logger service "lgs_gw.transportAdd L3Client slaveL3c", // open the transport "lgs_gw.transportCmd slaveL3c(connect addr="+SlaveLGSHost+":"+L3SlaveLGSPort+")", -}; - +}; + #endif - + StartCommands += -{ +{ // Create a shard unifier client module "moduleManager.createModule ShardUnifierClient suc", // Create a client commands forwader module diff --git a/code/ryzom/server/gpm_service_default.cfg b/code/ryzom/server/gpm_service_default.cfg index ddca7f76d..a6835c65c 100644 --- a/code/ryzom/server/gpm_service_default.cfg +++ b/code/ryzom/server/gpm_service_default.cfg @@ -1,5 +1,5 @@ #include "common.cfg" - + CheckPlayerSpeed = 0; SecuritySpeedFactor = 1.5; diff --git a/code/ryzom/server/input_output_service_default.cfg b/code/ryzom/server/input_output_service_default.cfg index ba819ad8f..54aaaafe8 100644 --- a/code/ryzom/server/input_output_service_default.cfg +++ b/code/ryzom/server/input_output_service_default.cfg @@ -1,6 +1,6 @@ #include "common.cfg" - -// ---- service NeL variables (used by ConfigFile class) + +// ---- service NeL variables (used by ConfigFile class) StartCommands += { @@ -23,22 +23,22 @@ StartCommands += "lgs_gw.transportAdd L3Client masterL3c", // open the transport "lgs_gw.transportCmd masterL3c(connect addr="+MasterLGSHost+":"+L3MasterLGSPort+")", -}; - +}; + #ifndef DONT_USE_LGS_SLAVE - + StartCommands += -{ +{ // add a layer 3 server transport for slave logger service "lgs_gw.transportAdd L3Client slaveL3c", // open the transport "lgs_gw.transportCmd slaveL3c(connect addr="+SlaveLGSHost+":"+L3SlaveLGSPort+")", -}; - +}; + #endif - + StartCommands += -{ +{ // Create a chat unifier client "moduleManager.createModule ChatUnifierClient cuc", @@ -52,33 +52,34 @@ StartCommands += }; #endif - -// ---- service NeL variables (used by CVariable class) - -// ---- service custom variables (used by ConfigFile class) - + +// ---- service NeL variables (used by CVariable class) + +// ---- service custom variables (used by ConfigFile class) + // a list of system command that can be run with "sysCmd" service command. SystemCmd = {}; - + // IOS don't use work directory by default ReadTranslationWork = 0; TranslationWorkPath = "translation/work"; - + // Global shard bot name translation file. You sould overide this // in input_output_service.cfg to specialize the file // depending on the shard main language. BotNameTranslationFile = "bot_names.txt"; - + // Global shard event faction translation file. You sould override this // in input_output_service.cfg to specialize the file // depending on the shard main language. EventFactionTranslationFile = "event_factions.txt"; - - // ---- service custom variables (used by CVariable class) + + +// ---- service custom variables (used by CVariable class) // Activate/deactivate debugging of missing paremeter replacement DebugReplacementParameter = 1; - + // Default verbose debug flags: //----------------------------- diff --git a/code/ryzom/server/mail_forum_service_default.cfg b/code/ryzom/server/mail_forum_service_default.cfg index a76b710be..cd986d964 100644 --- a/code/ryzom/server/mail_forum_service_default.cfg +++ b/code/ryzom/server/mail_forum_service_default.cfg @@ -1,14 +1,15 @@ #include "common.cfg" - -// ---- service NeL variables (used by ConfigFile class) - + +// ---- service NeL variables (used by ConfigFile class) + DontUseNS = 1; - -// ---- service NeL variables (used by CVariable class) - -// ---- service custom variables (used by ConfigFile class) - - // ---- service custom variables (used by CVariable class) + +// ---- service NeL variables (used by CVariable class) + +// ---- service custom variables (used by ConfigFile class) + + +// ---- service custom variables (used by CVariable class) WebRootDirectory = "save_shard/www"; diff --git a/code/ryzom/server/mirror_service_default.cfg b/code/ryzom/server/mirror_service_default.cfg index 38f2f169a..159ee90d4 100644 --- a/code/ryzom/server/mirror_service_default.cfg +++ b/code/ryzom/server/mirror_service_default.cfg @@ -1,6 +1,6 @@ #include "common.cfg" -// ---- service custom variables (used by ConfigFile class) - +// ---- service custom variables (used by ConfigFile class) + // Linux only DestroyGhostSegments = 1; diff --git a/code/ryzom/server/session_browser_server.cfg b/code/ryzom/server/session_browser_server.cfg index 63fa70daf..c784e581e 100644 --- a/code/ryzom/server/session_browser_server.cfg +++ b/code/ryzom/server/session_browser_server.cfg @@ -46,4 +46,5 @@ HomeMainlandNames = // The max number of ring points (aka ring access) for each ecosystem MaxRingPoints = "A1:D7:F7:J8:L6:R13"; - // ---- service custom variables (used by CVariable class) + +// ---- service custom variables (used by CVariable class) diff --git a/code/ryzom/server/shard_unifier_service_default.cfg b/code/ryzom/server/shard_unifier_service_default.cfg index a9a1923e8..7e35b61f9 100644 --- a/code/ryzom/server/shard_unifier_service_default.cfg +++ b/code/ryzom/server/shard_unifier_service_default.cfg @@ -1,7 +1,7 @@ #include "common.cfg" DontUseNS = 1; - + StartCommands += { // Create a gateway for global interconnection diff --git a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp index 51d6a9c39..cca9cbb3b 100644 --- a/code/ryzom/server/src/entities_game_service/player_manager/character.cpp +++ b/code/ryzom/server/src/entities_game_service/player_manager/character.cpp @@ -7501,7 +7501,6 @@ void CCharacter::sendUserChar( uint32 userId, uint8 scenarioSeason, const R2::TU } } - //----------------------------------------------- // Return the home mainland session id for a character TSessionId CCharacter::getHomeMainlandSessionId() const From 65a3946ea80ef31362a4067dcc6fff897b26fff2 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 6 Oct 2012 17:12:23 +0200 Subject: [PATCH 056/125] Fixed: #1498 Client fails to switch shortcut bars on ctrl + number hotkeys --- code/ryzom/client/src/interface_v3/action_handler_phrase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp index 46dbb8c2c..26676a556 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_phrase.cpp @@ -1611,7 +1611,7 @@ public: virtual void execute(CCtrlBase * /* pCaller */, const string &Params) { CInterfaceManager *pIM= CInterfaceManager::getInstance(); - CCDBNodeLeaf *node= pIM->getDbProp("UI:PHRASE:SELECT_MEMORY_", false); + CCDBNodeLeaf *node= pIM->getDbProp("UI:PHRASE:SELECT_MEMORY", false); if(node) { sint32 val; From 25dd379d7eb8fa87235175138ecb005dccaf32db Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 6 Oct 2012 17:17:26 +0200 Subject: [PATCH 057/125] Changed: Replaced string empty comparisons with empty() --- code/nel/src/3d/cloud_scape.cpp | 2 +- code/nel/src/3d/cluster.cpp | 2 +- code/nel/src/3d/zone_manager.cpp | 2 +- code/nel/src/net/varpath.cpp | 4 ++-- code/nel/src/pacs/retriever_bank.h | 2 +- .../client/src/interface_v3/action_handler_phrase.cpp | 2 +- code/ryzom/client/src/interface_v3/interface_manager.cpp | 2 +- .../client/src/interface_v3/item_consumable_effect.cpp | 2 +- code/ryzom/client/src/interface_v3/lua_ihm.cpp | 2 +- code/ryzom/client/src/interface_v3/view_renderer.cpp | 6 +++--- code/ryzom/client/src/pacs_client.cpp | 2 +- code/ryzom/client/src/r2/editor.cpp | 2 +- code/ryzom/common/src/game_share/generic_xml_msg_mngr.h | 2 +- code/ryzom/common/src/game_share/object.cpp | 8 ++++---- .../ryzom/common/src/game_share/scenario_entry_points.cpp | 2 +- 15 files changed, 21 insertions(+), 21 deletions(-) diff --git a/code/nel/src/3d/cloud_scape.cpp b/code/nel/src/3d/cloud_scape.cpp index 5a4b92155..77d046eec 100644 --- a/code/nel/src/3d/cloud_scape.cpp +++ b/code/nel/src/3d/cloud_scape.cpp @@ -193,7 +193,7 @@ void SCloudTextureClamp::init (uint32 nWidth, uint32 nHeight, uint32 nDepth, con Mem = new uint8[NbW*Width*NbH*Height]; uint32 i, j; - if (filename == "") + if (filename.empty()) { // No filename so init with default for (i = 0; i < NbW; ++i) diff --git a/code/nel/src/3d/cluster.cpp b/code/nel/src/3d/cluster.cpp index 2faebcec7..76ed153e1 100644 --- a/code/nel/src/3d/cluster.cpp +++ b/code/nel/src/3d/cluster.cpp @@ -307,7 +307,7 @@ void CCluster::serial (NLMISC::IStream&f) _SoundGroupId = CStringMapper::map(soundGroup); f.serial(envFxName); - if (envFxName == "") + if (envFxName.empty()) envFxName = "no fx"; _EnvironmentFxId = CStringMapper::map(envFxName); } diff --git a/code/nel/src/3d/zone_manager.cpp b/code/nel/src/3d/zone_manager.cpp index 6c0a727f2..efa36fa66 100644 --- a/code/nel/src/3d/zone_manager.cpp +++ b/code/nel/src/3d/zone_manager.cpp @@ -237,7 +237,7 @@ void CZoneLoadingTask::run(void) { // Lookup the zone string zonePathLookup = CPath::lookup (_ZoneName, false, false, true); - if (zonePathLookup == "") + if (zonePathLookup.empty()) zonePathLookup = _ZoneName; CZone *ZoneTmp = new CZone; diff --git a/code/nel/src/net/varpath.cpp b/code/nel/src/net/varpath.cpp index 8bee387cd..d1ce0bcf3 100644 --- a/code/nel/src/net/varpath.cpp +++ b/code/nel/src/net/varpath.cpp @@ -89,7 +89,7 @@ void CVarPath::decode () string val = getToken (); - if (val == "") + if (val.empty()) return; if (val == "[" ) @@ -105,7 +105,7 @@ void CVarPath::decode () osbnb++; // end of token - if (val == "") + if (val.empty()) { nlwarning ("VP: Bad VarPath '%s', suppose it s an empty varpath", RawVarPath.c_str()); Destination.clear (); diff --git a/code/nel/src/pacs/retriever_bank.h b/code/nel/src/pacs/retriever_bank.h index 3dacb2463..eb7afb31b 100644 --- a/code/nel/src/pacs/retriever_bank.h +++ b/code/nel/src/pacs/retriever_bank.h @@ -142,7 +142,7 @@ public: for (i=0; igetSPhraseId(); sint32 dstMacroId= pCSDst->getMacroId(); - if ((src == "") && (CHandlerPhraseMemoryCopy::haveLastPhraseElement)) + if (src.empty() && (CHandlerPhraseMemoryCopy::haveLastPhraseElement)) { // get the slot ids from save srcIsMacro= CHandlerPhraseMemoryCopy::isMacro; diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index a9a901283..52c185b58 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -1563,7 +1563,7 @@ bool CInterfaceManager::loadConfig (const string &filename) CIFile f; string sFileName; sFileName = NLMISC::CPath::lookup (filename, false); - if (sFileName == "" || !f.open(sFileName)) + if (sFileName.empty() || !f.open(sFileName)) return false; diff --git a/code/ryzom/client/src/interface_v3/item_consumable_effect.cpp b/code/ryzom/client/src/interface_v3/item_consumable_effect.cpp index 52a3f64b7..6e50666b1 100644 --- a/code/ryzom/client/src/interface_v3/item_consumable_effect.cpp +++ b/code/ryzom/client/src/interface_v3/item_consumable_effect.cpp @@ -43,7 +43,7 @@ void CItemConsumableEffectHelper::getItemConsumableEffectText(const CItemSheet * { CSString eff = pIS->Consumable.Properties[i]; - if (eff == "") + if (eff.empty()) continue; // Get name id of effect diff --git a/code/ryzom/client/src/interface_v3/lua_ihm.cpp b/code/ryzom/client/src/interface_v3/lua_ihm.cpp index c0500eeb7..9e5160a4e 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm.cpp +++ b/code/ryzom/client/src/interface_v3/lua_ihm.cpp @@ -1228,7 +1228,7 @@ void CLuaIHM::createLuaEnumTable(CLuaState &ls, const std::string &str) p = s.splitTo('.', true); while (p.size() > 0) { - if (path == "") + if (path.empty()) path = p; else path += "." + p; diff --git a/code/ryzom/client/src/interface_v3/view_renderer.cpp b/code/ryzom/client/src/interface_v3/view_renderer.cpp index 3655697b6..8be60402a 100644 --- a/code/ryzom/client/src/interface_v3/view_renderer.cpp +++ b/code/ryzom/client/src/interface_v3/view_renderer.cpp @@ -707,7 +707,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std: SGlobalTexture gt; // Load texture file string filename = CPath::lookup (textureFileName, false); - if (filename == "") return; + if (filename.empty()) return; CIFile ifTmp; if (ifTmp.open(filename)) CBitmap::loadSize (ifTmp, gt.Width, gt.Height); @@ -724,7 +724,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std: // Load uv file CIFile iFile; filename = CPath::lookup (uvFileName, false); - if (filename == "") return; + if (filename.empty()) return; if (!iFile.open(filename)) return; _GlobalTextures.push_back (gt); @@ -866,7 +866,7 @@ sint32 CViewRenderer::createTexture (const std::string &sGlobalTextureName, SGlobalTexture gtTmp; gtTmp.FromGlobaleTexture = false; string filename = CPath::lookup (sLwrGTName, false); - if (filename == "") return -1; + if (filename.empty()) return -1; CIFile ifTmp; if (ifTmp.open(filename)) { diff --git a/code/ryzom/client/src/pacs_client.cpp b/code/ryzom/client/src/pacs_client.cpp index 04fd5cae9..5924cc935 100644 --- a/code/ryzom/client/src/pacs_client.cpp +++ b/code/ryzom/client/src/pacs_client.cpp @@ -139,7 +139,7 @@ UInstanceGroup *getCluster(const UGlobalPosition &gp) return 0; const string &strPos = GR->getIdentifier(gp); - if(strPos == "") + if(strPos.empty()) return 0; // try to find the ig in the loaded ig map std::map::const_iterator igIt = IGLoaded.find(strlwr(strPos)); diff --git a/code/ryzom/client/src/r2/editor.cpp b/code/ryzom/client/src/r2/editor.cpp index e8db1b390..24d8f06c0 100644 --- a/code/ryzom/client/src/r2/editor.cpp +++ b/code/ryzom/client/src/r2/editor.cpp @@ -6603,7 +6603,7 @@ NLMISC::CVectorD getVectorD(const CObject *obj) CObject *buildVector(const NLMISC::CVectorD &vector, const std::string &instanceId /*= ""*/) { CObject *table; - if (instanceId == "") + if (instanceId.empty()) { table = getEditor().getDMC().newComponent("Position"); table->set("x", vector.x); diff --git a/code/ryzom/common/src/game_share/generic_xml_msg_mngr.h b/code/ryzom/common/src/game_share/generic_xml_msg_mngr.h index feb8baed7..a6a6a7167 100644 --- a/code/ryzom/common/src/game_share/generic_xml_msg_mngr.h +++ b/code/ryzom/common/src/game_share/generic_xml_msg_mngr.h @@ -470,7 +470,7 @@ protected: /// display nodes void xmlDisplay() { - std::string ntype = (Name == "" ? "client_messages_description" : NbBits == 0 ? "leaf" : "branch"); + std::string ntype = (Name.empty() ? "client_messages_description" : NbBits == 0 ? "leaf" : "branch"); nlinfo("<%s name=\"%s\" description=\"%s\">", ntype.c_str(), Name.c_str(), Description.c_str()); diff --git a/code/ryzom/common/src/game_share/object.cpp b/code/ryzom/common/src/game_share/object.cpp index 1537a9995..6d1feb2fe 100644 --- a/code/ryzom/common/src/game_share/object.cpp +++ b/code/ryzom/common/src/game_share/object.cpp @@ -483,7 +483,7 @@ bool CObject::getShortestName(std::string &instanceId, std::string &attrName, si nlassert(index != -1); instanceId = parent->getAttr("InstanceId")->toString(); attrName = parent->getKey(index); - if (attrName == "") + if (attrName.empty()) { position = index; } @@ -501,7 +501,7 @@ bool CObject::getShortestName(std::string &instanceId, std::string &attrName, si nlassert(index2 != -1); sint32 index = parent->findIndex(this); nlassert(index != -1); - if (parent2->getKey(index2) == "") + if (parent2->getKey(index2).empty()) { nlassert(0); // TMP : want to see if may possibly happen return false; @@ -1092,7 +1092,7 @@ void CObjectTable::doSerialize(std::string& out, CSerializeContext& context) co if ( _Value[i].second->isString("Name") && _Value[i].second->isString("LocationId") && _Value[i].second->toString("Name") == "Permanent" - && _Value[i].second->toString("LocationId") == "") + && _Value[i].second->toString("LocationId").empty()) { isDefault = true; } @@ -1248,7 +1248,7 @@ bool CObjectTable::setObject(const std::string& key, CObject* value) //H_AUTO(R2_CObjectTable_setObject) CHECK_TABLE_INTEGRITY value->setGhost(this->getGhost()); - if (key == "") + if (key.empty()) { clear(); diff --git a/code/ryzom/common/src/game_share/scenario_entry_points.cpp b/code/ryzom/common/src/game_share/scenario_entry_points.cpp index 886a5ac6b..f68b1d6f8 100644 --- a/code/ryzom/common/src/game_share/scenario_entry_points.cpp +++ b/code/ryzom/common/src/game_share/scenario_entry_points.cpp @@ -406,7 +406,7 @@ void CScenarioEntryPoints::loadFromXMLFile() nlinfo("Different packages for island '%s' in file %s", island, _EntryPointsFilename.c_str()); } } - if(package == "") + if(package.empty()) nlinfo("no 'package' tag in %s island", island); else completeIsland.Package = CSString(package); From d8c7fa52f9bd8fe17c154da26321237b44c7da17 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 6 Oct 2012 18:17:57 +0200 Subject: [PATCH 058/125] Changed: Replaced string empty comparisons with empty() --- code/nel/src/net/message_recorder.cpp | 2 +- code/nel/src/net/varpath.cpp | 2 +- .../sound/source_sounds_builder/SoundPage.cpp | 2 +- .../source_sounds_builderDlg.cpp | 8 +-- .../client/src/animated_scene_object.cpp | 6 +- code/ryzom/common/src/game_share/object.cpp | 2 +- .../src/ai_service/npc_description_msg.cpp | 2 +- .../src/entities_game_service/admin.cpp | 2 +- .../creature_manager/creature_manager.cpp | 2 +- .../shop_type/shop_type_manager.cpp | 4 +- .../src/input_output_service/chat_manager.cpp | 2 +- .../tools/leveldesign/mp_generator/main.cpp | 56 +++++++++---------- .../named_items_2_csv/named_items_2_csv.cpp | 12 ++-- .../world_editor/dialog_properties.cpp | 2 +- 14 files changed, 52 insertions(+), 52 deletions(-) diff --git a/code/nel/src/net/message_recorder.cpp b/code/nel/src/net/message_recorder.cpp index 4da49cb3e..ec52ad1da 100644 --- a/code/nel/src/net/message_recorder.cpp +++ b/code/nel/src/net/message_recorder.cpp @@ -80,7 +80,7 @@ CMessageRecorder::CMessageRecorder() : _RecordAll(true) */ CMessageRecorder::~CMessageRecorder() { - if ( _Filename != "" ) + if ( !_Filename.empty() ) { nldebug( "MR:%s: End of recording", _Filename.c_str() ); } diff --git a/code/nel/src/net/varpath.cpp b/code/nel/src/net/varpath.cpp index d1ce0bcf3..729f52074 100644 --- a/code/nel/src/net/varpath.cpp +++ b/code/nel/src/net/varpath.cpp @@ -143,7 +143,7 @@ void CVarPath::decode () Destination.push_back (make_pair(RawVarPath, string(""))); return; } - else if (val != "." && val != "" && val != "=") + else if (val != "." && !val.empty() && val != "=") { nlwarning ("VP: Malformated VarPath '%s' before position %d", RawVarPath.c_str (), TokenPos); return; diff --git a/code/nel/tools/sound/source_sounds_builder/SoundPage.cpp b/code/nel/tools/sound/source_sounds_builder/SoundPage.cpp index 2664bc033..0ad410098 100644 --- a/code/nel/tools/sound/source_sounds_builder/SoundPage.cpp +++ b/code/nel/tools/sound/source_sounds_builder/SoundPage.cpp @@ -413,7 +413,7 @@ void CSoundPage::apply() nlassert( _Tree ); - if ( m_Filename != "" ) + if ( !m_Filename.empty() ) { CString s = ((CSource_sounds_builderDlg*)GetOwner())->SoundName( _HItem ) + " (" + m_Filename + ")"; _Tree->SetItemText( _HItem, s ); diff --git a/code/nel/tools/sound/source_sounds_builder/source_sounds_builderDlg.cpp b/code/nel/tools/sound/source_sounds_builder/source_sounds_builderDlg.cpp index e5643fba4..2ba1b70a5 100644 --- a/code/nel/tools/sound/source_sounds_builder/source_sounds_builderDlg.cpp +++ b/code/nel/tools/sound/source_sounds_builder/source_sounds_builderDlg.cpp @@ -364,7 +364,7 @@ CString CSource_sounds_builderDlg::SoundName( HTREEITEM hitem ) { CString s = m_Tree.GetItemText( hitem ); sint last; - if ( s != "" ) + if ( !s.empty() ) { if ( s[s.GetLength()-1] == '*' ) { @@ -425,13 +425,13 @@ void CSource_sounds_builderDlg::OnSave() } nameset.insert( (*ips)->getName() ); } - if ( duplicates != "" ) + if ( !duplicates.empty() ) { CString s; s.Format( "Warning: the following names are duplicates. The first occurence of each one was not written in the output file. Correct the names and save again:\n\n%s", duplicates.c_str() ); AfxMessageBox( s, MB_ICONWARNING ); } - if ( blanksounds != "" ) + if ( !blanksounds.empty() ) { CString s; s.Format( "Warning: the following sounds have no wave file specified:\n\n%s", blanksounds.c_str() ); @@ -569,7 +569,7 @@ void CSource_sounds_builderDlg::OnImport() if ( hitem == NULL ) { string sname = string(name); - if ( sname != "" ) // prevent from taking blank names + if ( !sname.empty() ) // prevent from taking blank names { AddSound( sname.c_str() ); } diff --git a/code/ryzom/client/src/animated_scene_object.cpp b/code/ryzom/client/src/animated_scene_object.cpp index 6367830db..9e1b4273c 100644 --- a/code/ryzom/client/src/animated_scene_object.cpp +++ b/code/ryzom/client/src/animated_scene_object.cpp @@ -105,7 +105,7 @@ CAnimatedSceneObject::CAnimatedSceneObject( const string& ObjectName, const stri } // load skeleton, bind mesh and init position, rotation, cluster - if(_SkeletonName != "" ) + if(!_SkeletonName.empty()) { _Skeleton = Scene->createSkeleton(_SkeletonName); if( _Skeleton == NULL ) @@ -340,12 +340,12 @@ void CAnimatedSceneObject::resetInitialPos( void ) // Destructor CAnimatedSceneObject::~CAnimatedSceneObject() { - if( _Instance != NULL && _MeshName != "" ) + if( _Instance != NULL && !_MeshName.empty() ) { Scene->deleteInstance( _Instance ); } - if( _Skeleton != NULL && _SkeletonName != "" ) + if( _Skeleton != NULL && !_SkeletonName.empty() ) { Scene->deleteSkeleton( _Skeleton ); } diff --git a/code/ryzom/common/src/game_share/object.cpp b/code/ryzom/common/src/game_share/object.cpp index 6d1feb2fe..a034ddb2e 100644 --- a/code/ryzom/common/src/game_share/object.cpp +++ b/code/ryzom/common/src/game_share/object.cpp @@ -602,7 +602,7 @@ bool CObjectString::set(const std::string& key, const std::string & value) bool CObjectString::setObject(const std::string& key, CObject* value) { //H_AUTO(R2_CObjectString_setObject) - BOMB_IF( key != "" || ! (value->isString() || value->isNumber()) , "Try to set the a sub value of an object that does not allowed it", return false); + BOMB_IF( !key.empty() || ! (value->isString() || value->isNumber()) , "Try to set the a sub value of an object that does not allowed it", return false); bool canSet = set(key, value->toString()); if (canSet) { diff --git a/code/ryzom/server/src/ai_service/npc_description_msg.cpp b/code/ryzom/server/src/ai_service/npc_description_msg.cpp index a5a90ad29..62ba4d9f8 100644 --- a/code/ryzom/server/src/ai_service/npc_description_msg.cpp +++ b/code/ryzom/server/src/ai_service/npc_description_msg.cpp @@ -128,7 +128,7 @@ static bool LookupShopType(std::string name,std::vector &shopList) uint i; for ( i=0; i < cvShopType.size(); ++i ) { - if ( cvShopType.asString(i) != "" ) + if ( !cvShopType.asString(i).empty() ) { // make sure the string doesn't turn up more than once in input data for (uint j=0;jasString(); string page = varPage->asString(); - if (host == "" || page == "") + if (host.empty() || page.empty()) return; char params[1024]; diff --git a/code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.cpp b/code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.cpp index 3def0fde0..7c0dc7780 100644 --- a/code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.cpp +++ b/code/ryzom/server/src/entities_game_service/creature_manager/creature_manager.cpp @@ -117,7 +117,7 @@ void CGenNpcDescMsgImp::callback (const std::string &serviceName, NLNET::TServic //if the creature has a user model and if the user model's script contains parse errors, change //the creature's name to - if (_UserModelId != "" && CDynamicSheetManager::getInstance()->scriptErrors(_PrimAlias, _UserModelId) == true) + if (!_UserModelId.empty() && CDynamicSheetManager::getInstance()->scriptErrors(_PrimAlias, _UserModelId) == true) { TDataSetRow row = creature->getEntityRowId(); ucstring name; diff --git a/code/ryzom/server/src/entities_game_service/shop_type/shop_type_manager.cpp b/code/ryzom/server/src/entities_game_service/shop_type/shop_type_manager.cpp index 504462410..6b1aa0d9d 100644 --- a/code/ryzom/server/src/entities_game_service/shop_type/shop_type_manager.cpp +++ b/code/ryzom/server/src/entities_game_service/shop_type/shop_type_manager.cpp @@ -242,7 +242,7 @@ void CShopTypeManager::initShopBase() CConfigFile::CVar& cvShopType = ShopConfigFile.getVar("ShopCategory"); for (uint i = 0; i < cvShopType.size(); ++i ) { - if ( cvShopType.asString(i) != "" ) + if ( !cvShopType.asString(i).empty() ) { _CategoryName.push_back( cvShopType.asString( i ) ); } @@ -252,7 +252,7 @@ void CShopTypeManager::initShopBase() CConfigFile::CVar& cvShopAlias = ShopConfigFile.getVar("ShopNameAliases"); for ( uint i = 0; i < cvShopAlias.size(); ++i ) { - if ( cvShopAlias.asString(i) != "" ) + if ( !cvShopAlias.asString(i).empty() ) { CVectorSString args; explode(cvShopAlias.asString(i), string(":"), reinterpret_cast &>(args)); diff --git a/code/ryzom/server/src/input_output_service/chat_manager.cpp b/code/ryzom/server/src/input_output_service/chat_manager.cpp index f86ec26e6..27d1c55e8 100644 --- a/code/ryzom/server/src/input_output_service/chat_manager.cpp +++ b/code/ryzom/server/src/input_output_service/chat_manager.cpp @@ -132,7 +132,7 @@ void CChatManager::onServiceDown(const std::string &serviceShortName) */ void CChatManager::resetChatLog() { - std::string logPath = (LogChatDirectory.get() == "" ? Bsi.getLocalPath() : LogChatDirectory.get()); + std::string logPath = (LogChatDirectory.get().empty() ? Bsi.getLocalPath() : LogChatDirectory.get()); _Displayer.setParam(CPath::standardizePath(logPath) + "chat.log"); } diff --git a/code/ryzom/tools/leveldesign/mp_generator/main.cpp b/code/ryzom/tools/leveldesign/mp_generator/main.cpp index bcf7fdf52..e61546a8d 100644 --- a/code/ryzom/tools/leveldesign/mp_generator/main.cpp +++ b/code/ryzom/tools/leveldesign/mp_generator/main.cpp @@ -113,13 +113,13 @@ void LoadCraftParts() data.readFromFile( "rm_item_parts.csv" ); - while ( data != "" ) + while ( !data.empty() ) { ligne = data.splitTo( "\n", true ); // on recherche la ligne correspondant à notre craft part info = ligne.splitTo( ";", true ); - if ( info != "" ) + if ( !info.empty() ) { index = info.c_str()[0] - 'A'; @@ -179,13 +179,13 @@ void InitCreatureMP() data.readFromFile( "creature_models.csv" ); - while ( data != "" ) + while ( !data.empty() ) { ligneN = data.splitTo( "\n", true ); ligneM = data.splitTo( "\n", true ); // on vérifie que la ligne est valide - if ( ligneN.splitTo( ";", true ) != "" ) + if ( !ligneN.splitTo( ";", true ).empty() ) { ligneM.splitTo( ";", true ); @@ -195,7 +195,7 @@ void InitCreatureMP() ligneN.splitTo( ";", true ); ligneM.splitTo( ";", true ); - while ( ligneN != "" ) + while ( !ligneN.empty() ) { ListeCreatureMP listeCreatureMP; @@ -426,7 +426,7 @@ int GetNumeroMP( const CSString& nomMP ) result = FamilyTypContent.splitFrom( buffer ); // si oui, on retourne son numéro de MP - if ( result != "" ) + if ( !result.empty() ) res = result.splitTo( "\"" ).atoi(); else { @@ -478,7 +478,7 @@ int GetNumeroGroupe( const CSString& groupe ) result = GroupTypContent.splitFrom( buffer ); // si oui, on retourne son numéro de groupe - if ( result != "" ) + if ( !result.empty() ) res = result.splitTo( "\"" ).atoi(); else { @@ -557,14 +557,14 @@ void CreateParentSItem( int numMP, // 3d output += " \n"; - if ( icon != "" ) + if ( !icon.empty() ) { output += " \n"; } - if ( overlay != "" ) + if ( !overlay.empty() ) { output += " \n"; if(craftStats.UsedAsCraftRequirement) @@ -894,7 +894,7 @@ void CreateSheet( int numMP, const CSString& nomMP, CSString statEnergy; if ( ( variation == 2 ) && ( numMP == 695 ) ) // cas particulier pour le kitin trophy (beurk) statEnergy = "0"; - else if ( !creature || ( craftStats.Craft == "" ) ) + else if ( !creature || ( craftStats.Craft.empty() ) ) statEnergy = toString( "%d", GetStatEnergy( level ) ); else if ( variation < 2 ) statEnergy = toString( "%d", GetStatEnergy( level + 1 ) ); @@ -912,7 +912,7 @@ void CreateSheet( int numMP, const CSString& nomMP, outputFileName = toString( "m%04d%s%c%c%02d", numMP, code.c_str(), eco, 'a' + level, variation ); output = outputFileName; - GenerateItemNames( nomMP, eco, level, ( craftStats.Craft == "" ), creature, itemName ); + GenerateItemNames( nomMP, eco, level, ( craftStats.Craft.empty() ), creature, itemName ); output += "\t" + itemName; itemNames.insert( output ); } @@ -947,7 +947,7 @@ void GenerateDepositItems( int numMP, const CSString& nomMP, const MPCraftStats& code = "cxx"; // pas de craft = items de mission - if ( craftStats.Craft == "" ) + if ( craftStats.Craft.empty() ) { if ( loc != "G" ) CreateSheet( numMP, nomMP, code, 'c', 0, craftStats ); @@ -1000,7 +1000,7 @@ void GenerateCreatureItems( int numMP, CSString& nomMP, const MPCraftStats& craf CSString creatureFileName = "c"; creatureFileName += (*itMP)->codeCreature.toLower(); - if ( craftStats.Craft != "" ) + if ( !craftStats.Craft.empty() ) { quality = statQuality[creatureLevel-1]; if ( quality != 6 ) @@ -1107,7 +1107,7 @@ void NewMP( CSString& ligne ) // nouveau nom de famille nomMP = ligne.splitTo( ";", true ); - if ( nomMP == "" ) + if ( nomMP.empty() ) { // cette ligne ne contient pas d'info return; @@ -1126,37 +1126,37 @@ void NewMP( CSString& ligne ) ligne.splitTo( ";", true ); stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.bestStatA = stat.atoi(); else craftStats.bestStatA = -1; stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.worstStatA1 = stat.atoi(); else craftStats.worstStatA1 = -1; stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.worstStatA2 = stat.atoi(); else craftStats.worstStatA2 = -1; stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.bestStatB = stat.atoi(); else craftStats.bestStatB = -1; stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.worstStatB1 = stat.atoi(); else craftStats.worstStatB1 = -1; stat = ligne.splitTo( ";", true ); - if ( stat.firstWord() != "" ) + if ( !stat.firstWord().empty() ) craftStats.worstStatB2 = stat.atoi(); else craftStats.worstStatB2 = -1; @@ -1168,19 +1168,19 @@ void NewMP( CSString& ligne ) specialOnly = stat.firstWord().contains( "x" ); // cas particuliers - while ( ligne != "" ) + while ( !ligne.empty() ) { if ( !ligne.contains( ";" ) ) { special = ligne; - if ( special.firstWord() != "" ) + if ( !special.firstWord().empty() ) specialNames.insert( special ); ligne = ""; } else { special = ligne.splitTo( ";", true ); - if ( special != "" ) + if ( !special.empty() ) specialNames.insert( special ); } } @@ -1357,7 +1357,7 @@ void LoadCustomizedProperties() fileName = CPath::lookup( name, false, false, true ); // on vérifie que le fichier concerné existe - if ( fileName != "" ) + if ( !fileName.empty() ) { CSString zone = prop.splitTo( ".", true ); str.readFromFile( fileName ); @@ -1530,7 +1530,7 @@ void LoadFamillesMP() ligne = fileData.splitTo( "\n", true ); - while ( ligne != "" ) + while ( !ligne.empty() ) { NewMP( ligne ); ligne = fileData.splitTo( "\n", true ); diff --git a/code/ryzom/tools/leveldesign/named_items_2_csv/named_items_2_csv.cpp b/code/ryzom/tools/leveldesign/named_items_2_csv/named_items_2_csv.cpp index ca89cae2f..6ab9e2a26 100644 --- a/code/ryzom/tools/leveldesign/named_items_2_csv/named_items_2_csv.cpp +++ b/code/ryzom/tools/leveldesign/named_items_2_csv/named_items_2_csv.cpp @@ -67,7 +67,7 @@ int verifItemsFile (const char *filename) string s(buffer); // null or comment - if (s == "" || s.find("//") == 0) + if (s.empty() || s.find("//") == 0) continue; if (s.find("_LocSlot") == string::npos) @@ -113,7 +113,7 @@ int verifCsvFile (const char *filename) void processItemLine(const string &s) { // null or comment - if (s == "" || s.find("//") == 0) + if (s.empty() || s.find("//") == 0) return; // other stuff @@ -176,7 +176,7 @@ int getFieldsFromFile(const char *filename) s = s.strtok("\n"); // skip null or comment - if (s == "" || s.find("//") == 0) + if (s.empty() || s.find("//") == 0) continue; // add the field @@ -294,7 +294,7 @@ void getItemBounds(const CVectorSString &lines, uint num, uint &a, uint &b) while (++i < lines.size() && !ok) { - if (lines[i] == "" || lines[i].find("//") != string::npos) + if (lines[i].empty() || lines[i].find("//") != string::npos) continue; // get item number @@ -404,7 +404,7 @@ void updateItemField(CVectorSString &lines, uint itemIndex, uint fieldIndex, uin } // param not found - if (!found && val != "" && val != "nul") + if (!found && !val.empty() && val != "nul") { // add it if (field.find("_CraftParameters") == string::npos) @@ -552,7 +552,7 @@ int main(int argc, char *argv[]) // load csv values importCsv(csvFile.c_str()); - if (itemsFile != "" && CFile::isExists(itemsFile.c_str())) + if (!itemsFile.empty() && CFile::isExists(itemsFile.c_str())) updateItems(itemsFile.c_str()); else nlerror("Can't find file : %s", itemsFile.c_str()); diff --git a/code/ryzom/tools/leveldesign/world_editor/world_editor/dialog_properties.cpp b/code/ryzom/tools/leveldesign/world_editor/world_editor/dialog_properties.cpp index 31189622a..e39994fc4 100644 --- a/code/ryzom/tools/leveldesign/world_editor/world_editor/dialog_properties.cpp +++ b/code/ryzom/tools/leveldesign/world_editor/world_editor/dialog_properties.cpp @@ -216,7 +216,7 @@ void CDialogProperties::removeWidgets () else if (widget.Parameter.Type == CPrimitiveClass::CParameter::StringArray) { widget.MultiLineEditBox.DestroyWindow (); - if (widget.Parameter.Folder != "" || !widget.Parameter.FileExtension.empty()) + if (!widget.Parameter.Folder.empty() || !widget.Parameter.FileExtension.empty()) { widget.CheckBox.DestroyWindow (); } From 3c19f1a2f4f4033b50042d13359581ca2dc3abc1 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 7 Oct 2012 13:58:59 +0200 Subject: [PATCH 059/125] Changed: Don't use CMAKE_LIBRARY_ARCHITECTURE at all, because not reliable enough --- code/CMakeModules/nel.cmake | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 4875be6d6..67deb84e4 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -436,21 +436,16 @@ MACRO(NL_SETUP_BUILD) SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_ARM") ENDIF(TARGET_CPU STREQUAL "x86_64") - # Override CMAKE_LIBRARY_ARCHITECTURE that is automatically determinated - IF(LIBRARY_ARCHITECTURE) - SET(CMAKE_LIBRARY_ARCHITECTURE ${LIBRARY_ARCHITECTURE}) - ENDIF(LIBRARY_ARCHITECTURE) - # Fix library paths suffixes for Debian MultiArch - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(CMAKE_LIBRARY_PATH /lib/${CMAKE_LIBRARY_ARCHITECTURE} /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} ${CMAKE_LIBRARY_PATH}) + IF(LIBRARY_ARCHITECTURE) + SET(CMAKE_LIBRARY_PATH /lib/${LIBRARY_ARCHITECTURE} /usr/lib/${LIBRARY_ARCHITECTURE} ${CMAKE_LIBRARY_PATH}) IF(TARGET_X64) SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib64 /usr/lib64) ENDIF(TARGET_X64) IF(TARGET_X86) SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib32 /usr/lib32) ENDIF(TARGET_X86) - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + ENDIF(LIBRARY_ARCHITECTURE) IF(MSVC) IF(MSVC10) @@ -685,11 +680,11 @@ MACRO(NL_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/lib path. IF(NOT NL_LIB_PREFIX) - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") - ELSE(CMAKE_LIBRARY_ARCHITECTURE) + IF(LIBRARY_ARCHITECTURE) + SET(NL_LIB_PREFIX "lib/${LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + ELSE(LIBRARY_ARCHITECTURE) SET(NL_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + ENDIF(LIBRARY_ARCHITECTURE) ENDIF(NOT NL_LIB_PREFIX) NL_MAKE_ABSOLUTE_PREFIX(NL_LIB_PREFIX NL_LIB_ABSOLUTE_PREFIX) @@ -698,11 +693,11 @@ MACRO(NL_SETUP_PREFIX_PATHS) IF(WIN32) SET(NL_DRIVER_PREFIX "." CACHE PATH "Installation path for drivers.") ELSE(WIN32) - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(NL_DRIVER_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") - ELSE(CMAKE_LIBRARY_ARCHITECTURE) + IF(LIBRARY_ARCHITECTURE) + SET(NL_DRIVER_PREFIX "lib/${LIBRARY_ARCHITECTURE}/nel" CACHE PATH "Installation path for drivers.") + ELSE(LIBRARY_ARCHITECTURE) SET(NL_DRIVER_PREFIX "lib/nel" CACHE PATH "Installation path for drivers.") - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + ENDIF(LIBRARY_ARCHITECTURE) ENDIF(WIN32) ENDIF(NOT NL_DRIVER_PREFIX) NL_MAKE_ABSOLUTE_PREFIX(NL_DRIVER_PREFIX NL_DRIVER_ABSOLUTE_PREFIX) @@ -752,11 +747,11 @@ MACRO(RYZOM_SETUP_PREFIX_PATHS) ## Allow override of install_prefix/lib path. IF(NOT RYZOM_LIB_PREFIX) - IF(CMAKE_LIBRARY_ARCHITECTURE) - SET(RYZOM_LIB_PREFIX "lib/${CMAKE_LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") - ELSE(CMAKE_LIBRARY_ARCHITECTURE) + IF(LIBRARY_ARCHITECTURE) + SET(RYZOM_LIB_PREFIX "lib/${LIBRARY_ARCHITECTURE}" CACHE PATH "Installation path for libraries.") + ELSE(LIBRARY_ARCHITECTURE) SET(RYZOM_LIB_PREFIX "lib" CACHE PATH "Installation path for libraries.") - ENDIF(CMAKE_LIBRARY_ARCHITECTURE) + ENDIF(LIBRARY_ARCHITECTURE) ENDIF(NOT RYZOM_LIB_PREFIX) NL_MAKE_ABSOLUTE_PREFIX(RYZOM_LIB_PREFIX RYZOM_LIB_ABSOLUTE_PREFIX) From b421b38defb315e8b057ea3839feb255d2c6ee52 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 8 Oct 2012 19:06:08 +0200 Subject: [PATCH 060/125] Changed: Use of CMAKE_OSX_ARCHITECTURES to compile universal binaries under Mac OS X --- code/CMakeModules/PCHSupport.cmake | 35 ++- code/CMakeModules/nel.cmake | 334 +++++++++++++++++++++-------- 2 files changed, 269 insertions(+), 100 deletions(-) diff --git a/code/CMakeModules/PCHSupport.cmake b/code/CMakeModules/PCHSupport.cmake index 7cd4c6c7d..0ef2243d6 100644 --- a/code/CMakeModules/PCHSupport.cmake +++ b/code/CMakeModules/PCHSupport.cmake @@ -34,18 +34,18 @@ ENDIF(MSVC) MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) - SET(${_out_compile_flags} ${${_flags_var_name}} ) + SET(_FLAGS ${${_flags_var_name}} ) IF(NOT MSVC) GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) IF(${_targetType} STREQUAL SHARED_LIBRARY OR ${_targetType} STREQUAL MODULE_LIBRARY) - LIST(APPEND ${_out_compile_flags} "-fPIC") + LIST(APPEND _FLAGS "-fPIC") ENDIF(${_targetType} STREQUAL SHARED_LIBRARY OR ${_targetType} STREQUAL MODULE_LIBRARY) ENDIF(NOT MSVC) GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) FOREACH(item ${DIRINC}) - LIST(APPEND ${_out_compile_flags} " ${_PCH_include_prefix}\"${item}\"") + LIST(APPEND _FLAGS " ${_PCH_include_prefix}\"${item}\"") ENDFOREACH(item) # Required for CMake 2.6 @@ -57,13 +57,32 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) GET_DIRECTORY_PROPERTY(_directory_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS) - LIST(APPEND ${_out_compile_flags} ${GLOBAL_DEFINITIONS}) - LIST(APPEND ${_out_compile_flags} ${_directory_flags}) - LIST(APPEND ${_out_compile_flags} ${_directory_definitions}) - LIST(APPEND ${_out_compile_flags} ${CMAKE_CXX_FLAGS}) + LIST(APPEND _FLAGS ${GLOBAL_DEFINITIONS}) + LIST(APPEND _FLAGS ${_directory_flags}) + LIST(APPEND _FLAGS ${_directory_definitions}) + LIST(APPEND _FLAGS ${CMAKE_CXX_FLAGS}) # Format definitions - SEPARATE_ARGUMENTS(${_out_compile_flags}) + SEPARATE_ARGUMENTS(_FLAGS) + + IF(CLANG) + SET(_IGNORE_NEXT OFF) + FOREACH(item ${_FLAGS}) + IF(_IGNORE_NEXT) + SET(_IGNORE_NEXT OFF) + ELSE(_IGNORE_NEXT) + IF(item MATCHES "^-Xarch") + SET(_IGNORE_NEXT ON) + ELSEIF(item MATCHES "^-arch") + SET(_IGNORE_NEXT ON) + ELSE(item MATCHES "^-Xarch") + LIST(APPEND ${_out_compile_flags} ${item}) + ENDIF(item MATCHES "^-Xarch") + ENDIF(_IGNORE_NEXT) + ENDFOREACH(item) + ELSE(CLANG) + SET(${_out_compile_flags} ${_FLAGS}) + ENDIF(CLANG) ENDMACRO(_PCH_GET_COMPILE_FLAGS) MACRO(_PCH_GET_PDB_FILENAME out_filename _target) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 67deb84e4..b8f74e4de 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -326,6 +326,11 @@ MACRO(NL_SETUP_SNOWBALLS_DEFAULT_OPTIONS) OPTION(WITH_SNOWBALLS_SERVER "Build Snowballs Services" ON ) ENDMACRO(NL_SETUP_SNOWBALLS_DEFAULT_OPTIONS) +MACRO(ADD_PLATFORM_FLAGS _FLAGS) + SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} ${_FLAGS}") + SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} ${_FLAGS}") +ENDMACRO(ADD_PLATFORM_FLAGS) + MACRO(NL_SETUP_BUILD) #----------------------------------------------------------------------------- @@ -422,19 +427,27 @@ MACRO(NL_SETUP_BUILD) STRING(STRIP ${PLATFORM_CXXFLAGS} PLATFORM_CXXFLAGS) STRING(STRIP ${PLATFORM_LINKFLAGS} PLATFORM_LINKFLAGS) - IF(TARGET_CPU STREQUAL "x86_64") - SET(TARGET_X64 1) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_X86_64") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_X86_64") - ELSEIF(TARGET_CPU STREQUAL "x86") - SET(TARGET_X86 1) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_X86") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_X86") - ELSEIF(TARGET_CPU STREQUAL "arm") - SET(TARGET_ARM 1) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DHAVE_ARM") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -DHAVE_ARM") - ENDIF(TARGET_CPU STREQUAL "x86_64") + IF(NOT CMAKE_OSX_ARCHITECTURES) + IF(TARGET_CPU STREQUAL "x86_64") + SET(TARGET_X64 1) + ELSEIF(TARGET_CPU STREQUAL "x86") + SET(TARGET_X86 1) + ELSEIF(TARGET_CPU STREQUAL "armv7s") + SET(TARGET_ARM 1) + SET(TARGET_ARMV7S 1) + ELSEIF(TARGET_CPU STREQUAL "armv7") + SET(TARGET_ARM 1) + SET(TARGET_ARMV7 1) + ELSEIF(TARGET_CPU STREQUAL "armv6") + SET(TARGET_ARM 1) + SET(TARGET_ARMV6 1) + ELSEIF(TARGET_CPU STREQUAL "armv5") + SET(TARGET_ARM 1) + SET(TARGET_ARMV5 1) + ELSEIF(TARGET_CPU STREQUAL "arm") + SET(TARGET_ARM 1) + ENDIF(TARGET_CPU STREQUAL "x86_64") + ENDIF(NOT CMAKE_OSX_ARCHITECTURES) # Fix library paths suffixes for Debian MultiArch IF(LIBRARY_ARCHITECTURE) @@ -447,35 +460,65 @@ MACRO(NL_SETUP_BUILD) ENDIF(TARGET_X86) ENDIF(LIBRARY_ARCHITECTURE) + IF(APPLE AND NOT IOS) + SET(CMAKE_INCLUDE_PATH /opt/local/include ${CMAKE_INCLUDE_PATH}) + SET(CMAKE_LIBRARY_PATH /opt/local/lib ${CMAKE_LIBRARY_PATH}) + ENDIF(APPLE AND NOT IOS) + + IF(TARGET_ARM) + IF(TARGET_ARMV7) + ADD_PLATFORM_FLAGS("-DHAVE_ARMV7") + ENDIF(TARGET_ARMV7) + + IF(TARGET_ARMV6) + ADD_PLATFORM_FLAGS("-HAVE_ARMV6") + ENDIF(TARGET_ARMV6) + + ADD_PLATFORM_FLAGS("-DHAVE_ARM") + ENDIF(TARGET_ARM) + + IF(TARGET_X86) + ADD_PLATFORM_FLAGS("-DHAVE_X86") + ENDIF(TARGET_X86) + + IF(TARGET_X64) + ADD_PLATFORM_FLAGS("-DHAVE_X64 -DHAVE_X86_64") + ENDIF(TARGET_X64) + + IF(WITH_LOGGING) + ADD_PLATFORM_FLAGS("-DENABLE_LOGS") + ENDIF(WITH_LOGGING) + IF(MSVC) IF(MSVC10) + ADD_PLATFORM_FLAGS("/Gy- /MP") # /Ox is working with VC++ 2010, but custom optimizations don't exist - SET(SPEED_OPTIMIZATIONS "/Ox /GF /GS-") + SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") # without inlining it's unusable, use custom optimizations again - SET(MIN_OPTIMIZATIONS "/Od /Ob1") + SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}") ELSEIF(MSVC90) + ADD_PLATFORM_FLAGS("/Gy- /MP") # don't use a /O[012x] flag if you want custom optimizations - SET(SPEED_OPTIMIZATIONS "/Ob2 /Oi /Ot /Oy /GT /GF /GS-") + SET(RELEASE_CFLAGS "/Ob2 /Oi /Ot /Oy /GT /GF /GS- ${RELEASE_CFLAGS}") # without inlining it's unusable, use custom optimizations again - SET(MIN_OPTIMIZATIONS "/Ob1") + SET(DEBUG_CFLAGS "/Ob1 /GF- ${DEBUG_CFLAGS}") ELSEIF(MSVC80) + ADD_PLATFORM_FLAGS("/Gy- /Wp64") # don't use a /O[012x] flag if you want custom optimizations - SET(SPEED_OPTIMIZATIONS "/Ox /GF /GS-") + SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}") # without inlining it's unusable, use custom optimizations again - SET(MIN_OPTIMIZATIONS "/Od /Ob1") + SET(DEBUG_CFLAGS "/Od /Ob1 ${DEBUG_CFLAGS}") ELSE(MSVC10) MESSAGE(FATAL_ERROR "Can't determine compiler version ${MSVC_VERSION}") ENDIF(MSVC10) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zm1000 /MP /Gy-") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zm1000 /MP /Gy-") + ADD_PLATFORM_FLAGS("/D_CRT_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /Zm1000 /wd4250") IF(TARGET_X64) # Fix a bug with Intellisense - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_WIN64") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} /D_WIN64") + ADD_PLATFORM_FLAGS("/D_WIN64") # Fix a compilation error for some big C++ files - SET(MIN_OPTIMIZATIONS "${MIN_OPTIMIZATIONS} /bigobj") + SET(RELEASE_CFLAGS "${RELEASE_CFLAGS} /bigobj") ELSE(TARGET_X64) # Allows 32 bits applications to use 3 GB of RAM SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /LARGEADDRESSAWARE") @@ -491,97 +534,201 @@ MACRO(NL_SETUP_BUILD) SET(NL_RELEASE_LINKFLAGS "/RELEASE ${NL_RELEASE_LINKFLAGS}") ENDIF(WITH_SYMBOLS) - SET(NL_DEBUG_CFLAGS "/Zi /MDd /RTC1 /D_DEBUG ${MIN_OPTIMIZATIONS} ${NL_DEBUG_CFLAGS}") - SET(NL_RELEASE_CFLAGS "/MD /DNDEBUG ${SPEED_OPTIMIZATIONS} ${NL_RELEASE_CFLAGS}") + SET(NL_DEBUG_CFLAGS "/Zi /MDd /RTC1 /D_DEBUG ${DEBUG_CFLAGS} ${NL_DEBUG_CFLAGS}") + SET(NL_RELEASE_CFLAGS "/MD /DNDEBUG ${RELEASE_CFLAGS} ${NL_RELEASE_CFLAGS}") SET(NL_DEBUG_LINKFLAGS "/DEBUG /OPT:NOREF /OPT:NOICF /NODEFAULTLIB:msvcrt /INCREMENTAL:YES ${NL_DEBUG_LINKFLAGS}") SET(NL_RELEASE_LINKFLAGS "/OPT:REF /OPT:ICF /INCREMENTAL:NO ${NL_RELEASE_LINKFLAGS}") + + IF(WITH_WARNINGS) + SET(DEBUG_CFLAGS "/W4 ${DEBUG_CFLAGS}") + ELSE(WITH_WARNINGS) + SET(DEBUG_CFLAGS "/W3 ${DEBUG_CFLAGS}") + ENDIF(WITH_WARNINGS) ELSE(MSVC) IF(WIN32) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DWIN32 -D_WIN32") + ADD_PLATFORM_FLAGS("-DWIN32 -D_WIN32") + + IF(CLANG) + ADD_PLATFORM_FLAGS("-nobuiltininc") + ENDIF(CLANG) ENDIF(WIN32) - IF(APPLE) - IF(TARGET_CPU STREQUAL "x86") - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch i386") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch i386") - ENDIF(TARGET_CPU STREQUAL "x86") + IF(TARGET_ARM) + ADD_PLATFORM_FLAGS("-mthumb") + ENDIF(TARGET_ARM) - IF(TARGET_CPU STREQUAL "x86_64") - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch x86_64") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch x86_64") - ENDIF(TARGET_CPU STREQUAL "x86_64") + IF(APPLE) + IF(IOS) + SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.7" CACHE PATH "" FORCE) + ELSE(IOS) + IF(NOT CMAKE_OSX_DEPLOYMENT_TARGET) + SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE PATH "" FORCE) + ENDIF(NOT CMAKE_OSX_DEPLOYMENT_TARGET) + ENDIF(IOS) + + IF(XCODE) + IF(IOS) + SET(CMAKE_OSX_SYSROOT "iphoneos" CACHE PATH "" FORCE) + ELSE(IOS) +# SET(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "" FORCE) + ENDIF(IOS) + ELSE(XCODE) + IF(CMAKE_OSX_ARCHITECTURES) + SET(TARGETS_COUNT 0) + SET(_ARCHS) + FOREACH(_ARCH ${CMAKE_OSX_ARCHITECTURES}) + IF(_ARCH STREQUAL "i386") + SET(_ARCHS "${_ARCHS} i386") + SET(TARGET_X86 1) + MATH(EXPR TARGETS_COUNT "${TARGETS_COUNT}+1") + ELSEIF(_ARCH STREQUAL "x86_64") + SET(_ARCHS "${_ARCHS} x86_64") + SET(TARGET_X64 1) + MATH(EXPR TARGETS_COUNT "${TARGETS_COUNT}+1") + ELSEIF(_ARCH STREQUAL "armv7") + SET(_ARCHS "${_ARCHS} armv7") + SET(TARGET_ARMV7 1) + SET(TARGET_ARM 1) + MATH(EXPR TARGETS_COUNT "${TARGETS_COUNT}+1") + ELSEIF(_ARCH STREQUAL "armv6") + SET(_ARCHS "${_ARCHS} armv6") + SET(TARGET_ARMV6 1) + SET(TARGET_ARM 1) + MATH(EXPR TARGETS_COUNT "${TARGETS_COUNT}+1") + ELSE(_ARCH STREQUAL "i386") + SET(_ARCHS "${_ARCHS} unknwon(${_ARCH})") + ENDIF(_ARCH STREQUAL "i386") + ENDFOREACH(_ARCH) + MESSAGE(STATUS "Compiling under Mac OS X for ${TARGETS_COUNT} architectures: ${_ARCHS}") + ELSE(CMAKE_OSX_ARCHITECTURES) + SET(TARGETS_COUNT 1) + ENDIF(CMAKE_OSX_ARCHITECTURES) + + IF(TARGETS_COUNT EQUAL 1) + IF(TARGET_ARM) + IF(TARGET_ARMV7S) + ADD_PLATFORM_FLAGS("-arch armv7s") + ENDIF(TARGET_ARMV7S) + + IF(TARGET_ARMV7) + ADD_PLATFORM_FLAGS("-arch armv7") + ENDIF(TARGET_ARMV7) + + IF(TARGET_ARMV6) + ADD_PLATFORM_FLAGS("-arch armv6") + ENDIF(TARGET_ARMV6) + + IF(TARGET_ARMV5) + ADD_PLATFORM_FLAGS("-arch armv5") + ENDIF(TARGET_ARMV5) + ENDIF(TARGET_ARM) + + IF(TARGET_X86) + ADD_PLATFORM_FLAGS("-arch i386") + ENDIF(TARGET_X86) + + IF(TARGET_X64) + ADD_PLATFORM_FLAGS("-arch x86_64") + ENDIF(TARGET_X64) + ELSE(TARGETS_COUNT EQUAL 1) + IF(TARGET_ARMV6) + ADD_PLATFORM_FLAGS("-Xarch_armv6 -mthumb -Xarch_armv6 -DHAVE_ARM -Xarch_armv6 -DHAVE_ARMV6") + ENDIF(TARGET_ARMV6) + + IF(TARGET_ARMV7) + ADD_PLATFORM_FLAGS("-Xarch_armv7 -mthumb -Xarch_armv7 -DHAVE_ARM -Xarch_armv7 -DHAVE_ARMV7") + ENDIF(TARGET_ARMV7) + + IF(TARGET_X86) + ADD_PLATFORM_FLAGS("-arch i386 -Xarch_i386 -DHAVE_X86") + ENDIF(TARGET_X86) + + IF(TARGET_X64) + ADD_PLATFORM_FLAGS("-arch x86_64 -Xarch_x86_64 -DHAVE_X64 -Xarch_x86_64 -DHAVE_X86_64") + ENDIF(TARGET_X64) + ENDIF(TARGETS_COUNT EQUAL 1) + + IF(IOS) + IF(IOS_VERSION) + PARSE_VERSION_STRING(${IOS_VERSION} IOS_VERSION_MAJOR IOS_VERSION_MINOR IOS_VERSION_PATCH) + CONVERT_VERSION_NUMBER(${IOS_VERSION_MAJOR} ${IOS_VERSION_MINOR} ${IOS_VERSION_PATCH} IOS_VERSION_NUMBER) + + ADD_PLATFORM_FLAGS("-D__IPHONE_OS_VERSION_MIN_REQUIRED=${IOS_VERSION_NUMBER}") + ENDIF(IOS_VERSION) + + IF(CMAKE_IOS_SYSROOT) + ADD_PLATFORM_FLAGS("-isysroot${CMAKE_IOS_SYSROOT}") + ADD_PLATFORM_FLAGS("-miphoneos-version-min=${IOS_VERSION}") + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-iphoneos_version_min,${IOS_VERSION}") + ENDIF(CMAKE_IOS_SYSROOT) + + IF(CMAKE_IOS_SIMULATOR_SYSROOT AND TARGET_X86) + IF(TARGETS_COUNT EQUAL 1) + ADD_PLATFORM_FLAGS("-arch i386") + ELSE(TARGETS_COUNT EQUAL 1) + SET(XARCH "-Xarch_i386 ") + ENDIF(TARGETS_COUNT EQUAL 1) + + # Always force -mmacosx-version-min to override environement variable + ADD_PLATFORM_FLAGS("${XARCH}-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} ${XARCH}-Wl,-macosx_version_min,${CMAKE_OSX_DEPLOYMENT_TARGET}") + ENDIF(CMAKE_IOS_SIMULATOR_SYSROOT AND TARGET_X86) + ELSE(IOS) + FOREACH(_SDK ${_CMAKE_OSX_SDKS}) + IF(${_SDK} MATCHES "MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}\\.sdk") + SET(CMAKE_OSX_SYSROOT ${_SDK} CACHE PATH "" FORCE) + ENDIF(${_SDK} MATCHES "MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}\\.sdk") + ENDFOREACH(_SDK) + + IF(CMAKE_OSX_SYSROOT) + ADD_PLATFORM_FLAGS("-isysroot ${CMAKE_OSX_SYSROOT}") + ELSE(CMAKE_OSX_SYSROOT) + MESSAGE(FATAL_ERROR "CMAKE_OSX_SYSROOT can't be determinated") + ENDIF(CMAKE_OSX_SYSROOT) + + # Always force -mmacosx-version-min to override environement variable + ADD_PLATFORM_FLAGS("-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-macosx_version_min,${CMAKE_OSX_DEPLOYMENT_TARGET}") + ENDIF(IOS) + + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-headerpad_max_install_names") + + IF(HAVE_FLAG_SEARCH_PATHS_FIRST) + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-search_paths_first") + ENDIF(HAVE_FLAG_SEARCH_PATHS_FIRST) + ENDIF(XCODE) ELSE(APPLE) IF(HOST_CPU STREQUAL "x86_64" AND TARGET_CPU STREQUAL "x86") - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -m32 -march=i686") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -m32 -march=i686") + ADD_PLATFORM_FLAGS("-m32 -march=i686") ENDIF(HOST_CPU STREQUAL "x86_64" AND TARGET_CPU STREQUAL "x86") IF(HOST_CPU STREQUAL "x86" AND TARGET_CPU STREQUAL "x86_64") - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -m64") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -m64") + ADD_PLATFORM_FLAGS("-m64") ENDIF(HOST_CPU STREQUAL "x86" AND TARGET_CPU STREQUAL "x86_64") ENDIF(APPLE) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -D_REENTRANT -pipe -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -D_REENTRANT -pipe -Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused -fno-strict-aliasing") - - IF(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -ansi") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ansi") - ENDIF(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + ADD_PLATFORM_FLAGS("-D_REENTRANT -pipe -fno-strict-aliasing") IF(WITH_COVERAGE) - SET(PLATFORM_CFLAGS "-fprofile-arcs -ftest-coverage ${PLATFORM_CFLAGS}") - SET(PLATFORM_CXXFLAGS "-fprofile-arcs -ftest-coverage ${PLATFORM_CXXFLAGS}") + ADD_PLATFORM_FLAGS("-fprofile-arcs -ftest-coverage") ENDIF(WITH_COVERAGE) + IF(WITH_WARNINGS) + ADD_PLATFORM_FLAGS("-Wall -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-unused") + IF(CLANG) + ADD_PLATFORM_FLAGS("-std=gnu99") + ELSE(CLANG) + ADD_PLATFORM_FLAGS("-ansi") + ENDIF(CLANG) + ENDIF(WITH_WARNINGS) + IF(APPLE) - SET(PLATFORM_CFLAGS "-gdwarf-2 ${PLATFORM_CFLAGS}") - SET(PLATFORM_CXXFLAGS "-gdwarf-2 ${PLATFORM_CXXFLAGS}") + ADD_PLATFORM_FLAGS("-gdwarf-2") ENDIF(APPLE) - IF(APPLE AND XCODE) -# SET(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "" FORCE) - ELSEIF(APPLE AND NOT XCODE) - IF(NOT CMAKE_OSX_DEPLOYMENT_TARGET) - SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.6") - ENDIF(NOT CMAKE_OSX_DEPLOYMENT_TARGET) - - FOREACH(_SDK ${_CMAKE_OSX_SDKS}) - IF(${_SDK} MATCHES "MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}\\.sdk") - SET(CMAKE_OSX_SYSROOT ${_SDK} CACHE PATH "" FORCE) - ENDIF(${_SDK} MATCHES "MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}\\.sdk") - ENDFOREACH(_SDK) - - IF(CMAKE_OSX_SYSROOT) - SET(PLATFORM_CFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} ${PLATFORM_CFLAGS}") - SET(PLATFORM_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} ${PLATFORM_CXXFLAGS}") - ELSE(CMAKE_OSX_SYSROOT) - MESSAGE(FATAL_ERROR "CMAKE_OSX_SYSROOT can't be determinated") - ENDIF(CMAKE_OSX_SYSROOT) - - IF(CMAKE_OSX_ARCHITECTURES) - FOREACH(_ARCH ${CMAKE_OSX_ARCHITECTURES}) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -arch ${_ARCH}") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -arch ${_ARCH}") - ENDFOREACH(_ARCH) - ENDIF(CMAKE_OSX_ARCHITECTURES) - IF(CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - ENDIF(CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG) - - SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,-headerpad_max_install_names") - - IF(HAVE_FLAG_SEARCH_PATHS_FIRST) - SET(PLATFORM_LINKFLAGS "-Wl,-search_paths_first ${PLATFORM_LINKFLAGS}") - ENDIF(HAVE_FLAG_SEARCH_PATHS_FIRST) - ENDIF(APPLE AND XCODE) - # Fix "relocation R_X86_64_32 against.." error on x64 platforms IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) - SET(PLATFORM_CFLAGS "-fPIC ${PLATFORM_CFLAGS}") - SET(PLATFORM_CXXFLAGS "-fPIC ${PLATFORM_CXXFLAGS}") + ADD_PLATFORM_FLAGS("-fPIC") ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS) SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ftemplate-depth-48") @@ -788,7 +935,10 @@ MACRO(SETUP_EXTERNAL) IF(VC_ROOT_DIR MATCHES "registry") GET_FILENAME_COMPONENT(VC_ROOT_DIR "[HKEY_CURRENT_USER\\Software\\Microsoft\\VCExpress\\10.0_Config;InstallDir]" ABSOLUTE) IF(VC_ROOT_DIR MATCHES "registry") - FILE(TO_CMAKE_PATH $ENV{VS100COMNTOOLS} VC_ROOT_DIR) + SET(VS100COMNTOOLS $ENV{VS100COMNTOOLS}) + IF(VS100COMNTOOLS) + FILE(TO_CMAKE_PATH ${VS100COMNTOOLS} VC_ROOT_DIR) + ENDIF(VS100COMNTOOLS) IF(NOT VC_ROOT_DIR) MESSAGE(FATAL_ERROR "Unable to find VC++ 2010 directory!") ENDIF(NOT VC_ROOT_DIR) From bced63993bcca56154fbad8081dfec3450e3cd3e Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 17 Oct 2012 11:05:51 +0200 Subject: [PATCH 061/125] Changed: #573 Add anti-aliasing to the OpenGL Driver --- .../3d/driver/opengl/driver_opengl_states.cpp | 21 +++++++++++++++++++ .../3d/driver/opengl/driver_opengl_states.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_states.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_states.cpp index fa4e626a8..1d517d0fc 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_states.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_states.cpp @@ -94,6 +94,7 @@ void CDriverGLStates::forceDefaults(uint nbStages) _CurLighting= false; _CurZWrite= true; _CurStencilTest=false; + _CurMultisample= false; // setup GLStates. glDisable(GL_FOG); @@ -102,6 +103,7 @@ void CDriverGLStates::forceDefaults(uint nbStages) glDisable(GL_ALPHA_TEST); glDisable(GL_LIGHTING); glDepthMask(GL_TRUE); + glDisable(GL_MULTISAMPLE_ARB); // Func. _CurBlendSrc= GL_SRC_ALPHA; @@ -379,6 +381,25 @@ void CDriverGLStates::enableStencilTest(bool enable) } } +// *************************************************************************** +void CDriverGLStates::enableMultisample(bool enable) +{ + H_AUTO_OGL(CDriverGLStates_enableMultisample); + + // If different from current setup, update. +#ifndef NL3D_GLSTATE_DISABLE_CACHE + if( enable != _CurMultisample ) +#endif + { + // new state. + _CurMultisample= enable; + // Setup GLState. + if(_CurMultisample) + glEnable(GL_MULTISAMPLE_ARB); + else + glDisable(GL_MULTISAMPLE_ARB); + } +} // *************************************************************************** void CDriverGLStates::blendFunc(GLenum src, GLenum dst) diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_states.h b/code/nel/src/3d/driver/opengl/driver_opengl_states.h index fda404e03..be5c1918f 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_states.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl_states.h @@ -44,6 +44,7 @@ namespace NLDRIVERGL { - GL_TEXTURE_GEN_S, GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R - GL_COLOR_MATERIAL - GL_FOG + - GL_MULTISAMPLE_ARB - glActiveTextureARB() - glClientActiveTextureARB() - glEnableClientState() glDisableClientState() with: @@ -99,6 +100,9 @@ public: /// enable/disable stencil test void enableStencilTest(bool enable); bool isStencilTestEnabled() const { return _CurStencilTest; } + /// enable/disable multisample + void enableMultisample(bool enable); + bool isMultisampleEnabled() const { return _CurMultisample; } // @} /// glBlendFunc. @@ -197,6 +201,7 @@ private: bool _CurLighting; bool _CurZWrite; bool _CurStencilTest; + bool _CurMultisample; GLenum _CurBlendSrc; GLenum _CurBlendDst; From 2e6361ebfe00be4bf72934b8bff379665db42840 Mon Sep 17 00:00:00 2001 From: kervala Date: Mon, 22 Oct 2012 14:56:25 +0200 Subject: [PATCH 062/125] Fixed: revision.h error when hg executable not found --- code/CMakeModules/GetRevision.cmake | 31 ++++++++++++--------- code/CMakeModules/nel.cmake | 43 +++++++++++++++++++++++------ 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/code/CMakeModules/GetRevision.cmake b/code/CMakeModules/GetRevision.cmake index 52f443d5f..18e997af2 100644 --- a/code/CMakeModules/GetRevision.cmake +++ b/code/CMakeModules/GetRevision.cmake @@ -3,20 +3,24 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6.3) # ROOT_DIR should be set to root of the repository (where to find the .svn or .hg directory) # SOURCE_DIR should be set to root of your code (where to find CMakeLists.txt) -# Replace spaces by semi-columns -IF(CMAKE_MODULE_PATH) - STRING(REPLACE " " ";" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) -ENDIF(CMAKE_MODULE_PATH) +IF(SOURCE_DIR) + # Replace spaces by semi-columns + IF(CMAKE_MODULE_PATH) + STRING(REPLACE " " ";" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) + ENDIF(CMAKE_MODULE_PATH) -SET(CMAKE_MODULE_PATH ${SOURCE_DIR}/CMakeModules ${CMAKE_MODULE_PATH}) + SET(CMAKE_MODULE_PATH ${SOURCE_DIR}/CMakeModules ${CMAKE_MODULE_PATH}) -IF(NOT ROOT_DIR AND SOURCE_DIR) - SET(ROOT_DIR ${SOURCE_DIR}) -ENDIF(NOT ROOT_DIR AND SOURCE_DIR) + IF(NOT ROOT_DIR AND SOURCE_DIR) + SET(ROOT_DIR ${SOURCE_DIR}) + ENDIF(NOT ROOT_DIR AND SOURCE_DIR) -IF(NOT SOURCE_DIR AND ROOT_DIR) - SET(SOURCE_DIR ${ROOT_DIR}) -ENDIF(NOT SOURCE_DIR AND ROOT_DIR) + IF(NOT SOURCE_DIR AND ROOT_DIR) + SET(SOURCE_DIR ${ROOT_DIR}) + ENDIF(NOT SOURCE_DIR AND ROOT_DIR) +ELSE(SOURCE_DIR) + SET(ROOT_DIR ${CMAKE_SOURCE_DIR}) +ENDIF(SOURCE_DIR) MACRO(NOW RESULT) IF (WIN32) @@ -53,10 +57,11 @@ IF(EXISTS "${ROOT_DIR}/.hg/") ENDIF(MERCURIAL_FOUND) ENDIF(EXISTS "${ROOT_DIR}/.hg/") -IF(DEFINED REVISION) +IF(SOURCE_DIR AND DEFINED REVISION) IF(EXISTS ${SOURCE_DIR}/revision.h.in) + MESSAGE(STATUS "Revision: ${REVISION}") NOW(BUILD_DATE) CONFIGURE_FILE(${SOURCE_DIR}/revision.h.in revision.h.txt) EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy revision.h.txt revision.h) # copy_if_different ENDIF(EXISTS ${SOURCE_DIR}/revision.h.in) -ENDIF(DEFINED REVISION) +ENDIF(SOURCE_DIR AND DEFINED REVISION) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index b8f74e4de..e1b204690 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -22,22 +22,39 @@ ENDMACRO(NL_GEN_PC) ### MACRO(NL_GEN_REVISION_H) IF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h.in) - INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) - ADD_DEFINITIONS(-DHAVE_REVISION_H) - SET(HAVE_REVISION_H ON) + SET(TOOL_FOUND OFF) + + IF(EXISTS "${CMAKE_SOURCE_DIR}/../.svn/") + FIND_PACKAGE(Subversion) + + IF(SUBVERSION_FOUND) + SET(TOOL_FOUND ON) + ENDIF(SUBVERSION_FOUND) + ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/../.svn/") + + IF(EXISTS "${CMAKE_SOURCE_DIR}/../.hg/") + FIND_PACKAGE(Mercurial) + + IF(MERCURIAL_FOUND) + SET(TOOL_FOUND ON) + ENDIF(MERCURIAL_FOUND) + ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/../.hg/") # if already generated IF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) # copy it MESSAGE(STATUS "Copying provided revision.h...") FILE(COPY ${CMAKE_SOURCE_DIR}/revision.h DESTINATION ${CMAKE_BINARY_DIR}) - ELSE(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) + SET(HAVE_REVISION_H ON) + ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) + + IF(TOOL_FOUND) # a custom target that is always built - ADD_CUSTOM_TARGET(revision ALL - DEPENDS ${CMAKE_BINARY_DIR}/revision.h) + ADD_CUSTOM_TARGET(revision ALL) # creates revision.h using cmake script - ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/revision.h + ADD_CUSTOM_COMMAND(TARGET revision + PRE_BUILD COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -DROOT_DIR=${CMAKE_SOURCE_DIR}/.. @@ -47,7 +64,13 @@ MACRO(NL_GEN_REVISION_H) SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/revision.h PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE) - ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h) + SET(HAVE_REVISION_H ON) + ENDIF(TOOL_FOUND) + + IF(HAVE_REVISION_H) + INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) + ADD_DEFINITIONS(-DHAVE_REVISION_H) + ENDIF(HAVE_REVISION_H) ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/revision.h.in) ENDMACRO(NL_GEN_REVISION_H) @@ -922,6 +945,10 @@ MACRO(SETUP_EXTERNAL) IF(WIN32) FIND_PACKAGE(External REQUIRED) + IF(NOT VC_DIR) + SET(VC_DIR $ENV{VC_DIR}) + ENDIF(NOT VC_DIR) + IF(MSVC10) IF(NOT MSVC10_REDIST_DIR) # If you have VC++ 2010 Express, put x64/Microsoft.VC100.CRT/*.dll in ${EXTERNAL_PATH}/redist From 41c00b9b48ea37817f6f368bb320a0c376799773 Mon Sep 17 00:00:00 2001 From: ulukyn Date: Tue, 23 Oct 2012 17:44:36 +0200 Subject: [PATCH 063/125] Changed: Update from Ryzom Team --- code/web/api/client/config.php.default | 2 +- code/web/api/client/time.php | 46 + code/web/api/common/actionPage.php | 161 + code/web/api/common/auth.php | 125 +- code/web/api/common/bbCode.php | 988 ++ code/web/api/common/config.php.default | 5 +- code/web/api/common/db_defs.php | 24 + code/web/api/common/db_lib.php | 266 +- code/web/api/common/dfm.php | 151 + code/web/api/common/logger.php | 29 +- code/web/api/common/render.php | 215 +- code/web/api/common/ryform.php | 678 ++ code/web/api/common/ryformBases.php | 177 + code/web/api/common/time.php | 130 + code/web/api/common/user.php | 58 + code/web/api/common/utils.php | 317 +- code/web/api/common/xml_utils.php | 23 + code/web/api/data/css/ryzom_ui.css | 60 +- code/web/api/data/icons/add_app.png | Bin 0 -> 2532 bytes code/web/api/data/icons/edit.png | Bin 0 -> 1203 bytes code/web/api/data/icons/edit_16.png | Bin 0 -> 732 bytes code/web/api/data/icons/no_action.png | Bin 0 -> 566 bytes code/web/api/data/icons/spe_com.png | Bin 0 -> 1840 bytes code/web/api/data/img/bordure.png | Bin 0 -> 3920 bytes code/web/api/data/img/lang/de.png | Bin 229 -> 736 bytes code/web/api/data/img/lang/en.png | Bin 396 -> 725 bytes code/web/api/data/img/lang/es.png | Bin 0 -> 649 bytes code/web/api/data/img/lang/fr.png | Bin 2889 -> 675 bytes code/web/api/data/img/lang/ru.png | Bin 2886 -> 646 bytes code/web/api/data/js/combobox.js | 17 + code/web/api/data/js/jquery-1.7.1.js | 9266 +++++++++++++++++ code/web/api/data/ryzom/guild_png/.htaccess | 1 + .../ryzom/guild_png/guild_back_b_00_1.png | Bin 0 -> 3427 bytes .../ryzom/guild_png/guild_back_b_00_2.png | Bin 0 -> 3354 bytes .../ryzom/guild_png/guild_back_b_01_1.png | Bin 0 -> 3432 bytes .../ryzom/guild_png/guild_back_b_01_2.png | Bin 0 -> 3346 bytes .../ryzom/guild_png/guild_back_b_02_1.png | Bin 0 -> 3426 bytes .../ryzom/guild_png/guild_back_b_02_2.png | Bin 0 -> 3325 bytes .../ryzom/guild_png/guild_back_b_03_1.png | Bin 0 -> 3295 bytes .../ryzom/guild_png/guild_back_b_03_2.png | Bin 0 -> 3249 bytes .../ryzom/guild_png/guild_back_b_04_1.png | Bin 0 -> 3042 bytes .../ryzom/guild_png/guild_back_b_04_2.png | Bin 0 -> 3042 bytes .../ryzom/guild_png/guild_back_b_05_1.png | Bin 0 -> 3825 bytes .../ryzom/guild_png/guild_back_b_05_2.png | Bin 0 -> 3634 bytes .../ryzom/guild_png/guild_back_b_06_1.png | Bin 0 -> 3875 bytes .../ryzom/guild_png/guild_back_b_06_2.png | Bin 0 -> 3641 bytes .../ryzom/guild_png/guild_back_b_07_1.png | Bin 0 -> 3776 bytes .../ryzom/guild_png/guild_back_b_07_2.png | Bin 0 -> 3645 bytes .../ryzom/guild_png/guild_back_b_08_1.png | Bin 0 -> 3722 bytes .../ryzom/guild_png/guild_back_b_08_2.png | Bin 0 -> 3574 bytes .../ryzom/guild_png/guild_back_b_09_1.png | Bin 0 -> 3381 bytes .../ryzom/guild_png/guild_back_b_09_2.png | Bin 0 -> 3459 bytes .../ryzom/guild_png/guild_back_b_10_1.png | Bin 0 -> 3517 bytes .../ryzom/guild_png/guild_back_b_10_2.png | Bin 0 -> 3152 bytes .../ryzom/guild_png/guild_back_b_11_1.png | Bin 0 -> 3603 bytes .../ryzom/guild_png/guild_back_b_11_2.png | Bin 0 -> 3174 bytes .../ryzom/guild_png/guild_back_b_12_1.png | Bin 0 -> 3612 bytes .../ryzom/guild_png/guild_back_b_12_2.png | Bin 0 -> 3152 bytes .../ryzom/guild_png/guild_back_b_13_1.png | Bin 0 -> 3493 bytes .../ryzom/guild_png/guild_back_b_13_2.png | Bin 0 -> 3079 bytes .../ryzom/guild_png/guild_back_b_14_1.png | Bin 0 -> 3133 bytes .../ryzom/guild_png/guild_back_b_14_2.png | Bin 0 -> 2954 bytes .../ryzom/guild_png/guild_back_s_00_1.png | Bin 0 -> 536 bytes .../ryzom/guild_png/guild_back_s_00_2.png | Bin 0 -> 517 bytes .../ryzom/guild_png/guild_back_s_01_1.png | Bin 0 -> 543 bytes .../ryzom/guild_png/guild_back_s_01_2.png | Bin 0 -> 498 bytes .../ryzom/guild_png/guild_back_s_02_1.png | Bin 0 -> 539 bytes .../ryzom/guild_png/guild_back_s_02_2.png | Bin 0 -> 502 bytes .../ryzom/guild_png/guild_back_s_03_1.png | Bin 0 -> 434 bytes .../ryzom/guild_png/guild_back_s_03_2.png | Bin 0 -> 419 bytes .../ryzom/guild_png/guild_back_s_04_1.png | Bin 0 -> 387 bytes .../ryzom/guild_png/guild_back_s_04_2.png | Bin 0 -> 363 bytes .../ryzom/guild_png/guild_back_s_05_1.png | Bin 0 -> 561 bytes .../ryzom/guild_png/guild_back_s_05_2.png | Bin 0 -> 457 bytes .../ryzom/guild_png/guild_back_s_06_1.png | Bin 0 -> 622 bytes .../ryzom/guild_png/guild_back_s_06_2.png | Bin 0 -> 484 bytes .../ryzom/guild_png/guild_back_s_07_1.png | Bin 0 -> 625 bytes .../ryzom/guild_png/guild_back_s_07_2.png | Bin 0 -> 494 bytes .../ryzom/guild_png/guild_back_s_08_1.png | Bin 0 -> 513 bytes .../ryzom/guild_png/guild_back_s_08_2.png | Bin 0 -> 366 bytes .../ryzom/guild_png/guild_back_s_09_1.png | Bin 0 -> 388 bytes .../ryzom/guild_png/guild_back_s_09_2.png | Bin 0 -> 416 bytes .../ryzom/guild_png/guild_back_s_10_1.png | Bin 0 -> 543 bytes .../ryzom/guild_png/guild_back_s_10_2.png | Bin 0 -> 397 bytes .../ryzom/guild_png/guild_back_s_11_1.png | Bin 0 -> 584 bytes .../ryzom/guild_png/guild_back_s_11_2.png | Bin 0 -> 405 bytes .../ryzom/guild_png/guild_back_s_12_1.png | Bin 0 -> 623 bytes .../ryzom/guild_png/guild_back_s_12_2.png | Bin 0 -> 394 bytes .../ryzom/guild_png/guild_back_s_13_1.png | Bin 0 -> 528 bytes .../ryzom/guild_png/guild_back_s_13_2.png | Bin 0 -> 351 bytes .../ryzom/guild_png/guild_back_s_14_1.png | Bin 0 -> 431 bytes .../ryzom/guild_png/guild_back_s_14_2.png | Bin 0 -> 238 bytes .../ryzom/guild_png/guild_symbol_b_00.png | Bin 0 -> 2851 bytes .../ryzom/guild_png/guild_symbol_b_01.png | Bin 0 -> 2035 bytes .../ryzom/guild_png/guild_symbol_b_02.png | Bin 0 -> 3081 bytes .../ryzom/guild_png/guild_symbol_b_03.png | Bin 0 -> 1850 bytes .../ryzom/guild_png/guild_symbol_b_04.png | Bin 0 -> 2424 bytes .../ryzom/guild_png/guild_symbol_b_05.png | Bin 0 -> 1937 bytes .../ryzom/guild_png/guild_symbol_b_06.png | Bin 0 -> 2192 bytes .../ryzom/guild_png/guild_symbol_b_07.png | Bin 0 -> 2655 bytes .../ryzom/guild_png/guild_symbol_b_08.png | Bin 0 -> 1757 bytes .../ryzom/guild_png/guild_symbol_b_09.png | Bin 0 -> 3326 bytes .../ryzom/guild_png/guild_symbol_b_10.png | Bin 0 -> 1561 bytes .../ryzom/guild_png/guild_symbol_b_11.png | Bin 0 -> 2189 bytes .../ryzom/guild_png/guild_symbol_b_12.png | Bin 0 -> 2029 bytes .../ryzom/guild_png/guild_symbol_b_13.png | Bin 0 -> 2566 bytes .../ryzom/guild_png/guild_symbol_b_14.png | Bin 0 -> 2617 bytes .../ryzom/guild_png/guild_symbol_b_15.png | Bin 0 -> 2474 bytes .../ryzom/guild_png/guild_symbol_b_16.png | Bin 0 -> 1915 bytes .../ryzom/guild_png/guild_symbol_b_17.png | Bin 0 -> 2424 bytes .../ryzom/guild_png/guild_symbol_b_18.png | Bin 0 -> 1850 bytes .../ryzom/guild_png/guild_symbol_b_19.png | Bin 0 -> 1009 bytes .../ryzom/guild_png/guild_symbol_b_20.png | Bin 0 -> 1656 bytes .../ryzom/guild_png/guild_symbol_b_21.png | Bin 0 -> 2647 bytes .../ryzom/guild_png/guild_symbol_b_22.png | Bin 0 -> 2739 bytes .../ryzom/guild_png/guild_symbol_b_23.png | Bin 0 -> 3122 bytes .../ryzom/guild_png/guild_symbol_b_24.png | Bin 0 -> 2923 bytes .../ryzom/guild_png/guild_symbol_b_25.png | Bin 0 -> 1925 bytes .../ryzom/guild_png/guild_symbol_b_26.png | Bin 0 -> 3289 bytes .../ryzom/guild_png/guild_symbol_b_27.png | Bin 0 -> 1864 bytes .../ryzom/guild_png/guild_symbol_b_28.png | Bin 0 -> 1515 bytes .../ryzom/guild_png/guild_symbol_b_29.png | Bin 0 -> 2642 bytes .../ryzom/guild_png/guild_symbol_b_30.png | Bin 0 -> 3340 bytes .../ryzom/guild_png/guild_symbol_b_31.png | Bin 0 -> 3335 bytes .../ryzom/guild_png/guild_symbol_b_32.png | Bin 0 -> 1410 bytes .../ryzom/guild_png/guild_symbol_b_33.png | Bin 0 -> 2922 bytes .../ryzom/guild_png/guild_symbol_b_34.png | Bin 0 -> 2349 bytes .../ryzom/guild_png/guild_symbol_b_35.png | Bin 0 -> 1490 bytes .../ryzom/guild_png/guild_symbol_b_36.png | Bin 0 -> 3116 bytes .../ryzom/guild_png/guild_symbol_b_37.png | Bin 0 -> 1978 bytes .../ryzom/guild_png/guild_symbol_b_38.png | Bin 0 -> 2939 bytes .../ryzom/guild_png/guild_symbol_b_39.png | Bin 0 -> 3075 bytes .../ryzom/guild_png/guild_symbol_b_40.png | Bin 0 -> 1264 bytes .../ryzom/guild_png/guild_symbol_b_41.png | Bin 0 -> 1584 bytes .../ryzom/guild_png/guild_symbol_b_42.png | Bin 0 -> 4013 bytes .../ryzom/guild_png/guild_symbol_b_43.png | Bin 0 -> 2076 bytes .../ryzom/guild_png/guild_symbol_s_00.png | Bin 0 -> 2125 bytes .../ryzom/guild_png/guild_symbol_s_01.png | Bin 0 -> 1608 bytes .../ryzom/guild_png/guild_symbol_s_02.png | Bin 0 -> 2156 bytes .../ryzom/guild_png/guild_symbol_s_03.png | Bin 0 -> 1375 bytes .../ryzom/guild_png/guild_symbol_s_04.png | Bin 0 -> 1951 bytes .../ryzom/guild_png/guild_symbol_s_05.png | Bin 0 -> 1689 bytes .../ryzom/guild_png/guild_symbol_s_06.png | Bin 0 -> 1393 bytes .../ryzom/guild_png/guild_symbol_s_07.png | Bin 0 -> 1904 bytes .../ryzom/guild_png/guild_symbol_s_08.png | Bin 0 -> 1117 bytes .../ryzom/guild_png/guild_symbol_s_09.png | Bin 0 -> 2269 bytes .../ryzom/guild_png/guild_symbol_s_10.png | Bin 0 -> 1117 bytes .../ryzom/guild_png/guild_symbol_s_11.png | Bin 0 -> 1714 bytes .../ryzom/guild_png/guild_symbol_s_12.png | Bin 0 -> 1530 bytes .../ryzom/guild_png/guild_symbol_s_13.png | Bin 0 -> 1953 bytes .../ryzom/guild_png/guild_symbol_s_14.png | Bin 0 -> 2012 bytes .../ryzom/guild_png/guild_symbol_s_15.png | Bin 0 -> 2223 bytes .../ryzom/guild_png/guild_symbol_s_16.png | Bin 0 -> 1552 bytes .../ryzom/guild_png/guild_symbol_s_17.png | Bin 0 -> 1932 bytes .../ryzom/guild_png/guild_symbol_s_18.png | Bin 0 -> 1360 bytes .../ryzom/guild_png/guild_symbol_s_19.png | Bin 0 -> 828 bytes .../ryzom/guild_png/guild_symbol_s_20.png | Bin 0 -> 1361 bytes .../ryzom/guild_png/guild_symbol_s_21.png | Bin 0 -> 2076 bytes .../ryzom/guild_png/guild_symbol_s_22.png | Bin 0 -> 1667 bytes .../ryzom/guild_png/guild_symbol_s_23.png | Bin 0 -> 2418 bytes .../ryzom/guild_png/guild_symbol_s_24.png | Bin 0 -> 2034 bytes .../ryzom/guild_png/guild_symbol_s_25.png | Bin 0 -> 1542 bytes .../ryzom/guild_png/guild_symbol_s_26.png | Bin 0 -> 2183 bytes .../ryzom/guild_png/guild_symbol_s_27.png | Bin 0 -> 1490 bytes .../ryzom/guild_png/guild_symbol_s_28.png | Bin 0 -> 1165 bytes .../ryzom/guild_png/guild_symbol_s_29.png | Bin 0 -> 1848 bytes .../ryzom/guild_png/guild_symbol_s_30.png | Bin 0 -> 2490 bytes .../ryzom/guild_png/guild_symbol_s_31.png | Bin 0 -> 2481 bytes .../ryzom/guild_png/guild_symbol_s_32.png | Bin 0 -> 1365 bytes .../ryzom/guild_png/guild_symbol_s_33.png | Bin 0 -> 2224 bytes .../ryzom/guild_png/guild_symbol_s_34.png | Bin 0 -> 1869 bytes .../ryzom/guild_png/guild_symbol_s_35.png | Bin 0 -> 1280 bytes .../ryzom/guild_png/guild_symbol_s_36.png | Bin 0 -> 2190 bytes .../ryzom/guild_png/guild_symbol_s_37.png | Bin 0 -> 1543 bytes .../ryzom/guild_png/guild_symbol_s_38.png | Bin 0 -> 2332 bytes .../ryzom/guild_png/guild_symbol_s_39.png | Bin 0 -> 2390 bytes .../ryzom/guild_png/guild_symbol_s_40.png | Bin 0 -> 1154 bytes .../ryzom/guild_png/guild_symbol_s_41.png | Bin 0 -> 1301 bytes .../ryzom/guild_png/guild_symbol_s_42.png | Bin 0 -> 2388 bytes .../ryzom/guild_png/guild_symbol_s_43.png | Bin 0 -> 1981 bytes code/web/api/data/ryzom/interface/1h_over.png | Bin 0 -> 402 bytes code/web/api/data/ryzom/interface/2h_over.png | Bin 0 -> 529 bytes code/web/api/data/ryzom/interface/am_logo.png | Bin 0 -> 619 bytes .../api/data/ryzom/interface/ar_armpad.png | Bin 0 -> 3066 bytes .../data/ryzom/interface/ar_armpad_mask.png | Bin 0 -> 1218 bytes .../web/api/data/ryzom/interface/ar_botte.png | Bin 0 -> 2969 bytes .../data/ryzom/interface/ar_botte_mask.png | Bin 0 -> 1367 bytes .../web/api/data/ryzom/interface/ar_gilet.png | Bin 0 -> 3444 bytes .../data/ryzom/interface/ar_gilet_mask.png | Bin 0 -> 1198 bytes code/web/api/data/ryzom/interface/ar_hand.png | Bin 0 -> 2206 bytes .../api/data/ryzom/interface/ar_hand_mask.png | Bin 0 -> 1097 bytes .../api/data/ryzom/interface/ar_helmet.png | Bin 0 -> 3203 bytes .../data/ryzom/interface/ar_helmet_mask.png | Bin 0 -> 1224 bytes .../data/ryzom/interface/ar_pantabotte.png | Bin 0 -> 3388 bytes .../ryzom/interface/ar_pantabotte_mask.png | Bin 0 -> 1887 bytes .../web/api/data/ryzom/interface/asc_exit.png | Bin 0 -> 2532 bytes .../ryzom/interface/asc_rolemastercraft.png | Bin 0 -> 2463 bytes .../ryzom/interface/asc_rolemasterfight.png | Bin 0 -> 2640 bytes .../ryzom/interface/asc_rolemasterharvest.png | Bin 0 -> 2456 bytes .../ryzom/interface/asc_rolemastermagic.png | Bin 0 -> 2396 bytes .../api/data/ryzom/interface/asc_unknown.png | Bin 0 -> 2368 bytes .../data/ryzom/interface/bg_downloader.png | Bin 0 -> 1712 bytes .../web/api/data/ryzom/interface/bg_empty.png | Bin 0 -> 1425 bytes code/web/api/data/ryzom/interface/bk_aura.png | Bin 0 -> 709 bytes .../web/api/data/ryzom/interface/bk_conso.png | Bin 0 -> 693 bytes .../data/ryzom/interface/bk_consommable.png | Bin 0 -> 627 bytes .../web/api/data/ryzom/interface/bk_fyros.png | Bin 0 -> 2656 bytes .../data/ryzom/interface/bk_fyros_brick.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/bk_generic.png | Bin 0 -> 2607 bytes .../data/ryzom/interface/bk_generic_brick.png | Bin 0 -> 121 bytes code/web/api/data/ryzom/interface/bk_goo.png | Bin 0 -> 2348 bytes .../web/api/data/ryzom/interface/bk_guild.png | Bin 0 -> 3095 bytes .../web/api/data/ryzom/interface/bk_horde.png | Bin 0 -> 162 bytes code/web/api/data/ryzom/interface/bk_kami.png | Bin 0 -> 2979 bytes .../api/data/ryzom/interface/bk_karavan.png | Bin 0 -> 3037 bytes .../ryzom/interface/bk_magie_noire_brick.png | Bin 0 -> 117 bytes .../web/api/data/ryzom/interface/bk_matis.png | Bin 0 -> 3143 bytes .../data/ryzom/interface/bk_matis_brick.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/bk_mission.png | Bin 0 -> 2459 bytes .../api/data/ryzom/interface/bk_mission2.png | Bin 0 -> 2689 bytes .../api/data/ryzom/interface/bk_outpost.png | Bin 0 -> 2607 bytes .../data/ryzom/interface/bk_outpost_brick.png | Bin 0 -> 552 bytes .../web/api/data/ryzom/interface/bk_power.png | Bin 0 -> 733 bytes .../api/data/ryzom/interface/bk_primes.png | Bin 0 -> 2955 bytes .../api/data/ryzom/interface/bk_service.png | Bin 0 -> 517 bytes .../api/data/ryzom/interface/bk_training.png | Bin 0 -> 3057 bytes .../api/data/ryzom/interface/bk_tryker.png | Bin 0 -> 3092 bytes .../data/ryzom/interface/bk_tryker_brick.png | Bin 0 -> 117 bytes .../web/api/data/ryzom/interface/bk_zorai.png | Bin 0 -> 3003 bytes .../data/ryzom/interface/bk_zorai_brick.png | Bin 0 -> 121 bytes .../data/ryzom/interface/brick_default.png | Bin 0 -> 1020 bytes .../ryzom/interface/building_state_24x24.png | Bin 0 -> 1514 bytes .../api/data/ryzom/interface/cb_main_nue.png | Bin 0 -> 1261 bytes code/web/api/data/ryzom/interface/ch_back.png | Bin 0 -> 120 bytes code/web/api/data/ryzom/interface/charge.png | Bin 0 -> 948 bytes code/web/api/data/ryzom/interface/clef.png | Bin 0 -> 2318 bytes .../data/ryzom/interface/conso_branche.png | Bin 0 -> 3436 bytes .../ryzom/interface/conso_branche_mask.png | Bin 0 -> 549 bytes .../api/data/ryzom/interface/conso_fleur.png | Bin 0 -> 3595 bytes .../data/ryzom/interface/conso_fleur_mask.png | Bin 0 -> 1891 bytes .../api/data/ryzom/interface/conso_grappe.png | Bin 0 -> 3602 bytes .../ryzom/interface/conso_grappe_mask.png | Bin 0 -> 1963 bytes .../api/data/ryzom/interface/conso_nectar.png | Bin 0 -> 3275 bytes .../ryzom/interface/conso_nectar_mask.png | Bin 0 -> 658 bytes .../api/data/ryzom/interface/construction.png | Bin 0 -> 3598 bytes code/web/api/data/ryzom/interface/cp_back.png | Bin 0 -> 126 bytes .../data/ryzom/interface/cp_over_break.png | Bin 0 -> 220 bytes .../api/data/ryzom/interface/cp_over_less.png | Bin 0 -> 157 bytes .../api/data/ryzom/interface/cp_over_more.png | Bin 0 -> 176 bytes .../data/ryzom/interface/cp_over_opening.png | Bin 0 -> 141 bytes .../ryzom/interface/cp_over_opening_2.png | Bin 0 -> 149 bytes .../api/data/ryzom/interface/cristal_ammo.png | Bin 0 -> 2903 bytes .../data/ryzom/interface/cristal_generic.png | Bin 0 -> 3045 bytes .../data/ryzom/interface/cristal_spell.png | Bin 0 -> 3164 bytes code/web/api/data/ryzom/interface/ef_back.png | Bin 0 -> 138 bytes .../data/ryzom/interface/ef_over_break.png | Bin 0 -> 219 bytes .../api/data/ryzom/interface/ef_over_less.png | Bin 0 -> 152 bytes .../api/data/ryzom/interface/ef_over_more.png | Bin 0 -> 169 bytes code/web/api/data/ryzom/interface/fo_back.png | Bin 0 -> 161 bytes code/web/api/data/ryzom/interface/fo_over.png | Bin 0 -> 160 bytes code/web/api/data/ryzom/interface/fp_ammo.png | Bin 0 -> 1136 bytes .../web/api/data/ryzom/interface/fp_armor.png | Bin 0 -> 1553 bytes .../api/data/ryzom/interface/fp_building.png | Bin 0 -> 1114 bytes .../web/api/data/ryzom/interface/fp_jewel.png | Bin 0 -> 1322 bytes .../web/api/data/ryzom/interface/fp_melee.png | Bin 0 -> 1316 bytes code/web/api/data/ryzom/interface/fp_over.png | Bin 0 -> 156 bytes .../web/api/data/ryzom/interface/fp_range.png | Bin 0 -> 1270 bytes .../api/data/ryzom/interface/fp_shield.png | Bin 0 -> 1460 bytes .../web/api/data/ryzom/interface/fp_tools.png | Bin 0 -> 1142 bytes .../interface/ge_mission_outpost_townhall.png | Bin 0 -> 3368 bytes .../ryzom/interface/ico_absorb_damage.png | Bin 0 -> 1020 bytes .../api/data/ryzom/interface/ico_accurate.png | Bin 0 -> 1010 bytes .../web/api/data/ryzom/interface/ico_acid.png | Bin 0 -> 883 bytes code/web/api/data/ryzom/interface/ico_aim.png | Bin 0 -> 650 bytes .../ryzom/interface/ico_aim_bird_wings.png | Bin 0 -> 1186 bytes .../ico_aim_flying_kitin_abdomen.png | Bin 0 -> 1643 bytes .../ryzom/interface/ico_aim_homin_arms.png | Bin 0 -> 1413 bytes .../ryzom/interface/ico_aim_homin_chest.png | Bin 0 -> 1433 bytes .../ryzom/interface/ico_aim_homin_feet.png | Bin 0 -> 1393 bytes .../ryzom/interface/ico_aim_homin_feint.png | Bin 0 -> 1541 bytes .../ryzom/interface/ico_aim_homin_hands.png | Bin 0 -> 1463 bytes .../ryzom/interface/ico_aim_homin_head.png | Bin 0 -> 1379 bytes .../ryzom/interface/ico_aim_homin_legs.png | Bin 0 -> 1397 bytes .../ryzom/interface/ico_aim_kitin_head.png | Bin 0 -> 1473 bytes .../api/data/ryzom/interface/ico_amande.png | Bin 0 -> 2738 bytes .../data/ryzom/interface/ico_ammo_bullet.png | Bin 0 -> 911 bytes .../data/ryzom/interface/ico_ammo_jacket.png | Bin 0 -> 1196 bytes .../api/data/ryzom/interface/ico_angle.png | Bin 0 -> 1102 bytes .../ryzom/interface/ico_anti_magic_shield.png | Bin 0 -> 1313 bytes .../api/data/ryzom/interface/ico_armor.png | Bin 0 -> 1383 bytes .../data/ryzom/interface/ico_armor_clip.png | Bin 0 -> 1066 bytes .../data/ryzom/interface/ico_armor_heavy.png | Bin 0 -> 1276 bytes .../data/ryzom/interface/ico_armor_kitin.png | Bin 0 -> 1261 bytes .../data/ryzom/interface/ico_armor_light.png | Bin 0 -> 1320 bytes .../data/ryzom/interface/ico_armor_medium.png | Bin 0 -> 1194 bytes .../ryzom/interface/ico_armor_penalty.png | Bin 0 -> 1543 bytes .../data/ryzom/interface/ico_armor_shell.png | Bin 0 -> 1519 bytes .../web/api/data/ryzom/interface/ico_atys.png | Bin 0 -> 1532 bytes .../api/data/ryzom/interface/ico_atysian.png | Bin 0 -> 733 bytes .../data/ryzom/interface/ico_balance_hp.png | Bin 0 -> 863 bytes .../api/data/ryzom/interface/ico_barrel.png | Bin 0 -> 1032 bytes .../web/api/data/ryzom/interface/ico_bash.png | Bin 0 -> 1210 bytes .../api/data/ryzom/interface/ico_berserk.png | Bin 0 -> 768 bytes .../api/data/ryzom/interface/ico_blade.png | Bin 0 -> 781 bytes .../api/data/ryzom/interface/ico_bleeding.png | Bin 0 -> 852 bytes .../api/data/ryzom/interface/ico_blind.png | Bin 0 -> 922 bytes .../api/data/ryzom/interface/ico_blunt.png | Bin 0 -> 930 bytes .../web/api/data/ryzom/interface/ico_bomb.png | Bin 0 -> 1166 bytes .../ryzom/interface/ico_cataliseur_xp.png | Bin 0 -> 4015 bytes .../data/ryzom/interface/ico_celestial.png | Bin 0 -> 790 bytes .../ryzom/interface/ico_circular_attack.png | Bin 0 -> 1574 bytes .../api/data/ryzom/interface/ico_clothes.png | Bin 0 -> 1423 bytes .../web/api/data/ryzom/interface/ico_cold.png | Bin 0 -> 1162 bytes .../ryzom/interface/ico_concentration.png | Bin 0 -> 1405 bytes .../ryzom/interface/ico_consommable_over.png | Bin 0 -> 472 bytes .../data/ryzom/interface/ico_constitution.png | Bin 0 -> 920 bytes .../ryzom/interface/ico_counterweight.png | Bin 0 -> 934 bytes .../data/ryzom/interface/ico_craft_buff.png | Bin 0 -> 1326 bytes .../ryzom/interface/ico_create_sapload.png | Bin 0 -> 1187 bytes .../api/data/ryzom/interface/ico_curse.png | Bin 0 -> 761 bytes .../api/data/ryzom/interface/ico_debuff.png | Bin 0 -> 863 bytes .../ryzom/interface/ico_debuff_resist.png | Bin 0 -> 1340 bytes .../data/ryzom/interface/ico_debuff_skill.png | Bin 0 -> 1345 bytes .../api/data/ryzom/interface/ico_desert.png | Bin 0 -> 973 bytes .../data/ryzom/interface/ico_dexterity.png | Bin 0 -> 950 bytes .../api/data/ryzom/interface/ico_disarm.png | Bin 0 -> 978 bytes .../api/data/ryzom/interface/ico_dodge.png | Bin 0 -> 906 bytes code/web/api/data/ryzom/interface/ico_dot.png | Bin 0 -> 1200 bytes .../data/ryzom/interface/ico_durability.png | Bin 0 -> 1021 bytes .../api/data/ryzom/interface/ico_electric.png | Bin 0 -> 1372 bytes .../api/data/ryzom/interface/ico_explosif.png | Bin 0 -> 682 bytes .../data/ryzom/interface/ico_extracting.png | Bin 0 -> 1299 bytes .../web/api/data/ryzom/interface/ico_fear.png | Bin 0 -> 1236 bytes .../api/data/ryzom/interface/ico_feint.png | Bin 0 -> 1202 bytes .../web/api/data/ryzom/interface/ico_fire.png | Bin 0 -> 1138 bytes .../data/ryzom/interface/ico_firing_pin.png | Bin 0 -> 1382 bytes .../ryzom/interface/ico_fleur_carac_1.png | Bin 0 -> 3025 bytes .../interface/ico_fleur_carac_1_mask.png | Bin 0 -> 1490 bytes .../ryzom/interface/ico_fleur_carac_2.png | Bin 0 -> 2513 bytes .../interface/ico_fleur_carac_2_mask.png | Bin 0 -> 1111 bytes .../ryzom/interface/ico_fleur_carac_3.png | Bin 0 -> 3175 bytes .../interface/ico_fleur_carac_3_mask.png | Bin 0 -> 1536 bytes .../api/data/ryzom/interface/ico_focus.png | Bin 0 -> 764 bytes .../data/ryzom/interface/ico_forage_buff.png | Bin 0 -> 1644 bytes .../data/ryzom/interface/ico_forbid_item.png | Bin 0 -> 1254 bytes .../api/data/ryzom/interface/ico_forest.png | Bin 0 -> 1476 bytes .../api/data/ryzom/interface/ico_foreuse.png | Bin 0 -> 3320 bytes .../data/ryzom/interface/ico_gardening.png | Bin 0 -> 949 bytes .../api/data/ryzom/interface/ico_gentle.png | Bin 0 -> 196 bytes code/web/api/data/ryzom/interface/ico_goo.png | Bin 0 -> 1491 bytes .../api/data/ryzom/interface/ico_gripp.png | Bin 0 -> 1011 bytes .../data/ryzom/interface/ico_haircolor.png | Bin 0 -> 3453 bytes .../api/data/ryzom/interface/ico_haircut.png | Bin 0 -> 3468 bytes .../api/data/ryzom/interface/ico_hammer.png | Bin 0 -> 1065 bytes .../api/data/ryzom/interface/ico_harmful.png | Bin 0 -> 194 bytes .../api/data/ryzom/interface/ico_hatred.png | Bin 0 -> 1801 bytes .../web/api/data/ryzom/interface/ico_heal.png | Bin 0 -> 746 bytes .../api/data/ryzom/interface/ico_hit_rate.png | Bin 0 -> 1272 bytes .../data/ryzom/interface/ico_incapacity.png | Bin 0 -> 952 bytes .../data/ryzom/interface/ico_intelligence.png | Bin 0 -> 894 bytes .../data/ryzom/interface/ico_interrupt.png | Bin 0 -> 852 bytes .../ryzom/interface/ico_invulnerability.png | Bin 0 -> 1688 bytes .../data/ryzom/interface/ico_jewel_stone.png | Bin 0 -> 1068 bytes .../interface/ico_jewel_stone_support.png | Bin 0 -> 804 bytes .../api/data/ryzom/interface/ico_jungle.png | Bin 0 -> 1237 bytes .../api/data/ryzom/interface/ico_lacustre.png | Bin 0 -> 1427 bytes .../ryzom/interface/ico_landmark_bonus.png | Bin 0 -> 762 bytes .../api/data/ryzom/interface/ico_level.png | Bin 0 -> 504 bytes .../api/data/ryzom/interface/ico_lining.png | Bin 0 -> 509 bytes .../api/data/ryzom/interface/ico_location.png | Bin 0 -> 1331 bytes .../api/data/ryzom/interface/ico_madness.png | Bin 0 -> 1161 bytes .../api/data/ryzom/interface/ico_magic.png | Bin 0 -> 670 bytes .../ryzom/interface/ico_magic_action_buff.png | Bin 0 -> 1368 bytes .../data/ryzom/interface/ico_magic_focus.png | Bin 0 -> 847 bytes .../ryzom/interface/ico_magic_target_buff.png | Bin 0 -> 1621 bytes .../ryzom/interface/ico_melee_action_buff.png | Bin 0 -> 1266 bytes .../ryzom/interface/ico_melee_target_buff.png | Bin 0 -> 1498 bytes .../api/data/ryzom/interface/ico_mental.png | Bin 0 -> 1323 bytes .../data/ryzom/interface/ico_metabolism.png | Bin 0 -> 702 bytes .../web/api/data/ryzom/interface/ico_mezz.png | Bin 0 -> 720 bytes .../data/ryzom/interface/ico_misfortune.png | Bin 0 -> 1199 bytes .../ryzom/interface/ico_mission_art_fyros.png | Bin 0 -> 2988 bytes .../ryzom/interface/ico_mission_art_matis.png | Bin 0 -> 2595 bytes .../interface/ico_mission_art_tryker.png | Bin 0 -> 3258 bytes .../ryzom/interface/ico_mission_art_zorai.png | Bin 0 -> 2790 bytes .../ryzom/interface/ico_mission_barrel.png | Bin 0 -> 2927 bytes .../ryzom/interface/ico_mission_bottle.png | Bin 0 -> 2684 bytes .../ryzom/interface/ico_mission_casket.png | Bin 0 -> 2586 bytes .../ryzom/interface/ico_mission_medicine.png | Bin 0 -> 2823 bytes .../ryzom/interface/ico_mission_message.png | Bin 0 -> 2875 bytes .../ryzom/interface/ico_mission_package.png | Bin 0 -> 3294 bytes .../data/ryzom/interface/ico_mission_pot.png | Bin 0 -> 2470 bytes .../ryzom/interface/ico_mission_purse.png | Bin 0 -> 3051 bytes .../web/api/data/ryzom/interface/ico_move.png | Bin 0 -> 1009 bytes .../data/ryzom/interface/ico_multi_fight.png | Bin 0 -> 917 bytes .../ryzom/interface/ico_multiple_spots.png | Bin 0 -> 673 bytes .../web/api/data/ryzom/interface/ico_noix.png | Bin 0 -> 3229 bytes .../data/ryzom/interface/ico_opening_hit.png | Bin 0 -> 1270 bytes .../data/ryzom/interface/ico_over_autumn.png | Bin 0 -> 311 bytes .../ryzom/interface/ico_over_degenerated.png | Bin 0 -> 770 bytes .../data/ryzom/interface/ico_over_fauna.png | Bin 0 -> 852 bytes .../data/ryzom/interface/ico_over_flora.png | Bin 0 -> 699 bytes .../ryzom/interface/ico_over_hit_arms.png | Bin 0 -> 630 bytes .../ryzom/interface/ico_over_hit_chest.png | Bin 0 -> 635 bytes .../ryzom/interface/ico_over_hit_feet.png | Bin 0 -> 510 bytes .../interface/ico_over_hit_feet_hands.png | Bin 0 -> 595 bytes .../interface/ico_over_hit_feet_head.png | Bin 0 -> 701 bytes .../ryzom/interface/ico_over_hit_feet_x2.png | Bin 0 -> 540 bytes .../ryzom/interface/ico_over_hit_feint_x3.png | Bin 0 -> 559 bytes .../ryzom/interface/ico_over_hit_hands.png | Bin 0 -> 523 bytes .../interface/ico_over_hit_hands_chest.png | Bin 0 -> 725 bytes .../interface/ico_over_hit_hands_head.png | Bin 0 -> 790 bytes .../ryzom/interface/ico_over_hit_head.png | Bin 0 -> 598 bytes .../ryzom/interface/ico_over_hit_head_x3.png | Bin 0 -> 625 bytes .../ryzom/interface/ico_over_hit_legs.png | Bin 0 -> 636 bytes .../data/ryzom/interface/ico_over_homin.png | Bin 0 -> 750 bytes .../data/ryzom/interface/ico_over_kitin.png | Bin 0 -> 1046 bytes .../data/ryzom/interface/ico_over_magic.png | Bin 0 -> 688 bytes .../data/ryzom/interface/ico_over_melee.png | Bin 0 -> 511 bytes .../data/ryzom/interface/ico_over_racial.png | Bin 0 -> 708 bytes .../data/ryzom/interface/ico_over_range.png | Bin 0 -> 495 bytes .../data/ryzom/interface/ico_over_special.png | Bin 0 -> 268 bytes .../data/ryzom/interface/ico_over_spring.png | Bin 0 -> 309 bytes .../data/ryzom/interface/ico_over_summer.png | Bin 0 -> 303 bytes .../data/ryzom/interface/ico_over_winter.png | Bin 0 -> 303 bytes .../api/data/ryzom/interface/ico_parry.png | Bin 0 -> 700 bytes .../api/data/ryzom/interface/ico_piercing.png | Bin 0 -> 1196 bytes .../api/data/ryzom/interface/ico_pointe.png | Bin 0 -> 849 bytes .../api/data/ryzom/interface/ico_poison.png | Bin 0 -> 808 bytes .../api/data/ryzom/interface/ico_power.png | Bin 0 -> 899 bytes .../data/ryzom/interface/ico_preservation.png | Bin 0 -> 1049 bytes .../api/data/ryzom/interface/ico_primal.png | Bin 0 -> 765 bytes .../data/ryzom/interface/ico_prime_roots.png | Bin 0 -> 1385 bytes .../api/data/ryzom/interface/ico_private.png | Bin 0 -> 880 bytes .../data/ryzom/interface/ico_prospecting.png | Bin 0 -> 897 bytes .../api/data/ryzom/interface/ico_quality.png | Bin 0 -> 1193 bytes .../api/data/ryzom/interface/ico_racine.png | Bin 0 -> 3220 bytes .../api/data/ryzom/interface/ico_range.png | Bin 0 -> 945 bytes .../ryzom/interface/ico_range_action_buff.png | Bin 0 -> 1718 bytes .../ryzom/interface/ico_range_target_buff.png | Bin 0 -> 2047 bytes .../api/data/ryzom/interface/ico_ricochet.png | Bin 0 -> 1042 bytes .../web/api/data/ryzom/interface/ico_root.png | Bin 0 -> 1524 bytes code/web/api/data/ryzom/interface/ico_rot.png | Bin 0 -> 1047 bytes .../web/api/data/ryzom/interface/ico_safe.png | Bin 0 -> 1729 bytes code/web/api/data/ryzom/interface/ico_sap.png | Bin 0 -> 724 bytes .../data/ryzom/interface/ico_self_damage.png | Bin 0 -> 985 bytes .../api/data/ryzom/interface/ico_shaft.png | Bin 0 -> 923 bytes .../data/ryzom/interface/ico_shield_buff.png | Bin 0 -> 1579 bytes .../data/ryzom/interface/ico_shield_up.png | Bin 0 -> 1406 bytes .../data/ryzom/interface/ico_shielding.png | Bin 0 -> 1061 bytes .../data/ryzom/interface/ico_shockwave.png | Bin 0 -> 1042 bytes .../api/data/ryzom/interface/ico_sickness.png | Bin 0 -> 557 bytes .../api/data/ryzom/interface/ico_slashing.png | Bin 0 -> 1017 bytes .../web/api/data/ryzom/interface/ico_slow.png | Bin 0 -> 695 bytes .../data/ryzom/interface/ico_soft_spot.png | Bin 0 -> 1220 bytes .../ryzom/interface/ico_source_knowledge.png | Bin 0 -> 909 bytes .../data/ryzom/interface/ico_source_time.png | Bin 0 -> 1662 bytes .../api/data/ryzom/interface/ico_speed.png | Bin 0 -> 605 bytes .../data/ryzom/interface/ico_speeding_up.png | Bin 0 -> 863 bytes .../data/ryzom/interface/ico_spell_break.png | Bin 0 -> 1350 bytes .../api/data/ryzom/interface/ico_spores.png | Bin 0 -> 2676 bytes .../api/data/ryzom/interface/ico_spray.png | Bin 0 -> 1410 bytes .../api/data/ryzom/interface/ico_spying.png | Bin 0 -> 1010 bytes .../api/data/ryzom/interface/ico_stamina.png | Bin 0 -> 758 bytes .../api/data/ryzom/interface/ico_strength.png | Bin 0 -> 945 bytes .../api/data/ryzom/interface/ico_stuffing.png | Bin 0 -> 1470 bytes .../api/data/ryzom/interface/ico_stunn.png | Bin 0 -> 1225 bytes .../data/ryzom/interface/ico_task_craft.png | Bin 0 -> 3962 bytes .../data/ryzom/interface/ico_task_done.png | Bin 0 -> 899 bytes .../data/ryzom/interface/ico_task_failed.png | Bin 0 -> 1168 bytes .../data/ryzom/interface/ico_task_fight.png | Bin 0 -> 3865 bytes .../data/ryzom/interface/ico_task_forage.png | Bin 0 -> 3860 bytes .../data/ryzom/interface/ico_task_generic.png | Bin 0 -> 3806 bytes .../interface/ico_task_generic_quart.png | Bin 0 -> 3379 bytes .../data/ryzom/interface/ico_task_guild.png | Bin 0 -> 3973 bytes .../data/ryzom/interface/ico_task_rite.png | Bin 0 -> 3926 bytes .../data/ryzom/interface/ico_task_travel.png | Bin 0 -> 3908 bytes .../api/data/ryzom/interface/ico_tatoo.png | Bin 0 -> 4185 bytes .../api/data/ryzom/interface/ico_taunt.png | Bin 0 -> 941 bytes .../web/api/data/ryzom/interface/ico_time.png | Bin 0 -> 720 bytes .../data/ryzom/interface/ico_time_bonus.png | Bin 0 -> 1028 bytes .../api/data/ryzom/interface/ico_tourbe.png | Bin 0 -> 3161 bytes .../api/data/ryzom/interface/ico_trigger.png | Bin 0 -> 762 bytes .../api/data/ryzom/interface/ico_umbrella.png | Bin 0 -> 1298 bytes .../ryzom/interface/ico_use_enchantement.png | Bin 0 -> 1230 bytes .../api/data/ryzom/interface/ico_vampire.png | Bin 0 -> 687 bytes .../data/ryzom/interface/ico_visibility.png | Bin 0 -> 886 bytes .../api/data/ryzom/interface/ico_war_cry.png | Bin 0 -> 1172 bytes .../api/data/ryzom/interface/ico_weight.png | Bin 0 -> 919 bytes .../data/ryzom/interface/ico_wellbalanced.png | Bin 0 -> 726 bytes .../web/api/data/ryzom/interface/ico_will.png | Bin 0 -> 716 bytes .../api/data/ryzom/interface/ico_windding.png | Bin 0 -> 1170 bytes .../api/data/ryzom/interface/ico_wisdom.png | Bin 0 -> 685 bytes .../data/ryzom/interface/improved_tool.png | Bin 0 -> 3549 bytes .../api/data/ryzom/interface/item_default.png | Bin 0 -> 1977 bytes .../data/ryzom/interface/item_plan_over.png | Bin 0 -> 220 bytes .../api/data/ryzom/interface/lucky_flower.png | Bin 0 -> 3527 bytes code/web/api/data/ryzom/interface/mail.png | Bin 0 -> 1706 bytes .../api/data/ryzom/interface/mektoub_pack.png | Bin 0 -> 4301 bytes .../data/ryzom/interface/mektoub_steed.png | Bin 0 -> 3913 bytes code/web/api/data/ryzom/interface/mf_back.png | Bin 0 -> 216 bytes code/web/api/data/ryzom/interface/mf_over.png | Bin 0 -> 205 bytes .../web/api/data/ryzom/interface/mg_glove.png | Bin 0 -> 3618 bytes .../data/ryzom/interface/mission_icon_0.png | Bin 0 -> 2760 bytes .../data/ryzom/interface/mission_icon_1.png | Bin 0 -> 2763 bytes .../data/ryzom/interface/mission_icon_2.png | Bin 0 -> 2739 bytes .../data/ryzom/interface/mission_icon_3.png | Bin 0 -> 2736 bytes code/web/api/data/ryzom/interface/mp3.png | Bin 0 -> 1515 bytes .../web/api/data/ryzom/interface/mp_amber.png | Bin 0 -> 2916 bytes .../data/ryzom/interface/mp_back_curative.png | Bin 0 -> 193 bytes .../ryzom/interface/mp_back_offensive.png | Bin 0 -> 190 bytes .../data/ryzom/interface/mp_back_selfonly.png | Bin 0 -> 186 bytes code/web/api/data/ryzom/interface/mp_bark.png | Bin 0 -> 2940 bytes .../ryzom/interface/mp_batiment_brique.png | Bin 0 -> 2791 bytes .../ryzom/interface/mp_batiment_colonne.png | Bin 0 -> 1691 bytes .../interface/mp_batiment_colonne_justice.png | Bin 0 -> 2828 bytes .../ryzom/interface/mp_batiment_comble.png | Bin 0 -> 2684 bytes .../interface/mp_batiment_noyau_maduk.png | Bin 0 -> 3596 bytes .../ryzom/interface/mp_batiment_ornement.png | Bin 0 -> 2444 bytes .../interface/mp_batiment_revetement.png | Bin 0 -> 1912 bytes .../ryzom/interface/mp_batiment_socle.png | Bin 0 -> 3064 bytes .../ryzom/interface/mp_batiment_statue.png | Bin 0 -> 2945 bytes code/web/api/data/ryzom/interface/mp_beak.png | Bin 0 -> 2440 bytes .../web/api/data/ryzom/interface/mp_blood.png | Bin 0 -> 1474 bytes code/web/api/data/ryzom/interface/mp_bone.png | Bin 0 -> 1825 bytes code/web/api/data/ryzom/interface/mp_bud.png | Bin 0 -> 2469 bytes .../data/ryzom/interface/mp_buterfly_blue.png | Bin 0 -> 2738 bytes .../ryzom/interface/mp_buterfly_cocoon.png | Bin 0 -> 2460 bytes .../api/data/ryzom/interface/mp_cereal.png | Bin 0 -> 3102 bytes code/web/api/data/ryzom/interface/mp_claw.png | Bin 0 -> 2531 bytes .../api/data/ryzom/interface/mp_dandelion.png | Bin 0 -> 4364 bytes code/web/api/data/ryzom/interface/mp_dry | Bin 0 -> 10373 bytes .../api/data/ryzom/interface/mp_dry wood.png | Bin 0 -> 2952 bytes code/web/api/data/ryzom/interface/mp_dry.png | Bin 0 -> 14122 bytes .../api/data/ryzom/interface/mp_dry_wood.png | Bin 0 -> 3057 bytes code/web/api/data/ryzom/interface/mp_dust.png | Bin 0 -> 2971 bytes code/web/api/data/ryzom/interface/mp_egg.png | Bin 0 -> 1765 bytes code/web/api/data/ryzom/interface/mp_eyes.png | Bin 0 -> 2526 bytes code/web/api/data/ryzom/interface/mp_fang.png | Bin 0 -> 2728 bytes .../web/api/data/ryzom/interface/mp_fiber.png | Bin 0 -> 3737 bytes .../api/data/ryzom/interface/mp_filament.png | Bin 0 -> 3290 bytes .../ryzom/interface/mp_firefly_abdomen.png | Bin 0 -> 4004 bytes .../data/ryzom/interface/mp_fish_scale.png | Bin 0 -> 3000 bytes .../api/data/ryzom/interface/mp_flowers.png | Bin 0 -> 2345 bytes .../ryzom/interface/mp_fresh_loose_soil.png | Bin 0 -> 1929 bytes .../web/api/data/ryzom/interface/mp_fruit.png | Bin 0 -> 1683 bytes .../api/data/ryzom/interface/mp_generic.png | Bin 0 -> 2498 bytes .../ryzom/interface/mp_generic_colorize.png | Bin 0 -> 2606 bytes .../web/api/data/ryzom/interface/mp_gomme.png | Bin 0 -> 2164 bytes .../data/ryzom/interface/mp_goo_residue.png | Bin 0 -> 3168 bytes .../web/api/data/ryzom/interface/mp_hairs.png | Bin 0 -> 2328 bytes code/web/api/data/ryzom/interface/mp_hoof.png | Bin 0 -> 2884 bytes code/web/api/data/ryzom/interface/mp_horn.png | Bin 0 -> 2277 bytes .../api/data/ryzom/interface/mp_horney.png | Bin 0 -> 2835 bytes .../data/ryzom/interface/mp_insect_fossil.png | Bin 0 -> 3390 bytes .../data/ryzom/interface/mp_kitin_flesh.png | Bin 0 -> 2011 bytes .../ryzom/interface/mp_kitin_secretion.png | Bin 0 -> 2878 bytes .../data/ryzom/interface/mp_kitinshell.png | Bin 0 -> 3065 bytes .../web/api/data/ryzom/interface/mp_larva.png | Bin 0 -> 2071 bytes code/web/api/data/ryzom/interface/mp_leaf.png | Bin 0 -> 3436 bytes .../api/data/ryzom/interface/mp_leather.png | Bin 0 -> 4001 bytes .../web/api/data/ryzom/interface/mp_liane.png | Bin 0 -> 2574 bytes .../api/data/ryzom/interface/mp_lichen.png | Bin 0 -> 3569 bytes .../api/data/ryzom/interface/mp_ligament.png | Bin 0 -> 3341 bytes .../api/data/ryzom/interface/mp_mandible.png | Bin 0 -> 2503 bytes code/web/api/data/ryzom/interface/mp_meat.png | Bin 0 -> 2826 bytes code/web/api/data/ryzom/interface/mp_moss.png | Bin 0 -> 3279 bytes .../api/data/ryzom/interface/mp_mushroom.png | Bin 0 -> 3154 bytes code/web/api/data/ryzom/interface/mp_nail.png | Bin 0 -> 2615 bytes code/web/api/data/ryzom/interface/mp_oil.png | Bin 0 -> 3139 bytes .../api/data/ryzom/interface/mp_over_link.png | Bin 0 -> 129 bytes .../api/data/ryzom/interface/mp_parasite.png | Bin 0 -> 2865 bytes .../web/api/data/ryzom/interface/mp_pearl.png | Bin 0 -> 2302 bytes .../api/data/ryzom/interface/mp_pelvis.png | Bin 0 -> 3513 bytes .../api/data/ryzom/interface/mp_pigment.png | Bin 0 -> 4092 bytes .../api/data/ryzom/interface/mp_pistil.png | Bin 0 -> 2757 bytes .../data/ryzom/interface/mp_plant_fossil.png | Bin 0 -> 2515 bytes .../api/data/ryzom/interface/mp_pollen.png | Bin 0 -> 2314 bytes .../web/api/data/ryzom/interface/mp_resin.png | Bin 0 -> 2994 bytes .../web/api/data/ryzom/interface/mp_ronce.png | Bin 0 -> 2493 bytes .../api/data/ryzom/interface/mp_rostrum.png | Bin 0 -> 2256 bytes code/web/api/data/ryzom/interface/mp_sap.png | Bin 0 -> 2473 bytes .../api/data/ryzom/interface/mp_sawdust.png | Bin 0 -> 3561 bytes code/web/api/data/ryzom/interface/mp_seed.png | Bin 0 -> 3242 bytes .../web/api/data/ryzom/interface/mp_shell.png | Bin 0 -> 3332 bytes .../api/data/ryzom/interface/mp_silk_worm.png | Bin 0 -> 2479 bytes code/web/api/data/ryzom/interface/mp_skin.png | Bin 0 -> 4247 bytes .../web/api/data/ryzom/interface/mp_skull.png | Bin 0 -> 3406 bytes .../data/ryzom/interface/mp_spiders_web.png | Bin 0 -> 4081 bytes .../web/api/data/ryzom/interface/mp_spine.png | Bin 0 -> 1885 bytes code/web/api/data/ryzom/interface/mp_stem.png | Bin 0 -> 3755 bytes .../web/api/data/ryzom/interface/mp_sting.png | Bin 0 -> 1877 bytes .../web/api/data/ryzom/interface/mp_straw.png | Bin 0 -> 2425 bytes code/web/api/data/ryzom/interface/mp_suc.png | Bin 0 -> 2370 bytes code/web/api/data/ryzom/interface/mp_tail.png | Bin 0 -> 2835 bytes .../web/api/data/ryzom/interface/mp_tooth.png | Bin 0 -> 3003 bytes .../web/api/data/ryzom/interface/mp_trunk.png | Bin 0 -> 2361 bytes .../api/data/ryzom/interface/mp_whiskers.png | Bin 0 -> 2161 bytes code/web/api/data/ryzom/interface/mp_wing.png | Bin 0 -> 2865 bytes code/web/api/data/ryzom/interface/mp_wood.png | Bin 0 -> 2296 bytes .../api/data/ryzom/interface/mp_wood_node.png | Bin 0 -> 2242 bytes .../api/data/ryzom/interface/mw_2h_axe.png | Bin 0 -> 2312 bytes .../api/data/ryzom/interface/mw_2h_lance.png | Bin 0 -> 1890 bytes .../api/data/ryzom/interface/mw_2h_mace.png | Bin 0 -> 2152 bytes .../api/data/ryzom/interface/mw_2h_sword.png | Bin 0 -> 2463 bytes code/web/api/data/ryzom/interface/mw_axe.png | Bin 0 -> 1526 bytes .../api/data/ryzom/interface/mw_dagger.png | Bin 0 -> 1075 bytes .../web/api/data/ryzom/interface/mw_lance.png | Bin 0 -> 1341 bytes code/web/api/data/ryzom/interface/mw_mace.png | Bin 0 -> 1507 bytes .../web/api/data/ryzom/interface/mw_staff.png | Bin 0 -> 1021 bytes .../web/api/data/ryzom/interface/mw_sword.png | Bin 0 -> 1894 bytes .../api/data/ryzom/interface/no_action.png | Bin 0 -> 566 bytes .../api/data/ryzom/interface/num_slash.png | Bin 0 -> 365 bytes code/web/api/data/ryzom/interface/op_back.png | Bin 0 -> 126 bytes .../data/ryzom/interface/op_over_break.png | Bin 0 -> 231 bytes .../api/data/ryzom/interface/op_over_less.png | Bin 0 -> 157 bytes .../api/data/ryzom/interface/op_over_more.png | Bin 0 -> 182 bytes .../api/data/ryzom/interface/pa_anklet.png | Bin 0 -> 2128 bytes code/web/api/data/ryzom/interface/pa_back.png | Bin 0 -> 125 bytes .../api/data/ryzom/interface/pa_bracelet.png | Bin 0 -> 1872 bytes .../api/data/ryzom/interface/pa_diadem.png | Bin 0 -> 1589 bytes .../api/data/ryzom/interface/pa_earring.png | Bin 0 -> 816 bytes .../data/ryzom/interface/pa_over_break.png | Bin 0 -> 222 bytes .../api/data/ryzom/interface/pa_over_less.png | Bin 0 -> 157 bytes .../api/data/ryzom/interface/pa_over_more.png | Bin 0 -> 178 bytes .../api/data/ryzom/interface/pa_pendant.png | Bin 0 -> 1648 bytes code/web/api/data/ryzom/interface/pa_ring.png | Bin 0 -> 1943 bytes code/web/api/data/ryzom/interface/profile.png | Bin 0 -> 129 bytes .../data/ryzom/interface/protect_amber.png | Bin 0 -> 3644 bytes .../api/data/ryzom/interface/pvp_ally_0.png | Bin 0 -> 1598 bytes .../api/data/ryzom/interface/pvp_ally_1.png | Bin 0 -> 1004 bytes .../api/data/ryzom/interface/pvp_ally_2.png | Bin 0 -> 1261 bytes .../api/data/ryzom/interface/pvp_ally_3.png | Bin 0 -> 1524 bytes .../api/data/ryzom/interface/pvp_ally_4.png | Bin 0 -> 1404 bytes .../api/data/ryzom/interface/pvp_ally_6.png | Bin 0 -> 1498 bytes .../data/ryzom/interface/pvp_ally_primas.png | Bin 0 -> 1537 bytes .../data/ryzom/interface/pvp_ally_ranger.png | Bin 0 -> 1255 bytes .../web/api/data/ryzom/interface/pvp_aura.png | Bin 0 -> 1200 bytes .../data/ryzom/interface/pvp_aura_mask.png | Bin 0 -> 2971 bytes .../api/data/ryzom/interface/pvp_boost.png | Bin 0 -> 2884 bytes .../data/ryzom/interface/pvp_boost_mask.png | Bin 0 -> 1102 bytes .../api/data/ryzom/interface/pvp_enemy_0.png | Bin 0 -> 1439 bytes .../api/data/ryzom/interface/pvp_enemy_1.png | Bin 0 -> 1281 bytes .../api/data/ryzom/interface/pvp_enemy_2.png | Bin 0 -> 1302 bytes .../api/data/ryzom/interface/pvp_enemy_3.png | Bin 0 -> 1532 bytes .../api/data/ryzom/interface/pvp_enemy_4.png | Bin 0 -> 1546 bytes .../api/data/ryzom/interface/pvp_enemy_6.png | Bin 0 -> 1612 bytes .../ryzom/interface/pvp_enemy_marauder.png | Bin 0 -> 1170 bytes .../ryzom/interface/pvp_enemy_trytonist.png | Bin 0 -> 1499 bytes code/web/api/data/ryzom/interface/pw_4.png | Bin 0 -> 297 bytes code/web/api/data/ryzom/interface/pw_5.png | Bin 0 -> 307 bytes code/web/api/data/ryzom/interface/pw_6.png | Bin 0 -> 537 bytes code/web/api/data/ryzom/interface/pw_7.png | Bin 0 -> 659 bytes .../web/api/data/ryzom/interface/pw_heavy.png | Bin 0 -> 221 bytes .../web/api/data/ryzom/interface/pw_light.png | Bin 0 -> 200 bytes .../api/data/ryzom/interface/pw_medium.png | Bin 0 -> 214 bytes .../api/data/ryzom/interface/quest_coeur.png | Bin 0 -> 2849 bytes .../api/data/ryzom/interface/quest_foie.png | Bin 0 -> 3675 bytes .../api/data/ryzom/interface/quest_jeton.png | Bin 0 -> 4192 bytes .../api/data/ryzom/interface/quest_langue.png | Bin 0 -> 2421 bytes .../api/data/ryzom/interface/quest_louche.png | Bin 0 -> 2290 bytes .../data/ryzom/interface/quest_oreille.png | Bin 0 -> 3300 bytes .../api/data/ryzom/interface/quest_patte.png | Bin 0 -> 3132 bytes .../api/data/ryzom/interface/quest_poils.png | Bin 0 -> 3011 bytes .../api/data/ryzom/interface/quest_queue.png | Bin 0 -> 2417 bytes .../api/data/ryzom/interface/quest_ticket.png | Bin 0 -> 3397 bytes code/web/api/data/ryzom/interface/r2_live.png | Bin 0 -> 3384 bytes .../api/data/ryzom/interface/r2_live_over.png | Bin 0 -> 3964 bytes .../data/ryzom/interface/r2_live_pushed.png | Bin 0 -> 2812 bytes .../ryzom/interface/r2_palette_entities.png | Bin 0 -> 1481 bytes .../api/data/ryzom/interface/requirement.png | Bin 0 -> 2791 bytes code/web/api/data/ryzom/interface/rm_f.png | Bin 0 -> 2716 bytes .../api/data/ryzom/interface/rm_f_upgrade.png | Bin 0 -> 2830 bytes code/web/api/data/ryzom/interface/rm_h.png | Bin 0 -> 2567 bytes .../api/data/ryzom/interface/rm_h_upgrade.png | Bin 0 -> 2682 bytes code/web/api/data/ryzom/interface/rm_m.png | Bin 0 -> 2487 bytes .../api/data/ryzom/interface/rm_m_upgrade.png | Bin 0 -> 2596 bytes code/web/api/data/ryzom/interface/rm_r.png | Bin 0 -> 2561 bytes .../api/data/ryzom/interface/rm_r_upgrade.png | Bin 0 -> 2668 bytes .../api/data/ryzom/interface/rpjob_200.png | Bin 0 -> 3930 bytes .../api/data/ryzom/interface/rpjob_201.png | Bin 0 -> 4027 bytes .../api/data/ryzom/interface/rpjob_202.png | Bin 0 -> 3789 bytes .../api/data/ryzom/interface/rpjob_203.png | Bin 0 -> 4267 bytes .../api/data/ryzom/interface/rpjob_204.png | Bin 0 -> 3960 bytes .../api/data/ryzom/interface/rpjob_205.png | Bin 0 -> 3452 bytes .../api/data/ryzom/interface/rpjob_206.png | Bin 0 -> 4044 bytes .../api/data/ryzom/interface/rpjob_207.png | Bin 0 -> 3968 bytes .../data/ryzom/interface/rpjob_advanced.png | Bin 0 -> 4209 bytes .../data/ryzom/interface/rpjob_elementary.png | Bin 0 -> 4140 bytes .../data/ryzom/interface/rpjob_roleplay.png | Bin 0 -> 4209 bytes .../api/data/ryzom/interface/rpjob_task.png | Bin 0 -> 4057 bytes .../interface/rpjob_task_certificats.png | Bin 0 -> 4000 bytes .../ryzom/interface/rpjob_task_convert.png | Bin 0 -> 3880 bytes .../ryzom/interface/rpjob_task_elementary.png | Bin 0 -> 4325 bytes .../ryzom/interface/rpjob_task_generic.png | Bin 0 -> 4025 bytes .../ryzom/interface/rpjob_task_upgrade.png | Bin 0 -> 3888 bytes .../data/ryzom/interface/rpjobitem_200_a.png | Bin 0 -> 3002 bytes .../data/ryzom/interface/rpjobitem_200_b.png | Bin 0 -> 4253 bytes .../data/ryzom/interface/rpjobitem_200_c.png | Bin 0 -> 3255 bytes .../data/ryzom/interface/rpjobitem_201_a.png | Bin 0 -> 3988 bytes .../data/ryzom/interface/rpjobitem_201_b.png | Bin 0 -> 3428 bytes .../data/ryzom/interface/rpjobitem_201_c.png | Bin 0 -> 2616 bytes .../data/ryzom/interface/rpjobitem_202_a.png | Bin 0 -> 4003 bytes .../data/ryzom/interface/rpjobitem_202_b.png | Bin 0 -> 4050 bytes .../data/ryzom/interface/rpjobitem_202_c.png | Bin 0 -> 2684 bytes .../data/ryzom/interface/rpjobitem_203_a.png | Bin 0 -> 4719 bytes .../data/ryzom/interface/rpjobitem_203_b.png | Bin 0 -> 4545 bytes .../data/ryzom/interface/rpjobitem_203_c.png | Bin 0 -> 3848 bytes .../data/ryzom/interface/rpjobitem_204_a.png | Bin 0 -> 2683 bytes .../data/ryzom/interface/rpjobitem_204_b.png | Bin 0 -> 2779 bytes .../data/ryzom/interface/rpjobitem_204_c.png | Bin 0 -> 2730 bytes .../data/ryzom/interface/rpjobitem_205_a.png | Bin 0 -> 3577 bytes .../data/ryzom/interface/rpjobitem_205_b.png | Bin 0 -> 3264 bytes .../data/ryzom/interface/rpjobitem_205_c.png | Bin 0 -> 2513 bytes .../data/ryzom/interface/rpjobitem_206_a.png | Bin 0 -> 2321 bytes .../data/ryzom/interface/rpjobitem_206_b.png | Bin 0 -> 3529 bytes .../data/ryzom/interface/rpjobitem_206_c.png | Bin 0 -> 2047 bytes .../data/ryzom/interface/rpjobitem_207_a.png | Bin 0 -> 3947 bytes .../data/ryzom/interface/rpjobitem_207_b.png | Bin 0 -> 3907 bytes .../data/ryzom/interface/rpjobitem_207_c.png | Bin 0 -> 4055 bytes .../interface/rpjobitem_certifications.png | Bin 0 -> 3864 bytes .../data/ryzom/interface/rw_autolaunch.png | Bin 0 -> 2268 bytes .../api/data/ryzom/interface/rw_bowgun.png | Bin 0 -> 2849 bytes .../api/data/ryzom/interface/rw_grenade.png | Bin 0 -> 1230 bytes .../data/ryzom/interface/rw_harpoongun.png | Bin 0 -> 1796 bytes .../api/data/ryzom/interface/rw_launcher.png | Bin 0 -> 2563 bytes .../api/data/ryzom/interface/rw_pistol.png | Bin 0 -> 1984 bytes .../api/data/ryzom/interface/rw_pistolarc.png | Bin 0 -> 2282 bytes .../web/api/data/ryzom/interface/rw_rifle.png | Bin 0 -> 2155 bytes code/web/api/data/ryzom/interface/sapload.png | Bin 0 -> 1079 bytes .../api/data/ryzom/interface/sh_buckler.png | Bin 0 -> 2540 bytes .../data/ryzom/interface/sh_large_shield.png | Bin 0 -> 3386 bytes .../data/ryzom/interface/small_task_craft.png | Bin 0 -> 824 bytes .../data/ryzom/interface/small_task_done.png | Bin 0 -> 464 bytes .../ryzom/interface/small_task_failed.png | Bin 0 -> 535 bytes .../data/ryzom/interface/small_task_fight.png | Bin 0 -> 808 bytes .../ryzom/interface/small_task_forage.png | Bin 0 -> 807 bytes .../ryzom/interface/small_task_generic.png | Bin 0 -> 796 bytes .../data/ryzom/interface/small_task_guild.png | Bin 0 -> 825 bytes .../data/ryzom/interface/small_task_rite.png | Bin 0 -> 848 bytes .../ryzom/interface/small_task_travel.png | Bin 0 -> 835 bytes .../api/data/ryzom/interface/spe_beast.png | Bin 0 -> 3041 bytes code/web/api/data/ryzom/interface/spe_com.png | Bin 0 -> 2443 bytes .../data/ryzom/interface/spe_inventory.png | Bin 0 -> 3253 bytes .../web/api/data/ryzom/interface/spe_labs.png | Bin 0 -> 3264 bytes .../api/data/ryzom/interface/spe_memory.png | Bin 0 -> 3080 bytes .../api/data/ryzom/interface/spe_options.png | Bin 0 -> 3407 bytes .../api/data/ryzom/interface/spe_status.png | Bin 0 -> 2912 bytes .../ryzom/interface/stimulating_water.png | Bin 0 -> 3567 bytes .../data/ryzom/interface/tb_action_attack.png | Bin 0 -> 1669 bytes .../data/ryzom/interface/tb_action_config.png | Bin 0 -> 1764 bytes .../ryzom/interface/tb_action_disband.png | Bin 0 -> 1491 bytes .../ryzom/interface/tb_action_disengage.png | Bin 0 -> 1727 bytes .../ryzom/interface/tb_action_extract.png | Bin 0 -> 1678 bytes .../data/ryzom/interface/tb_action_invite.png | Bin 0 -> 1416 bytes .../data/ryzom/interface/tb_action_kick.png | Bin 0 -> 1401 bytes .../data/ryzom/interface/tb_action_move.png | Bin 0 -> 1339 bytes .../data/ryzom/interface/tb_action_run.png | Bin 0 -> 1598 bytes .../data/ryzom/interface/tb_action_sit.png | Bin 0 -> 1565 bytes .../data/ryzom/interface/tb_action_stand.png | Bin 0 -> 1434 bytes .../data/ryzom/interface/tb_action_stop.png | Bin 0 -> 1336 bytes .../data/ryzom/interface/tb_action_talk.png | Bin 0 -> 994 bytes .../data/ryzom/interface/tb_action_walk.png | Bin 0 -> 1508 bytes .../api/data/ryzom/interface/tb_animals.png | Bin 0 -> 1716 bytes .../api/data/ryzom/interface/tb_config.png | Bin 0 -> 1764 bytes .../data/ryzom/interface/tb_connection.png | Bin 0 -> 1278 bytes .../api/data/ryzom/interface/tb_contacts.png | Bin 0 -> 1613 bytes .../api/data/ryzom/interface/tb_desk_1.png | Bin 0 -> 717 bytes .../api/data/ryzom/interface/tb_desk_2.png | Bin 0 -> 723 bytes .../api/data/ryzom/interface/tb_desk_3.png | Bin 0 -> 707 bytes .../api/data/ryzom/interface/tb_desk_4.png | Bin 0 -> 702 bytes .../api/data/ryzom/interface/tb_faction.png | Bin 0 -> 1344 bytes .../web/api/data/ryzom/interface/tb_forum.png | Bin 0 -> 1561 bytes .../web/api/data/ryzom/interface/tb_guild.png | Bin 0 -> 1704 bytes .../web/api/data/ryzom/interface/tb_help2.png | Bin 0 -> 1511 bytes code/web/api/data/ryzom/interface/tb_keys.png | Bin 0 -> 1688 bytes .../api/data/ryzom/interface/tb_macros.png | Bin 0 -> 1720 bytes code/web/api/data/ryzom/interface/tb_mail.png | Bin 0 -> 1593 bytes code/web/api/data/ryzom/interface/tb_mode.png | Bin 0 -> 401 bytes .../data/ryzom/interface/tb_mode_dodge.png | Bin 0 -> 1541 bytes .../data/ryzom/interface/tb_mode_parry.png | Bin 0 -> 1444 bytes code/web/api/data/ryzom/interface/tb_over.png | Bin 0 -> 113 bytes .../api/data/ryzom/interface/tb_support.png | Bin 0 -> 1535 bytes code/web/api/data/ryzom/interface/tb_team.png | Bin 0 -> 1462 bytes .../api/data/ryzom/interface/tb_windows.png | Bin 0 -> 770 bytes .../api/data/ryzom/interface/tetekitin.png | Bin 0 -> 4058 bytes code/web/api/data/ryzom/interface/to_ammo.png | Bin 0 -> 2936 bytes .../web/api/data/ryzom/interface/to_armor.png | Bin 0 -> 3563 bytes .../data/ryzom/interface/to_cooking_pot.png | Bin 0 -> 1958 bytes .../data/ryzom/interface/to_fishing_rod.png | Bin 0 -> 1616 bytes .../api/data/ryzom/interface/to_forage.png | Bin 0 -> 2589 bytes .../api/data/ryzom/interface/to_hammer.png | Bin 0 -> 1826 bytes .../ryzom/interface/to_jewelry_hammer.png | Bin 0 -> 1346 bytes .../api/data/ryzom/interface/to_jewels.png | Bin 0 -> 3822 bytes .../data/ryzom/interface/to_leathercutter.png | Bin 0 -> 1124 bytes .../web/api/data/ryzom/interface/to_melee.png | Bin 0 -> 2691 bytes .../api/data/ryzom/interface/to_needle.png | Bin 0 -> 1546 bytes .../api/data/ryzom/interface/to_pestle.png | Bin 0 -> 3242 bytes .../web/api/data/ryzom/interface/to_range.png | Bin 0 -> 3209 bytes .../api/data/ryzom/interface/to_searake.png | Bin 0 -> 1062 bytes .../web/api/data/ryzom/interface/to_spade.png | Bin 0 -> 1269 bytes .../web/api/data/ryzom/interface/to_stick.png | Bin 0 -> 984 bytes .../ryzom/interface/to_tunneling_knife.png | Bin 0 -> 1426 bytes code/web/api/data/ryzom/interface/to_whip.png | Bin 0 -> 2155 bytes .../api/data/ryzom/interface/to_wrench.png | Bin 0 -> 2053 bytes .../api/data/ryzom/interface/tp_caravane.png | Bin 0 -> 3668 bytes code/web/api/data/ryzom/interface/tp_kami.png | Bin 0 -> 4209 bytes .../api/data/ryzom/interface/us_back_0.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_1.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_2.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_3.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_4.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_5.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_6.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_7.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_8.png | Bin 0 -> 117 bytes .../api/data/ryzom/interface/us_back_9.png | Bin 0 -> 117 bytes .../web/api/data/ryzom/interface/us_ico_0.png | Bin 0 -> 201 bytes .../web/api/data/ryzom/interface/us_ico_1.png | Bin 0 -> 200 bytes .../web/api/data/ryzom/interface/us_ico_2.png | Bin 0 -> 201 bytes .../web/api/data/ryzom/interface/us_ico_3.png | Bin 0 -> 200 bytes .../web/api/data/ryzom/interface/us_ico_4.png | Bin 0 -> 201 bytes .../web/api/data/ryzom/interface/us_ico_5.png | Bin 0 -> 201 bytes .../web/api/data/ryzom/interface/us_ico_6.png | Bin 0 -> 200 bytes .../web/api/data/ryzom/interface/us_ico_7.png | Bin 0 -> 201 bytes .../web/api/data/ryzom/interface/us_ico_8.png | Bin 0 -> 199 bytes .../web/api/data/ryzom/interface/us_ico_9.png | Bin 0 -> 201 bytes .../api/data/ryzom/interface/us_over_0.png | Bin 0 -> 180 bytes .../api/data/ryzom/interface/us_over_1.png | Bin 0 -> 733 bytes .../api/data/ryzom/interface/us_over_2.png | Bin 0 -> 529 bytes .../api/data/ryzom/interface/us_over_3.png | Bin 0 -> 190 bytes .../api/data/ryzom/interface/us_over_4.png | Bin 0 -> 126 bytes .../api/data/ryzom/interface/w_am_logo.png | Bin 0 -> 566 bytes .../web/api/data/ryzom/interface/w_leader.png | Bin 0 -> 401 bytes code/web/api/data/ryzom/interface/w_major.png | Bin 0 -> 133 bytes .../api/data/ryzom/interface/w_pa_anklet.png | Bin 0 -> 2129 bytes .../data/ryzom/interface/w_pa_bracelet.png | Bin 0 -> 1806 bytes .../api/data/ryzom/interface/w_pa_diadem.png | Bin 0 -> 1527 bytes .../api/data/ryzom/interface/w_pa_earring.png | Bin 0 -> 793 bytes .../api/data/ryzom/interface/w_pa_pendant.png | Bin 0 -> 1618 bytes .../api/data/ryzom/interface/w_pa_ring.png | Bin 0 -> 1881 bytes .../ryzom/interface/w_slot_shortcut_id0.png | Bin 0 -> 141 bytes .../ryzom/interface/w_slot_shortcut_id1.png | Bin 0 -> 201 bytes .../ryzom/interface/w_slot_shortcut_id2.png | Bin 0 -> 178 bytes .../ryzom/interface/w_slot_shortcut_id3.png | Bin 0 -> 165 bytes .../ryzom/interface/w_slot_shortcut_id4.png | Bin 0 -> 174 bytes .../ryzom/interface/w_slot_shortcut_id5.png | Bin 0 -> 192 bytes .../ryzom/interface/w_slot_shortcut_id6.png | Bin 0 -> 147 bytes .../ryzom/interface/w_slot_shortcut_id7.png | Bin 0 -> 180 bytes .../ryzom/interface/w_slot_shortcut_id8.png | Bin 0 -> 192 bytes .../ryzom/interface/w_slot_shortcut_id9.png | Bin 0 -> 167 bytes .../interface/w_slot_shortcut_shift_id0.png | Bin 0 -> 231 bytes .../interface/w_slot_shortcut_shift_id1.png | Bin 0 -> 282 bytes .../interface/w_slot_shortcut_shift_id2.png | Bin 0 -> 253 bytes .../interface/w_slot_shortcut_shift_id3.png | Bin 0 -> 238 bytes .../interface/w_slot_shortcut_shift_id4.png | Bin 0 -> 259 bytes .../interface/w_slot_shortcut_shift_id5.png | Bin 0 -> 273 bytes .../interface/w_slot_shortcut_shift_id6.png | Bin 0 -> 239 bytes .../interface/w_slot_shortcut_shift_id7.png | Bin 0 -> 263 bytes .../interface/w_slot_shortcut_shift_id8.png | Bin 0 -> 264 bytes .../interface/w_slot_shortcut_shift_id9.png | Bin 0 -> 249 bytes .../api/data/ryzom/interface/xp_cat_green.png | Bin 0 -> 3582 bytes code/web/api/player_auth.php | 4 +- code/web/api/ryzom_api.php | 35 +- code/web/api/server/auth.php | 60 +- code/web/api/server/config.php.default | 2 + code/web/api/server/guilds.php | 62 + code/web/api/server/hmagic.php | 108 + code/web/api/server/item_icon.php | 266 + code/web/api/server/time.php | 46 + code/web/api/server/user.php | 44 +- code/web/api/server/utils.php | 2 +- code/web/api/time.php | 35 + 873 files changed, 13189 insertions(+), 214 deletions(-) create mode 100644 code/web/api/client/time.php create mode 100644 code/web/api/common/actionPage.php create mode 100644 code/web/api/common/bbCode.php create mode 100644 code/web/api/common/db_defs.php create mode 100644 code/web/api/common/dfm.php create mode 100644 code/web/api/common/ryform.php create mode 100644 code/web/api/common/ryformBases.php create mode 100644 code/web/api/common/time.php create mode 100644 code/web/api/common/xml_utils.php create mode 100755 code/web/api/data/icons/add_app.png create mode 100644 code/web/api/data/icons/edit.png create mode 100644 code/web/api/data/icons/edit_16.png create mode 100755 code/web/api/data/icons/no_action.png create mode 100644 code/web/api/data/icons/spe_com.png create mode 100644 code/web/api/data/img/bordure.png create mode 100644 code/web/api/data/img/lang/es.png create mode 100644 code/web/api/data/js/combobox.js create mode 100644 code/web/api/data/js/jquery-1.7.1.js create mode 100644 code/web/api/data/ryzom/guild_png/.htaccess create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_00_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_00_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_01_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_01_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_02_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_02_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_03_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_03_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_04_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_04_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_05_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_05_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_06_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_06_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_07_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_07_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_08_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_08_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_09_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_09_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_10_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_10_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_11_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_11_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_12_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_12_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_13_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_13_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_14_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_b_14_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_00_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_00_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_01_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_01_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_02_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_02_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_03_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_03_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_04_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_04_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_05_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_05_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_06_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_06_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_07_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_07_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_08_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_08_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_09_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_09_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_10_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_10_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_11_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_11_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_12_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_12_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_13_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_13_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_14_1.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_back_s_14_2.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_00.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_01.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_02.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_03.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_04.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_05.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_06.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_07.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_08.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_09.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_10.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_11.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_12.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_13.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_14.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_15.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_16.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_17.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_18.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_19.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_20.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_21.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_22.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_23.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_24.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_25.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_26.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_27.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_28.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_29.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_30.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_31.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_32.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_33.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_34.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_35.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_36.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_37.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_38.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_39.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_40.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_41.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_42.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_b_43.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_00.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_01.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_02.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_03.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_04.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_05.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_06.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_07.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_08.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_09.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_10.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_11.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_12.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_13.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_14.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_15.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_16.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_17.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_18.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_19.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_20.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_21.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_22.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_23.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_24.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_25.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_26.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_27.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_28.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_29.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_30.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_31.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_32.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_33.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_34.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_35.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_36.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_37.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_38.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_39.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_40.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_41.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_42.png create mode 100644 code/web/api/data/ryzom/guild_png/guild_symbol_s_43.png create mode 100644 code/web/api/data/ryzom/interface/1h_over.png create mode 100644 code/web/api/data/ryzom/interface/2h_over.png create mode 100644 code/web/api/data/ryzom/interface/am_logo.png create mode 100644 code/web/api/data/ryzom/interface/ar_armpad.png create mode 100644 code/web/api/data/ryzom/interface/ar_armpad_mask.png create mode 100644 code/web/api/data/ryzom/interface/ar_botte.png create mode 100644 code/web/api/data/ryzom/interface/ar_botte_mask.png create mode 100644 code/web/api/data/ryzom/interface/ar_gilet.png create mode 100644 code/web/api/data/ryzom/interface/ar_gilet_mask.png create mode 100644 code/web/api/data/ryzom/interface/ar_hand.png create mode 100644 code/web/api/data/ryzom/interface/ar_hand_mask.png create mode 100644 code/web/api/data/ryzom/interface/ar_helmet.png create mode 100644 code/web/api/data/ryzom/interface/ar_helmet_mask.png create mode 100644 code/web/api/data/ryzom/interface/ar_pantabotte.png create mode 100644 code/web/api/data/ryzom/interface/ar_pantabotte_mask.png create mode 100644 code/web/api/data/ryzom/interface/asc_exit.png create mode 100644 code/web/api/data/ryzom/interface/asc_rolemastercraft.png create mode 100644 code/web/api/data/ryzom/interface/asc_rolemasterfight.png create mode 100644 code/web/api/data/ryzom/interface/asc_rolemasterharvest.png create mode 100644 code/web/api/data/ryzom/interface/asc_rolemastermagic.png create mode 100644 code/web/api/data/ryzom/interface/asc_unknown.png create mode 100644 code/web/api/data/ryzom/interface/bg_downloader.png create mode 100644 code/web/api/data/ryzom/interface/bg_empty.png create mode 100644 code/web/api/data/ryzom/interface/bk_aura.png create mode 100644 code/web/api/data/ryzom/interface/bk_conso.png create mode 100644 code/web/api/data/ryzom/interface/bk_consommable.png create mode 100644 code/web/api/data/ryzom/interface/bk_fyros.png create mode 100644 code/web/api/data/ryzom/interface/bk_fyros_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_generic.png create mode 100644 code/web/api/data/ryzom/interface/bk_generic_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_goo.png create mode 100644 code/web/api/data/ryzom/interface/bk_guild.png create mode 100644 code/web/api/data/ryzom/interface/bk_horde.png create mode 100644 code/web/api/data/ryzom/interface/bk_kami.png create mode 100644 code/web/api/data/ryzom/interface/bk_karavan.png create mode 100644 code/web/api/data/ryzom/interface/bk_magie_noire_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_matis.png create mode 100644 code/web/api/data/ryzom/interface/bk_matis_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_mission.png create mode 100644 code/web/api/data/ryzom/interface/bk_mission2.png create mode 100644 code/web/api/data/ryzom/interface/bk_outpost.png create mode 100644 code/web/api/data/ryzom/interface/bk_outpost_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_power.png create mode 100644 code/web/api/data/ryzom/interface/bk_primes.png create mode 100644 code/web/api/data/ryzom/interface/bk_service.png create mode 100644 code/web/api/data/ryzom/interface/bk_training.png create mode 100644 code/web/api/data/ryzom/interface/bk_tryker.png create mode 100644 code/web/api/data/ryzom/interface/bk_tryker_brick.png create mode 100644 code/web/api/data/ryzom/interface/bk_zorai.png create mode 100644 code/web/api/data/ryzom/interface/bk_zorai_brick.png create mode 100644 code/web/api/data/ryzom/interface/brick_default.png create mode 100644 code/web/api/data/ryzom/interface/building_state_24x24.png create mode 100644 code/web/api/data/ryzom/interface/cb_main_nue.png create mode 100644 code/web/api/data/ryzom/interface/ch_back.png create mode 100644 code/web/api/data/ryzom/interface/charge.png create mode 100644 code/web/api/data/ryzom/interface/clef.png create mode 100644 code/web/api/data/ryzom/interface/conso_branche.png create mode 100644 code/web/api/data/ryzom/interface/conso_branche_mask.png create mode 100644 code/web/api/data/ryzom/interface/conso_fleur.png create mode 100644 code/web/api/data/ryzom/interface/conso_fleur_mask.png create mode 100644 code/web/api/data/ryzom/interface/conso_grappe.png create mode 100644 code/web/api/data/ryzom/interface/conso_grappe_mask.png create mode 100644 code/web/api/data/ryzom/interface/conso_nectar.png create mode 100644 code/web/api/data/ryzom/interface/conso_nectar_mask.png create mode 100644 code/web/api/data/ryzom/interface/construction.png create mode 100644 code/web/api/data/ryzom/interface/cp_back.png create mode 100644 code/web/api/data/ryzom/interface/cp_over_break.png create mode 100644 code/web/api/data/ryzom/interface/cp_over_less.png create mode 100644 code/web/api/data/ryzom/interface/cp_over_more.png create mode 100644 code/web/api/data/ryzom/interface/cp_over_opening.png create mode 100644 code/web/api/data/ryzom/interface/cp_over_opening_2.png create mode 100644 code/web/api/data/ryzom/interface/cristal_ammo.png create mode 100644 code/web/api/data/ryzom/interface/cristal_generic.png create mode 100644 code/web/api/data/ryzom/interface/cristal_spell.png create mode 100644 code/web/api/data/ryzom/interface/ef_back.png create mode 100644 code/web/api/data/ryzom/interface/ef_over_break.png create mode 100644 code/web/api/data/ryzom/interface/ef_over_less.png create mode 100644 code/web/api/data/ryzom/interface/ef_over_more.png create mode 100644 code/web/api/data/ryzom/interface/fo_back.png create mode 100644 code/web/api/data/ryzom/interface/fo_over.png create mode 100644 code/web/api/data/ryzom/interface/fp_ammo.png create mode 100644 code/web/api/data/ryzom/interface/fp_armor.png create mode 100644 code/web/api/data/ryzom/interface/fp_building.png create mode 100644 code/web/api/data/ryzom/interface/fp_jewel.png create mode 100644 code/web/api/data/ryzom/interface/fp_melee.png create mode 100644 code/web/api/data/ryzom/interface/fp_over.png create mode 100644 code/web/api/data/ryzom/interface/fp_range.png create mode 100644 code/web/api/data/ryzom/interface/fp_shield.png create mode 100644 code/web/api/data/ryzom/interface/fp_tools.png create mode 100644 code/web/api/data/ryzom/interface/ge_mission_outpost_townhall.png create mode 100644 code/web/api/data/ryzom/interface/ico_absorb_damage.png create mode 100644 code/web/api/data/ryzom/interface/ico_accurate.png create mode 100644 code/web/api/data/ryzom/interface/ico_acid.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_bird_wings.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_flying_kitin_abdomen.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_arms.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_chest.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_feet.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_feint.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_hands.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_head.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_homin_legs.png create mode 100644 code/web/api/data/ryzom/interface/ico_aim_kitin_head.png create mode 100644 code/web/api/data/ryzom/interface/ico_amande.png create mode 100644 code/web/api/data/ryzom/interface/ico_ammo_bullet.png create mode 100644 code/web/api/data/ryzom/interface/ico_ammo_jacket.png create mode 100644 code/web/api/data/ryzom/interface/ico_angle.png create mode 100644 code/web/api/data/ryzom/interface/ico_anti_magic_shield.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_clip.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_heavy.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_kitin.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_light.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_medium.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_penalty.png create mode 100644 code/web/api/data/ryzom/interface/ico_armor_shell.png create mode 100644 code/web/api/data/ryzom/interface/ico_atys.png create mode 100644 code/web/api/data/ryzom/interface/ico_atysian.png create mode 100644 code/web/api/data/ryzom/interface/ico_balance_hp.png create mode 100644 code/web/api/data/ryzom/interface/ico_barrel.png create mode 100644 code/web/api/data/ryzom/interface/ico_bash.png create mode 100644 code/web/api/data/ryzom/interface/ico_berserk.png create mode 100644 code/web/api/data/ryzom/interface/ico_blade.png create mode 100644 code/web/api/data/ryzom/interface/ico_bleeding.png create mode 100644 code/web/api/data/ryzom/interface/ico_blind.png create mode 100644 code/web/api/data/ryzom/interface/ico_blunt.png create mode 100644 code/web/api/data/ryzom/interface/ico_bomb.png create mode 100644 code/web/api/data/ryzom/interface/ico_cataliseur_xp.png create mode 100644 code/web/api/data/ryzom/interface/ico_celestial.png create mode 100644 code/web/api/data/ryzom/interface/ico_circular_attack.png create mode 100644 code/web/api/data/ryzom/interface/ico_clothes.png create mode 100644 code/web/api/data/ryzom/interface/ico_cold.png create mode 100644 code/web/api/data/ryzom/interface/ico_concentration.png create mode 100644 code/web/api/data/ryzom/interface/ico_consommable_over.png create mode 100644 code/web/api/data/ryzom/interface/ico_constitution.png create mode 100644 code/web/api/data/ryzom/interface/ico_counterweight.png create mode 100644 code/web/api/data/ryzom/interface/ico_craft_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_create_sapload.png create mode 100644 code/web/api/data/ryzom/interface/ico_curse.png create mode 100644 code/web/api/data/ryzom/interface/ico_debuff.png create mode 100644 code/web/api/data/ryzom/interface/ico_debuff_resist.png create mode 100644 code/web/api/data/ryzom/interface/ico_debuff_skill.png create mode 100644 code/web/api/data/ryzom/interface/ico_desert.png create mode 100644 code/web/api/data/ryzom/interface/ico_dexterity.png create mode 100644 code/web/api/data/ryzom/interface/ico_disarm.png create mode 100644 code/web/api/data/ryzom/interface/ico_dodge.png create mode 100644 code/web/api/data/ryzom/interface/ico_dot.png create mode 100644 code/web/api/data/ryzom/interface/ico_durability.png create mode 100644 code/web/api/data/ryzom/interface/ico_electric.png create mode 100644 code/web/api/data/ryzom/interface/ico_explosif.png create mode 100644 code/web/api/data/ryzom/interface/ico_extracting.png create mode 100644 code/web/api/data/ryzom/interface/ico_fear.png create mode 100644 code/web/api/data/ryzom/interface/ico_feint.png create mode 100644 code/web/api/data/ryzom/interface/ico_fire.png create mode 100644 code/web/api/data/ryzom/interface/ico_firing_pin.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_1.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_1_mask.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_2.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_2_mask.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_3.png create mode 100644 code/web/api/data/ryzom/interface/ico_fleur_carac_3_mask.png create mode 100644 code/web/api/data/ryzom/interface/ico_focus.png create mode 100644 code/web/api/data/ryzom/interface/ico_forage_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_forbid_item.png create mode 100644 code/web/api/data/ryzom/interface/ico_forest.png create mode 100644 code/web/api/data/ryzom/interface/ico_foreuse.png create mode 100644 code/web/api/data/ryzom/interface/ico_gardening.png create mode 100644 code/web/api/data/ryzom/interface/ico_gentle.png create mode 100644 code/web/api/data/ryzom/interface/ico_goo.png create mode 100644 code/web/api/data/ryzom/interface/ico_gripp.png create mode 100644 code/web/api/data/ryzom/interface/ico_haircolor.png create mode 100644 code/web/api/data/ryzom/interface/ico_haircut.png create mode 100644 code/web/api/data/ryzom/interface/ico_hammer.png create mode 100644 code/web/api/data/ryzom/interface/ico_harmful.png create mode 100644 code/web/api/data/ryzom/interface/ico_hatred.png create mode 100644 code/web/api/data/ryzom/interface/ico_heal.png create mode 100644 code/web/api/data/ryzom/interface/ico_hit_rate.png create mode 100644 code/web/api/data/ryzom/interface/ico_incapacity.png create mode 100644 code/web/api/data/ryzom/interface/ico_intelligence.png create mode 100644 code/web/api/data/ryzom/interface/ico_interrupt.png create mode 100644 code/web/api/data/ryzom/interface/ico_invulnerability.png create mode 100644 code/web/api/data/ryzom/interface/ico_jewel_stone.png create mode 100644 code/web/api/data/ryzom/interface/ico_jewel_stone_support.png create mode 100644 code/web/api/data/ryzom/interface/ico_jungle.png create mode 100644 code/web/api/data/ryzom/interface/ico_lacustre.png create mode 100644 code/web/api/data/ryzom/interface/ico_landmark_bonus.png create mode 100644 code/web/api/data/ryzom/interface/ico_level.png create mode 100644 code/web/api/data/ryzom/interface/ico_lining.png create mode 100644 code/web/api/data/ryzom/interface/ico_location.png create mode 100644 code/web/api/data/ryzom/interface/ico_madness.png create mode 100644 code/web/api/data/ryzom/interface/ico_magic.png create mode 100644 code/web/api/data/ryzom/interface/ico_magic_action_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_magic_focus.png create mode 100644 code/web/api/data/ryzom/interface/ico_magic_target_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_melee_action_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_melee_target_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_mental.png create mode 100644 code/web/api/data/ryzom/interface/ico_metabolism.png create mode 100644 code/web/api/data/ryzom/interface/ico_mezz.png create mode 100644 code/web/api/data/ryzom/interface/ico_misfortune.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_art_fyros.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_art_matis.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_art_tryker.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_art_zorai.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_barrel.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_bottle.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_casket.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_medicine.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_message.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_package.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_pot.png create mode 100644 code/web/api/data/ryzom/interface/ico_mission_purse.png create mode 100644 code/web/api/data/ryzom/interface/ico_move.png create mode 100644 code/web/api/data/ryzom/interface/ico_multi_fight.png create mode 100644 code/web/api/data/ryzom/interface/ico_multiple_spots.png create mode 100644 code/web/api/data/ryzom/interface/ico_noix.png create mode 100644 code/web/api/data/ryzom/interface/ico_opening_hit.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_autumn.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_degenerated.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_fauna.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_flora.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_arms.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_chest.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_feet.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_feet_hands.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_feet_head.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_feet_x2.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_feint_x3.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_hands.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_hands_chest.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_hands_head.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_head.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_head_x3.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_hit_legs.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_homin.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_kitin.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_magic.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_melee.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_racial.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_range.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_special.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_spring.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_summer.png create mode 100644 code/web/api/data/ryzom/interface/ico_over_winter.png create mode 100644 code/web/api/data/ryzom/interface/ico_parry.png create mode 100644 code/web/api/data/ryzom/interface/ico_piercing.png create mode 100644 code/web/api/data/ryzom/interface/ico_pointe.png create mode 100644 code/web/api/data/ryzom/interface/ico_poison.png create mode 100644 code/web/api/data/ryzom/interface/ico_power.png create mode 100644 code/web/api/data/ryzom/interface/ico_preservation.png create mode 100644 code/web/api/data/ryzom/interface/ico_primal.png create mode 100644 code/web/api/data/ryzom/interface/ico_prime_roots.png create mode 100644 code/web/api/data/ryzom/interface/ico_private.png create mode 100644 code/web/api/data/ryzom/interface/ico_prospecting.png create mode 100644 code/web/api/data/ryzom/interface/ico_quality.png create mode 100644 code/web/api/data/ryzom/interface/ico_racine.png create mode 100644 code/web/api/data/ryzom/interface/ico_range.png create mode 100644 code/web/api/data/ryzom/interface/ico_range_action_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_range_target_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_ricochet.png create mode 100644 code/web/api/data/ryzom/interface/ico_root.png create mode 100644 code/web/api/data/ryzom/interface/ico_rot.png create mode 100644 code/web/api/data/ryzom/interface/ico_safe.png create mode 100644 code/web/api/data/ryzom/interface/ico_sap.png create mode 100644 code/web/api/data/ryzom/interface/ico_self_damage.png create mode 100644 code/web/api/data/ryzom/interface/ico_shaft.png create mode 100644 code/web/api/data/ryzom/interface/ico_shield_buff.png create mode 100644 code/web/api/data/ryzom/interface/ico_shield_up.png create mode 100644 code/web/api/data/ryzom/interface/ico_shielding.png create mode 100644 code/web/api/data/ryzom/interface/ico_shockwave.png create mode 100644 code/web/api/data/ryzom/interface/ico_sickness.png create mode 100644 code/web/api/data/ryzom/interface/ico_slashing.png create mode 100644 code/web/api/data/ryzom/interface/ico_slow.png create mode 100644 code/web/api/data/ryzom/interface/ico_soft_spot.png create mode 100644 code/web/api/data/ryzom/interface/ico_source_knowledge.png create mode 100644 code/web/api/data/ryzom/interface/ico_source_time.png create mode 100644 code/web/api/data/ryzom/interface/ico_speed.png create mode 100644 code/web/api/data/ryzom/interface/ico_speeding_up.png create mode 100644 code/web/api/data/ryzom/interface/ico_spell_break.png create mode 100644 code/web/api/data/ryzom/interface/ico_spores.png create mode 100644 code/web/api/data/ryzom/interface/ico_spray.png create mode 100644 code/web/api/data/ryzom/interface/ico_spying.png create mode 100644 code/web/api/data/ryzom/interface/ico_stamina.png create mode 100644 code/web/api/data/ryzom/interface/ico_strength.png create mode 100644 code/web/api/data/ryzom/interface/ico_stuffing.png create mode 100644 code/web/api/data/ryzom/interface/ico_stunn.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_craft.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_done.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_failed.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_fight.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_forage.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_generic.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_generic_quart.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_guild.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_rite.png create mode 100644 code/web/api/data/ryzom/interface/ico_task_travel.png create mode 100644 code/web/api/data/ryzom/interface/ico_tatoo.png create mode 100644 code/web/api/data/ryzom/interface/ico_taunt.png create mode 100644 code/web/api/data/ryzom/interface/ico_time.png create mode 100644 code/web/api/data/ryzom/interface/ico_time_bonus.png create mode 100644 code/web/api/data/ryzom/interface/ico_tourbe.png create mode 100644 code/web/api/data/ryzom/interface/ico_trigger.png create mode 100644 code/web/api/data/ryzom/interface/ico_umbrella.png create mode 100644 code/web/api/data/ryzom/interface/ico_use_enchantement.png create mode 100644 code/web/api/data/ryzom/interface/ico_vampire.png create mode 100644 code/web/api/data/ryzom/interface/ico_visibility.png create mode 100644 code/web/api/data/ryzom/interface/ico_war_cry.png create mode 100644 code/web/api/data/ryzom/interface/ico_weight.png create mode 100644 code/web/api/data/ryzom/interface/ico_wellbalanced.png create mode 100644 code/web/api/data/ryzom/interface/ico_will.png create mode 100644 code/web/api/data/ryzom/interface/ico_windding.png create mode 100644 code/web/api/data/ryzom/interface/ico_wisdom.png create mode 100644 code/web/api/data/ryzom/interface/improved_tool.png create mode 100644 code/web/api/data/ryzom/interface/item_default.png create mode 100644 code/web/api/data/ryzom/interface/item_plan_over.png create mode 100644 code/web/api/data/ryzom/interface/lucky_flower.png create mode 100644 code/web/api/data/ryzom/interface/mail.png create mode 100644 code/web/api/data/ryzom/interface/mektoub_pack.png create mode 100644 code/web/api/data/ryzom/interface/mektoub_steed.png create mode 100644 code/web/api/data/ryzom/interface/mf_back.png create mode 100644 code/web/api/data/ryzom/interface/mf_over.png create mode 100644 code/web/api/data/ryzom/interface/mg_glove.png create mode 100644 code/web/api/data/ryzom/interface/mission_icon_0.png create mode 100644 code/web/api/data/ryzom/interface/mission_icon_1.png create mode 100644 code/web/api/data/ryzom/interface/mission_icon_2.png create mode 100644 code/web/api/data/ryzom/interface/mission_icon_3.png create mode 100644 code/web/api/data/ryzom/interface/mp3.png create mode 100644 code/web/api/data/ryzom/interface/mp_amber.png create mode 100644 code/web/api/data/ryzom/interface/mp_back_curative.png create mode 100644 code/web/api/data/ryzom/interface/mp_back_offensive.png create mode 100644 code/web/api/data/ryzom/interface/mp_back_selfonly.png create mode 100644 code/web/api/data/ryzom/interface/mp_bark.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_brique.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_colonne.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_colonne_justice.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_comble.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_noyau_maduk.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_ornement.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_revetement.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_socle.png create mode 100644 code/web/api/data/ryzom/interface/mp_batiment_statue.png create mode 100644 code/web/api/data/ryzom/interface/mp_beak.png create mode 100644 code/web/api/data/ryzom/interface/mp_blood.png create mode 100644 code/web/api/data/ryzom/interface/mp_bone.png create mode 100644 code/web/api/data/ryzom/interface/mp_bud.png create mode 100644 code/web/api/data/ryzom/interface/mp_buterfly_blue.png create mode 100644 code/web/api/data/ryzom/interface/mp_buterfly_cocoon.png create mode 100644 code/web/api/data/ryzom/interface/mp_cereal.png create mode 100644 code/web/api/data/ryzom/interface/mp_claw.png create mode 100644 code/web/api/data/ryzom/interface/mp_dandelion.png create mode 100644 code/web/api/data/ryzom/interface/mp_dry create mode 100644 code/web/api/data/ryzom/interface/mp_dry wood.png create mode 100644 code/web/api/data/ryzom/interface/mp_dry.png create mode 100644 code/web/api/data/ryzom/interface/mp_dry_wood.png create mode 100644 code/web/api/data/ryzom/interface/mp_dust.png create mode 100644 code/web/api/data/ryzom/interface/mp_egg.png create mode 100644 code/web/api/data/ryzom/interface/mp_eyes.png create mode 100644 code/web/api/data/ryzom/interface/mp_fang.png create mode 100644 code/web/api/data/ryzom/interface/mp_fiber.png create mode 100644 code/web/api/data/ryzom/interface/mp_filament.png create mode 100644 code/web/api/data/ryzom/interface/mp_firefly_abdomen.png create mode 100644 code/web/api/data/ryzom/interface/mp_fish_scale.png create mode 100644 code/web/api/data/ryzom/interface/mp_flowers.png create mode 100644 code/web/api/data/ryzom/interface/mp_fresh_loose_soil.png create mode 100644 code/web/api/data/ryzom/interface/mp_fruit.png create mode 100644 code/web/api/data/ryzom/interface/mp_generic.png create mode 100644 code/web/api/data/ryzom/interface/mp_generic_colorize.png create mode 100644 code/web/api/data/ryzom/interface/mp_gomme.png create mode 100644 code/web/api/data/ryzom/interface/mp_goo_residue.png create mode 100644 code/web/api/data/ryzom/interface/mp_hairs.png create mode 100644 code/web/api/data/ryzom/interface/mp_hoof.png create mode 100644 code/web/api/data/ryzom/interface/mp_horn.png create mode 100644 code/web/api/data/ryzom/interface/mp_horney.png create mode 100644 code/web/api/data/ryzom/interface/mp_insect_fossil.png create mode 100644 code/web/api/data/ryzom/interface/mp_kitin_flesh.png create mode 100644 code/web/api/data/ryzom/interface/mp_kitin_secretion.png create mode 100644 code/web/api/data/ryzom/interface/mp_kitinshell.png create mode 100644 code/web/api/data/ryzom/interface/mp_larva.png create mode 100644 code/web/api/data/ryzom/interface/mp_leaf.png create mode 100644 code/web/api/data/ryzom/interface/mp_leather.png create mode 100644 code/web/api/data/ryzom/interface/mp_liane.png create mode 100644 code/web/api/data/ryzom/interface/mp_lichen.png create mode 100644 code/web/api/data/ryzom/interface/mp_ligament.png create mode 100644 code/web/api/data/ryzom/interface/mp_mandible.png create mode 100644 code/web/api/data/ryzom/interface/mp_meat.png create mode 100644 code/web/api/data/ryzom/interface/mp_moss.png create mode 100644 code/web/api/data/ryzom/interface/mp_mushroom.png create mode 100644 code/web/api/data/ryzom/interface/mp_nail.png create mode 100644 code/web/api/data/ryzom/interface/mp_oil.png create mode 100644 code/web/api/data/ryzom/interface/mp_over_link.png create mode 100644 code/web/api/data/ryzom/interface/mp_parasite.png create mode 100644 code/web/api/data/ryzom/interface/mp_pearl.png create mode 100644 code/web/api/data/ryzom/interface/mp_pelvis.png create mode 100644 code/web/api/data/ryzom/interface/mp_pigment.png create mode 100644 code/web/api/data/ryzom/interface/mp_pistil.png create mode 100644 code/web/api/data/ryzom/interface/mp_plant_fossil.png create mode 100644 code/web/api/data/ryzom/interface/mp_pollen.png create mode 100644 code/web/api/data/ryzom/interface/mp_resin.png create mode 100644 code/web/api/data/ryzom/interface/mp_ronce.png create mode 100644 code/web/api/data/ryzom/interface/mp_rostrum.png create mode 100644 code/web/api/data/ryzom/interface/mp_sap.png create mode 100644 code/web/api/data/ryzom/interface/mp_sawdust.png create mode 100644 code/web/api/data/ryzom/interface/mp_seed.png create mode 100644 code/web/api/data/ryzom/interface/mp_shell.png create mode 100644 code/web/api/data/ryzom/interface/mp_silk_worm.png create mode 100644 code/web/api/data/ryzom/interface/mp_skin.png create mode 100644 code/web/api/data/ryzom/interface/mp_skull.png create mode 100644 code/web/api/data/ryzom/interface/mp_spiders_web.png create mode 100644 code/web/api/data/ryzom/interface/mp_spine.png create mode 100644 code/web/api/data/ryzom/interface/mp_stem.png create mode 100644 code/web/api/data/ryzom/interface/mp_sting.png create mode 100644 code/web/api/data/ryzom/interface/mp_straw.png create mode 100644 code/web/api/data/ryzom/interface/mp_suc.png create mode 100644 code/web/api/data/ryzom/interface/mp_tail.png create mode 100644 code/web/api/data/ryzom/interface/mp_tooth.png create mode 100644 code/web/api/data/ryzom/interface/mp_trunk.png create mode 100644 code/web/api/data/ryzom/interface/mp_whiskers.png create mode 100644 code/web/api/data/ryzom/interface/mp_wing.png create mode 100644 code/web/api/data/ryzom/interface/mp_wood.png create mode 100644 code/web/api/data/ryzom/interface/mp_wood_node.png create mode 100644 code/web/api/data/ryzom/interface/mw_2h_axe.png create mode 100644 code/web/api/data/ryzom/interface/mw_2h_lance.png create mode 100644 code/web/api/data/ryzom/interface/mw_2h_mace.png create mode 100644 code/web/api/data/ryzom/interface/mw_2h_sword.png create mode 100644 code/web/api/data/ryzom/interface/mw_axe.png create mode 100644 code/web/api/data/ryzom/interface/mw_dagger.png create mode 100644 code/web/api/data/ryzom/interface/mw_lance.png create mode 100644 code/web/api/data/ryzom/interface/mw_mace.png create mode 100644 code/web/api/data/ryzom/interface/mw_staff.png create mode 100644 code/web/api/data/ryzom/interface/mw_sword.png create mode 100644 code/web/api/data/ryzom/interface/no_action.png create mode 100644 code/web/api/data/ryzom/interface/num_slash.png create mode 100644 code/web/api/data/ryzom/interface/op_back.png create mode 100644 code/web/api/data/ryzom/interface/op_over_break.png create mode 100644 code/web/api/data/ryzom/interface/op_over_less.png create mode 100644 code/web/api/data/ryzom/interface/op_over_more.png create mode 100644 code/web/api/data/ryzom/interface/pa_anklet.png create mode 100644 code/web/api/data/ryzom/interface/pa_back.png create mode 100644 code/web/api/data/ryzom/interface/pa_bracelet.png create mode 100644 code/web/api/data/ryzom/interface/pa_diadem.png create mode 100644 code/web/api/data/ryzom/interface/pa_earring.png create mode 100644 code/web/api/data/ryzom/interface/pa_over_break.png create mode 100644 code/web/api/data/ryzom/interface/pa_over_less.png create mode 100644 code/web/api/data/ryzom/interface/pa_over_more.png create mode 100644 code/web/api/data/ryzom/interface/pa_pendant.png create mode 100644 code/web/api/data/ryzom/interface/pa_ring.png create mode 100644 code/web/api/data/ryzom/interface/profile.png create mode 100644 code/web/api/data/ryzom/interface/protect_amber.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_0.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_1.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_2.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_3.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_4.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_6.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_primas.png create mode 100644 code/web/api/data/ryzom/interface/pvp_ally_ranger.png create mode 100644 code/web/api/data/ryzom/interface/pvp_aura.png create mode 100644 code/web/api/data/ryzom/interface/pvp_aura_mask.png create mode 100644 code/web/api/data/ryzom/interface/pvp_boost.png create mode 100644 code/web/api/data/ryzom/interface/pvp_boost_mask.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_0.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_1.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_2.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_3.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_4.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_6.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_marauder.png create mode 100644 code/web/api/data/ryzom/interface/pvp_enemy_trytonist.png create mode 100644 code/web/api/data/ryzom/interface/pw_4.png create mode 100644 code/web/api/data/ryzom/interface/pw_5.png create mode 100644 code/web/api/data/ryzom/interface/pw_6.png create mode 100644 code/web/api/data/ryzom/interface/pw_7.png create mode 100644 code/web/api/data/ryzom/interface/pw_heavy.png create mode 100644 code/web/api/data/ryzom/interface/pw_light.png create mode 100644 code/web/api/data/ryzom/interface/pw_medium.png create mode 100644 code/web/api/data/ryzom/interface/quest_coeur.png create mode 100644 code/web/api/data/ryzom/interface/quest_foie.png create mode 100644 code/web/api/data/ryzom/interface/quest_jeton.png create mode 100644 code/web/api/data/ryzom/interface/quest_langue.png create mode 100644 code/web/api/data/ryzom/interface/quest_louche.png create mode 100644 code/web/api/data/ryzom/interface/quest_oreille.png create mode 100644 code/web/api/data/ryzom/interface/quest_patte.png create mode 100644 code/web/api/data/ryzom/interface/quest_poils.png create mode 100644 code/web/api/data/ryzom/interface/quest_queue.png create mode 100644 code/web/api/data/ryzom/interface/quest_ticket.png create mode 100644 code/web/api/data/ryzom/interface/r2_live.png create mode 100644 code/web/api/data/ryzom/interface/r2_live_over.png create mode 100644 code/web/api/data/ryzom/interface/r2_live_pushed.png create mode 100644 code/web/api/data/ryzom/interface/r2_palette_entities.png create mode 100644 code/web/api/data/ryzom/interface/requirement.png create mode 100644 code/web/api/data/ryzom/interface/rm_f.png create mode 100644 code/web/api/data/ryzom/interface/rm_f_upgrade.png create mode 100644 code/web/api/data/ryzom/interface/rm_h.png create mode 100644 code/web/api/data/ryzom/interface/rm_h_upgrade.png create mode 100644 code/web/api/data/ryzom/interface/rm_m.png create mode 100644 code/web/api/data/ryzom/interface/rm_m_upgrade.png create mode 100644 code/web/api/data/ryzom/interface/rm_r.png create mode 100644 code/web/api/data/ryzom/interface/rm_r_upgrade.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_200.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_201.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_202.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_203.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_204.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_205.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_206.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_207.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_advanced.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_elementary.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_roleplay.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task_certificats.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task_convert.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task_elementary.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task_generic.png create mode 100644 code/web/api/data/ryzom/interface/rpjob_task_upgrade.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_200_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_200_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_200_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_201_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_201_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_201_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_202_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_202_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_202_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_203_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_203_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_203_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_204_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_204_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_204_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_205_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_205_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_205_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_206_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_206_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_206_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_207_a.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_207_b.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_207_c.png create mode 100644 code/web/api/data/ryzom/interface/rpjobitem_certifications.png create mode 100644 code/web/api/data/ryzom/interface/rw_autolaunch.png create mode 100644 code/web/api/data/ryzom/interface/rw_bowgun.png create mode 100644 code/web/api/data/ryzom/interface/rw_grenade.png create mode 100644 code/web/api/data/ryzom/interface/rw_harpoongun.png create mode 100644 code/web/api/data/ryzom/interface/rw_launcher.png create mode 100644 code/web/api/data/ryzom/interface/rw_pistol.png create mode 100644 code/web/api/data/ryzom/interface/rw_pistolarc.png create mode 100644 code/web/api/data/ryzom/interface/rw_rifle.png create mode 100644 code/web/api/data/ryzom/interface/sapload.png create mode 100644 code/web/api/data/ryzom/interface/sh_buckler.png create mode 100644 code/web/api/data/ryzom/interface/sh_large_shield.png create mode 100644 code/web/api/data/ryzom/interface/small_task_craft.png create mode 100644 code/web/api/data/ryzom/interface/small_task_done.png create mode 100644 code/web/api/data/ryzom/interface/small_task_failed.png create mode 100644 code/web/api/data/ryzom/interface/small_task_fight.png create mode 100644 code/web/api/data/ryzom/interface/small_task_forage.png create mode 100644 code/web/api/data/ryzom/interface/small_task_generic.png create mode 100644 code/web/api/data/ryzom/interface/small_task_guild.png create mode 100644 code/web/api/data/ryzom/interface/small_task_rite.png create mode 100644 code/web/api/data/ryzom/interface/small_task_travel.png create mode 100644 code/web/api/data/ryzom/interface/spe_beast.png create mode 100644 code/web/api/data/ryzom/interface/spe_com.png create mode 100644 code/web/api/data/ryzom/interface/spe_inventory.png create mode 100644 code/web/api/data/ryzom/interface/spe_labs.png create mode 100644 code/web/api/data/ryzom/interface/spe_memory.png create mode 100644 code/web/api/data/ryzom/interface/spe_options.png create mode 100644 code/web/api/data/ryzom/interface/spe_status.png create mode 100644 code/web/api/data/ryzom/interface/stimulating_water.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_attack.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_config.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_disband.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_disengage.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_extract.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_invite.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_kick.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_move.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_run.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_sit.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_stand.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_stop.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_talk.png create mode 100644 code/web/api/data/ryzom/interface/tb_action_walk.png create mode 100644 code/web/api/data/ryzom/interface/tb_animals.png create mode 100644 code/web/api/data/ryzom/interface/tb_config.png create mode 100644 code/web/api/data/ryzom/interface/tb_connection.png create mode 100644 code/web/api/data/ryzom/interface/tb_contacts.png create mode 100644 code/web/api/data/ryzom/interface/tb_desk_1.png create mode 100644 code/web/api/data/ryzom/interface/tb_desk_2.png create mode 100644 code/web/api/data/ryzom/interface/tb_desk_3.png create mode 100644 code/web/api/data/ryzom/interface/tb_desk_4.png create mode 100644 code/web/api/data/ryzom/interface/tb_faction.png create mode 100644 code/web/api/data/ryzom/interface/tb_forum.png create mode 100644 code/web/api/data/ryzom/interface/tb_guild.png create mode 100644 code/web/api/data/ryzom/interface/tb_help2.png create mode 100644 code/web/api/data/ryzom/interface/tb_keys.png create mode 100644 code/web/api/data/ryzom/interface/tb_macros.png create mode 100644 code/web/api/data/ryzom/interface/tb_mail.png create mode 100644 code/web/api/data/ryzom/interface/tb_mode.png create mode 100644 code/web/api/data/ryzom/interface/tb_mode_dodge.png create mode 100644 code/web/api/data/ryzom/interface/tb_mode_parry.png create mode 100644 code/web/api/data/ryzom/interface/tb_over.png create mode 100644 code/web/api/data/ryzom/interface/tb_support.png create mode 100644 code/web/api/data/ryzom/interface/tb_team.png create mode 100644 code/web/api/data/ryzom/interface/tb_windows.png create mode 100644 code/web/api/data/ryzom/interface/tetekitin.png create mode 100644 code/web/api/data/ryzom/interface/to_ammo.png create mode 100644 code/web/api/data/ryzom/interface/to_armor.png create mode 100644 code/web/api/data/ryzom/interface/to_cooking_pot.png create mode 100644 code/web/api/data/ryzom/interface/to_fishing_rod.png create mode 100644 code/web/api/data/ryzom/interface/to_forage.png create mode 100644 code/web/api/data/ryzom/interface/to_hammer.png create mode 100644 code/web/api/data/ryzom/interface/to_jewelry_hammer.png create mode 100644 code/web/api/data/ryzom/interface/to_jewels.png create mode 100644 code/web/api/data/ryzom/interface/to_leathercutter.png create mode 100644 code/web/api/data/ryzom/interface/to_melee.png create mode 100644 code/web/api/data/ryzom/interface/to_needle.png create mode 100644 code/web/api/data/ryzom/interface/to_pestle.png create mode 100644 code/web/api/data/ryzom/interface/to_range.png create mode 100644 code/web/api/data/ryzom/interface/to_searake.png create mode 100644 code/web/api/data/ryzom/interface/to_spade.png create mode 100644 code/web/api/data/ryzom/interface/to_stick.png create mode 100644 code/web/api/data/ryzom/interface/to_tunneling_knife.png create mode 100644 code/web/api/data/ryzom/interface/to_whip.png create mode 100644 code/web/api/data/ryzom/interface/to_wrench.png create mode 100644 code/web/api/data/ryzom/interface/tp_caravane.png create mode 100644 code/web/api/data/ryzom/interface/tp_kami.png create mode 100644 code/web/api/data/ryzom/interface/us_back_0.png create mode 100644 code/web/api/data/ryzom/interface/us_back_1.png create mode 100644 code/web/api/data/ryzom/interface/us_back_2.png create mode 100644 code/web/api/data/ryzom/interface/us_back_3.png create mode 100644 code/web/api/data/ryzom/interface/us_back_4.png create mode 100644 code/web/api/data/ryzom/interface/us_back_5.png create mode 100644 code/web/api/data/ryzom/interface/us_back_6.png create mode 100644 code/web/api/data/ryzom/interface/us_back_7.png create mode 100644 code/web/api/data/ryzom/interface/us_back_8.png create mode 100644 code/web/api/data/ryzom/interface/us_back_9.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_0.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_1.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_2.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_3.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_4.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_5.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_6.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_7.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_8.png create mode 100644 code/web/api/data/ryzom/interface/us_ico_9.png create mode 100644 code/web/api/data/ryzom/interface/us_over_0.png create mode 100644 code/web/api/data/ryzom/interface/us_over_1.png create mode 100644 code/web/api/data/ryzom/interface/us_over_2.png create mode 100644 code/web/api/data/ryzom/interface/us_over_3.png create mode 100644 code/web/api/data/ryzom/interface/us_over_4.png create mode 100644 code/web/api/data/ryzom/interface/w_am_logo.png create mode 100644 code/web/api/data/ryzom/interface/w_leader.png create mode 100644 code/web/api/data/ryzom/interface/w_major.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_anklet.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_bracelet.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_diadem.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_earring.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_pendant.png create mode 100644 code/web/api/data/ryzom/interface/w_pa_ring.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id0.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id1.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id2.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id3.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id4.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id5.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id6.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id7.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id8.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_id9.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id0.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id1.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id2.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id3.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id4.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id5.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id6.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id7.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id8.png create mode 100644 code/web/api/data/ryzom/interface/w_slot_shortcut_shift_id9.png create mode 100644 code/web/api/data/ryzom/interface/xp_cat_green.png create mode 100644 code/web/api/server/guilds.php create mode 100644 code/web/api/server/hmagic.php create mode 100644 code/web/api/server/item_icon.php create mode 100644 code/web/api/server/time.php create mode 100644 code/web/api/time.php diff --git a/code/web/api/client/config.php.default b/code/web/api/client/config.php.default index 3c8ca869d..6cdbff401 100644 --- a/code/web/api/client/config.php.default +++ b/code/web/api/client/config.php.default @@ -17,4 +17,4 @@ */ // Url where player_auth.php is located -define('RYAPI_AUTH_SCRIPT', ''); +define('RYAPI_AUTH_SCRIPT', ''); \ No newline at end of file diff --git a/code/web/api/client/time.php b/code/web/api/client/time.php new file mode 100644 index 000000000..4b81db42a --- /dev/null +++ b/code/web/api/client/time.php @@ -0,0 +1,46 @@ +. + */ + +$tick_cache_timeout = 60; + +function ryzom_time_tick() { + $fn = RYAPI_URL.'data/cache/game_cycle.ticks'; + $handle = fopen($fn, "r"); + $version = fread($handle, 1); + $raw_tick = fread($handle, 4); + fclose($handle); + $arr = unpack("V", $raw_tick); + $tick = $arr[1]; + return sprintf("%u", $tick & 0xffffffff); +} + + +/** + * Takes a computed ryzom time array and returns a SimpleXMLElement + */ +function ryzom_time_xml($rytime) { + global $tick_cache_timeout; + $out = ryzom_time_xml_without_cache($rytime); + $filename = RYAPI_URL.'data/cache/game_cycle.ticks'; + $cache = $out->addChild('cache'); + $cache->addAttribute('created', filemtime($filename)); + $cache->addAttribute('expire', (filemtime($filename)+$tick_cache_timeout)); + return $out; +} + +?> \ No newline at end of file diff --git a/code/web/api/common/actionPage.php b/code/web/api/common/actionPage.php new file mode 100644 index 000000000..735a33f32 --- /dev/null +++ b/code/web/api/common/actionPage.php @@ -0,0 +1,161 @@ +. + */ + +class ryActionClass { + public $classname; + public $instance; + public $args; + public $requires; + + function __construct($classname, $instance, $args, $requires) { + $this->classname = $classname; + $this->instance = $instance; + $this->args = $args; + $this->requires = $requires; + } + +} + +class ryActionPage { + + private static $classesArgs = array(); + private static $myClasses = array(); + private static $aliases = array(); + private static $messages; + private static $haveMessage; + protected static $id; + + public $instanceName; + public $myMethods = array(); + + function __construct() { + } + + function addMethods($child_class) { + if (is_array($child_class)) { + foreach ($child_class as $c_class) + $this->myMethods = array_merge($this->myMethods, get_class_methods($c_class)); + } else { + $this->myMethods = get_class_methods($child_class); + } + } + + static function addClass($name, $classname, $args=array(), $requires=NULL) { + self::$myClasses[$name] = new ryActionClass($classname, NULL, $args, $requires); + } + + static function addAlias($aliasname, $name) { + self::$aliases[$aliasname] = $name; + } + + static function initInstance($listener) { + $i = self::$myClasses[$listener]; + if (!$i->instance) { + // requires + if ($i->requires) { + self::initInstance($i->requires); + } + if ($i->args) + $i->instance = new $i->classname($listener, $i->args); + else + $i->instance = new $i->classname($listener); + $i->instance->addMethods($i->classname); + $i->instance->instanceName = $listener; + + } + return $i->instance; + } + + static function getInstance($listener) { + return self::initInstance($listener); + } + + static function _addMSG($type='OK', $message='') { + self::$messages[] = array($type, $message); + return ''; + } + + function addMSG($type='OK', $action='', $message='') { + self::$messages[] = array($type, $message); + $this->haveMessage = $action; + return ''; + } + + static function getMSGs() { + return self::$messages; + } + + static function call($action, $url_params) { + $action_params = explode('_', $action); + + if (count($action_params) != 2) + return self::_addMSG('ERR', 'Action call error : bad params of ['.$action.']'); + + list($listener, $call) = $action_params; + if (array_key_exists($listener,self::$aliases)) + $listener = self::$aliases[$listener]; + + if (!array_key_exists($listener, self::$myClasses)) + return self::_addMSG('ERR', 'Action call error : class ['. $listener .'] not found'); + + $i = self::initInstance($listener); + + if (in_array('action'.$call, $i->myMethods)) { + $i->haveMessage = NULL; + $ret = call_user_func(array($i, 'action'.$call), $url_params); + if (!isset($_SESSION['last_action']) or $action != $_SESSION['last_action']) + $_SESSION['last_action'] = $action; + $msg = $i->haveMessage; + if ($msg and ($msg != $action)) { + $ret = self::call($msg, $url_params); + return self::_addMSG('OK', $ret); + } + return self::_addMSG('OK', $ret); + } else + return self::_addMSG('ERR', 'Action call error : action ['. $call .'] of ['. $listener .'] not found'); + } +} + +function callAction($action) { + $c = ''; + ryActionPage::call($action, ryzom_get_params()); + $msgs = ryActionPage::getMSGs(); + + foreach ($msgs as $msg) { + if ($msg[0] == 'HEADER') + $c .= $msg[1]; + } + + foreach ($msgs as $msg) { + if ($msg[0] == 'ERR') + $c .= _s('message error', $msg[1]); + else if ($msg[0] == 'MSG') + $c .= _s('message', $msg[1]); + else if ($msg[0] == 'WARNING') + $c .= _s('message warning', $msg[1]); + else if ($msg[0] != 'HEADER') + $c .= $msg[1]; + } + return $c; +} + + + + +?> diff --git a/code/web/api/common/auth.php b/code/web/api/common/auth.php index 1d52c5d8e..3f06d28d5 100644 --- a/code/web/api/common/auth.php +++ b/code/web/api/common/auth.php @@ -1,37 +1,94 @@ . + */ + + +function ryzom_app_authenticate(&$user, $ask_login=true, $welcome_message='', $webprivs=true) { $name = ryzom_get_param('name'); - $authserver = ryzom_get_param('authserver'); - $authkey = ryzom_get_param('authkey'); + $urluser = ryzom_get_param('user'); // user serialization send by auth server + $urlusercheksum = ryzom_get_param('checksum'); // user serialization checksum + $authkey = ryzom_get_param('authkey'); // InGame authkey $lang = ryzom_get_param('lang'); - $cid = ryzom_get_param('cid', ''); - $is_ingame = false; + $cid = intval(ryzom_get_param('cid')); + $is_auth_ingame = false; // we have to set the $user['lang'] even for anonymous user or we cannot display the test in the right langage if($lang == '') { - $l = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); - if($l=='fr'||$l=='en'||$l=='de'||$l=='ru'||$l=='es') + $l = isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])?substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2):'en'; + if ($l=='fr'||$l=='en'||$l=='de'||$l=='ru'||$l=='es') $lang = $l; else $lang = 'en'; } + if ($lang!='fr'&&$lang!='en'&&$lang!='de'&&$lang!='ru'&&$lang!='es') + $lang = 'en'; + $user['message'] = ''; $user['lang'] = $lang; - $user['ig'] = false; - - if ((isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Ryzom')) || ryzom_get_param('ig')) { + $user['groups'] = array(); + + if ((isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Ryzom')) || ryzom_get_param('ig')) $user['ig'] = true; + else + $user['ig'] = false; + + if (isset($_SESSION['user'])) { + if (ryzom_get_param('action') == 'logout') + unset($_SESSION['user']); + else { + $_SESSION['user']['ig'] = $user['ig']; + define('RYZOM_IG', $user['ig']); + $user = $_SESSION['user']; + return true; + } + } + + if ($urluser && $urlusercheksum) { + // Check $authuser (used to test app from another server ingame) + if (hash_hmac('sha1', $urluser, RYAPI_AUTH_KEY) == $urlusercheksum) { + $ig = $user['ig']; + $user = array_merge($user, unserialize(base64_decode($urluser))); + $user['ig'] = $ig; + if (!isset($user['groups'])) + $user['groups'] = array(); + define('RYZOM_IG', $user['ig']); + $_SESSION['user'] = $user; + return true; + } + } + + if ($user['ig']) { // Ingame $shardid = ryzom_get_param('shardid'); - if (!ryzom_authenticate_ingame($shardid, $cid, $name, $authkey)) - return false; - $is_ingame = true; + $error_message = ''; + if (ryzom_authenticate_ingame($shardid, $cid, $name, $authkey) || ryzom_authenticate_with_session($name, $cid, $error_message)) { + $is_auth_ingame = true; + } } else { - // Outgame : Use session + // Outgame or bad ingame auth (external server) : Use session $error_message = ''; if (!ryzom_authenticate_with_session($name, $cid, $error_message)) { + define('RYZOM_IG', false); if ($ask_login) { - $c = ''; + + if ($error_message) + $c = '

'._t($error_message).'

'; + else + $c = ''; if (!$welcome_message) $welcome_message = 'The application '._t(APP_NAME).' require authentication. Please enter your credentials'; @@ -47,18 +104,40 @@ function ryzom_app_authenticate(&$user, $ask_login=true, $welcome_message='') { } } - if ($lang) - $_SESSION['lang'] = $lang; + $_SESSION['lang'] = $lang; + define('RYZOM_IG', $user['ig']); // get user informations - $user = ryzom_user_get_info($cid); - $user['lang'] = $_SESSION['lang']; + $ig = $user['ig']; + $user = ryzom_user_get_info($cid, $webprivs); + if (isset($user['creation_date'])) - $user['id'] = ryzom_get_user_id($cid, $user['char_name'], $user['creation_date']); - if ($is_ingame && $user['last_played_date'] != '0') - $user['ig'] = true; + $user['id'] = ryzom_get_user_id($cid, $user['char_name'], $user['creation_date'], $user); + + $user['ig'] = $ig; + $user['lang'] = $_SESSION['lang']; + if (!isset($user['groups'])) + $user['groups'] = array(); + + if ($is_auth_ingame && $user['last_played_date'] != '0') + $user['auth_ig'] = true; else - $user['ig'] = false; + $user['auth_ig'] = false; + + if (!isset($_SESSION['translater_mode']) || ryzom_get_param('translate_this') == '0') + $_SESSION['translater_mode'] = false; + + // Set/unset translation mode + if (in_array('WTRS', $user['groups']) && ryzom_get_param('translate_this') == '1') + $_SESSION['translater_mode'] = true; + + $user['translation_mode'] = $_SESSION['translater_mode']; + + ryzom_unset_url_param('translate_this'); + + if (isset($user['last_played_date'])) + $_SESSION['last_played_date'] = $user['last_played_date']; + // don't send this informations to external apps unset($user['last_played_date']); unset($user['creation_date']); return true; diff --git a/code/web/api/common/bbCode.php b/code/web/api/common/bbCode.php new file mode 100644 index 000000000..e45dfadb9 --- /dev/null +++ b/code/web/api/common/bbCode.php @@ -0,0 +1,988 @@ +. + */ + +// setup bbCode formatter + +bbCode::$ig = RYZOM_IG; + +/** + * Image proxy + */ +if(!defined('IMG_PROXY')){ + $url = 'http://'.$_SERVER['HTTP_HOST'].'/app_forum/tools/imageproxy.php'; + define('IMG_PROXY', $url); +} +if (!function_exists('proxy_image_url')) { + function proxy_image_url($href, $attrs=''){ + return IMG_PROXY.'?'.($attrs != '' ? $attrs.'&' : '').'url='.urlencode($href); + } +} + + +abstract class bbCodeParser { + + /** + * @var bool + */ + private $_ig; + + /** + * @var array + */ + private $tags_ignore; + private $tags_block_open; + private $tags_block_close; + private $tags_ignore_depth; + + /** + * @var array + */ + private $open_tags; + + /** + * @var string + */ + private $last_closed_tag; + + /** + * @var int + */ + private $current_tag; + + /** + * @var array + */ + private $state; + + /** + * @param bool $ig if true, use ingame markup + */ + function __construct($ig) { + $this->_ig = $ig; + + // ignore bbcode between these tags + $this->tags_ignore = array( + 'noparse', 'code', + 'url', 'img', 'mail', 'page', 'forum', 'topic', 'post', 'wiki', 'time', 'date' + ); + + // these create block level html code, so '\n' or ' ' or '\t' around them needs to be cleared + $this->tags_block_open = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'quote', 'list', 'p'); + $this->tags_block_close = $this->tags_block_open; + if ($this->_ig) { + // ingame

is not block level when closing, so dont strip there + $key = array_search('p', $this->tags_block_close, true); + unset($this->tags_block_close[$key]); + } + + $this->state = array(); + + // reset internals + $this->reset(); + } + + /** + * Format bbcode tag + * + * @param string $tag tag name + * @param string $open open markup + * @param string $close close markup + * @param string $attr tag attributes + * @param string $text text between tags + */ + abstract function format($tag, $open, $close, $attr, $text); + + /** + * Wrapper to call Child->format(...) + * + * @param array $tag assoc array with tag info + * @return string + */ + function handle_tag($tag) { + return $this->format($tag['tag'], $tag['open'], $tag['close'], $tag['attr'], $tag['text']); + } + + /** + * Reset internals + */ + function reset() { + $this->current_tag = 0; + $this->tags_ignore_depth = 0; + + // 0'th position is used as result + $this->open_tags = array( + 0 => array('tag' => '', 'open' => '', 'close' => '', 'attr' => '', 'text' => '') + ); + + $this->last_closed_tag = false; + } + + /** + * Save working state + */ + private function _state_save() { + $this->state[] = array($this->current_tag, $this->tags_ignore_depth, $this->open_tags, $this->last_closed_tag); + $this->reset(); + } + + /** + * Restore working state + */ + private function _state_restore() { + if (!empty($this->state)) { + list($this->current_tag, $this->tags_ignore_depth, $this->open_tags, $this->last_closed_tag) = array_pop($this->state); + } + } + + /** + * Main worker. Parse $text for bbCode tags + * + * NOTE: Text must already be safe for HTML, ie. treated with htmlspecialchars() + * + * @param string $text + * @return string formatted string + */ + function bbcode($text) { + $text = str_replace("\r\n", "\n", $text); + + $split = preg_split('/(\[[a-zA-Z0-9_\/]*?(?:[= ].*?)?\])/', $text, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); + + foreach ($split as $chunk) { + if (substr($chunk, 0, 1) == '[' && substr($chunk, -1, 1) == ']') { + if (substr($chunk, 0, 2) == '[/') { + $this->close($chunk); + } else { + $this->open($chunk); + } + } else { + $this->text($chunk); + } + } + + return $this->result(); + } + + /** + * Push tag with args to stack + * Do not strip whitespace because tag might be invalid + * + * @param string $chunk full tag string, eg. [tag=attr] + */ + function open($chunk) { + list($tag, $attr) = $this->split_params($chunk); + + // test for [noparse] + if ($this->tags_ignore_depth > 0) { + $this->text($chunk); + } else { + $this->current_tag++; + // remember tag, attributes and complete string that was used in markup + $this->open_tags[$this->current_tag] = array('tag' => $tag, 'attr' => $attr, 'open' => $chunk, 'close' => '', 'text' => ''); + } + + if (in_array($tag, $this->tags_ignore)) { + $this->tags_ignore_depth++; + } + } + + /** + * Close tag and call tag handler to format output + * + * @param $chunk full tag string, eg. [/tag] + */ + function close($chunk) { + // extract tag name from [/name] + $tag = strtolower(substr($chunk, 2, -1)); + + if ($this->tags_ignore_depth > 0 && in_array($tag, $this->tags_ignore)) { + $this->tags_ignore_depth--; + } + + // stack underrun + if ($this->current_tag < 0) { + $this->text($chunk); + return; + } + + // ignore block + if ($this->tags_ignore_depth > 0) { + $this->text($chunk); + return; + } + + // tag mismatch + if ($this->open_tags[$this->current_tag]['tag'] !== $tag) { + // try to find first open tag for this + $key = false; + for ($i = $this->current_tag - 1; $i > 0; $i--) { + if (isset($this->open_tags[$i]['tag']) && $this->open_tags[$i]['tag'] === $tag) { + $key = $i; + break; + } + } + if ($key === false) { + $this->text($chunk); + return; + } + + // tag is open so we need to 'rewind' a bit + for ($i = $this->current_tag; $i > $key; $i--) { + $tmp_tag = $this->pop_stack(); + $this->text($tmp_tag['open'] . $tmp_tag['text']); + } + } + + // close tag + $open = $this->pop_stack(); + + // handle bbcode + $open['close'] = $chunk; + + $block_level = false; + if (in_array($tag, $this->tags_block_open)) { + $block_level = true; + // for block level element, trim whitespace from inside tag + // [tag]...text...[/tag] + $open['text'] = $this->trim_ws($open['text']); + } + $result = $this->handle_tag($open); + + // strip whitespace from text before tag 'text...[tag]' + if ($block_level) { + $ts = $this->rtrim_ws($this->open_tags[$this->current_tag]['text']); + $this->open_tags[$this->current_tag]['text'] = $ts; + } + + $this->text($result); + + $this->last_closed_tag = $open['tag']; + } + + function text($text) { + // strip whitespace after closing '[/tag]...text' + if (in_array($this->last_closed_tag, $this->tags_block_close)) { + $text = $this->ltrim_ws($text); + } + $this->open_tags[$this->current_tag]['text'] .= $text; + + $this->last_closed_tag = false; + } + + function result() { + // close tags that are still open + while ($this->current_tag > 0) { + $open = $this->pop_stack(); + + if ($this->tags_ignore_depth > 0) { + $this->tags_ignore_depth--; + // need to reparse text that's after ignore tag + $this->_state_save(); + $text = $open['open'] . $this->bbcode($open['text']); + $this->_state_restore(); + } else { + // tag was not closed proprely, include start tag with result + $text = $open['open'] . $open['text']; + } + + $this->text($text); + }; + + return $this->open_tags[0]['text']; + } + + /** + * Pop tag and text from stack and return them + * + * @return array [0] = tag, [1] = text + */ + function pop_stack() { + // remove from stack + $open = $this->open_tags[$this->current_tag]; + unset($this->open_tags[$this->current_tag]); + $this->current_tag--; + + return $open; + } + + /** + * Trim from end of string + * 'text...\s{0,}\n{1}\s{0,}' + * + * @param string $ts + * @return string + */ + function rtrim_ws($ts){ + // we want to get rid of all spaces/tabs, but only single \n, so rtrim($ts, " \t\n\r") would not work + $ts = rtrim($ts, " \t"); + if (substr($ts, -1, 1) === "\n") { + $ts = substr($ts, 0, -1); + $ts = rtrim($ts, " \t"); + } + return $ts; + } + + /** + * Trim from start of string + * '\s{0,}\n{1}...text' + * + * @param string $ts + * @return string + */ + function ltrim_ws($ts){ + // we want to get rid of all spaces/tabs, but only single \n, so ltrim($ts, " \t\n\r") would not work + $ts = ltrim($ts, " \t"); + if (substr($ts, 0, 1) === "\n") { + $ts = substr($ts, 1); + } + return $ts; + } + + /** + * Trim from both sides + * '\s{0,}\n{1}...text...\s{0,}\n{1}\s{0,} + * + * @param string $ts + * @return string + */ + function trim_ws($ts){ + $ts = $this->ltrim_ws($ts); + $ts = $this->rtrim_ws($ts); + return $ts; + } + + /** + * Extract tag parameters from [tag=params] or [tag key1=val1 key2=val2] + * + * @param type $tag + * @return type + */ + function split_params($chunk) { + if (substr($chunk, 0, 1) == '[') { + $b = '\['; + $e = '\]'; + } else { + $b = ''; + $e = ''; + } + // [1] [2] [3] + if (preg_match('/^' . $b . '([\*a-zA-Z0-9]*?)' . '(=| )' . '(.*?)' . $e . '$/', $chunk, $match)) { + $tagName = strtolower($match[1]); + if ($match[2] == '=') { + // = means single parameter + $tagParam = $match[3]; + } else { + // means multiple parameters + $tagParam = array(); + $args = preg_split('/[ ]/', $match[3], null, PREG_SPLIT_NO_EMPTY); + foreach ($args as $arg) { + $pairs = explode('=', $arg); + // preg_replace will remove possible quotes around value + if (isset($pairs[1])) { + $tagParam[strtolower($pairs[0])] = preg_replace('@("|\'|)(.*?)\\1@', '$2', $pairs[1]); + } else { + $tagParam[] = preg_replace('@("|\'|)(.*?)\\1@', '$2', $pairs[0]); + } + } + } + } else { + if (substr($chunk, 0, 1) == '[' && substr($chunk, -1, 1) == ']') { + $chunk = substr($chunk, 1, -1); + } + $tagName = strtolower($chunk); + $tagParam = ''; + } + return array($tagName, $tagParam); + } + +} + +class bbCode extends bbCodeParser { + static $legacy_sync = 1348956841; + static $legacy_shard = array( + 'ani' => 2363920179, + 'lea' => 2437578274, + 'ari' => 2358620001, + ); + + static $ig = false; + static $timezone = 'UTC'; + static $clock12h = false; + static $shardid = false; + static $lang = 'en'; + static $disabledTags = array(); + // + const COLOR_P = '#d0d0d0'; // normal text + // + const COLOR_BBCODE_TAG = '#444444'; + + static function bbDisabled($tag) { + return in_array(strtolower($tag), self::$disabledTags); + } + + static function getFontSize($value) { + $size = 16; + switch (strtolower($value)) { + case '1': case 'xx-small': $size = 9; break; + case '2': case 'x-small' : $size = 10; break; + case '3': case 'small' : $size = 13; break; + case '4': case 'medium' : $size = 16; break; + case '5': case 'large' : $size = 18; break; + case '6': case 'x-large' : $size = 24; break; + case '7': case 'xx-large': $size = 32; break; + //case '8': case 'smaller' : break; + //case '9': case 'larger' : break; + } + return $size; + } + + static function bb_noparse($code) { + return preg_replace(array('/\[/', '/\]/'), array('[', ']'), $code); + } + + static function bb_code($code) { + return '

' . self::bb_noparse($code) . '
'; + } + + static function bb_list($list) { + $result = ''; + $list = str_replace("\n[", '[', $list); + $result = '
    ' . preg_replace('/\s*\[\*\]\s*/is', "
  • ", $list) . '
'; + return preg_replace('#
    \s*#is', '
      ', $result); + } + + static function bb_quote($author, $text) { + if (self::$ig) { + // prevents [color] tag to take over color + $author = self::bb_color(self::COLOR_P, $author); + $text = self::bb_color(self::COLOR_P, $text); + // left/right border, top/bottom border height + $l = ''; + $r = ''; + return // 98% gives bit padding on the right + '' . + '' . // top padding - no border + '' . $l . '' . $r . '' . // top border + '' . $l . '' . $r . '' . // author top padding + '' . $l . '' . $r . '' . // author + '' . $l . '' . $r . '' . // author bottom padding + '' . $l . '' . $r . '' . // quote top padding + '' . $l . '' . $r . '' . // quote + '' . $l . '' . $r . '' . // quote bottom padding + '' . $l . '' . $r . '' . // bottom border + '' . // bottom padding - no border + '
      ' . $author . '
      ' . $text . '
      '; + } else { + return '' . + '
      ' . + '' . $author . '' . + '
      ' . $text . '
      ' . + '
      '; + } + } + + static function bb_h($nr, $color, $text) { + $tag = 'h' . $nr; + + if (self::$ig) { + if ($color != '') { + $text = '' . $text . ''; + } + return '<' . $tag . '>' . $text . ''; + } else { + if ($color != '') { + $style = ' style="color: ' . $color . ';"'; + } else { + $style = ''; + } + return '<' . $tag . $style . '>' . $text . ''; + } + } + + static function bb_url($href, $text) { + // "http://..../" remove " if present + if (substr($href, 0, 6) == '"') { + if (substr($href, -6) == '"') { + $href = substr($href, 6, -6); + } else { + $href = substr($href, 6); + } + } + + if ($href == '') + $href = $text; + if ($text == '') { + $text = $href; + $text = wordwrap($text, 65, ' ', true); + } + + $disable = self::bbDisabled('url'); + // if not disabled and in ryzom and is proper url (:///) + if (!$disable && self::$ig) { + $url = @parse_url(strtolower($href)); + $disable = true; + if (!empty($url['scheme']) && !empty($url['host'])) { + if (in_array($url['scheme'], array('http', 'https'))) { + if (in_array($url['host'], array('app.ryzom.com'))) { + if (empty($url['query']) || stripos($url['query'], 'redirect') === false) { + // http://atys.ryzom.com/ + // and does not contain redirect + // - allow url in game browser + $disable = false; + } + } + } + } // !empty + }// isRYZOM + + if ($disable) { + // empty href will give proper link color without 'underline' - perfect for 'disabled' links + if ($href == '') { + $text = '' . $text . ''; + } else { + $href = wordwrap($href, 65, ' ', true); + $text = wordwrap($text, 65, ' ', true); + $text = '' . $text . ' ' . self::bb_color(self::COLOR_BBCODE_TAG, '(' . $href . ')'); + } + return $text; + } + + // make sure http:// (or ftp:// or mailto:// etc is present), if not, add it + if (!preg_match('#://#', $href)) { + $href = 'http://' . $href; + } + + return sprintf('%s', $href, $text); + } + + static function bb_img($attr, $href) { + if (self::bbDisabled('img')) { + return self::bb_noparse('[img]' . $href . '[/img]'); + } + // $href is treated with htmlspecialchars() so any & in url is & + $href = str_replace('&', '&', $href); + + // images from current server directly + if ($attr=='src' || strstr($href, $_SERVER['HTTP_HOST']) !== false){ + return ''; + } + $url = proxy_image_url($href); + return ''; + } + + static function bb_banner($lang, $ckey) { + // $lang and $ckey should already be escaped for HTML, so urlencode() in here would double escape them + // - channel it thru image proxy. proxy does caching better and uses '304 Not Modified' status + $src = 'http://atys.ryzom.com/api/banner.php?ckey=' . $ckey . '&langid=' . $lang . '&size=500'; + return self::bb_img('', $src); + } + + static function bb_mail($user) { + $url = 'http://' . $_SERVER['HTTP_HOST'] . '/app_mail/?page=compose/to/' . urlencode($user); + return '' . $user . ''; + } + + static function bb_profile($ptype, $pname) { + // types from app_profile + $types = array('user', 'player', 'npc', 'fauna', 'entity', 'source'); + $ptype = array_search($ptype, $types, true); + // if type not found, then fall back to player + if ($ptype === false) + $ptype = 1; + + $url = 'http://' . $_SERVER['HTTP_HOST'] . '/app_profile/?ptype=' . intval($ptype) . '&pname=' . urlencode($pname); + return '' . $pname . ''; + } + + static function bb_color($color, $str) { + if ($color == '') { + return $str; + } + + if (self::$ig) { + return '' . $str . ''; + } else { + return '' . $str . ''; + } + } + + static function bb_size($size, $str) { + $size = self::getFontSize($size); + + if (self::$ig) { + return '' . $str . ''; + } else { + return '' . $str . ''; + } + } + + static function bb_pre($str) { + return '
      ' . $str . '
      '; + } + + static function bb_p($str) { + return '

      ' . $str . '

      '; + } + + // Added by ulukyn. WebIg compatibility. + static function bb_center($str) { + if (self::$ig) { + return '
      ' . $str . '
      '; + } else { + return '
      ' . $str . '
      '; + } + } + + /** Table format : (added by ulukyn) + * A1| A2|A3 + * B1| B2 |B3 + * C1|C2 |C3 + */ + static function bb_table($attr, $content) { + $width = isset($attr['width'])?$attr['width']:'100%'; + $border = isset($attr['border'])?$attr['border']:'0'; + $bgcolor = isset($attr['bgcolor'])?' bgcolor="'.$attr['bgcolor'].'" ':''; + $ret = ''; + $lines = explode("\n", $content); + foreach ($lines as $line) { + if ($line) { + $ret .= ''; + $cols = explode('|', $line); + foreach ($cols as $text) { + if (!$text) + continue; + $params = array('valign' => 'middle'); + if ($text[0] == '#') { + $paramsdef = explode(' ', $text); + $paramlist = substr(array_shift($paramsdef), 1); + $paramlist = explode(',', $paramlist); + foreach ($paramlist as $p) { + list($name, $value) = explode('=', $p); + $params[ _h(str_replace('"', '', $name))] = _h(str_replace('"', '', $value)); + } + if ($paramsdef) + $text = implode(' ', $paramsdef); + } + $param_html = ''; + foreach ($params as $name => $value) + $param_html .= $name.'="'.$value.'" '; + + if ($text && $text[0] == ' ' && $text[strlen($text)-1] == ' ') + $align = 'center'; + else if ($text && $text[0] == ' ') + $align = 'right'; + else + $align = 'left'; + + $ret .= ''; + } + $ret .= ''; + } + } + + $ret .= '
      '.$text.'
      '; + return $ret; + } + + + static function bb_page_link($page, $txt) { + if ($page == '') { + $page = $txt; + } + $tmp = explode('/', $page); + foreach ($tmp as $k => $v) { + $tmp[$k] = urlencode($v); + } + $url = 'http://' . $_SERVER['HTTP_HOST'] . '/app_forum/?page=' . join('/', $tmp); + return '' . $txt . ''; + } + + static function bb_forum_link($page, $id, $txt) { + $page = $page . '/view/' . $id; + if ($id == '') { + $page.= $txt; + } + return self::bb_page_link($page, $txt); + } + + // Added by Ulukyn + static function bb_wiki_link($page, $txt) { + $need_new_txt = false; + if ($page == '') { + $page = $txt; + $need_new_txt = true; + } + + if (substr($page, 0, 22) == 'http://atys.ryzom.com/') + $url = 'http://atys.ryzom.com/start/app_wiki.php?page=' . substr($page, 21); + else { + $tmp = explode('/', $page); + if (count($tmp) != 2) { + return 'Syntax: [wiki]/[page], ex: en/Chronicles'; + } else { + $wiki = $tmp[0]; + $page = $tmp[1]; + } + if (self::$ig) { + $url = 'http://atys.ryzom.com/start/app_wiki.php?page=/projects/pub' . $wiki . '/wiki/' . $page; + } + else + $url = 'http://atys.ryzom.com/projects/pub' . $wiki . '/wiki/' . $page; + if ($need_new_txt) + $txt = 'WIKI [' . $page . ']'; + } + return '' . $txt . ''; + } + + static function bb_biu($tag, $txt) { + $tag = strtolower($tag); + if (self::$ig) { + switch ($tag) { + // FIXME: darken/lighter or tint current color + case 'b': $txt = self::bb_color('white', $txt); + break; + case 'i': $txt = self::bb_color('#ffffd0', $txt); + break; + case 'u': $txt = '' . self::bb_color(self::COLOR_P, $txt) . ''; + break; + default : $txt = self::bb_color(self::COLOR_BBCODE_TAG, $txt); + break; // fallback + } + return $txt; + } + + switch ($tag) { + case 'b': $tag = 'strong'; + break; + case 'i': $tag = 'em'; + break; + case 'u': $tag = 'u'; + break; + default: $tag = 'span'; // fallback + } + return '<' . $tag . '>' . $txt . ''; + } + + static function bb_date($attr, $txt) { + $time = strtotime($txt); + + $shardid = isset($attr['shard']) ? $attr['shard'] : self::$shardid; + if ($time === false || $shardid === false) + return 'ERR:[' . $txt . ']'; + + if (isset(self::$legacy_shard[$shardid])) { + $tick = self::$legacy_shard[$shardid]; + if (self::$legacy_sync > $time) { + // only modify game cycle when asked time is before sync + $tick = ($time - self::$legacy_sync) * 10 + $tick; + } + } else { + $tick = ryzom_time_tick($shardid); + // tick is for NOW, adjust it to match time given + $now = time(); + $tick = ($time - $now) * 10 + $tick; + } + + $rytime = ryzom_time_array($tick, $shardid); + $txt = ryzom_time_txt($rytime, self::$lang); + + return $txt; + } + + static function bb_time($options, $txt) { + $time = strtotime($txt); + + if ($time == 0) { + return $txt; + } + + $timezone = self::$timezone; + + $show_time = ''; + $show_date = ''; + $show_timer = ''; + + if (is_array($options)) { + foreach ($options as $key => $val) { + switch ($key) { + case 'timezone': + // fix some timezones for php + switch ($val) { + case 'pst': // fall thru + case 'pdt': $val = 'US/Pacific'; + break; + } + $timezone = $val; + break; + case 'date' : + $show_date = $val == 'off' ? false : $val; + break; + case 'time' : + $show_time = $val == 'off' ? false : $val; + break; + case 'timer': + $show_timer = $val == 'off' ? false : $val; + break; + }//switch + }//foreach + } + + $ret = array(); + + $old_timezone = date_default_timezone_get(); + @date_default_timezone_set($timezone); + if ($show_date !== false) { + $date = ryzom_absolute_time($time); + //ryzom_absolute_time does not have year, so we need to add it + $current_y = date('Y', time()); + $y = date('Y', $time); + if ($y != $current_y) { + $date.= ' ' . $y; + } + $ret[] = self::bb_color($show_date, $date); + } + if ($show_time !== false) { + $fmtTime = self::$clock12h ? 'g:i:s a T' : 'H:i:s T'; + $ret[] = self::bb_color($show_time, date($fmtTime, $time)); + } + date_default_timezone_set($old_timezone); + + if ($show_timer !== false) { + if ($show_time === false && $show_date === false) { + $f = '%s'; + } else { + $f = '(%s)'; + } + $ret[] = self::bb_color($show_timer, sprintf($f, ryzom_relative_time($time))); + } + + return join(' ', $ret); + } + + /** + * This function is called by bbCodeParser class + * + * @see bbCodeParser::format + */ + public function format($tag, $open, $close, $attr, $text) { + // silly functions all have different parameters + switch ($tag) { + case 'noparse' : + $result = self::bb_noparse($text); + break; + case 'code' : + $result = self::bb_code($text); + break; + case 'quote' : + $result = self::bb_quote($attr, $text); + break; + case 'h1' : // fall thru + case 'h2' : // fall thru + case 'h3' : // fall thru + case 'h4' : // fall thru + case 'h5' : // fall thru + case 'h6' : + $nr = (int) substr($tag, -1); + $color = isset($attr['color']) ? $attr['color'] : ''; + $result = self::bb_h($nr, $color, $text); + break; + case 'color' : + $result = self::bb_color($attr, $text); + break; + case 'size' : + $result = self::bb_size($attr, $text); + break; + case 'list' : + $result = self::bb_list($text); + break; + case 'img' : + $result = self::bb_img($attr, $text); + break; + case 'banner' : + $result = self::bb_banner($attr, $text); + break; + case 'pre' : + $result = self::bb_pre($text); + break; + case 'p' : + $result = self::bb_p($text); + break; + case 'table' : + $result = self::bb_table($attr, $text); + break; + case 'center' : + $result = self::bb_center($text); + break; + case 'url' : + $result = self::bb_url($attr, $text); + break; + case 'mail' : + $result = self::bb_mail($text); + break; + case 'profile' : + $result = self::bb_profile($attr, $text); + break; + case 'page' : + $result = self::bb_page_link($attr, $text); + break; + case 'forum' : // fall thru + case 'topic' : // fall thru + case 'post' : + $result = self::bb_forum_link($tag, $attr, $text); + break; + case 'wiki' : + $result = self::bb_wiki_link($attr, $text); + break; + case 'b' : // fall thru + case 'i' : // fall thru + case 'u' : + $result = self::bb_biu($tag, $text); + break; + case 'time' : + $result = self::bb_time($attr, $text); + break; + case 'date' : + $result = self::bb_date($attr, $text); + break; + default : + $result = $open . $text . $close; + break; + } + return $result; + } + + /** + * Replaces some BBcode with HTML code + * + * NOTE: $text should be already escaped for HTML + * + * @param string $text html escaped input text + * @param array $disabledTags + */ + static function parse($text, $disabledTags = array()) { + static $parser = null; + if ($parser === null) { + $parser = new self(self::$ig); + } + $parser->reset(); + + self::$disabledTags = $disabledTags; + return $parser->bbcode($text); + } + +} diff --git a/code/web/api/common/config.php.default b/code/web/api/common/config.php.default index 3a00bb04e..35202ae29 100644 --- a/code/web/api/common/config.php.default +++ b/code/web/api/common/config.php.default @@ -17,6 +17,8 @@ * along with ryzom_api. If not, see . */ + define('RYAPI_MODE', 'client'); + // Url where the api is define('RYAPI_URL', 'http://'); if (!defined('RYAPI_PATH')) @@ -24,5 +26,6 @@ if (!defined('RYAPI_PATH')) // used by "home" link if (!defined('RYAPP_URL')) define('RYAPP_URL', 'http://'); - +if (!defined('RYAPI_AUTH_KEY')) + define('RYAPI_AUTH_KEY', ''); // key gived by AUTH_SERVER ?> diff --git a/code/web/api/common/db_defs.php b/code/web/api/common/db_defs.php new file mode 100644 index 000000000..e2d9536ab --- /dev/null +++ b/code/web/api/common/db_defs.php @@ -0,0 +1,24 @@ +. + */ + +// init database table used by webig +$db = ryDB::getInstance('webig'); +$db->setDbDefs('players', array('id' => SQL_DEF_INT, 'cid' => SQL_DEF_INT, 'name' => SQL_DEF_TEXT, 'creation_date' => SQL_DEF_DATE, 'deleted' => SQL_DEF_BOOLEAN, 'last_login' => SQL_DEF_TEXT)); +$db->setDbDefs('accounts', array('uid' => SQL_DEF_INT, 'web_privs' => SQL_DEF_TEXT)); + +?> \ No newline at end of file diff --git a/code/web/api/common/db_lib.php b/code/web/api/common/db_lib.php index c3c7e8677..8d8dc936a 100644 --- a/code/web/api/common/db_lib.php +++ b/code/web/api/common/db_lib.php @@ -43,91 +43,96 @@ class ServerDatabase } if (($this->hostname != '') && ($this->username != '') && ($this->database != '')) - { - $this->_connection = mysql_connect($this->hostname, $this->username, $this->password) - or die("ERR1"); // ace . $this->get_error()); - $this->select_db($this->database); - } + $this->_connection = new mysqli($this->hostname, $this->username, $this->password, $this->database); } function close() { - @mysql_close($this->_connection); + $this->_connection->close(); } function query($sql_statement) { - $result = mysql_query($sql_statement, $this->_connection); + $result = $this->_connection->query($sql_statement); + if (!$result) + alert('MYSQL', $this->get_error(), 2); return $result; } function select_db($dbname) { $this->database = $dbname; - mysql_select_db($this->database, $this->_connection) or die("Database selection error : " . $this->get_error()); + $this->_connection->select_db($dbname); } function num_rows($result) { - return @mysql_num_rows($result); + return $result->num_rows; } - function fetch_row($result, $result_type=MYSQL_BOTH) + function fetch_row($result, $result_type=MYSQLI_BOTH) { - return @mysql_fetch_array($result, $result_type); - } - - function fetch_assoc($result) - { - return @mysql_fetch_array($result, MYSQL_ASSOC); + if (gettype($result) == "object") + return $result->fetch_array($result_type); + return NULL; } + function fetch_assoc($result) + { + if (gettype($result) == "object") + return $result->fetch_assoc(); + return NULL; + } function query_single_row($sql_statement) { $result = $this->query($sql_statement); - return @mysql_fetch_array($result); + if (gettype($result) == "object") + return $result->fetch_array(); + + return NULL; } function free_result($result) { - @mysql_free_result($result); + $result->free(); } function get_error() { - return mysql_errno($this->_connection) .": ". mysql_error($this->_connection); + return $this->_connection->errno.': '.$this->_connection->error; } function last_insert_id() { - return @mysql_insert_id(); + return $this->_connection->insert_id; + } + + function escape_string($escapestr) { + return $this->_connection->real_escape_string($escapestr); } function change_to($host,$user,$pass,$dbname) { - $this->close(); + /*$this->close(); $this->hostname = $host; $this->username = $user; $this->password = $pass; $this->database = $dbname; - $this->ServerDatabase(); + $this->ServerDatabase();*/ } } - - - class ryDB { private static $_instances = array(); private $db; private $defs = array(); private $errors = ''; - - + + private function __construct($db_name) { global $_RYZOM_API_CONFIG; - + $this->db_name = $db_name; $this->db = new ServerDatabase(RYAPI_WEBDB_HOST, RYAPI_WEBDB_LOGIN, RYAPI_WEBDB_PASS, $db_name); $this->db->query("SET NAMES utf8"); } @@ -140,20 +145,41 @@ class ryDB { return self::$_instances[$db_name]; } - function setDbDefs($table, $defs) { + function setDbDefs($table, $defs, $check=true) { + if ($check) + { + $result = $this->db->query('SHOW FIELDS FROM '.$table); + if (!$result) + die("Table $table not found in database"); + + $fields = array_keys($defs); + while ($row = $this->db->fetch_row($result)) { + if (in_array($row['Field'], $fields)) + unset($fields[array_search($row['Field'], $fields)]); + else + alert('DbLib', 'Missing field '.$row['Field']." on DbDef of table [$table] of database [$this->db_name] !", 2); + } + if ($fields) + die('Missing fields ['.implode('] [', $fields)."] in table [$table] of database [$this->db_name] !"); + } $this->defs[$table] = $defs; } - + function getDefs($table) { - if (!array_key_exists($table, $this->defs)) - die("Please add tables defs using setDbDefs('$table', \$defs)"); - return $this->defs[$table]; + if ($this->hasDbDefs($table)) + return $this->defs[$table]; + + alert('DBLIB', "Please add tables to '$this->db_name' defs using setDbDefs('$table', \$defs)", 2); } - + + function hasDbDefs($table) { + return array_key_exists($table, $this->defs); + } + function getErrors() { return $this->db->get_error(); } - + function now() { return date('Y-m-d H:i:s', time()); } @@ -169,18 +195,43 @@ class ryDB { function addDbTableProp($table, $props) { $this->props[$table] = $props; } - + + function sqlEscape($escapestr) { + return $this->db->escape_string($escapestr); + } + + function insertID() { + return $this->db->last_insert_id(); + } + + /// DIRECT QUERY - function sqlQuery($sql) { + function sqlQuery($sql, $index = false, $result_type = MYSQLI_BOTH) { $result = $this->db->query($sql); + if (!$result) + return NULL; + if($index !== false && !is_array($index)){ + $index = array($index); + } $ret = array(); - while ($row = $this->db->fetch_row($result)) { - $ret[] = $row; + while ($row = $this->db->fetch_row($result, $result_type)) { + if($index !== false) { + // if $index is ['id1', 'id2'], then this code executes as + // $ret[$row['id1']][$row['id2']] = $row + $current = &$ret; + foreach($index as $key){ + if(!isset($row[$key])) + alert('DBLIB', "Requested index field ($key) was not selected from db"); + $current = &$current[$row[$key]]; + } + $current = $row; + } else + $ret[] = $row; } return $ret; } - - + + /// QUERY /// function sqlSelect($table, $props, $values=array(), $extra='') { if ($table) { @@ -188,16 +239,16 @@ class ryDB { $params = array(); $test = array(); if (!$props) - die("Bad Select on [$table] : missing props"); - + alert('DBLIB', "Bad Select on [$table] : missing props"); + foreach($props as $name => $type) - $params[] = '`'.addslashes($name).'`'; - + $params[] = '`'.$this->sqlEscape($name).'`'; + foreach($values as $name => $value) { if ($name[0] == '=') - $test[] = '('.addslashes(substr($name, 1)).' LIKE '.var_export($value, true).')'; + $test[] = '('.$this->sqlEscape(substr($name, 1)).' LIKE '.var_export($value, true).')'; else - $test[] = '('.addslashes($name).' = '.var_export($value, true).')'; + $test[] = '('.$this->sqlEscape($name).' = '.var_export($value, true).')'; } $sql .= implode(",\n\t", $params)."\nFROM\n\t".$table."\n"; if ($test) @@ -209,39 +260,37 @@ class ryDB { return $sql.';'; } - + function querySingle($table, $values=array(), $extra='') { $sql = $this->sqlSelect($table, $this->getDefs($table), $values, $extra); - $result = $this->db->query($sql); - return $this->db->fetch_row($result); + $result = $this->sqlQuery($sql, false, MYSQLI_BOTH); + if(empty($result)) + return NULL; + return $result[0]; } - + function querySingleAssoc($table, $values=array(), $extra='') { $sql = $this->sqlSelect($table, $this->getDefs($table), $values, $extra); - $result = $this->db->query($sql); - return $this->db->fetch_row($result, MYSQL_ASSOC); + $result = $this->sqlQuery($sql, false, MYSQLI_ASSOC); + if(empty($result)) + return NULL; + return $result[0]; } - - function query($table, $values=array(), $extra='') { + + function query($table, $values=array(), $extra='', $index = false, $result_type = MYSQLI_BOTH) { $sql = $this->sqlSelect($table, $this->getDefs($table), $values, $extra); - $result = $this->db->query($sql); - $ret = array(); - while ($row = $this->db->fetch_row($result)) { - $ret[] = $row; - } - return $ret; + return $this->sqlQuery($sql, $index, $result_type); } - - function queryAssoc($table, $values=array(), $extra='') { - $sql = $this->sqlSelect($table, $this->getDefs($table), $values, $extra); - $result = $this->db->query($sql); - $ret = array(); - while ($row = $this->db->fetch_row($result, MYSQL_ASSOC)) { - $ret[] = $row; - } - return $ret; + + function queryAssoc($table, $values=array(), $extra='', $index = false) { + return $this->query($table, $values, $extra, $index, MYSQLI_ASSOC); } + function queryIndex($table, $index, $values=array(), $extra='') { + return $this->query($table, $values, $extra, $index, MYSQLI_ASSOC); + } + + /// INSERT /// function sqlInsert($table, $props, $vals) { $sql = 'INSERT INTO '.$table.' '; @@ -250,7 +299,7 @@ class ryDB { foreach($props as $name => $type) { if (!isset($vals[$name])) continue; - $params[] = $name; + $params[] = '`'.$name.'`'; switch ($type) { case SQL_DEF_BOOLEAN: $values[] = $vals[$name]?1:0; @@ -260,12 +309,12 @@ class ryDB { break; case SQL_DEF_DATE: // date if (is_string($vals[$name])) - $values[] = "'".addslashes($vals[$name])."'"; + $values[] = "'".$this->sqlEscape($vals[$name])."'"; else $values[] = "'".$this->toDate($vals[$name])."'"; break; default: - $values[] = "'".addslashes($vals[$name])."'"; + $values[] = "'".$this->sqlEscape($vals[$name])."'"; break; } } @@ -284,8 +333,8 @@ class ryDB { $sql = "DELETE FROM\n\t".$table."\n"; $test = array(); foreach($values as $name => $value) - $test[] = '('.addslashes($name).' = '.var_export($value, true).')'; - + $test[] = '('.$this->sqlEscape($name).' = '.var_export($value, true).')'; + if ($test or $where) $sql .= "WHERE\n\t"; if ($test) @@ -294,7 +343,7 @@ class ryDB { $sql .= "\n".$where; return $sql.';'; } - + function delete($table, $values=array(), $where='') { $sql = $this->sqlDelete($table, $values, $where); $result = $this->db->query($sql); @@ -316,23 +365,23 @@ class ryDB { break; case SQL_DEF_DATE: if (is_string($vals[$name])) - $values[] = '`'.$name.'` = \''.addslashes($vals[$name]).'\''; + $values[] = '`'.$name.'` = \''.$this->sqlEscape($vals[$name]).'\''; else $values[] = '`'.$name.'` = \''.$this->toDate($vals[$name]).'\''; break; default: - $values[] = '`'.$name.'` = \''.addslashes($vals[$name]).'\''; + $values[] = '`'.$name.'` = \''.$this->sqlEscape($vals[$name]).'\''; break; } } $sql .= "\n\t".implode(",\n\t", $values)."\n"; foreach($tests as $name => $value) { - $test[] = '('.addslashes($name).' = '.var_export($value, true).')'; + $test[] = '('.$this->sqlEscape($name).' = '.var_export($value, true).')'; } if ($test) $sql .= "WHERE\n\t".implode("\nAND\n\t", $test); - + $sql .= "\n".$extra; return $sql; @@ -363,17 +412,17 @@ class ryDB { continue; switch ($type) { case 'trad': - $values[] = '`'.$name."` = '".addslashes($vals[$name])."'"; + $values[] = '`'.$name."` = '".$this->sqlEscape($vals[$name])."'"; break; case 'textarea': case 'string': case 'option': - $values[] = '`'.$name."` = '".addslashes($vals[$name])."'"; + $values[] = '`'.$name."` = '".$this->sqlEscape($vals[$name])."'"; break; case 'id': case 'int': case 'float': - $values[] = '`'.$name.'` = '.addslashes($vals[$name]); + $values[] = '`'.$name.'` = '.$this->sqlEscape($vals[$name]); break; case 'bool': $values[] = '`'.$name.'` = '.($vals[$name]?'1':'0'); @@ -389,7 +438,7 @@ class ryDB { return $result; } - + /// Display function getTableHtml($name, $params, $values, $order_by='') { @@ -417,6 +466,55 @@ class ryDB { return $ret; } + /// Update Database Structure + + static function updateDatabaseStruct($defs) + { + if (file_exists(RYAPP_PATH.'database.versions')) + $versions = unserialize(file_get_contents(RYAPP_PATH.'database.versions')); + else + $versions = array(); + + $c = "Updating DB Structure...\n"; + foreach ($defs as $dbname => $tables) { + $db = new ServerDatabase(RYAPI_WEBDB_HOST, RYAPI_WEBDB_LOGIN, RYAPI_WEBDB_PASS, $dbname); + $db->query("SET NAMES utf8"); + $c .= "\n Selected DB '$dbname'\n"; + foreach ($tables as $table => $sql) + { + $version = count($sql); + if (array_key_exists($table, $versions)) + $diff = $version - $versions[$table]; + else { + $versions[$table] = 0; + $diff = $version; + } + + $c .= " Table '$table' need v$version (current v".strval($versions[$table].') => '); + + if ($diff > 0) { + $sql_to_run = array_slice($sql, $versions[$table], $diff); + foreach($sql_to_run as $sql_run) { + if ($sql_run) { + $c .= "Run sql... "; + $result = $db->query($sql_run); + } else + $c .= "KO!!!"; + } + if ($result) { + $c .= "OK"; + $versions[$table] = $version; + } + } else + $c .= "OK"; + $c .= "\n"; + } + $c .= "\n"; + $db->close(); + } + file_put_contents(RYAPP_PATH.'database.versions', serialize($versions)); + return '
      '.$c.'
      ';
      +	}
       }
       
       ?>
      diff --git a/code/web/api/common/dfm.php b/code/web/api/common/dfm.php
      new file mode 100644
      index 000000000..57bbe70d3
      --- /dev/null
      +++ b/code/web/api/common/dfm.php
      @@ -0,0 +1,151 @@
      +.
      + */
      +
      + function getDirLinks($url_params, $path, $getvar, $home) {
      +	$ret = '';
      +	$dirs = explode('/', $path);
      +	$dirpath = '';
      +	$ret .= _l($home, $url_params, array($getvar => ''));
      +	foreach($dirs as $dirname) {
      +		if ($dirname)  {
      +			$ret .= ' » '._l($dirname, $url_params, array($getvar => '/'.$dirpath.$dirname));
      +			$dirpath .= $dirname.'/';
      +		}
      +	}
      +	return $ret;
      +}
      +
      +function isEmptyDir($dir)
      +{
      +	if (($files = scandir($dir)) && count($files) <= 2) {
      +		return true;
      +	}
      +	return false;
      +}
      + 
      +class ryDataFileManager {
      +
      +	public $id;
      +	public $log_dir;
      +	public $data_dir;
      +	public $user_dir;
      +	public $app_name;
      +	
      +	function __construct($id, $app_name=APP_NAME) {
      +		$this->app_name = $app_name;
      +		$id = (strlen($id) == 0?'0':'').$id;
      +		$id = (strlen($id) == 1?'0':'').$id;
      +		$this->id = $id;
      +		$this->log_dir = RYAPP_PATH.$app_name.'/data/logs/';
      +		$this->data_dir = RYAPP_PATH.$app_name.'/data/app/';
      +		$this->user_dir =  RYAPP_PATH.$app_name.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/';
      +		
      +		if (!is_dir($this->user_dir))
      +			@mkdir($this->user_dir, 0777, true);
      +
      +		if (!is_dir($this->log_dir))  {
      +			@mkdir($this->log_dir, 0777, true);
      +			@mkdir($this->data_dir, 0777, true);
      +		}
      +	}	
      +	
      +	/*** Generic datafiles access methods ***/
      +
      +	function getData($name, $default=null) {
      +		if (file_exists($name))
      +			return unserialize(file_get_contents($name));
      +		if ($default !== NULL) {
      +			@file_put_contents($name, serialize($default));
      +			return $default;
      +		}
      +		return NULL;
      +	}
      +
      +	function saveData($name, $datas, $create_folders=true) {
      +		if ($create_folders) {
      +			if (!is_dir(dirname($name)))
      +				@mkdir(dirname($name), 0777, true);
      +		}
      +		if ($datas !== NULL)
      +			@file_put_contents($name, serialize($datas));
      +		else
      +			@unlink($name);
      +	}
      +	
      +	function listDataFiles($dir) {
      +		$ret = array();
      +		if ($handle = @opendir($dir)) {
      +			while (false !== ($file = readdir($handle))) {
      +				if ($file != '.' && $file != '..' && $file[0] != '.')
      +					$ret[] = $file;
      +			}
      +		}
      +		return $ret;
      +	}
      +
      +	/*** App Datas ***/
      +
      +	function loadAppData($name, $default=null) {
      +		return $this->getData($this->data_dir.$name, $default);
      +	}
      +
      +	function saveAppData($name, $datas, $create_folders=true) {
      +		return $this->saveData($this->data_dir.$name, $datas, $create_folders);
      +	}
      +
      +	function listAppDataFiles($basedir='') {
      +		return $this->listDataFiles($this->data_dir.$basedir);
      +	}
      +
      +
      +	/*** User Datas ***/
      +	
      +	function loadUserData($name, $default=null) {
      +		return $this->getData($this->user_dir.$name, $default);
      +	}
      +
      +	function saveUserData($name, $datas, $create_folders=true) {
      +		return $this->saveData($this->user_dir.$name, $datas, $create_folders);
      +	}
      +
      +	function listUserDataFiles($basedir='') {
      +		return $this->listDataFiles($this->user_dir.$basedir);
      +	}
      +
      +	function loadUserDataFromApp($name, $app, $default=null) {
      +		$id = $this->id;
      +		$file = RYAPP_PATH.$app.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/'.$name;
      +		if (file_exists($file))
      +			return unserialize(file_get_contents($file));
      +		if ($default !== null)
      +			return $default;
      +		return null;
      +	}
      +
      +	function saveUserDataFromApp($name, $app, $datas) {
      +		$id = $this->id;
      +		$dir = RYAPP_PATH.$app.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/';
      +		if (!is_dir($dir))
      +			@mkdir($dir, 0777, true);
      +		file_put_contents($dir.$name, serialize($datas));
      +	}
      +}
      +
      +
      +?>
      diff --git a/code/web/api/common/logger.php b/code/web/api/common/logger.php
      index 1e5106b54..7599c62c9 100644
      --- a/code/web/api/common/logger.php
      +++ b/code/web/api/common/logger.php
      @@ -1,9 +1,26 @@
       .
      + */
      +
       class ryLogger {
       
       	public $enable = false;
      -	private $logs;
      +	private $logs = array();
       	private static $_instance = NULL;
       	
       	public static function getInstance() {
      @@ -32,12 +49,16 @@ class ryLogger {
       
       	function getLogs() {
       		$ret = '';
      -		if ($this->logs && $this->enable)
      -			$ret = "Debug\n\n".implode("\n", $this->logs);
      -		$this->logs = array();
      +		if ($this->logs && $this->enable) {
      +			$ret = 'Debug

      '. implode('
      ', $this->logs).'
      '; + $this->logs = array(); + } return $ret; } } +function _log() { + return ryLogger::getInstance(); +} ?> diff --git a/code/web/api/common/render.php b/code/web/api/common/render.php index 60b101d38..30a68a266 100644 --- a/code/web/api/common/render.php +++ b/code/web/api/common/render.php @@ -1,4 +1,5 @@ . */ -function ryzom_app_render($title, $content, $ig=false, $bgcolor='', $javascript=array(), $homeLink=false) { +function ryzom_app_render($title, $content, $style='', $javascript=array(), $homeLink=false) { $c = ''; + + // get Lua code + $c .= ryLua::get(RYZOM_IG); + $at_end = ryLua::getEnd(RYZOM_IG); + // Render header $title_prefix = ''; if (ON_IPHONE) { $title_prefix = 'Ryzom - '; } - if (!$bgcolor) - $bgcolor = '#000000'.($ig?'00':''); - - if (!$ig) { + if (!RYZOM_IG) $c .= ''."\n"; - $c .= ' - '."\n"; - $c .= ' '.$title_prefix.(translation_exists($title)?_t($title):$title).''."\n"; + $c .= ''."\n"; + $c .= ' '.$title_prefix.(translation_exists($title)?_t($title):$title).''."\n"; + if (!RYZOM_IG) $c .= ' '."\n"; + + $events = ''; + if (!RYZOM_IG) { $c .= ryzom_render_header(); $c .= ryzom_render_header_www(); - $events = ON_IPHONE ? 'onorientationchange="updateOrientation();" ' : ''; - $c .= ' '."\n"; - $c .= ' '."\n"; + if (function_exists('newrelic_get_browser_timing_header')) + $c .= newrelic_get_browser_timing_header(); + if(ON_IPHONE) $events = 'onorientationchange="updateOrientation();" '; + } else { + #if (!$style) + $style='bgcolor="#00000000"'; + } + + if (!RYZOM_IG) { // Javascript $js_code = ''; + if (is_string($javascript)) + $javascript = array($javascript); foreach ($javascript as $js) - $js_code .= ''; + $js_code .= ' '."\n"; $c .= $js_code; - - $c .= ryzom_render_www(ryzom_render_window($title, $content, $homeLink)); - $c .= ''; - } else { - $c .= ''; - $c .= $content; - $debug = ryLogger::getInstance()->getLogs(); - if ($debug) - $c .= '
      '.$debug.'
      '; - $c .= ''; } + + $c .= ' '."\n"; + $c .= ' '."\n"; + + if (!RYZOM_IG) { + $c .= ryzom_render_www(ryzom_render_window($title, $content, $homeLink)); + $c .= ''; + if (function_exists('newrelic_get_browser_timing_header')) + $c .= newrelic_get_browser_timing_footer(); + } else { + $c .= $content.'
      '.ryLogger::getInstance()->getLogs().'
      '; + } + + $c .= ''.$at_end; + return $c; } @@ -146,7 +165,9 @@ function ryzom_render_window_begin($title, $homeLink=false) { } function ryzom_render_window_end() { + global $user; return ' +
      '.(isset( $user['groups'])?implode(':', $user['groups']):'').'
      '.ryLogger::getInstance()->getLogs().'

      powered by ryzom-api

      @@ -191,25 +212,161 @@ function ryzom_render_www_end() { return ''; } -function ryzom_render_login_form($char, $aligned=true) { + +function _s($tag, $text) { + global $ryzom_render_styles, $ryzom_render_tmpls; + if (!array_key_exists($tag, $ryzom_render_tmpls)) + return $text; + if (is_array($text)) + return $p = $text; + else + $p[0] = $text; + $p['color1'] = $ryzom_render_styles[$tag][0]; + $p['color2'] = $ryzom_render_styles[$tag][1]; + $code = '$c = "'.str_replace('"', '\"', $ryzom_render_tmpls[$tag]).'";'; + eval($code); + return $c; +} + +function ryzom_get_color_style($tag, $color=0) { + global $ryzom_render_styles; + if (!array_key_exists($tag, $ryzom_render_styles)) + return '000000'; + return $ryzom_render_styles[$tag][$color]; +} + +function ryzom_set_title($title) { + $GLOBALS['ryzom_render_title'] = $title; +} + +function ryzom_get_title() { + return $GLOBALS['ryzom_render_title']; +} + +function ryzom_font($text, $color="", $size="") { + if (RYZOM_IG) { + $color = $color?'color="'.$color.'"':''; + $size = $size?'size="'.$size.'"':''; + } else { + $color = $color?'color:'.$color.';':''; + $size = $size?'font-size:'.$size.'pt':''; + } + return (RYZOM_IG?"":"").$text.''; +} + +function ryzom_render_login_form($char, $aligned=true, $action="") { $c = ''; if ($aligned) { - $c .= '
      '; + $c .= '
      '; $c .= ''; - $c .= ''; + $c .= ''; $c .= ''; - $c .= ''; + if (RYZOM_IG) + $c .= ''; + else + $c .= ''; $c .= ''; } else { - $c .= '
      '._t('enter_char').'
      '._t('enter_password').'
      '; + $c .= '
      '; $c .= ''; - $c .= ''; + $c .= ''; $c .= ''; - $c .= ''; + if (RYZOM_IG) + $c .= ''; + else + $c .= ''; $c .= ''; } $c .= '
      '._t('login').'
      '._t('password').'
      '; return $c; } +function ryzom_dialog_yes_no($desc, $action, $name) { // will append ryzom_dialog=yes|no to url + + return '
      '.(RYZOM_IG?'':''). + $desc.'
      + + + +
      +
      '; +} + +$GLOBALS['ryzom_render_title'] = defined('APP_NAME')?APP_NAME:'Ryzom'; + +$ig = (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Ryzom')) || ryzom_get_param('ig'); // need be set using url param because auth is not done +$transparency = $ig?'':''; +$ryzom_render_styles = array(); +$ryzom_render_tmpls = array(); + +$ryzom_render_styles['main title'] = array('#222222'.$transparency, '#FFFFFF'); +$ryzom_render_tmpls['main title'] = '

       ${p[0]}

      '."\n"; + +$ryzom_render_styles['section'] = array('#555555'.$transparency, '#FFFFFF'); +$ryzom_render_tmpls['section'] = '
       ${p[0]}
      '."\n"; + +$ryzom_render_styles['color'] = array('', ''); +$ryzom_render_tmpls['color'] = ($ig?'':'').'${p[0]}'; + +$ryzom_render_styles['link'] = array('#111111', ''); +$ryzom_render_tmpls['link'] = '
       ${p[0]}
      '."\n"; + +$ryzom_render_styles['button'] = array('#000000', ''); +$ryzom_render_tmpls['button'] = '
       ${p[0]}
      '."\n"; + +$ryzom_render_styles['links'] = array('#111111'.$transparency, ''); +$ryzom_render_tmpls['links'] = '
       ${p[0]}
      '."\n"; + +$ryzom_render_styles['back'] = array('#000000'.$transparency, ''); +$ryzom_render_tmpls['back'] = '
       «'.'main'.'
       
      '; + +$ryzom_render_styles['highlight'] = array('#55ff55'.$transparency, ''); +$ryzom_render_tmpls['highlight'] = '${p[0]}'; + +$ryzom_render_styles['backlight'] = array('#272727'.$transparency, ''); +$ryzom_render_tmpls['backlight'] = '
      ${p[0]}
      '."\n"; + +$ryzom_render_styles['actionbar'] = array('#555555'.$transparency, ''); +$ryzom_render_tmpls['actionbar'] = '${p[0]}'."\n"; + +$ryzom_render_styles['table'] = array('#050505'.$transparency, '#FFFFFF'); +$ryzom_render_tmpls['table'] = '${p[0]}
      '."\n"; + +$ryzom_render_styles['t header'] = array('#111111'.$transparency, '#FFFFFF'); +$ryzom_render_tmpls['t header'] = '${p[0]}'."\n"; + +$ryzom_render_styles['t row 0'] = array('#353535'.$transparency, ''); +$ryzom_render_tmpls['t row 0'] = '${p[0]}'."\n"; + +$ryzom_render_styles['t row 1'] = array('#252525'.$transparency, ''); +$ryzom_render_tmpls['t row 1'] = '${p[0]}'."\n"; + +$ryzom_render_styles['t element'] = array('#FFFFFF'.$transparency, ''); +$ryzom_render_tmpls['t element'] = '${p[0]}'; + +$ryzom_render_styles['log'] = array('#001100'.$transparency, ''); +$ryzom_render_tmpls['log'] = '
      ${p[0]}
      '."\n"; + +$ryzom_render_styles['message'] = array('#445566'.$transparency, ''); +$ryzom_render_tmpls['message'] = '

       ${p[0]}

      '."\n"; + +$ryzom_render_styles['message warning'] = array('#AA3300'.$transparency, ''); +$ryzom_render_tmpls['message warning'] = '

       ${p[0]}

      '."\n"; + +$ryzom_render_styles['message window'] = array('#5555ff'.$transparency, '#7799ff'); +$ryzom_render_tmpls['message window'] = ''.''. + '
      ${p[0]}${p[0]}
      '."\n"; + +$ryzom_render_styles['message ask'] = array('#333333'.$transparency, ''); +$ryzom_render_tmpls['message ask'] = '
      '.($ig?'':'').'${p[0]}
      '."\n"; + +$ryzom_render_styles['message error'] = array('#AA2222'.$transparency, ''); +$ryzom_render_tmpls['message error'] = '

       ${p[0]}

      '."\n"; + +$ryzom_render_styles['message debug'] = array('#FFAA22'.$transparency, ''); +$ryzom_render_tmpls['message debug'] = '
      ${p[0]}
      '."\n"; + +$ryzom_render_styles['progress bar'] = array('#FF0000'.$transparency, '#000000'); +$ryzom_render_tmpls['progress bar'] = '${p[0]}
       ${p[0]} 
      '."\n"; + ?> diff --git a/code/web/api/common/ryform.php b/code/web/api/common/ryform.php new file mode 100644 index 000000000..9f674a8a9 --- /dev/null +++ b/code/web/api/common/ryform.php @@ -0,0 +1,678 @@ +. + */ + +include_once (RYAPI_PATH.'/common/ryformBases.php'); + +class ryVar extends basicRyForm { + public $formName = ''; + public $varName = ''; + public $varValue = ''; + + function getFormDefs() { + return array( + new ryFormDef('varName', DEF_TYPE_TEXT), + new ryFormDef('varValue', DEF_TYPE_TEXT), + ); + } + + function getHtmlRepr() { + return $this->varName.' => '.$this->varValue; + } +} + +class ryForm { + + private $name = ''; + private $defines = array(); + private $template = ''; + + static private $forms; + static private $ryformsIcons = array(); + + function __construct($dir, $name) { + $this->name = $name; + self::$forms[$dir.'/'.$name] = $this; + } + + static function addRyFormIcon($ryform_name, $icon) { + self::$ryformsIcons[$ryform_name] = $icon; + } + + function addDefine($def) { + $this->defines[$def->name] = $def; + } + + function setTemplate($template) { + $this->template = $template; + } + + function getTemplate() { + return $this->template; + } + + function addValue($name, $value) { + if (array_key_exists($name, $this->defines)) + $this->defines[$name]->value = $value; + else + return false; + return true; + } + + function addExtraValues($name, $value) { + if (array_key_exists($name, $this->defines)) + $this->defines[$name]->extraValues = $value; + else + return false; + return true; + } + + function getForm($params) { + + if (isset($params['ryform_action']) && $params['ryform_action']) { + $res = $this->doAction($params); + return $res; + } + + if (@$params['validate'] == $this->name) + return array(DATA_FORM_VALUES, $_POST); + + if (isset($params['ryform_parent'])) + $parent_ryform_name = $params['ryform_parent'].'/'; + else + $parent_ryform_name = ''; + + $action =_url(ryzom_get_params(), array('validate' => $this->name)); + $ret = ''; + $ret .= '
      '."\n"; + + if (!$this->getTemplate()) { + $ret .= ' '."\n"; + $ret .= ' '._s('t header', '')."\n"; + $tmpl = ''; + } else { + $tmpl = $this->getTemplate(); + } + + $i = 0; + + foreach ($this->defines as $def_id => $def) { + if ($def->name == 'name') + $def->name = '_name'; + + $deffullname = $def->name; + $url_params = ryzom_get_params(); + $type = $def->type; + $infos = $def->infos; + $value = ($def->value !== NULL)?$def->value:$def->defaultValue; + + if (!is_object($value) && !is_array($value)) + $str_value = _h(strval($value)); + else + $str_value = ''; + + if ($def->hidden) + $type = DEF_TYPE_HIDDEN; + + $hidden = false; + $input = ''; + switch ($type) { + + case DEF_TYPE_HIDDEN: + $input = ''."\n"; + $hidden = true; + break; + + case DEF_TYPE_TEXT: + $input = ''; + break; + case DEF_TYPE_NAMEID: + $input = ''; + break; + + case DEF_TYPE_ID: + case DEF_TYPE_INT: + case DEF_TYPE_FLOAT: + $input = ''; + break; + + case DEF_TYPE_BOOL: + $input = ''; + break; + + case DEF_TYPE_OPTION_FUNCTION: + case DEF_TYPE_OPTION: + if ($type == DEF_TYPE_OPTION) + $options = $def->params; + else { + if (is_array($def->defaultValue)) + $options = call_user_func_array($def->params, $def->defaultValue); + else + $options = call_user_func($def->params); + } + $input = ''; + break; + + case DEF_TYPE_COMBO_FUNCTION: + case DEF_TYPE_COMBO: + if ($type == DEF_TYPE_COMBO) + $options = $def->params; + else { + if (is_array($def->defaultValue)) + $options = call_user_func_array($def->params, $def->defaultValue); + else + $options = call_user_func($def->params); + } + if (_user()->ig) { + // TODO : try to do it with lua + } else { // HTML 4 + $input .= ' + '; + } + break; + + case DEF_TYPE_TEXTAREA: + if (!$value) + $value = ""; + $input = '
      '.($type == DEF_TYPE_BBCODE?'- BBCode -
      ':'').'
      '; + break; + + case DEF_TYPE_TRAD: + $base = ''; + $param = $def->name; + $value = array_merge(array('en' => '', 'fr' => '', 'de' => '', 'ru' => '', 'es' => ''), $value); + $base = ryzom_get_param('select_base', ''); + $edit = $display = $input_header = ''; + foreach (array('en', 'fr', 'de', 'ru', 'es') as $lang) { + if (_user()->lang == $lang) + $edit = _i($lang == 'en'?API_URL.'data/img/lang/us.png':API_URL.'data/img/lang/'.$lang.'.png').' '; + if ((!$base && $value[$lang]) || $base == $lang) { + $base = $lang; + $display = strtoupper($lang).' = '.str_replace("\n", '
      ', _h($value[$lang])).'
      '; + } + $input .= ''; + $input_header .= _l(_i($lang == 'en'?API_URL.'data/img/lang/us.png':API_URL.'data/img/lang/'.$lang.'.png'), $url_params, array('select_base' => $lang)).'  '; + } + + $input = $input_header.$input.'   '.$display.'
      '.$edit; + break; + + case DEF_TYPE_RYFORM: + case DEF_TYPE_RYFORMS_ARRAY: + $savedRyform = $value; + if (is_array($savedRyform)) { + $to_clean = array(); + foreach ($savedRyform as $id => $ryform) { + if (!is_object($ryform)) + $to_clean[] = $id; + } + foreach ($to_clean as $id) + unset($savedRyform[$id]); + $savedRyform = array_values($savedRyform); + } else if (is_object($savedRyform)) { + $savedRyform = array($savedRyform); + } else + $savedRyform = array(); + + $input .= '
      '._t('parameter').''._t('value').'
      '; + if ($savedRyform) { + foreach ($savedRyform as $id => $ryform) { + if (!is_object($ryform)) { + p('!!! ERROR !!!', $ryform); + continue; + } + $ryform->id = $id+1; + if (!isset($ryform->formName) || !$ryform->formName) + $ryform->formName = 'Element '.$id; + if (count($savedRyform) > 1) + $display_id = ''.strval(intval($id)+1).''; + else + $display_id = ''; + + $script_up = ($id != 0)?_l(_i('16/arrow_up', _t('up')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'up')).' ':''; + $script_down = ($id != count($savedRyform)-1)?_l(_i('16/arrow_down', _t('down')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'down')).' ':''; + + $icon = (isset(self::$ryformsIcons[get_class($ryform)]))?self::$ryformsIcons[get_class($ryform)]:_i('32/brick'); + $input .= _s('t row '.($id%2), + ''. + ''. + ''); + } + } + $input .= '
      '._l(($def->type == DEF_TYPE_RYFORM?_i('16/arrow_redo', _t('change')):_i('16/add', _t('add'))), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.strval(intval($id)+1), 'ryform_action' => 'list')).' '.$display_id.''.$script_up.$script_down.' + + + +
      '.$icon.''. + _l($ryform->formName, $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'edit')).' '. + '
      '._t(get_class($ryform).'_short_description').'
      '.$ryform->getHtmlRepr().'
      '. + _l(_i('16/script_edit', _t('edit')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'edit')).' '. + _l(_i('16/script_code', _t('edit_source')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'source')).'      '. + _l(_i('16/script_delete', _t('del')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':'.$id, 'ryform_action' => 'del')).' 
      '; + if (count($savedRyform) == 0 || $def->type != DEF_TYPE_RYFORM) { + if (is_string($def->params)) + $infos = _l(_i('16/add', _t('add')), $url_params, array('new_ryform' => $def->params, 'ryform_name' => $parent_ryform_name.$deffullname.':0', 'ryform_action' => 'add')); + else + $infos = _l(_i('16/add', _t('add')), $url_params, array('ryform_name' => $parent_ryform_name.$deffullname.':0', 'ryform_action' => 'list')); + + if ($type == DEF_TYPE_RYFORMS_ARRAY) + $infos .= '   '._l(_i('16/application_form_add', _t('multiadd')), $url_params, array('ryform_name' => $deffullname, 'ryform_action' => 'list_multiadd')); + } + break; + + case DEF_TYPE_FUNCTION: + if (is_array($def->defaultValue)) + list($result_type, $value) = call_user_func_array($def->params, $def->defaultValue); + else + list($result_type, $value) = call_user_func($def->params); + if ($result_type == DATA_HTML_FORM) { + return array(DATA_HTML_FORM, $value); + } else { + unset($url_params[$deffullname.'_action']); + $input = $value; + } + break; + + default: + $input = ''.$value."\n"; + $hidden = true; + + } + + if ($hidden) + $ret .= $input; + else + { + if ($tmpl) { + $tmpl = str_replace('{'.$def->name.'}', 'ig?'color="orange" size="11"':'style="color:orange;"').'>'._t($def->prefixTrad.$def->name).'', $tmpl); + $tmpl = str_replace('{'.$def->name.'.input}', $input, $tmpl); + $tmpl = str_replace('{'.$def->name.'.infos}', $infos, $tmpl); + } else + $ret .= _s('t row '.strval($i % 2), ' '.(!$def->optional?'*':'').($def->superAdmin?'##':'').($def->admin?'#':'')._t($def->prefixTrad.$def->name).''.$input.''.$infos.'')."\n"; + $i++; + } + } + + if ($tmpl) { + $tmpl = str_replace('{submit.input}', '', $tmpl); + $ret .= $tmpl; + $ret .= ''._s('t row '.strval($i % 2), '').'
           '._t('required_fields').'
      '; + } else { + $ret .= _s('t row '.strval($i % 2), '     '._t('required_fields').''); + $ret .= ''; + } + $ret .= '

      '; + return array(DATA_HTML_FORM, $ret."\n"); + } + + + function doAction($url_params) { + if (!$url_params['ryform_name']) + return array(DATA_RYFORM_VALUE, array()); + $ret = ''; + $ryforms = explode('/', $url_params['ryform_name']); + $this_ryform_name = array_shift($ryforms); + list($ryform_name,$ryform_pos) = explode(':', $this_ryform_name); + if (!isset($this->defines[$ryform_name])) + return 'Bad ryform name'; + $def = $this->defines[$ryform_name]; + + if ($ryforms) { + $action = 'edit'; + $next_action = $url_params['ryform_action']; + } else { + $action = $url_params['ryform_action']; + $next_action = ''; + } + + switch ($action) { + case 'list': + if (isset($url_params['ryform_parent']) && $url_params['ryform_parent']) + $ryform_parent = $url_params['ryform_parent'].'/'; + else + $ryform_parent = ''; + $ret .= ''; + foreach ($def->params as $id => $ryform) { + if (is_array($ryform)) { + $ret .= _s('t row 1', ''); + foreach ($ryform as $subid => $subryform) { + $ret .= _s('t row '.($subid%2), ''); + } + } else + $ret .= _s('t row '.($id%2), ''); + } + $ret .= '
      '.ryzom_font(_t('ryform_cat_'.$id), '', '12').''.self::$ryformsIcons[$subryform].'  '. + _l(_t($subryform.'_short_description'), $url_params, array('ryform_name' => $ryform_parent.$url_params['ryform_name'], 'ryform_action' => 'add', 'new_ryform' => $subryform)).''.$subryform.''.self::$ryformsIcons[$ryform].'  '. + _l(_t($ryform.'_short_description'), $url_params, array('ryform_name' => $ryform_parent.$url_params['ryform_name'], 'ryform_action' => 'add', 'new_ryform' => $ryform)).''.$ryform.'
      '; + return array(DATA_HTML_FORM, $ret); + break; + + case 'list_multiadd': + // TODO + /* + unset($url_params[$deffullname.'_action']); + $ret .= ''; + foreach ($def->params as $ryform) { + $ret .= ''; + } + $ret .= '
      '._l($ryform, $url_params, array('ryform_action' => 'multiadd', 'new_ryform' => $ryform)).'
      '; + return array(DATA_HTML_FORM, $ret);*/ + break; + + case 'add': + $new_ryform = ryzom_get_param('new_ryform'); + $valid_ryform = false; + if ($new_ryform) { + + if ((is_string($def->params) && $new_ryform == $def->params) || in_array($new_ryform, $def->params)) + $valid_ryform = true; + else { + foreach ($def->params as $param) { + if (is_array($param) && in_array($new_ryform, $param)) + $valid_ryform = true; + } + } + if (!$valid_ryform) + return array(DATA_HTML_FORM, 'Bad ryform'); + + } else { + $new_ryform = $def->params; + } + $ryform = new $new_ryform($new_ryform, ''); + $ryform->preSerialization(); + if ($def->type != DEF_TYPE_RYFORM) { + p($def->value); + if (!is_array($def->value)) + $savedRyform = array($def->value); + else + $savedRyform = $def->value; + if ($ryform_pos === 0) { + $value = array_values(array_merge(array($ryform), $savedRyform)); + } else if ($ryform_pos !== NULL) { + $begin = array_slice($savedRyform, 0, $ryform_pos); + $end = array_slice($savedRyform, $ryform_pos, count($savedRyform)-$ryform_pos); + $value = array_values(array_merge($begin, array($ryform), $end)); + } else + $value[] = $ryform; + p($ryform_name, $value); + //return array(DATA_RYFORM_VALUE, array('stages' => array())); + return array(DATA_RYFORM_VALUE, array($ryform_name => $value)); + } else { + p($ryform_name, $ryform); + return array(DATA_RYFORM_VALUE, array($ryform_name => $ryform)); + } + break; + + case 'edit': + $a_ryforms = $def->value; + if (is_array($a_ryforms)) + $ryform = $a_ryforms[$ryform_pos]; + else + $ryform = $a_ryforms; + $ryform->postSerialization(); + $validate = isset($url_params['validate']) && $url_params['validate']; + + $form = new ryForm('', $def->name); + foreach ($ryform->getFormDefs() as $form_def) { + $form->addDefine($form_def); + $name = $form_def->name; + // Init form with ryfom values + if (property_exists($ryform, $name)) { + $form->addValue($form_def->name, $ryform->$name); + } + } + foreach ($ryform->getFormDefsExtraValues() as $def_name => $extra_values) + $form->addExtraValues($def_name, $extra_values); + $form->setTemplate($ryform->getTemplate()); + + list($result_type, $value) = $form->getForm(array('action' => $url_params['action'], 'script' => $url_params['script'], 'ryform_action' => $next_action, 'ryform_parent' => $this_ryform_name, 'ryform_name' => implode('/', $ryforms), 'validate' => $validate)); + if ($result_type == DATA_HTML_FORM) { + return array(DATA_HTML_FORM, $value); + } else { + if ($result_type == DATA_FORM_VALUES) + $value = $form->validateFormPost($value); + $ryform->setFormParams($value); + $ryform->preSerialization(); + + } + if (is_array($a_ryforms)) + $a_ryforms[$ryform_pos] = $ryform; + else + $a_ryforms = $ryform; + + $value = array($ryform_name => $a_ryforms); + return array(DATA_RYFORM_VALUE, $value); + break; + + + case 'del': + $id = $ryform_pos; + p($def->value); + if (!is_array($def->value)) + $def->value = array(); + else + unset($def->value[$id]); + $value = array_values($def->value); + return array(DATA_RYFORM_VALUE, array($ryform_name => $value)); + break; + + case 'up': + $a_ryforms = $def->value; + if (!is_array($a_ryforms)) + ryzom_redirect(_url($url_params, array('ryform_action' => ''))); + + $temp_ryform = $a_ryforms[$ryform_pos-1]; + $a_ryforms[$ryform_pos-1] = $a_ryforms[$ryform_pos]; + $a_ryforms[$ryform_pos] = $temp_ryform; + $a_ryforms = array_values($a_ryforms); + p($ryform_name, $a_ryforms); + return array(DATA_RYFORM_VALUE, array($ryform_name => $a_ryforms)); + break; + + case 'down': + $a_ryforms = $def->value; + if (!is_array($a_ryforms)) + ryzom_redirect(_url($url_params, array('ryform_action' => ''))); + + $temp_ryform = $a_ryforms[$ryform_pos+1]; + $a_ryforms[$ryform_pos+1] = $a_ryforms[$ryform_pos]; + $a_ryforms[$ryform_pos] = $temp_ryform; + $a_ryforms = array_values($a_ryforms); + return array(DATA_RYFORM_VALUE, array($ryform_name => $a_ryforms)); + break; + + case 'source': + $a_ryforms = $def->value; + if (is_array($a_ryforms)) + $ryform = $a_ryforms[$ryform_pos]; + else + $ryform = $a_ryforms; + $ryform->postSerialization(); + + $form = new ryForm('', $def->name); + $form->addDefine(new ryFormDef('ryform_source', DEF_TYPE_TEXTAREA, '', base64_encode(serialize($ryform)))); + $validate = isset($url_params['validate']) && $url_params['validate']; + list($result_type, $value) = $form->getForm(array('ryform_action' => $next_action, 'ryform_parent' => $this_ryform_name, 'ryform_name' => implode('/', $ryforms), 'validate' => $validate)); + if ($result_type == DATA_HTML_FORM) { + return array(DATA_HTML_FORM, $value); + } else { + if ($result_type == DATA_FORM_VALUES) + $params = $form->validateFormPost($value); + else + $params = $value; + $ryform = unserialize(base64_decode($params['ryform_source'])); + if (!is_object($ryform)) { + unset($url_params['validate']); + ryzom_redirect(_url($url_params, array('ryform_action' => '', 'message' => 'bad_paste'))); + } + + $is_valid = false; + p($def->params); + foreach ($def->params as $id => $ryform_class) { + if (is_array($ryform_class)) { + if (in_array(get_class($ryform), array_values($ryform_class))) + $is_valid = true; + } else if (get_class($ryform) == $ryform_class) + $is_valid = true; + } + if (!$is_valid) { + p(get_class($ryform), $def->params); + ryzom_redirect(_url($url_params, array($deffullname.'_action' => '', 'message' => 'not_valid_stage'))); + return; + } + if (is_array($a_ryforms)) + $a_ryforms[$ryform_pos] = $ryform; + else + $a_ryforms = $ryform; + $value = array($ryform_name => $a_ryforms); + return array(DATA_RYFORM_VALUE, $value); + } + return; + break; + } + + return $ret; + } + + function validateFormPost($params, $use_default=true) { + $final = array(); + foreach ($this->defines as $def) { + $name = $def->name; + if ($def->name == 'name') + $def->name = '_name'; + + $type = $def->type; + if ($def->hidden) + $type = DEF_TYPE_HIDDEN; + + if (isset($params[$def->name])) { + $value = $params[$def->name]; + } else if (!$use_default) { + continue; + } else { + $value = ''; + } + + + switch ($type) { + + case DEF_TYPE_HIDDEN: + case DEF_TYPE_TEXT: + case DEF_TYPE_OPTION: + case DEF_TYPE_TEXTAREA: + $final[$name] = $value; + break; + + case DEF_TYPE_TRAD: + if (!$value[_user()->lang] && $value['europeanunion']) + $value[_user()->lang] = $value['europeanunion']; + $final[$name] = $value; + break; + + case DEF_TYPE_NAMEID: + $final[$name] = cleanNameID($value); + break; + + case DEF_TYPE_COMBO: + $final[$name] = $value; + break; + + case DEF_TYPE_ID: + case DEF_TYPE_INT: // TODO + $final[$name] = intval($value); + break; + case DEF_TYPE_FLOAT: // TODO + $final[$name] = floatval($value); + break; + + case DEF_TYPE_BOOL: + $final[$name] = $value == 'on'; + break; + + case DEF_TYPE_RYFORM: + if (is_array($value)) + $final[$name] = $value[0]; + break; + case DEF_TYPE_RYFORMS_ARRAY: + break; + + default: + $final[$name] = $value; + + } + } + return $final; + } + +/* + function reset() { + + // Clean all temp files + $userDatas = _tools()->listAppDataFiles($this->dir); + foreach ($userDatas as $userData) { + if (substr($userData, 0, strlen($this->name)) == $this->name) + _tools()->saveAppData($this->dir.'/'.$userData, NULL); + } + }*/ +} + + +?> diff --git a/code/web/api/common/ryformBases.php b/code/web/api/common/ryformBases.php new file mode 100644 index 000000000..7592af511 --- /dev/null +++ b/code/web/api/common/ryformBases.php @@ -0,0 +1,177 @@ +. + */ + +define('DEF_TYPE_UNKNOWN', 0); +define('DEF_TYPE_HIDDEN', 1); +define('DEF_TYPE_TEXT', 2); +define('DEF_TYPE_ID', 3); +define('DEF_TYPE_INT', 4); +define('DEF_TYPE_FLOAT', 5); +define('DEF_TYPE_BOOL', 6); +define('DEF_TYPE_OPTION', 7); +define('DEF_TYPE_TEXTAREA', 8); +define('DEF_TYPE_TRAD', 9); +define('DEF_TYPE_FORM', 10); +define('DEF_TYPE_ICON', 11); +define('DEF_TYPE_RYFORM', 12); +define('DEF_TYPE_RYFORMS_ARRAY', 13); +define('DEF_TYPE_BBCODE', 14); +define('DEF_TYPE_FUNCTION', 15); +define('DEF_TYPE_COMBO', 16); +define('DEF_TYPE_OPTION_FUNCTION', 17); +define('DEF_TYPE_NAMEID', 18); +define('DEF_TYPE_COMBO_FUNCTION', 19); + +define('DEF_TYPE_ICON_UNKNOWN', 0); +define('DEF_TYPE_ICON_SHARED', 1); +define('DEF_TYPE_ICON_RYZITEM', 2); +define('DEF_TYPE_ICON_URL', 3); + +define('DATA_HTML_FORM', 0); +define('DATA_FORM_VALUES', 1); +define('DATA_FORM_VALID_VALUES', 2); +define('DATA_RYFORM_VALUE', 3); + +function cleanFormName($name) { + $final_name = ''; + for ($i=0; $i= ord('a')) && (ord(strtolower($c)) <= ord('z'))) || + (in_array($c, array('-', '.', '_'))) || + (ord(strtolower($c)) >= ord('0')) && (ord(strtolower($c)) <= ord('9')) ) + $final_name .= $c; + } + return $final_name; +} + +function cleanNameID($name) { + $final_name = ''; + for ($i=0; $i= ord('a')) && (ord(strtolower($c)) <= ord('z'))) || + (ord($c) >= ord('0')) && (ord($c) <= ord('9')) ) + $final_name .= $c; + } + return $final_name; +} + +function getNameId($name) { + return str_replace('_', ' ', $name); +} + +function getTrad($value) { + if ($value[_user()->lang]) + $trad = $value[_user()->lang]; + foreach (array('en', 'fr', 'de', 'ru', 'es') as $lang) { + if ($value[$lang]) { + $trad = $value[$lang]; + break; + } + } + if (substr($trad, 0, 2) == '//') + $trad = strstr(str_replace("\r", '', $trad), "\n"); + return substr($trad, 1); +} + +interface iRyForm { + function getForm($url_params); + function setFormParams($params); + function getHtmlRepr(); + function getFormDefs(); + function getFormDefsExtraValues(); + function preSerialization(); + function postSerialization($vars=array()); + function getTemplate(); +} + +class ryFormDef { + + public $name = ''; + public $type = DEF_TYPE_UNKNOWN; + public $params = array(); + public $infos = ''; + public $defaultValue = NULL; + public $value = NULL; + public $extraValues = array(); + public $hidden = false; + public $optional = false; + public $admin = false; + public $superAdmin = false; + public $prefixTrad = ''; + + function __construct($name, $type, $params=array(), $defaultValue=NULL, $optional=false, $infos='') { + $this->name = $name; + $this->type = $type; + $this->params = $params; + $this->defaultValue = $defaultValue; + $this->optional = $optional; + $this->infos = $infos; + } + +} + +class basicRyForm implements iRyForm { + public $formName = ''; // Used by Form + public $id = 0; + + function __construct($name, $title) { + } + + function getForm($url_params) { + $form = new ryForm($this->formName, $this->tools); + $form_defs = $this->getFormDefs(); + foreach ($form_defs as $def) + $form->addDefine($def); + return $form->getForm(_s('section', $this->formName.' ('.get_class($this).')')); + } + + function setFormParams($params) { + foreach ($params as $name => $value) { + if (property_exists($this, $name)) + $this->$name = $value; + } + } + + function getHtmlRepr() { + return $this->formName.' ('.get_class($this).')'; + } + + function getFormDefs() { + return array(); + } + + function getFormDefsExtraValues() { + return array(); + } + + function preSerialization() { + unset($this->tools); + } + + function postSerialization($vars=array()) { + } + + function getTemplate() { + return ''; + } +} + +?> diff --git a/code/web/api/common/time.php b/code/web/api/common/time.php new file mode 100644 index 000000000..9d2020efe --- /dev/null +++ b/code/web/api/common/time.php @@ -0,0 +1,130 @@ +. + */ + +/* Basic constants */ +/* 1 IG hour = 3 IRL minutes = 1800 ticks */ +define('RYTIME_HOUR_TICKS', 1800); +define('RYTIME_DAY_HOURS', 24); +define('RYTIME_SEASON_DAYS', 90); +define('RYTIME_MONTH_DAYS', 30); +define('RYTIME_CYCLE_MONTHS', 12); +define('RYTIME_JY_CYCLES', 4); +define('RYTIME_WEEK_DAYS', 6); +/* 0 = spring, 1 = summer, 2 = automn, 3 = winter */ +define('RYTIME_CYCLE_SEASONS', 4); +/* Tick is offset on server of 61 days. */ +define('RYTIME_TICK_OFFSET', 61 * RYTIME_DAY_HOURS * RYTIME_HOUR_TICKS); + +define('RYTIME_START_JY', 2568); + +/* Helpers */ +define('RYTIME_CYCLE_DAYS',RYTIME_CYCLE_MONTHS * RYTIME_MONTH_DAYS); +define('RYTIME_JY_DAYS', RYTIME_CYCLE_DAYS * RYTIME_JY_CYCLES); +define('RYTIME_JY_MONTHS', RYTIME_CYCLE_MONTHS * RYTIME_JY_CYCLES); + +// Takes a server tick and returns a computed array +function ryzom_time_array($tick) { + $out = array(); + $out["server_tick"] = $tick; + + $time_in_hours = ($tick-RYTIME_TICK_OFFSET) / RYTIME_HOUR_TICKS; + $day = $time_in_hours / RYTIME_DAY_HOURS; + + $out["jena_year"] = floor($day / RYTIME_JY_DAYS) + RYTIME_START_JY; + if ($day < 0) $day = RYTIME_JY_DAYS - abs($day) % RYTIME_JY_DAYS; + $out["day_of_jy"] = $day % RYTIME_JY_DAYS; + $out["month_of_jy"] = floor($out["day_of_jy"] / RYTIME_MONTH_DAYS); + + $out["cycle"] = floor($out["day_of_jy"] / RYTIME_CYCLE_DAYS); + $out["day_of_cycle"] = $day % RYTIME_CYCLE_DAYS; + $out["month_of_cycle"] = $out["month_of_jy"] % RYTIME_CYCLE_MONTHS; + + $out["day_of_month"] = $out["day_of_jy"] % RYTIME_MONTH_DAYS; + $out["day_of_week"] = $day % RYTIME_WEEK_DAYS; + + $out["season"] = ($day / RYTIME_SEASON_DAYS) % RYTIME_CYCLE_SEASONS; + $out["day_of_season"] = $day % RYTIME_SEASON_DAYS; + + $out["time_of_day"] = abs($time_in_hours) % RYTIME_DAY_HOURS; + if ($time_in_hours < 0 && $out["time_of_day"]) $out["time_of_day"] = RYTIME_DAY_HOURS - $out["time_of_day"]; + + return $out; +} + +function ryzom_time_xml_without_cache($rytime) { + $out = new SimpleXMLElement(''); + foreach($rytime as $key => $value) { + $out->addChild($key, $value); + } + return $out; +} + +/** + * Take number of the month (0-11) and returns its name + */ +function ryzom_month_name($month_number) { + if ($month_number < 0 || $month_number > 11) return "bad month"; + + $RYTIME_MONTHS = array( + 'Winderly', 'Germinally', 'Folially', 'Floris', + 'Medis', 'Thermis', 'Harvestor', 'Frutor', + 'Fallenor', 'Pluvia', 'Mystia', 'Nivia' + ); + + return $RYTIME_MONTHS[(int)$month_number]; +} + + +/** + * Take number of the day of week (0-5) and returns its name + */ +function ryzom_day_name($day_number) { + if ($day_number < 0 || $day_number > 5) return "bad day of week"; + + $RYTIME_DAYS = array( + 'Prima', 'Dua', 'Tria', + 'Quarta', 'Quinteth', 'Holeth' + ); + + return $RYTIME_DAYS[(int)$day_number]; +} + +/** + * Take a computed ryzom time array and returns the formatted date + * (Official 2004 Format without trailing JY) + */ +function ryzom_time_txt($rytime, $lang = "en") { + if ($lang != "en" && $lang != "fr" && $lang != "de") $lang = "en"; + + $RYTIME_AC = array( + "de" => array("1. AZ", "2. AZ", "3. AZ", "4. AZ"), + "en" => array("1st AC", "2nd AC", "3rd AC", "4th AC"), + "fr" => array("1er CA", "2e CA", "3e CA", "4e CA") + ); + + # Day, Month DayOfMonth, CycleNth AC JY + return sprintf("%sh - %s, %s %d, %s %d", + $rytime["time_of_day"], + ryzom_day_name($rytime["day_of_week"]), + ryzom_month_name($rytime["month_of_cycle"]), + $rytime["day_of_month"] + 1, + $RYTIME_AC[$lang][$rytime["cycle"]], + $rytime["jena_year"]); +} + +?> \ No newline at end of file diff --git a/code/web/api/common/user.php b/code/web/api/common/user.php index 62a2de0c8..ea6359454 100644 --- a/code/web/api/common/user.php +++ b/code/web/api/common/user.php @@ -1,3 +1,61 @@ . + */ + + +class ryUser { + private $infos; + + function __construct($infos) { + $this->infos = $infos; + } + + function __get($name) + { + if (array_key_exists($name, $this->infos)) { + return $this->infos[$name]; + } else { + /** TODO **/ + return NULL; + } + } + + function inGroup($groups) { + $groups = explode(':', $groups); + foreach ($groups as $group) { + if (in_array($group, $this->groups)) + return true; + } + return false; + } +} + +function ryzom_auth_user($ask_login=true, $welcome_message='') { + global $user, $_USER; + + $result = ryzom_app_authenticate($user, $ask_login, $welcome_message, true); + $_USER = new RyUser($user); + return $result; +} + +function _user() { + global $_USER; + return $_USER; +} + ?> diff --git a/code/web/api/common/utils.php b/code/web/api/common/utils.php index 9f12fdfc1..093a63ec0 100644 --- a/code/web/api/common/utils.php +++ b/code/web/api/common/utils.php @@ -1,6 +1,31 @@ . + */ + include_once('logger.php'); +include_once('dfm.php'); + +define('SERVER', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); + +if (ini_get('magic_quotes_gpc') == 1) { + $_POST = stripslashes_deep($_POST); + $_GET = stripslashes_deep($_GET); +} // Always use this function to get param because in game, the param can be pass by _GET or by _POST function ryzom_get_param($var, $default='') @@ -24,13 +49,30 @@ function parse_query($var) foreach($var as $val) { $x = explode('=', $val); - $arr[$x[0]] = urldecode($x[1]); + if (count($x) > 1) + $arr[$x[0]] = urldecode($x[1]); + else + $arr[$x[0]] = ''; } unset($val, $x, $var); } return $arr; } +function ryzom_get_params() +{ + if (!isset($GLOBALS['URL_PARAMS'])) + $GLOBALS['URL_PARAMS'] = parse_query($_SERVER['REQUEST_URI']); + return $GLOBALS['URL_PARAMS']; +} + +function ryzom_unset_url_param($name) { + if (!isset($GLOBALS['URL_PARAMS'])) + $GLOBALS['URL_PARAMS'] = parse_query($_SERVER['REQUEST_URI']); + unset($GLOBALS['URL_PARAMS'][$name]); + return $GLOBALS['URL_PARAMS']; +} + if (!function_exists('http_build_query')) { function http_build_query($data, $prefix='', $sep='', $key='') { $ret = array(); @@ -50,6 +92,55 @@ if (!function_exists('http_build_query')) { } } +if(!function_exists('_url')){ + function _url($base_params=null, $add_params=array()){ + if ($base_params !== null) + return SERVER.'?'.http_build_query(array_merge($base_params, $add_params)); + else + return SERVER; + } +} + + +if(!function_exists('_h')){ + function _h($s){ + return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); + } +} + +if(!function_exists('_i')){ + function _i($img, $alt=''){ + if (substr($img, strlen($img)-4) == '.tga') // img from client texture : ig only + return $img; + + if (is_file(RYAPI_PATH.'/data/icons/'.$img.'.png')) + $img = RYAPI_URL.'/data/icons/'.$img.'.png'; + else if (is_file(RYAPP_PATH.'/data/icons/'.$img.'.png')) + $img = RYAPP_URL.'/data/icons/'.$img.'.png'; + else + $img = 'view_remove'; + + if ($alt) + return ''.utf8_decode($alt).''; + else + return ''; + + } +} + +if(!function_exists('_l')){ + function _l($text, $base_params=array(), $add_params=array()) + { + return ''.$text.''; + } +} + +if(!function_exists('_b')){ + function _b($text, $base_params=array(), $add_params=array()) + { + return ''.$text.''; + } +} /*** * @@ -66,8 +157,10 @@ function translation_exists($id) { function get_translation($id, $lang, $args=array()) { global $ryzom_texts, $user; if(!isset($ryzom_texts[$id])) return '{'.$id.'}'; - if(!isset($ryzom_texts[$id][$lang])) return '{'.$id.'['.$lang.']}'; - if($ryzom_texts[$id][$lang] == '' && isset($ryzom_texts[$id]['en'])) return @vsprintf($ryzom_texts[$id]['en'], $args); + if(empty($ryzom_texts[$id][$lang])){ + if(isset($ryzom_texts[$id]['en'])) return @vsprintf($ryzom_texts[$id]['en'], $args); + return '{'.$id.'['.$lang.']}'; + } return @vsprintf($ryzom_texts[$id][$lang], $args); } @@ -87,10 +180,12 @@ function _t($id, $args=array()) { $a = ' '.strval($args); } if(!isset($ryzom_texts[$id])) return '{'.$id.$a.'}'; - if(!isset($ryzom_texts[$id][$user['lang']])) return '{'.$id.'['.$user['lang'].']'.$a.'}'; - if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['en']) && $ryzom_texts[$id]['en'] != '') return @vsprintf($ryzom_texts[$id]['en'], $args); - if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['fr']) && $ryzom_texts[$id]['fr'] != '') return '{'.$id.$a.'}'; - if($ryzom_texts[$id][$user['lang']] == '' && isset($ryzom_texts[$id]['de']) && $ryzom_texts[$id]['de'] != '') return '{'.$id.$a.'}'; + if(empty($ryzom_texts[$id][$user['lang']])){ + if(!empty($ryzom_texts[$id]['en'])) return @vsprintf($ryzom_texts[$id]['en'], $args); + if(!empty($ryzom_texts[$id]['fr'])) return '{'.$id.$a.'}'; + if(!empty($ryzom_texts[$id]['de'])) return '{'.$id.$a.'}'; + return '{'.$id.'['.$user['lang'].']'.$a.'}'; + } return @vsprintf($ryzom_texts[$id][$user['lang']], $args); } @@ -100,7 +195,20 @@ function _t($id, $args=array()) { * * ***/ - +function ryzom_timer($timestamp) { + $d = intval($timestamp / 86400); + $timestamp = $timestamp % 86400; + $h = intval($timestamp / 3600); + $timestamp = $timestamp % 3600; + $m = intval($timestamp / 60); + $s = $timestamp % 60; + if ($d>1) + return sprintf('%d'._t('days').' %02d:%02d:%02d', $d, $h, $m, $s); + else if ($d) + return sprintf('%d'._t('day').' %02d:%02d:%02d', $d, $h, $m, $s); + else + return sprintf("%02d:%02d:%02d", $h, $m, $s); +} // Get a human and translated readable time, for example "3 days ago" function ryzom_relative_time($timestamp) { @@ -133,7 +241,10 @@ function ryzom_relative_time($timestamp) { } } - $final = $ryzom_periods[$user['lang']][$form][$j]; + if(!empty($ryzom_periods[$user['lang']][$form][$j])) + $final = $ryzom_periods[$user['lang']][$form][$j]; + else + $final = $ryzom_periods['en'][$form][$j]; $text = _t('date_format', array($difference, $final, $ending)); return $text; } @@ -150,33 +261,193 @@ function ryzom_absolute_time($timestamp) { return $text; } + +/*** + * + * Ryzom utilities + * + * + * ***/ + +function ryzom_generate_password($length=8, $level=2, $oneofeach=false) { + $validchars[1] = "0123456789abcdfghjkmnpqrstvwxyz"; + $validchars[2] = "0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + $validchars[3] = "0123456789_!@#$%&*()-=+/abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!@#$%&*()-=+/"; + + $password = ""; + $counter = 0; + + while ($counter < $length) { + $actChar = substr($validchars[$level], rand(0, strlen($validchars[$level])-1), 1); + + // if $oneofeach then All character must be different (slower) + if (!$oneofeach || !strstr($password, $actChar)) { + $password .= $actChar; + $counter++; + } + } + + return $password; +} + + +function file_get_contents_cached($fn, $cache_time=300) { + global $ryzom_bench_text; + + $lfn = 'tmp/'.strtr($fn, ':/.?&=', '____________'); + + // get the new file from internet every $cache_time (default=5min) + if (file_exists($lfn) && filesize($lfn) > 0 && time() < filemtime($lfn) + $cache_time) { + $content = file_get_contents($lfn); + } else { + $content = file_get_contents($fn); + if ($content != '') file_put_contents($lfn, $content); + } + return $content; +} + +function ryzom_redirect($url, $group='webig', $extra_lua='') { + global $user; + $lua = $extra_lua."\n"; + if ($user['ig']) { + if (!$group) + $lua .= 'getUI(__CURRENT_WINDOW__):browse("'.str_replace('&', '&', $url).'")'; + else + $lua .= 'getUI("ui:interface:'.$group.':content:html"):browse("'.str_replace('&', '&', $url).'")'; + echo ''.$lua.''; + exit(); + } else { + header('Location: '.$url); + exit(); + } +} + /*** * * Debug tools * * ***/ -function p($var, $value=NULL) { +function alert($var, $value=NULL, $level=1) { + p($var, $value, '#FF7777', $level); +} + +define('pNULL', '§$£¤*µ%ù²&#!;,;:.?/?.<>'); + +function p($var, $value=pNULL, $color='#FFFF00', $level=0) { ob_start(); debug_print_backtrace(); $bt = ob_get_contents(); ob_end_clean(); - $bt = explode("\n",$bt); - $bt = explode('[', $bt[1]); - ob_start(); - echo ''.substr($bt[count($bt)-1], 0, -1)."\n"; - if ($value !== NULL) { - echo ''.$var.' : '; + $bt = explode("\n#",$bt); + if (isset($bt[$level])) + $bt1 = explode('[', $bt[$level]); + else + $bt1 = array(''); + + if (isset($bt[$level+1])) + $bt2 = explode('[', $bt[$level+1]); + else + $bt2 = array(''); + + $c = ''; + if ($value !== pNULL) { + $c .= ''.$var.' : '; $var = $value; } - //if (is_array($var)) - echo '
      ';
      -	print_r($var);
      -	echo '
      '; -// else - // var_dump($var); - ryLogger::getInstance()->addPrint(ob_get_contents()); + $c .= ''.substr(str_replace("\n", "", $bt2[count($bt2)-1]), 0, -1).' => '.substr(str_replace("\n", "", $bt1[count($bt1)-1]), 0, -1)." "; + ryLogger::getInstance()->addPrint($c); + ob_start(); + var_dump($var); + ryLogger::getInstance()->addPrint(_h(ob_get_contents()), $color); ob_end_clean(); } + +/*** + * + * Lua tools + * + * ***/ + + class ryLua { + + static private $lua = array(); + static private $luaend = array(); + static private $indent; + static private $indentend; + static private $linkTargetId = 0; + + static function add($code, $indent=NULL) { + if ($indent !== NULL) + self::$indent += $indent; + $tabs = str_repeat(" ", self::$indent); + $a = $tabs.str_replace("\n", "\n ".$tabs, $code); + self::$lua[] = $a; + } + + static function addEnd($code, $indent=NULL) { + if ($indent !== NULL) + self::$indentend += $indent; + $tabs = str_repeat(" ", self::$indentend); + $a = $tabs.str_replace("\n", "\n ".$tabs, $code); + self::$luaend[] = $a; + } + + + static function get($ig) { + ryLogger::getInstance()->addPrint(implode("\n", self::$lua), '#FF00FF'); + $ret = ($ig)?"\n".implode("\n", self::$lua)."\n":''; + self::$lua = array(); + return $ret; + } + + static function getEnd($ig) { + ryLogger::getInstance()->addPrint(implode("\n", self::$luaend), '#FF55FF'); + $ret = ($ig)?"\n".implode("\n", self::$luaend)."\n":''; + self::$luaend = array(); + return $ret; + } + + static function url($base_params=null, $add_params=array()) { + return str_replace('&', '&', _url($base_params, $add_params)); + } + + + function openLink($text, $target='webig', $base_params=array(), $add_params=array(), $urllua='', $runlua='') + { + $url = self::url($base_params, $add_params); + if ($target == "help_browser") + $url .= "&ignore="; + $id = ryzom_generate_password(8).strval(time()).strval(self::$linkTargetId++); + $lua = <<< END +function openLink{$id}() + runAH(nil, "browse", "name=ui:interface:{$target}:content:html|url={$url}"{$urllua}) + {$runlua} +end +END; + self::add($lua); + if (RYZOM_IG) + return ''.$text.''; + return $text; + } + + static function link($id, $luacode, $text) { + $lua = <<'.$text.''; + return $text; + } + +} + + + + + ?> diff --git a/code/web/api/common/xml_utils.php b/code/web/api/common/xml_utils.php new file mode 100644 index 000000000..28d166866 --- /dev/null +++ b/code/web/api/common/xml_utils.php @@ -0,0 +1,23 @@ +. + */ + +function ryzom_display_xml_header() { + header('Content-Type: application/xml; charset=UTF-8'); +} + +?> \ No newline at end of file diff --git a/code/web/api/data/css/ryzom_ui.css b/code/web/api/data/css/ryzom_ui.css index 8342b77f8..8b8e9ed37 100644 --- a/code/web/api/data/css/ryzom_ui.css +++ b/code/web/api/data/css/ryzom_ui.css @@ -33,14 +33,18 @@ color: white; } .ryzom-ui input, .ryzom-ui select { - border-top: 1px solid #030403; - border-right: 1px solid #6e7f57; - border-bottom: 1px solid #889e6c; - border-left: 1px solid #272d1f; - background-color: #37402b; - color: #ddd; + border-bottom: 1px solid #7B7E80; + border-left: 1px solid #7B7E80; + border-top: 1px solid #101010; + border-right: 1px solid #101010; + background-color: #1D1D1D; + border-radius: 3px; + color: #BBB; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; font-size: 12px; margin: 2px 0 5px 0; + padding: 1px; } .ryzom-ui input[type=text] { width: 100%; @@ -52,27 +56,43 @@ /* input[type=submit] will make IE6 to ignore whole CSS rule, so cant combine this with .ryzom-ui-button below */ input[type=submit] { - border-bottom: 1px solid #030403; - border-left: 1px solid #6e7f57; - border-top: 1px solid #889e6c; - border-right: 1px solid #272d1f; - background-color: #435120; + border-bottom: 1px solid #7B7E80; + border-left: 1px solid #7B7E80; + border-top: 1px solid #7B7E80; + border-right: 1px solid #7B7E80; + background-color: #232323; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + color: #BBB; +} +input[type=submit]:hover { + border-bottom: 1px solid #FFFFFF; + border-left: 1px solid #FFFFFF; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #FFFFFF; + color: #FFF; } input.ryzom-ui-button, .ryzom-ui-button { - border-bottom: 1px solid #030403; - border-left: 1px solid #6e7f57; - border-top: 1px solid #889e6c; - border-right: 1px solid #272d1f; - background-color: #435120; + border-bottom: 1px solid #7B7E80; + border-left: 1px solid #7B7E80; + border-top: 1px solid #7B7E80; + border-right: 1px solid #7B7E80; + background-color: #232323; + border-radius: 3px; + color: #BBB; } a.ryzom-ui-button, a.ryzom-ui-button:visited { - color: white; - padding: 0 .5em; + color: #DDD; + padding: .2em .5em; text-decoration: none; } a.ryzom-ui-button:hover { - background: #536130; - color: #ddd; + border-bottom: 1px solid #FFFFFF; + border-left: 1px solid #FFFFFF; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #FFFFFF; + color: #FFF; } /* window without title - just borders */ .ryzom-ui-tl { diff --git a/code/web/api/data/icons/add_app.png b/code/web/api/data/icons/add_app.png new file mode 100755 index 0000000000000000000000000000000000000000..12cfb5546642b562e37689c8ee1db36955c52cd7 GIT binary patch literal 2532 zcmVP*#cX6 z;K7QF$b1an7~ZzW0W!t~z+w1Ul3L^B3oM^TPDEAAaz@Pj@;S zrm&ukxXY!vx$M%V#nTo})v8sD)_DK_yP^Is1e8*wY0BI}i;p~T*IymI@$macM~Cka z=l4{q5&QQ~@XAXs^Tn_H-Lq4#Jb%yIXQn7TDy}Ngz3Mj0-=j4k&<9q+{ zLxy$?5(ELRu9;?5_RQHwmzGz)B1-*OiTw5uT%2!m|M3rh?lX^m z^6y`H^_S{bXMaV!k+E}pl&r9LrLfi^-Xkc|ZcO1E#suWHV70kQoTl{EYV<`F_4`MU z-umJTCw|oGbUt4(<{zAM+s@l`$r!`M#v*_I=p#@5#bclP#<%|ITk6938KO!Rl%P-; zV^AKv2kSj3P+DPnH#6E0L;>OznJZXqG#IEDj^2E;N|XE>>+9_&Lu0lPQvgJS`T2S7 zz4xxi@4f5Jr=R)v?~-IGVHn`O!+Q%TjL}$IAR^!a4+;eWj`C&-Md2OFE3^)1cRCE! zLvA^C6Kk!`(<|-u$Ac@J5Tz9B>+4*1-3`Yddf@J_KKsKTU;!-#ltXKS@15qo;4Ek( zXst>EqDq!uM%IJ$xMZD0L|9v1!rF5`OT`4}9YE z$x|jPEJ^{&<85gO2Odul2sqD$cN(m$wyB1~$A7i-aDKxZCB(kt4Sa5B5LMn3=&TP`=#kyhSNNDMhssg7-Z4izyCXeGTJ# z#u2S~-z^_xskO@D!XmY51%+U}>qU3V3GWmYZMpvNA)3qWKWTU4+q4Lh7X^FwjO|Z0 zHu{=NE7-!7d!5Jjl&n^(a&c~v?>zGypLz68`Ro_I#Iaj$BJ-N#4?fHjpZ!a^ndQRt zEMf#_9Ucb?oOcL1N`_0|H=)A4>3D?5$~WRO6luryG6Gf z^Mx-x&c{FYFf(%v7ME9X-hp>u%3wI>Fj5lQS=$vQm};dmbnSbu{!phIqm(KaX`$8K z;QY)Y58i*APe1YyE=_4A8KN~fTWY{&fQ6zcNLJT)|E)LCU#s%-mrk&<*hEB7Sq}>l zx^co)yGI!v9sbb9M*I^Q?5|JW@rTDAYjrxH1Y-p2JWI`0p8V_2^SLL!$lDjDQKG3- z!XBjClS}#B6k!z6Y%a5JVjoXD@i;f%dJJQ9`JyPLzSU~;N4FhibZqRgrPbD?DT=&U zU0oy40p3}hE7`weXo$teEH6L*Q$%UboqL11#sd3x?*q|*F5U1R3WxQMj& zsSgcs)xm>YoOuV7LiLu0QN;YE1r|F6K^PV$w^pyT)-j?0!CH%VP_I{+erJYmnuGJ4 zK6{3~z99}y9spIMpnA6wqsh~Pl~$AgIrj!xTF`7QbMDMpoU;U4lOze=J1SAY^n8n% zX3R)UX<1rXTmH9ao_%4*&>*6HDYJkeq-n~p&%MFv*G}^5^D~T%zlR_&n<40_F$%#L z!_vY6zkKOsre1!9sb9RrrTGO+uwDBrQOK)jr&(BRzA)HdUzSQ3HYWD&{(4b3Y~eu! z=N-Bi>RMloFbY5k2lr1yq zF#h!@3L4@8Ywe)Jqm9BB1qy{n5D^4uwPUJ%Rd$b$VV&KQ*xqXl0)@*x14BEgR--a^ zc(;`s0=-Gz&=?eow8#gYb6e@y`<@0U1vsRqVkQXKh`S8-_fzfbLuuX9iz`6z3T=dX zy@oLn4v!Mqg5H6M$9wQfZQHx8L{a|ov$|qVDK@$>{R4vx5A^kJt?|y$OBtJ7h=LHM zJ=Lg&pa_gy#=n9qTU!V{4*^%W(p3$)%^4dRVPbq2X;x5)DtOWK zy=NTf9M%?u#t?*tuwG~1!~{__!sa=mg-rptjHr}R_RbXwFj^$4*Q%3+b9lfO1ttg( z1dm5VGcwr6)T>jxePNn`!C~5YjPj1*n&J8H{xcUBmS}ckc3f)m*7>(sTUlXXuuc-E zW!0n<&bwYu;i*?b`l^-5+}g;Dj0|1#$Vcyc>c9T`1w<)C>n-Srx1TWV8S%X9zvQ$}`#x(_-_O9n zAe~kR@F-Du>rf)NEW`Gq8iWB0i%nL#j=&ge6iNkwp;8GEEd<681Oc|N1c5Un+!6))cUt?KqbMA?bNnw6qP(W*PcDxD0000 literal 0 HcmV?d00001 diff --git a/code/web/api/data/icons/edit.png b/code/web/api/data/icons/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..315b5d8b4534eb20e62ca35f3d69abed559100a3 GIT binary patch literal 1203 zcmV;k1WfyhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipn< z6Adw$S_KLK00c8hL_t(Y$K{qyY*bYkhM#k0rZdwbP^PT|q0$kNB4DIYp|+_B5Yhw! zQT{YxBa+~P#1P%McBdw|k)4UFiUt>8j3h=&;uP9iq_m-x7D`G>JHIWR|C#&qx$usu zq*T^=l5cTxbHC^P-t(TD3;(C302iR0eI-!u@wiV00xQ4RwQFarrDa#%>-E0B@Fn+C zHr7rV&VJ{rRmd7f=LRg2CFi zH*Q@0#=(OfYmXdxi(oJWc*y1E2?jMQR;=8RNF=L)#8LpYU_zIp{MgZ>hdw!cc=x&; zJ6Y zC!|y=NIsvEyLW$=0|z?p0mp&o{;jzi@HzF)=FO`Uot+BPAQerVw#4e z(+QcL9+GqCKC+ckUji+_3rihx8K9L?Z#FlFK0SN(WMJREV@ynRGdVfVwrz(g6!IjK zw@IZUM57TdT=?OEi1a&Qu$}~1sQ#HyDDdH_Q%3@=t?i7AbYU1-8XESJ$vhw)zfY-@ zqfp3j{`|M8-rm70j_)Q=DmT=N#IeFr@bbEKwJ)}`G&3;J$Jp2iYu0Qfmz(6_!(o)t z7)G8eSFUmS^3`8~8$cRJ0fof?<%z`YcD>^Fd(UjyvdJHb%rG#}M?=FFip4C2LI$6& zl2R$l)YLsLT?$Xwwp<4u0Z9i^T+E{K1a@Vm|HPp~Z5?%W9(sDN(c0QheSJN}Vu5Hh zK{(vU*w`4iZ%?I%hadb5OagIW4#+OF=y5;=Kqixo)YsS8^Ye4Mz5R8Rs-maoCiC+# zB9Uos-5RI2_m508nz{t^Io>CMjHBLM3{bvQwOZ>aDJP5lD&08ytNIqD6-UJRg}2W#8fwlyoI2?m4A%-kiBm?fJvWM*bojgH3h z(P(M_=msKA^RoA)g%Mp0pn&R7XiZf|$5y(!u3?&*blT0GI}vsB=E(hYI(rou2JSoF zM}VA@oPVf)(jmVzJ^e5c4qMF3SZC7nifAbt^UILhTo zA2pntyKlpWx~~caJ1{$&4qKL_48zQsrZoku*IHF+t$XC{xM7-hn**>P zhx|Q(%cZNlUiTT(v}z_N6Q7B271*PcdR8fxgNlhTV%riIu`9H89k(od(6a1z7shg_ z2|`+{%OZR&BAtJYPsp)t!pV67NGe6G&*%BkFzhN3`AI3YOhn4jtPqiJY+Js=iDh|N zB76^Acbb~OxKncr4pEe%WZT5GR^suvYTRz^RSKn)60Na-A={Qa|BXL|KLIxf_g!1V R&Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyk+ z5DqUF7e=1|00LY|L_t(I%cYXdOH^SP#eeVpm~loYYpTTvE+SzfbrqNxE(~c_x@Zx( z%pihjC;bCKyAWFneYlwHg9gMT5G;^F7?2vrFtw~SZFI;<$2(rF)OSmh+8`t)XbN62~!QWhJK^XR`)40IdG5R+vCZ zBvO7q9=|QFTkzJ`C&jk2V%vEyk$7MSgMlkbsiXTvH-UqZNLgP`&rMlc8k1zQS1jwN z%+0;^#>e}muC8_rXa*vCD`KxP4FR`p;)z$TAC7Dde zfda6xE!w$8Y(;0I9LZJ-0CK%iJ$qoJWi4G+Jd2lg`e5XK86QRVZv2+3fON;482O1^FT|1=fT7zvDt38jIowsRf$Dq_Ow6us^bzO0Q8sHPK04xLo<~_%8BO*K(5rCkG z#6@_wZQuh+wknlu#nk`-ib`?PH1$@)(91VBJsSkq_2RB8Y5oU>q45juy9+bwQ-pN@ O0000JwgHqv_9#Z`6Gd=agPrCf4Op9{>Y*oHHwcd>4oHJP>j4Kouw+giaw(u} z8I=zUnS&(w?f^LY?X`Y|7%bcRq8jq)Tz+#!coP5a(hQ1*cEbQ>lHi`_wS3=y`KmKm zecBao;~vt0n;Gl1VHlO9SGl0ooZ0UF-7&3sE;;9tG1gRlPQl)f_RxblE;;AEx++pt z&zW0~=ebCOM|xDS_hRtr);19}7#sgjV2n9a!><(S4?tAw!(^b literal 0 HcmV?d00001 diff --git a/code/web/api/data/icons/spe_com.png b/code/web/api/data/icons/spe_com.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3f48eccbb2ae83ca7ba572395a5fe1199fa5ec GIT binary patch literal 1840 zcmV-02haG4P)1K!q3+?nsQi;@B9!k!ZXSjkI^P2_TrF2Q1)%TNYe#S@!dNdeK?)b`NNJ()Oy8 zOrCjX=AGw1&&SMv;QwWjqLe}@^kStHZNM}jx|+bBfwRCD zzzX1JKsMm~k6Btv4{#qSw%hHv-EP*cTL*y8=VNqql-b$Y&&uh+}O#Dr~TW+p8d4C3?o=66i zOgJ1S5{cmR`4Xd}qwza;?j*Xpx(vVHZv(!l`T6C>mDmMmEk z)v=YkP!<5p0EdC}>gsAd9uFddVHgAg0XjQ7@pwG!-o2aF)>f2KT)TFS$B!SY<;#~7 z2n6u^{kU8%86O{4D^{$qJ$v@dxP1Atqq(^`bK}O1@s5rTdn^_!0&Xs51;5Q^Gf$m5 z^{X=`gUv$M0Mq@+ap`ugPDxpPulS}MU{Q1F z7cX-3=urv^3Rt~*wJcq_RQ2@q*k8VU`3~qX4C6;G@Bz%s%&6hv;SVlwI2_E+&r@Gt z&)vIsak*SvxpIY@H*XRShuOP#FApC+Boc|>_xovXZlFMcV-@bhuKYpA82M$nPUQR(l0fzCx&{AAn4DgxFW-DAQ6MhXyRaKQaJ3DJybGyC0 zU0g1g7=|HwF?ss*sWdh=%Ju8lrL?qEy1KgL;K75kYSk(k8yk~7d-jOi?Uw%jei0GV z=ku9`g@p-V_hJB60b&@2IXF0IrXDbl9zBwdjt*&QX^|&Sp8U(${rmSN6bi}h+qWeY z3WwnauUDa&&0$8e!rhruU<(Y z5K!T8n7X>UU|U<8(=ZG>Am`7YS1m0qA7a2XO=f3j5s_)&H^3hkv%=@V?}0Z!RNruO zz&m|p{~Z_yhJhErUx6QhXmN4z8?V4Fj8sGrZE!B~7T`zQ%r&fTU1Ake+ ze!UD04FyX|N@jrXKemWdSBD0oEVN8CxiB^JF)jTp(l#}9`#vix>le{z)EkXPf6zXE zyAXhEV40RnfedXG)1o-0fy6D!Op8pm6P6m(H17)?FJA-CbWDZy9PAdh;?O{rYaiP+ zKr_Vx$zrA`7t6fl_qV`rfzLGWOy~f9ql4O1TCo$z(abj=$kSk)79d#6ty0X-0Oa^DB?#GfHF^lz* z*666(0000EWWJ|_BHMg8M60WS5Ldc4H8oY8y?hJK| zS)M}AOjaphiJU(V#(z*s4>_5saUq{g`$(>F)VQMFp$;yV?3r)LxkBn`K-a@6TQW;_jbo-`bDo`5>>U%)onl*W}w^7S&*x*kkk;F@@GKJSj zf40?r6NVesFew!~8q*l5tJA1mEccH`GpL(1G{&?td5lkW1=k@1FNRjKd^iYw$p141 zfnau|<1z+!$nY**p(Oy*JH5nwKn}EK5;lNolT)YvTPSq{&>B z-lm%}>mI;bo|c&YZkWkD`A!F_m7af;m3rS5gZB>Mv;z#&sVwgW!!d6l;ncJ5_jb+)i+=C z*rvM48qLzp&@JSU+-xLh6m>JsM$N{j$$0^LM4oi-`$E=5ggoAZAb@JC>;myLRN?mAs=6v7SMAIHI;2+(2KNY_9KuQ2!lH2l7aJXuiZB^nTORV&O#5;!VT*3#^PQy>51ho^* zMA{+UJc$5~O(xN+;v*9JnA)Q7{2lU6fw6cq@^0o8Lxqc{Itya6W6RWy63hxjH}c(# z=fp*cj2nmzfenQXOquzj*x7>mC$zil5!gf8L*!u&z>OG>m?g`1>eU(58F(A7^@@Ag z+Rd9pbo;jXrha6e_*#Iqjg^*{=9a#_5O;^~PND57Thct5Xh%%iu-`y!oSHv>tI@YZ z*+n^2Ik=3rEJc~y_pvk+u4+yHf{m&jAN3%IJ*z{-7o0^Mm)%f3yEVbj&$nbEZNh(Y z@kw>DV1uZNd^xv#s-x*yOa9vw*Sdcm5t#`S2bjBNX~k2M@wk%4_KGT&)|Kvi)Ma+|b&9Gs{(^G&0G4k!Fx?bI@v9YFBT( z)%vmaMw@*@q#n_z?Dl3;xDVA59)-1KO}*#uS&=-< zTxH#YS{xe}Z}e35lti~hUpt@^?7E&Z%~!=x<=V&No)+4*rTvyauA@5Dqs}AeUDRc# z72BGYA*-ZWD8wt|AvQpX=d?JlCa*tV56^Ypx$K0T-5kxFYW^S|Jny#h7WO2-`$B>D zd_csC{o{pYm6d;%_hYcVfw}psr zpDI7)OpbqB*es3yFS`C9^2q6k?x3E%ncX~{A$|P%m+Qgf65}S4?v3J&^_DYL7L|w7 z-=_BzR29CuP4|km3AN$c=t7l4YeQdz=DvCHhU1Ov8^Sp`t;M*?J;V54v0J+W-)(oj zFP({h7Uz1YeQ)bO(L-=#f24KrV(-&Y^wDtQyTtzALanoI!>)51@MFqx%#jZ3EV~oO zj*p0hl1PWdj!7QT+QZsY38OCY(|G4A;@`aayrWvp+L766rHPL9j?W#3;V*Z(cIKEq zWJDofigAkd=DXW0HFY%IZt5)xmHp9LnbDJ>kS*lVK#_@mQS<`VV&_-W-FrESi|Gn)gLEz3NBHIPl>OHDI32wQa9>@f)_WP zv6DYm)%bVdHLoU(j3z3R^1&t76u@~Jpy`(XL4jisWZOj5U`|4dPqA7@lNb9`z%UiPwV zf3r$+v?Hb6vUSk?gWGe*7N>qnbfR$l%538J@4Hc^QDaft?BVb?cYZW&2h0XGsb^@E zUfMD7aq?NYpB+|FfiBOg&=yz|8W%PPOtbGF@vz6PEN zz8hBG%_&Sbes#P$QTXWh&c&J!=OlR~U6N*xYkR8ZJr-!9K1NPOOGICf#znJL?`yw$ z9(q27|wKAXi&4T0({g2^*-EF@& z_ORfnf#tI0WrE_eyLQyr=cf}b*)3Hs<=Uh6UH9+*@%?UhME;~Z9@X;IU9B}N60RVu zh5e`$d2;*fGqd{xq3->ZwS)KJ>pNBX>-lqMH_zI|*li6yD7h52dh(cYoe>9b5OUPA zO<35uw>1+|UtHff?l%5Qm{Dg?XPPhR!0fT&wj``Nug2cI*<97C%%ZA1x@PcuG*Dvs(17n{hzVM6*G^gLt6WRuUe{m$-Ve?J5R+aZc2U< z>8JdMkd^+Om_iok?apmko%O`^ll8st!;K48H7E3RrF+MHkJg_<5FKP~ZjYn>Qv!$) z&@cg7W)GBLIvF30OD)D-y7x04oPzr}k*Tjs|c}fS}?62yTGl0VrO; z!3WU10L=$D`2ku0a8U^YZXv)U%)%vr9mc2x-QVr z1Dbl^tUfqv0L~hMb2y+)WdyYGY}C0fo=(pc=$Qa&>YD(4Q($Nga2CMG5*S$lyfrYk z0VcMV%#_6E*A zz{Ll+`T|!!;N}b5sOb+ps0ehP0pKqp@S+L?KEc2*1o(vk|1dzf2#67YNCJUWksu@n zgv8R35DYv{S3Z5ODPGpfO*A-(a zOA)g?X%x3b97Z}0l3*9k3S@Ms@j!AT11gkt;z^F&0k-n-=lFfkaJWMf=!=Dt0%<-x z#HKV&a=$GI9!T52tp~@JHcnw;a)&#{2iGZHSzoJz(cIYpw4l|%Rt{?$5| z>;Ps)j7zEq7j%_~whrO-t2nQjoGly@#K|sFTp+BIf6*x_!T^ne)DSf6rx{?nDyQ@$ zft&z6J)O8Af>uBqE6qX&7@&cNBM&LV5Bn%X{gh$K(8$OLrGI#sGC&!8I6N|}@hj(D Ts^F;c-%T{ZSsJ$KdnNx53@$mU literal 0 HcmV?d00001 diff --git a/code/web/api/data/img/lang/de.png b/code/web/api/data/img/lang/de.png index 767abe088625c523ca3c3114faa767f325823330..787c68830005c33093765d89bd57d82ba9eaac20 100644 GIT binary patch literal 736 zcmV<60w4W}P)pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900LY|L_t(IPsP(+OH*+G$ML-py$HLgltYSEIx}^1%uPZkflBy5 z$;78(Dmi3>X_$zTDN4#TXVbPcO>2o%FCd5riYPNg%+#fGPtEzjxBs>m(1jOW{LVQX z_O}IasFE=Au=nqg7o*n=dCXFP$sdX=G)c7nA-unM#$;($e$j78hr6 zxn@{ca4T}`;6f>23`z(oY|^YQ2AMzJR)h26wN zekYv9XTHUgNZ@rOFl!gMK8DN7W4N%8fLe_&CkJmv2ASp(nInNpP){z^V@4iU#kp63^F6cD`J|{Yhf$;~6$ToMPjB9G=yBMmi#aafyQ+ zD`EGr*Z})meT05>6a3jpaNR;+&5VE5i0?-W-W3CT-y88P*W&qBgH?RJ>{+jbt6Sp5 zU5SNz64Pc0r+oAKh(LZ(9#_LLviy^OfQ(f-{$^N44!5?rOG_RU%-yEHJq(AXws T{e`}CpluAEu6{1-oD!MPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0006+Nkl5XaAB54}i*g%3Ri z#in6wrGhMGhJp#znkkE}X@-ba=0jv{?xq!f;a4Au8k%94r5UM#nX)Nak)p0qDj^YU z5Oh`+EYoH;$8{e$lk!7q}Mj zWT;A1Q}*gv-4nV-AoJ~D6tC)^vo)vzqqz&QDF<=j#1rm!`KJEIYTjRAJJ$3j4b`-hxrIO`E7_x%|p~3${;$sm4MxiY}{GPh8`8G5hlTTO_q3;r}vuS^V*ThRO#h^RC|200000NkvXX Hu0mjfj3!K^ literal 396 zcmV;70dxL|P)3ZN00004b3#c}2nYxW zdZ z5NuN0Yay1Y4w6=aRf>S6*eC%Z90%dX;!HvsVPkG!c*C;qW7uNpbaYoPE2`BbNbUPS zISgf^MAD^-}V7G(m zG@TMK8bNc9rE=!D4nUy*y&lZxu-T+%;q5)`>YFVX=PMWk-7fU|Y1?!4t8t|Q+by^* z#PPB5!z*q3r@*{lUg^|@3-f`?r#)EGN$_7~RIg_Qp3O1=yDXPkaI*s&tyWJs&h@`i qljIo%!BCzTfB!n?+Vf%s!SDdn9N~#_&bqn)0000pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900IR`L_t(IPsNi>YZFlzMzb%dP&ai^g{n|3tquL4wILWnYfPyP zNl5}NtwLKO6cvl57W@VJ6I|<3H*Q1_T)A?(p6T0D;4BC|MN;)YXY6>rPx*JAx&cf-cmBA3{y(ZFy&>jlaE(zqN(Gxruk{ zHr~bttz3@Q>MHKa3eCkuoOBvHnZ%l#qw+W49{%z&zP#XPvv{c#ULrwjb{2PLhGry! zGZn%fAIBOVrZF&p6^rq$9pDA5Gtau!2dYXoe&X4{8mxYp06m|vG js>DD1gMZs2b(@o00000NkvXXu0mjfuhtbo literal 0 HcmV?d00001 diff --git a/code/web/api/data/img/lang/fr.png b/code/web/api/data/img/lang/fr.png index 420474693051769ae7a934b0abe46bbf5feee08c..60ed561d4f39c3520239d77c1dd948e22977796e 100644 GIT binary patch literal 675 zcmV;U0$lxxP)pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900JLLL_t(IPsNixPg7wShR@~?aPS8>JG$!N;74LG8XFMdmp{4D1dEOUGNE|yj z+~ajU_w&4Y6+mexZNXx&a`S0~?dg9KB9TZCi^YgWqlCj@0)YU*U=U-cLV1TmK~cz= z$(WIX&yk{xFQoG^SfJT#(r7ef>h(IcT8(P8N^|THjnNS{9^R$)V3_2VAY5eri^|+` zj(5Hc#bOa%*C`YVflw@`@31cH$+?tMkDyX>k^(Z;kQd^%H^_z zw@Wgaj0yK(^mS9|wO|Yn@Jk48JPxrG(3tsT!i#BMEhH(GN}DZY0}WMG5dx#nN~Py4 zrS2}uL%l?Wz&5gq_gmhCe=}*qFFk7*h9O%BiAZaevQ5C9=;w}6ymf_$5LoZ8@cygH zBW?Jyfqx2I4@kWt!HdWM165Y{n`aIo5h4rp_=O~3&H-&9`>Ghv8QXA-5syl zb&5MMGwXCRH8q99;b44xT<$Dti^&3(f_6TV{0skG@CO0`4|2m%YCr%0002ov JPDHLkV1mp}FXI3J literal 2889 zcmV-P3%2x$P)3ZN00009a7bBm000fw z000fw0YWI7cmMzjPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001VNklm!5}L7{|7ch z$u$^eIMeIb4D1Y429p1tGBPpH2#gv$YVfcySVV;3C$$ZI!6fyc$-sc2NmP{K2ek}+ n&LsW+fLz=v00000|NjF3-id@qj+l`M00000NkvXXu0mjfLQ!F4 diff --git a/code/web/api/data/img/lang/ru.png b/code/web/api/data/img/lang/ru.png index 53aaf57be4dab480ddd03e66d93f7977186a3b41..281cf66f2f517cd6edc4dd8f8aa6b6e13be4b122 100644 GIT binary patch literal 646 zcmV;10(t$3P)pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900II@L_t(IPo0An>6e*>&bghVl5JHfUT<-hcd-`5t8Uo#N@ca%A zp67iz_$h!g2m{If!HT9qKLSdCQ~NjPi}3h4xc8onF|sEmv><*iy$E}?u-6#ncL`JFuA*Va3J z#`pNKRN#Abmv7-bccC0#gBiYzr}-R6@o6N%$5$KNMc(jUx{4)-TPR>}ZeqvdSW8Qo z(J02;9QyP$+T3ZN00009a7bBm000fw z000fw0YWI7cmMzjPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0001CNklXC^8#HP9oHw&;jR1fVue zJOnd21zfR9m2#7Yj5KLfDZ3`k2QCb~u$&~ZfoGF#VF&*d$DXH~)6VN*nOA#Q9#Wyl kX%~$XQuzP?0RR630IP^><_Xu0{r~^~07*qoM6N<$f^Se)#{d8T diff --git a/code/web/api/data/js/combobox.js b/code/web/api/data/js/combobox.js new file mode 100644 index 000000000..0a9440909 --- /dev/null +++ b/code/web/api/data/js/combobox.js @@ -0,0 +1,17 @@ + +function comboInit(thelist) +{ + theinput = document.getElementById(theinput); + var idx = thelist.selectedIndex; + var content = thelist.options[idx].value; + if(theinput.value == "") + theinput.value = content; +} + +function combo(thelist, theinput) +{ + theinput = document.getElementById(theinput); + var idx = thelist.selectedIndex; + var content = thelist.options[idx].value; + theinput.value = content; +} diff --git a/code/web/api/data/js/jquery-1.7.1.js b/code/web/api/data/js/jquery-1.7.1.js new file mode 100644 index 000000000..8ccd0ea78 --- /dev/null +++ b/code/web/api/data/js/jquery-1.7.1.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
      a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
      " + + "" + + "
      "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
      t
      "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
      "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

      "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
      "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
      ", "
      " ], + thead: [ 1, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + col: [ 2, "", "
      " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and