net7/branches/linux-port/SkillsDatabaseSQL.cpp
2014-05-11 16:54:16 -04:00

127 lines
2.6 KiB
C++

// MOBDatabaseSQL.cpp
#include "Net7.h"
#ifdef USE_MYSQL_SECTOR
#include "SkillsDatabase.h"
#include "mysql/mysqlplus.h"
#include "StringManager.h"
SkillsContent::SkillsContent()
{
m_highest_id = 0;
m_SkillConvList.clear();
m_updating = false;
}
SkillsContent::~SkillsContent()
{
m_SkillConvList.clear();
}
bool SkillsContent::LoadSkillsContent()
{
long current_skill_id;
SkillConversion *current_skill;
char QueryString[1024];
if (m_updating) return false;
m_updating = true;
if(!g_MySQL_User || !g_MySQL_Pass)
{
LogMessage("You need to set a mysql user/pass in the net7.cfg\n");
return false;
}
sql_connection_c connection( "net7", g_MySQL_Host, g_MySQL_User, g_MySQL_Pass);
sql_query_c SkillsTable( &connection );
sql_result_c result;
sql_result_c *skill_result = &result;
sprintf(QueryString, "SELECT * FROM `skill_levels`");
if ( !SkillsTable.execute( QueryString ) )
{
LogMessage( "MySQL Login error/Database error: (User: %s Pass: %s)\n", g_MySQL_User, g_MySQL_Pass );
return false;
}
SkillsTable.store(skill_result);
if (!skill_result->n_rows() || !skill_result->n_fields())
{
LogMessage("Error loading rows/fields\n");
return false;
}
LogMessage("Loading Skill Levels from SQL (%d)\n", (int)skill_result->n_rows());
sql_row_c SkillSQLData;
for(int x=0;x<skill_result->n_rows();x++)
{
skill_result->fetch_row(&SkillSQLData);
current_skill_id = (long)SkillSQLData["skill_level_id"];
current_skill = m_SkillConvList[current_skill_id];
if (!current_skill)
{
current_skill = new SkillConversion;
}
current_skill->m_Description = g_StringMgr->GetStr(SkillSQLData["description"]);
current_skill->m_Level = (int)SkillSQLData["level"];
current_skill->m_BaseSkillID = (int)SkillSQLData["skill_id"];
m_SkillConvList[current_skill_id] = current_skill; //add to MOB map
if (current_skill_id > m_highest_id)
{
m_highest_id = current_skill_id;
}
}
m_updating = false;
return true;
}
long SkillsContent::GetSkillLevel(long skill_id)
{
if (m_SkillConvList[skill_id])
{
return m_SkillConvList[skill_id]->m_Level;
}
else
{
return 0;
}
}
long SkillsContent::GetBaseSkillID(long skill_id)
{
if (m_SkillConvList[skill_id])
{
return m_SkillConvList[skill_id]->m_BaseSkillID;
}
else
{
return 0;
}
}
char* SkillsContent::GetSkillDescription(long skill_id)
{
if (m_SkillConvList[skill_id])
{
return m_SkillConvList[skill_id]->m_Description;
}
else
{
return 0;
}
}
#endif