another merge from mainline

This commit is contained in:
dfighter1985 2013-02-14 13:56:05 +01:00
commit a920c7e261
6 changed files with 102 additions and 116 deletions

View file

@ -41,10 +41,10 @@ using namespace CLFECOMMON;
* t| / * t| /
* a| / * a| /
* n| / * n| /
* c|45 / * c|45 /
* e| / * e| /
* |/ * |/
* * o
* Observer * Observer
* *
* If Delta exceeds Distance/2, the priority shelf (bucket) is the highest one (H) * If Delta exceeds Distance/2, the priority shelf (bucket) is the highest one (H)

View file

@ -25,7 +25,7 @@ namespace NLOLDGEORGES
{ {
// La classe CFormFile représente un fichier composé d'un ensemble de fiches représentés par des fiches CForm. // CFormFile class represents a file with a set of CForm sheets.
class CFormFile class CFormFile
{ {
public: public:

View file

@ -23,7 +23,7 @@
namespace NLOLDGEORGES namespace NLOLDGEORGES
{ {
// La classe CFormHead comprend trois strings: le nom de l'utilisateur, la date de dernière modif et la version. // CFormHead class provides three strings: user name, last modification date and version.
class CFormHead class CFormHead
{ {
protected: protected:

View file

@ -23,10 +23,10 @@
namespace NLOLDGEORGES namespace NLOLDGEORGES
{ {
// La classe CFormLoader est le point d'entrée des classes CForm pour charger une fiche. // CFormLoader class is CForm entry point to load a sheet.
// Il y a deux fonctions load: // There are two load functions:
// Sans date: donne directement la dernière fiche historiquement parlant // Without date: give directly the last sheet
// Avec date: donne une fiche composée de la dernière additionnés des historiques postérieurs ou égaux à la date. // With date: give a sheet and all previous ones until this date
class CFormLoader class CFormLoader
{ {
protected: protected:

View file

@ -28,10 +28,10 @@ CSString GroupTypContent;
CSString WKContent; CSString WKContent;
// Assigne une nouvelle MP à une creature // Assign a new raw mat to a creature
void AssignerMP( const CSString& creatureName, const CSString& materialName ) void AssignerMP( const CSString& creatureName, const CSString& materialName )
{ {
// on regarde si la créature est dégénérée ou non // we check if a creature is degenerated or not
if ( ( creatureName.c_str()[3] != 'c' ) && ( creatureName.c_str()[3] != 'd' ) if ( ( creatureName.c_str()[3] != 'c' ) && ( creatureName.c_str()[3] != 'd' )
&& ( creatureName.c_str()[3] != 'f' ) && ( creatureName.c_str()[3] != 'j' ) && ( creatureName.c_str()[3] != 'f' ) && ( creatureName.c_str()[3] != 'j' )
&& ( creatureName.c_str()[3] != 'l' ) && ( creatureName.c_str()[3] != 'p' ) ) && ( creatureName.c_str()[3] != 'l' ) && ( creatureName.c_str()[3] != 'p' ) )
@ -43,7 +43,7 @@ void AssignerMP( const CSString& creatureName, const CSString& materialName )
CSString fileName = toString( "%s//_%s_mp.creature", RAW_MATERIAL_ASSIGN.c_str(), creatureName.c_str() ); CSString fileName = toString( "%s//_%s_mp.creature", RAW_MATERIAL_ASSIGN.c_str(), creatureName.c_str() );
CSString data; CSString data;
// création si le fichier n'existe pas // create file if not exists
if(!CFile::fileExists(fileName)) if(!CFile::fileExists(fileName))
{ {
CSString str; CSString str;
@ -66,7 +66,7 @@ void AssignerMP( const CSString& creatureName, const CSString& materialName )
if ( !data.contains( materialName.c_str() ) ) if ( !data.contains( materialName.c_str() ) )
{ {
// on recherche le premier numéro de MP non utilisé // look for first number of unused raw mat
CSString str = data; CSString str = data;
int nb= 0; int nb= 0;
while ( str.contains( "Name=\"MP" ) ) while ( str.contains( "Name=\"MP" ) )
@ -75,7 +75,7 @@ void AssignerMP( const CSString& creatureName, const CSString& materialName )
nb = str.firstWord().atoi(); nb = str.firstWord().atoi();
} }
// on insère la nouvelle MP // insert new raw mat
str = " <STRUCT Name=\"MP"; str = " <STRUCT Name=\"MP";
str += toString( "%d\">\r\n <ATOM Name=\"AssociatedItem\"", nb+1 ); str += toString( "%d\">\r\n <ATOM Name=\"AssociatedItem\"", nb+1 );
str += toString( " Value=\"%s\"/>\r\n </STRUCT>\r\n </STRUCT>\r\n </STRUCT>\r\n", materialName.c_str() ); str += toString( " Value=\"%s\"/>\r\n </STRUCT>\r\n </STRUCT>\r\n </STRUCT>\r\n", materialName.c_str() );
@ -87,8 +87,7 @@ void AssignerMP( const CSString& creatureName, const CSString& materialName )
} }
// enregistrement des differentes // save stats for each craft part
// caractéristiques de chaque craft part
void LoadCraftParts() void LoadCraftParts()
{ {
CSString data, ligne, info; CSString data, ligne, info;
@ -117,7 +116,7 @@ void LoadCraftParts()
{ {
ligne = data.splitTo( "\n", true ); ligne = data.splitTo( "\n", true );
// on recherche la ligne correspondant à notre craft part // look for line concerning our craft part
info = ligne.splitTo( ";", true ); info = ligne.splitTo( ";", true );
if ( !info.empty() ) if ( !info.empty() )
{ {
@ -126,13 +125,12 @@ void LoadCraftParts()
for ( int i=0; i<6; i++ ) for ( int i=0; i<6; i++ )
ligne.splitTo( ";", true ); ligne.splitTo( ";", true );
// parcours des différentes caractèristiques // browse each characteristics
for ( int i=0; i<NumMPStats; i++ ) for ( int i=0; i<NumMPStats; i++ )
{ {
info = ligne.splitTo( ";", true ).left(1); info = ligne.splitTo( ";", true ).left(1);
// si la cellule n'est pas vide, cette caractèristique // if the cell is not empty, this characteristic is generated by craft part
// est générée par la craft part
if ( ( info == "C" ) || ( info == "D" ) || ( info == "X" ) ) if ( ( info == "C" ) || ( info == "D" ) || ( info == "X" ) )
craftParts[index].Carac[i] = true; craftParts[index].Carac[i] = true;
else else
@ -143,7 +141,7 @@ void LoadCraftParts()
} }
// Enregistre les noms des différents fichiers de creature dans le bestiaire // Save creatures filenames in bestiary
void LoadCreatureFiles() void LoadCreatureFiles()
{ {
printf( "-- REGISTERING CREATURE FILES --\n" ); printf( "-- REGISTERING CREATURE FILES --\n" );
@ -163,8 +161,7 @@ void LoadCreatureFiles()
} }
// Enregistre pour chaque créature la liste des différents // Save items levels list to generate for each creature
// niveaux d'item à générer
void InitCreatureMP() void InitCreatureMP()
{ {
CSString data, ligneN, ligneM; CSString data, ligneN, ligneM;
@ -184,12 +181,12 @@ void InitCreatureMP()
ligneN = data.splitTo( "\n", true ); ligneN = data.splitTo( "\n", true );
ligneM = data.splitTo( "\n", true ); ligneM = data.splitTo( "\n", true );
// on vérifie que la ligne est valide // check if line is valid
if ( !ligneN.splitTo( ";", true ).empty() ) if ( !ligneN.splitTo( ";", true ).empty() )
{ {
ligneM.splitTo( ";", true ); ligneM.splitTo( ";", true );
// on se déplace jusqu'au données // move until data
ligneN.splitTo( ";", true ); ligneN.splitTo( ";", true );
ligneM.splitTo( ";", true ); ligneM.splitTo( ";", true );
ligneN.splitTo( ";", true ); ligneN.splitTo( ";", true );
@ -211,8 +208,7 @@ void InitCreatureMP()
ligneN = ""; ligneN = "";
} }
// pour chaque nouveau nom de créature trouvé, // save items to generate for each new creature name found
// on enregistre les items à générer
for ( char eco='a'; eco<='z'; eco++ ) for ( char eco='a'; eco<='z'; eco++ )
{ {
for ( int level=0; level<10; level++ ) for ( int level=0; level<10; level++ )
@ -221,12 +217,12 @@ void InitCreatureMP()
{ {
CSString fileName = toString( "c%s%c%c%d", code.toLower().c_str(), eco, CSString fileName = toString( "c%s%c%c%d", code.toLower().c_str(), eco,
'a' + level, creatureLevel ); 'a' + level, creatureLevel );
// on recherche si une créature correspond à ces données // look for corresponding creature
it = creatureFiles.find( fileName ); it = creatureFiles.find( fileName );
if ( it != creatureFiles.end() ) if ( it != creatureFiles.end() )
{ {
// si oui, on signale que cet item devra être généré // if yes, this item should be generated
CreatureMPItem* creatureMP = new CreatureMPItem; CreatureMPItem* creatureMP = new CreatureMPItem;
creatureMP->creatureLevel = creatureLevel; creatureMP->creatureLevel = creatureLevel;
creatureMP->eco = eco; creatureMP->eco = eco;
@ -246,7 +242,7 @@ void InitCreatureMP()
} }
// Retourne la qualité maximum pour un level d'item // Return quality maximum foran item level
int GetMaxQuality( int level ) int GetMaxQuality( int level )
{ {
if ( level == 0 ) if ( level == 0 )
@ -256,7 +252,7 @@ int GetMaxQuality( int level )
} }
// Retourne l'énergie maximum pour un level d'item // Return energy maximum for an item level
int GetStatEnergy( int level ) int GetStatEnergy( int level )
{ {
if ( level == 0 ) if ( level == 0 )
@ -266,7 +262,7 @@ int GetStatEnergy( int level )
} }
// Retourne le nom de classe de l'item selon ses caractèristiques // Return item class name depending on its characteristics
void GetItemClass( int level, bool mission, bool creature, CSString& outClassName ) void GetItemClass( int level, bool mission, bool creature, CSString& outClassName )
{ {
static CSString missionClasses[] = { "Plain", "Average", "Prime", "Select", static CSString missionClasses[] = { "Plain", "Average", "Prime", "Select",
@ -308,7 +304,7 @@ bool endsWith( const CSString& s, const CSString& substring )
} }
// Génére les noms d'un item // Generate item names
void GenerateItemNames( const CSString& nomMP, char eco, int level, bool mission, bool creature, CSString& outStr ) void GenerateItemNames( const CSString& nomMP, char eco, int level, bool mission, bool creature, CSString& outStr )
{ {
CSString itemClass, prefix, singularWithNoPrefix; CSString itemClass, prefix, singularWithNoPrefix;
@ -411,7 +407,7 @@ void GenerateItemNames( const CSString& nomMP, char eco, int level, bool mission
} }
// Retourne le numéro de la famille passée en paramètre // Return number of specified family
int GetNumeroMP( const CSString& nomMP ) int GetNumeroMP( const CSString& nomMP )
{ {
CSString result; CSString result;
@ -420,27 +416,25 @@ int GetNumeroMP( const CSString& nomMP )
int res; int res;
// *** Get the family number, and add it to faimly.typ if not already done // *** Get the family number, and add it to faimly.typ if not already done
// on recherche si la MP est présente // look for raw mat existence in item_mp_family.typ file
// dans le fichier item_mp_family.typ
sprintf( buffer, "%s\" Value=\"", nomMP.c_str() ); sprintf( buffer, "%s\" Value=\"", nomMP.c_str() );
result = FamilyTypContent.splitFrom( buffer ); result = FamilyTypContent.splitFrom( buffer );
// si oui, on retourne son numéro de MP // if yes, return raw mat number
if ( !result.empty() ) if ( !result.empty() )
res = result.splitTo( "\"" ).atoi(); res = result.splitTo( "\"" ).atoi();
else else
{ {
// sinon, on génère un nouveau numéro : // else, generate a new number:
// on recupère le dernier numéro de MP (le max) // get last raw mat number (the max)
result = FamilyTypContent.splitTo( "<LOG>" ).right(10); result = FamilyTypContent.splitTo( "<LOG>" ).right(10);
result.splitTo( "\"", true ); result.splitTo( "\"", true );
result = result.splitTo( "\"" ); result = result.splitTo( "\"" );
// on ajoute 1 pour avoir un numéro non utilisé // increase by 1 to get the unused number
res = result.atoi() + 1; res = result.atoi() + 1;
// on ajoute la nouvelle MP : // add new raw mat in file item_mp_family.typ
// dans le fichier item_mp_family.typ
sprintf( buffer, " <DEFINITION Label=\"%s\" Value=\"%d\"/>\n<LOG>", nomMP.c_str(), res ); sprintf( buffer, " <DEFINITION Label=\"%s\" Value=\"%d\"/>\n<LOG>", nomMP.c_str(), res );
FamilyTypContent= FamilyTypContent.replace( "<LOG>", buffer ); FamilyTypContent= FamilyTypContent.replace( "<LOG>", buffer );
FamilyTypContent.writeToFile( ITEM_MP_FAMILY_TYP ); FamilyTypContent.writeToFile( ITEM_MP_FAMILY_TYP );
@ -463,7 +457,7 @@ int GetNumeroMP( const CSString& nomMP )
} }
// Retourne le numéro du groupe passé en paramètre // Return number from specified group
int GetNumeroGroupe( const CSString& groupe ) int GetNumeroGroupe( const CSString& groupe )
{ {
CSString result; CSString result;
@ -472,27 +466,25 @@ int GetNumeroGroupe( const CSString& groupe )
int res; int res;
// *** Get the group number, and add it to group.typ if not already done // *** Get the group number, and add it to group.typ if not already done
// on recherche si le groupe est présent // look for group existence in item_mp_group.typ file
// dans le fichier item_mp_group.typ
sprintf( buffer, "%s\" Value=\"", groupe.c_str() ); sprintf( buffer, "%s\" Value=\"", groupe.c_str() );
result = GroupTypContent.splitFrom( buffer ); result = GroupTypContent.splitFrom( buffer );
// si oui, on retourne son numéro de groupe // if yes, return its group number
if ( !result.empty() ) if ( !result.empty() )
res = result.splitTo( "\"" ).atoi(); res = result.splitTo( "\"" ).atoi();
else else
{ {
// sinon, on génère un nouveau numéro : // else, generate a new number :
// on recupère le dernier numéro de groupe (le max) // get the last group number (the max)
result = GroupTypContent.splitTo( "<LOG>" ).right(10); result = GroupTypContent.splitTo( "<LOG>" ).right(10);
result.splitTo( "\"", true ); result.splitTo( "\"", true );
result = result.splitTo( "\"" ); result = result.splitTo( "\"" );
// on ajoute 1 pour avoir un numéro non utilisé // increase by 1 to get the unused number
res = result.atoi() + 1; res = result.atoi() + 1;
// on ajoute la nouvelle MP : // add new raw mat in file item_mp_group.typ
// dans le fichier item_mp_group.typ
sprintf( buffer, "<DEFINITION Label=\"%s\" Value=\"%d\"/>\n<LOG>", groupe.c_str(), res ); sprintf( buffer, "<DEFINITION Label=\"%s\" Value=\"%d\"/>\n<LOG>", groupe.c_str(), res );
GroupTypContent= GroupTypContent.replace( "<LOG>", buffer ); GroupTypContent= GroupTypContent.replace( "<LOG>", buffer );
GroupTypContent.writeToFile( ITEM_MP_GROUPE_TYP ); GroupTypContent.writeToFile( ITEM_MP_GROUPE_TYP );
@ -516,7 +508,7 @@ int GetNumeroGroupe( const CSString& groupe )
} }
// Génère l'item parent pour une MP // Generate parent item for a raw mat
void CreateParentSItem( int numMP, void CreateParentSItem( int numMP,
const CSString& nomMP, const CSString& nomMP,
const CSString& groupe, const CSString& groupe,
@ -527,10 +519,10 @@ void CreateParentSItem( int numMP,
CSString output; CSString output;
CSString outputFileName; CSString outputFileName;
// nom du fichier de sortie // output filename
outputFileName = toString( "%s_parent\\_m%04d.sitem", MP_DIRECTORY.c_str(), numMP ); outputFileName = toString( "%s_parent\\_m%04d.sitem", MP_DIRECTORY.c_str(), numMP );
// entete xml // xml header
output = "<?xml version=\"1.0\"?>\n<FORM Version=\"0.0\" State=\"modified\">\n"; output = "<?xml version=\"1.0\"?>\n<FORM Version=\"0.0\" State=\"modified\">\n";
// basics // basics
@ -538,15 +530,15 @@ void CreateParentSItem( int numMP,
output += " <ATOM Name=\"Drop or Sell\" Value=\""; output += " <ATOM Name=\"Drop or Sell\" Value=\"";
if ( !dropOrSell ) if ( !dropOrSell )
// il s'agit d'un item de mission, non vendable // mission items can't be sold
output += "false\"/>\n"; output += "false\"/>\n";
else else
// sinon, on peut le vendre // the others, yes
output += "true\"/>\n"; output += "true\"/>\n";
output += " <ATOM Name=\"Bulk\" Value=\"0.5\"/>\n </STRUCT>\n"; output += " <ATOM Name=\"Bulk\" Value=\"0.5\"/>\n </STRUCT>\n";
// mp // raw mat
output += " <STRUCT Name=\"mp\">\n"; output += " <STRUCT Name=\"mp\">\n";
output += " <ATOM Name=\"Family\" Value=\""; output += " <ATOM Name=\"Family\" Value=\"";
output += nomMP; output += nomMP;
@ -573,16 +565,16 @@ void CreateParentSItem( int numMP,
output += " </STRUCT>\n </STRUCT>\n"; output += " </STRUCT>\n </STRUCT>\n";
// fin du fichier // end of file
output += " <STRUCT/>\n <STRUCT/>\n <STRUCT/>\n <STRUCT/>\n</FORM>\n"; output += " <STRUCT/>\n <STRUCT/>\n <STRUCT/>\n <STRUCT/>\n</FORM>\n";
// écriture finale // final write
output.writeToFile( outputFileName ); output.writeToFile( outputFileName );
} }
// Remplit les différents informations concernant le craft par un item // Fill information related to craft with an item
void FillCraftData( char craft, int eco, int level, bool creature, int bestStat, void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
int worstStat1, int worstStat2, CSString& outStr ) int worstStat1, int worstStat2, CSString& outStr )
{ {
@ -630,8 +622,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
currentDocItem.push( DtCraftSlotName, craftParts[index].Desc.splitFrom( "(" ).splitTo( ")" ) ); currentDocItem.push( DtCraftSlotName, craftParts[index].Desc.splitFrom( "(" ).splitTo( ")" ) );
// enregistrements des stats de chaque // save stats for each characteristic
// caractèristique
for ( int i=0; i<NumMPStats; i++ ) for ( int i=0; i<NumMPStats; i++ )
{ {
if ( craftParts[index].Carac[i] ) if ( craftParts[index].Carac[i] )
@ -641,7 +632,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
else else
stat = mediumStatsByStatQuality[ level ]; stat = mediumStatsByStatQuality[ level ];
// gestion des points forts/faibles de la MP // manage weak/strong points of a raw mat
if ( i == bestStat ) if ( i == bestStat )
{ {
if ( worstStat2 == -1 ) if ( worstStat2 == -1 )
@ -651,8 +642,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
if ( stat > 100 ) if ( stat > 100 )
{ {
// si une des stats dépasse 100, les autres // if a stat exceeds 100, other are increased
// stats sont augmentées
remaining = stat - 100; remaining = stat - 100;
stat = 100; stat = 100;
} }
@ -661,7 +651,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
{ {
stat -= 20; stat -= 20;
// durabilité minimum // minimum durability
if ( ( i == 0 ) && ( stat < 1 ) ) if ( ( i == 0 ) && ( stat < 1 ) )
stat = 1; stat = 1;
} }
@ -677,7 +667,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
if ( nbToRaise != 0 ) if ( nbToRaise != 0 )
ajout = remaining/nbToRaise; ajout = remaining/nbToRaise;
// ajout des informations pour chaque carac // add information for each characteristic
for ( int i=0; i<NumMPStats; i++ ) for ( int i=0; i<NumMPStats; i++ )
{ {
if ( stats[i] != -1 ) if ( stats[i] != -1 )
@ -696,7 +686,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
} }
} }
// CraftCivSpec en fonction de l'écosystème // CraftCivSpec depending on ecosystem
outStr += " <ATOM Name=\"CraftCivSpec\" Value=\""; outStr += " <ATOM Name=\"CraftCivSpec\" Value=\"";
CSString craftCiv; CSString craftCiv;
@ -739,7 +729,7 @@ void FillCraftData( char craft, int eco, int level, bool creature, int bestStat,
} }
// Création d'une fiche d'item // Create item sheets
void CreateSheet( int numMP, const CSString& nomMP, void CreateSheet( int numMP, const CSString& nomMP,
const CSString& code, char eco, const CSString& code, char eco,
int level, const MPCraftStats& craftStats, int level, const MPCraftStats& craftStats,
@ -801,7 +791,7 @@ void CreateSheet( int numMP, const CSString& nomMP,
else else
currentDocItem.push( DtLevelZone, "-" ); currentDocItem.push( DtLevelZone, "-" );
// remplissage des informations de la fiche // fill sheets information
output = "<?xml version=\"1.0\"?>\n<FORM Version=\"0.0\" State=\"modified\">\n"; output = "<?xml version=\"1.0\"?>\n<FORM Version=\"0.0\" State=\"modified\">\n";
output += " <PARENT Filename=\"_m"; output += " <PARENT Filename=\"_m";
output += eco; output += eco;
@ -809,7 +799,7 @@ void CreateSheet( int numMP, const CSString& nomMP,
output += chaineNum; output += chaineNum;
output += ".sitem\"/>\n"; output += ".sitem\"/>\n";
// le code est celui d'une créature, on doit donc rajouter le parent // if a creature code, add it its parent
if ( creature ) if ( creature )
{ {
output += " <PARENT Filename=\"_m"; output += " <PARENT Filename=\"_m";
@ -824,7 +814,7 @@ void CreateSheet( int numMP, const CSString& nomMP,
output += " <STRUCT Name=\"mp\">\n"; output += " <STRUCT Name=\"mp\">\n";
output += " <ATOM Name=\"MpColor\" Value=\""; output += " <ATOM Name=\"MpColor\" Value=\"";
// materiaux de missions toujours Beige // mission materials always Beige
if ( craftStats.Craft.empty() ) if ( craftStats.Craft.empty() )
{ {
output += "Beige\"/>\n"; output += "Beige\"/>\n";
@ -833,14 +823,14 @@ void CreateSheet( int numMP, const CSString& nomMP,
} }
else else
{ {
// on récupère la couleur // get the color
GetItemColor( craftStats.color, eco, level, color ); GetItemColor( craftStats.color, eco, level, color );
output += color; output += color;
output += "\"/>\n"; output += "\"/>\n";
currentDocItem.push( DtColor, color ); currentDocItem.push( DtColor, color );
// on ajoute les données de craft // add craft data
output += " <STRUCT Name=\"MpParam\">\n"; output += " <STRUCT Name=\"MpParam\">\n";
for ( uint i=0; i<craftStats.Craft.size(); i++ ) for ( uint i=0; i<craftStats.Craft.size(); i++ )
{ {
@ -906,7 +896,7 @@ void CreateSheet( int numMP, const CSString& nomMP,
output.writeToFile( toString( "%s%s\\%s", MP_DIRECTORY.c_str(), directory.c_str(), outputFileName.c_str() ) ); output.writeToFile( toString( "%s%s\\%s", MP_DIRECTORY.c_str(), directory.c_str(), outputFileName.c_str() ) );
// Génération des noms // Generate names
if ( !specialItem ) if ( !specialItem )
{ {
outputFileName = toString( "m%04d%s%c%c%02d", numMP, code.c_str(), eco, 'a' + level, variation ); outputFileName = toString( "m%04d%s%c%c%02d", numMP, code.c_str(), eco, 'a' + level, variation );
@ -934,7 +924,7 @@ void CreateSheet( int numMP, const CSString& nomMP,
} }
// Pour une MP se trouvant dans des déposits, génération de ses items // Generate deposits items for harvested raw mats
void GenerateDepositItems( int numMP, const CSString& nomMP, const MPCraftStats& craftStats, const CSString& loc ) void GenerateDepositItems( int numMP, const CSString& nomMP, const MPCraftStats& craftStats, const CSString& loc )
{ {
CSString code; CSString code;
@ -959,11 +949,11 @@ void GenerateDepositItems( int numMP, const CSString& nomMP, const MPCraftStats&
} }
else else
{ {
// 2 items dans common // 2 items in common
CreateSheet( numMP, nomMP, code, 'c', 1, craftStats ); CreateSheet( numMP, nomMP, code, 'c', 1, craftStats );
CreateSheet( numMP, nomMP, code, 'c', 2, craftStats ); CreateSheet( numMP, nomMP, code, 'c', 2, craftStats );
// 3 items par zone // 3 items per zone
for ( int i=0; i<3; i++ ) for ( int i=0; i<3; i++ )
{ {
CreateSheet( numMP, nomMP, code, 'd', 3+i, craftStats ); CreateSheet( numMP, nomMP, code, 'd', 3+i, craftStats );
@ -976,24 +966,24 @@ void GenerateDepositItems( int numMP, const CSString& nomMP, const MPCraftStats&
} }
// Pour une MP se trouvant sur un créature, génération de ses items // Generate creatures items for a looted raw mat
void GenerateCreatureItems( int numMP, CSString& nomMP, const MPCraftStats& craftStats ) void GenerateCreatureItems( int numMP, CSString& nomMP, const MPCraftStats& craftStats )
{ {
map<CSString, ListeCreatureMP>::const_iterator itLCMP; map<CSString, ListeCreatureMP>::const_iterator itLCMP;
int quality; int quality;
static int statQuality[] = { 0, 1, 0, 1, 3, 6, 4, 2 }; static int statQuality[] = { 0, 1, 0, 1, 3, 6, 4, 2 };
// On obtient la liste des niveau d'item à generer pour la créature // Get items levels to generate for the creature
itLCMP = itemsAGenerer.find( nomMP.firstWord() ); itLCMP = itemsAGenerer.find( nomMP.firstWord() );
if ( itLCMP != itemsAGenerer.end() ) if ( itLCMP != itemsAGenerer.end() )
{ {
ListeCreatureMP::const_iterator itMP = (*itLCMP).second.begin(); ListeCreatureMP::const_iterator itMP = (*itLCMP).second.begin();
// pour chaque niveau d'item à générer // for each level of an item to generate
while ( itMP != (*itLCMP).second.end() ) while ( itMP != (*itLCMP).second.end() )
{ {
// on enregistre ses caractéristiques // save its stats
char eco = (*itMP)->eco; char eco = (*itMP)->eco;
int creatureLevel = (*itMP)->creatureLevel; int creatureLevel = (*itMP)->creatureLevel;
int itemLevel = (*itMP)->itemLevel; int itemLevel = (*itMP)->itemLevel;
@ -1043,7 +1033,7 @@ void GenerateCreatureItems( int numMP, CSString& nomMP, const MPCraftStats& craf
} }
// Génération d'un item spécial // Generate special item
void GenerateSpecialItem( int numMP, const CSString& nomMP, const MPCraftStats& craftStats, void GenerateSpecialItem( int numMP, const CSString& nomMP, const MPCraftStats& craftStats,
const CSString& loc,CSString& itemData, int variation ) const CSString& loc,CSString& itemData, int variation )
{ {
@ -1060,15 +1050,15 @@ void GenerateSpecialItem( int numMP, const CSString& nomMP, const MPCraftStats&
CreateSheet( numMP, nomMP, code, info.c_str()[0], info.c_str()[1]-'a', craftStats, true, variation ); CreateSheet( numMP, nomMP, code, info.c_str()[0], info.c_str()[1]-'a', craftStats, true, variation );
name = toString( "m%04d%s%s%02d\t", numMP, code.c_str(), info.c_str(), variation ); name = toString( "m%04d%s%s%02d\t", numMP, code.c_str(), info.c_str(), variation );
name += itemData.splitTo( "/", true ); // singulier name += itemData.splitTo( "/", true ); // singular
name += "\t"; name += "\t";
name += itemData.splitTo( "/", true ); // article indéfini name += itemData.splitTo( "/", true ); // undefined article
name += "\t"; name += "\t";
name += itemData.splitTo( "/", true ); // article défini name += itemData.splitTo( "/", true ); // defined article
name += "\t"; name += "\t";
name += itemData.splitTo( "/", true ); // pluriel name += itemData.splitTo( "/", true ); // plural
name += "\t\t"; name += "\t\t";
name += itemData.splitTo( "/", true ); // article pluriel name += itemData.splitTo( "/", true ); // plural article
itemNames.insert( name ); itemNames.insert( name );
} }
@ -1095,7 +1085,7 @@ void parseSpecialAttributes(const CSString &specialAttributes, MPCraftStats &cra
} }
// Nouvelle MP à traiter // New raw mat to process
void NewMP( CSString& ligne ) void NewMP( CSString& ligne )
{ {
CSString nomMP, groupe, loc, icon, overlay, special, stat, specialAttributes; CSString nomMP, groupe, loc, icon, overlay, special, stat, specialAttributes;
@ -1113,7 +1103,7 @@ void NewMP( CSString& ligne )
return; return;
} }
// récupération des infos // get information
groupe = ligne.splitTo( ";", true ); groupe = ligne.splitTo( ";", true );
craftStats.Craft = ligne.splitTo( ";", true ); craftStats.Craft = ligne.splitTo( ";", true );
specialAttributes= ligne.splitTo( ";" , true ); specialAttributes= ligne.splitTo( ";" , true );
@ -1189,7 +1179,7 @@ void NewMP( CSString& ligne )
currentDocItem.push( DtRMFamily, nomMP ); currentDocItem.push( DtRMFamily, nomMP );
currentDocItem.push( DtGroup, groupe ); currentDocItem.push( DtGroup, groupe );
// récupréation du numéro de MP // get raw mat number
numMP = GetNumeroMP( nomMP ); numMP = GetNumeroMP( nomMP );
printf( " Processing Family %d : %s\n", numMP, nomMP.c_str() ); printf( " Processing Family %d : %s\n", numMP, nomMP.c_str() );
@ -1203,12 +1193,12 @@ void NewMP( CSString& ligne )
MPFamilies[numMP].Icon= icon; MPFamilies[numMP].Icon= icon;
// MP trouvées dans les déposits ou dans la goo // raw mats found in deposits or goo
if ( loc.left(1) != "C" ) if ( loc.left(1) != "C" )
{ {
if ( !specialOnly ) if ( !specialOnly )
{ {
// Génération des items // Generate items
GenerateDepositItems( numMP, nomMP, craftStats, loc ); GenerateDepositItems( numMP, nomMP, craftStats, loc );
} }
@ -1221,14 +1211,14 @@ void NewMP( CSString& ligne )
overlay = nomMP.firstWord().toUpper().left(6); overlay = nomMP.firstWord().toUpper().left(6);
} }
// MP trouvées sur les creature // looted raw mats
else else
{ {
GenerateCreatureItems( numMP, nomMP, craftStats ); GenerateCreatureItems( numMP, nomMP, craftStats );
} }
// items spéciaux // special items
CSString codeSpecial, nouveauCode; CSString codeSpecial, nouveauCode;
int variation = 1; int variation = 1;
CSortedStringSet::const_iterator it = specialNames.begin(); CSortedStringSet::const_iterator it = specialNames.begin();
@ -1250,7 +1240,7 @@ void NewMP( CSString& ligne )
} }
// Création de la fiche parente pour la MP // Create parent sheet for raw mat
CreateParentSItem( numMP, nomMP, groupe, extraInfo.DropOrSell, icon, overlay ); CreateParentSItem( numMP, nomMP, groupe, extraInfo.DropOrSell, icon, overlay );
currentDocItem.reset( DtRMFamily ); currentDocItem.reset( DtRMFamily );
@ -1260,7 +1250,7 @@ void NewMP( CSString& ligne )
} }
// Génération du Primitive Necklace (objet particulier) // Generate Primitive Necklace (special object)
void CreatePrimitiveNecklace() void CreatePrimitiveNecklace()
{ {
CSString output; CSString output;
@ -1282,7 +1272,7 @@ void CreatePrimitiveNecklace()
} }
// Enregistre les différents noms // Save names
void ItemNamesSave() void ItemNamesSave()
{ {
printf( "-- SAVING ITEM NAMES --\n"); printf( "-- SAVING ITEM NAMES --\n");
@ -1325,8 +1315,7 @@ void ItemNamesSave()
} }
// Charge les différentes Customized Properties // Load Customized Properties defined in raw_material_generation.cfg
// définies dans raw_material_generation.cfg
void LoadCustomizedProperties() void LoadCustomizedProperties()
{ {
CSString data, name, prop, val; CSString data, name, prop, val;
@ -1356,7 +1345,7 @@ void LoadCustomizedProperties()
CSString fileName, str, output; CSString fileName, str, output;
fileName = CPath::lookup( name, false, false, true ); fileName = CPath::lookup( name, false, false, true );
// on vérifie que le fichier concerné existe // check if file exists
if ( !fileName.empty() ) if ( !fileName.empty() )
{ {
CSString zone = prop.splitTo( ".", true ); CSString zone = prop.splitTo( ".", true );
@ -1368,7 +1357,7 @@ void LoadCustomizedProperties()
output += toString( "%s\">\n <ATOM Name=\"", zone.c_str() ); output += toString( "%s\">\n <ATOM Name=\"", zone.c_str() );
output += toString( "%s\" Value=\"%s\"/>\n </STRUCT>", prop.c_str(), val.c_str() ); output += toString( "%s\" Value=\"%s\"/>\n </STRUCT>", prop.c_str(), val.c_str() );
// on vérifie que la propriétés n'a pas déjà été insérée // check if property is not already inserted
if ( !str.contains( output.c_str() ) ) if ( !str.contains( output.c_str() ) )
{ {
str = str.replace( "<STRUCT>", output.c_str() ); str = str.replace( "<STRUCT>", output.c_str() );
@ -1381,7 +1370,7 @@ void LoadCustomizedProperties()
output += toString( " <ATOM Name=\"" ); output += toString( " <ATOM Name=\"" );
output += toString( "%s\" Value=\"%s\"/>\n", prop.c_str(), val.c_str() ); output += toString( "%s\" Value=\"%s\"/>\n", prop.c_str(), val.c_str() );
// on vérifie que la propriétés n'a pas déjà été insérée // check if property is not already inserted
if ( !str.contains( toString( "%s\" Value=\"%s\"/>\n", prop.c_str(), val.c_str() ).c_str() ) ) if ( !str.contains( toString( "%s\" Value=\"%s\"/>\n", prop.c_str(), val.c_str() ).c_str() ) )
{ {
str = str.replace( toString( " <STRUCT Name=\"%s\">\n", zone.c_str() ).c_str(), output.c_str() ); str = str.replace( toString( " <STRUCT Name=\"%s\">\n", zone.c_str() ).c_str(), output.c_str() );
@ -1422,7 +1411,7 @@ void SaveFamiliesForageSource()
} }
// Génère la documentation // Generate documentation
void GenerateDoc() void GenerateDoc()
{ {
CProducedDocHtml MainDoc; CProducedDocHtml MainDoc;
@ -1470,7 +1459,7 @@ void GenerateDoc()
} }
// Initialise les repertoires à partir de raw_material_generation.cfg // Initialize directories from raw_material_generation.cfg
void SetupDirectories() void SetupDirectories()
{ {
CSString data; CSString data;
@ -1503,8 +1492,7 @@ void SetupDirectories()
} }
// Parcours les différentes familles de MP pour effectuer // Browse all raw mats families to do all related processes
// les traitements nécessaires
void LoadFamillesMP() void LoadFamillesMP()
{ {
printf( "-- LOADING RAW MATERIAL FAMILIES --\n" ); printf( "-- LOADING RAW MATERIAL FAMILIES --\n" );
@ -1530,14 +1518,13 @@ void LoadFamillesMP()
ligne = fileData.splitTo( "\n", true ); ligne = fileData.splitTo( "\n", true );
while ( ligne != "" ) while ( !ligne.empty() )
{ {
NewMP( ligne ); NewMP( ligne );
ligne = fileData.splitTo( "\n", true ); ligne = fileData.splitTo( "\n", true );
} }
// le Primitive Necklace n'étant pas spécifié dans la liste des MP // we manually add Primitive Necklace because it's not specified in raw mats list
// on le rajoute à la main
CreatePrimitiveNecklace(); CreatePrimitiveNecklace();
} }

View file

@ -105,20 +105,19 @@ public:
}; };
////////////////////////////////// //////////////////////////////////
// VARIABLES GLOBALES // // GLOBAL VARIABLES //
////////////////////////////////// //////////////////////////////////
// Liste des différentes Craft parts // Craft parts list
CraftPart craftParts[NumMPCraftParts]; CraftPart craftParts[NumMPCraftParts];
// Liste des fichiers .creature // .creature files list
map<string, string> creatureFiles; map<string, string> creatureFiles;
// noms générés pour chaque item // generated names for each item
CSortedStringSet itemNames; CSortedStringSet itemNames;
// Liste des items à generer // Items list to generate for each creature code
// pour chaque code de créature
map<CSString, ListeCreatureMP> itemsAGenerer; map<CSString, ListeCreatureMP> itemsAGenerer;
// MP Family list // MP Family list
@ -133,7 +132,7 @@ public:
std::vector<CMPFamily> MPFamilies; std::vector<CMPFamily> MPFamilies;
// chemin des différents repertoires // directories pathes
CSString LEVEL_DESIGN_PATH; CSString LEVEL_DESIGN_PATH;
CSString TRANSLATION_PATH; CSString TRANSLATION_PATH;