Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
192
GameTools/Zallad3D SceneClass/H3DOutfitTable.cpp
Normal file
192
GameTools/Zallad3D SceneClass/H3DOutfitTable.cpp
Normal file
@@ -0,0 +1,192 @@
|
||||
// H3DOutfitTable.cpp: implementation of the CH3DOutfitTable class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "H3DOutfitTable.h"
|
||||
#include "SimpleParser.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CH3DOutfitTable::CH3DOutfitTable()
|
||||
{
|
||||
}
|
||||
|
||||
CH3DOutfitTable::~CH3DOutfitTable()
|
||||
{
|
||||
std::map<char*, H3DOutfitElement, szi_less>::iterator it;
|
||||
|
||||
for( it = m_mapName2Outfit.begin(); it != m_mapName2Outfit.end(); it++ )
|
||||
{
|
||||
it->second.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool CH3DOutfitTable::Load( const char* szFileName )
|
||||
{
|
||||
CSimpleParser parser;
|
||||
|
||||
if( false == parser.OpenFile( szFileName ) )
|
||||
{
|
||||
return false; // file open failed
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
char* szToken;
|
||||
char* szTmp;
|
||||
|
||||
char szItemName[260];
|
||||
std::vector<char*> vec_szMeshName;
|
||||
std::vector<char*> vec_szTexName;
|
||||
long lState = 0;
|
||||
/* lState -
|
||||
0 : item name read mode
|
||||
1 : Mesh name read mode
|
||||
2 : Tex name read mode
|
||||
3 : Set item name read mode */
|
||||
H3DOutfitElement oel;
|
||||
while( (szToken = parser.GetNextToken()) != NULL )
|
||||
{
|
||||
switch( lState )
|
||||
{
|
||||
case 0:
|
||||
if( 0 == stricmp( szToken, "Mesh" ) )
|
||||
{
|
||||
// Mesh name read mode <20><> <20><>ȯ
|
||||
lState = 1;
|
||||
}
|
||||
else if( 0 == stricmp( szToken, "Tex" ) )
|
||||
{
|
||||
// Tex name read mode <20><> <20><>ȯ
|
||||
lState = 2;
|
||||
}
|
||||
else if( 0 == stricmp( szToken, "Set" ) )
|
||||
{
|
||||
// Set item name read mode <20><> <20><>ȯ
|
||||
lState = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD> <20>ƴϸ<C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD> <20>б<EFBFBD><D0B1><EFBFBD>.
|
||||
strcpy( szItemName, szToken ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>ش<EFBFBD><D8B4>ϴ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if( 0 == stricmp( szToken, ";" ) )
|
||||
{
|
||||
// Mesh name read mode<64><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// outfit element <20><> mesh <20>ʵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
oel.lMeshCount = vec_szMeshName.size();
|
||||
oel.pszMeshName = new char*[vec_szMeshName.size()];
|
||||
for( i = 0; i < vec_szMeshName.size(); ++i )
|
||||
{
|
||||
oel.pszMeshName[i] = vec_szMeshName[i];
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>ȯ
|
||||
lState = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// mesh name<6D><65> <20>ӽ<EFBFBD> vector<6F><72> <20><><EFBFBD><EFBFBD>
|
||||
szTmp = new char[strlen(szToken)+1];
|
||||
strcpy( szTmp, szToken );
|
||||
vec_szMeshName.push_back( szTmp );
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if( 0 == stricmp( szToken, ";" ) )
|
||||
{
|
||||
// Tex name read mode<64><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// outfit element <20><> tex <20>ʵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
oel.lTexCount = vec_szTexName.size();
|
||||
oel.pszTexName = new char*[vec_szTexName.size()];
|
||||
for( i = 0; i < vec_szTexName.size(); ++i )
|
||||
{
|
||||
oel.pszTexName[i] = vec_szTexName[i];
|
||||
}
|
||||
oel.szItemName = new char[strlen(szItemName)+1];
|
||||
strcpy( oel.szItemName, szItemName );
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9>,
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20>߰<EFBFBD><DFB0>ϰ<EFBFBD>,
|
||||
AddItem( oel );
|
||||
|
||||
// <20>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vector<6F><72><EFBFBD><EFBFBD>
|
||||
vec_szMeshName.clear();
|
||||
vec_szTexName.clear();
|
||||
|
||||
oel.szSetItemName = NULL;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>ȯ
|
||||
lState = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// mesh name<6D><65> <20>ӽ<EFBFBD> vector<6F><72> <20><><EFBFBD><EFBFBD>
|
||||
szTmp = new char[strlen(szToken)+1];
|
||||
strcpy( szTmp, szToken );
|
||||
vec_szTexName.push_back( szTmp );
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if( 0 == stricmp( szToken, ";" ) )
|
||||
{
|
||||
lState = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
oel.szSetItemName = new char[strlen(szToken)+1];
|
||||
strcpy( oel.szSetItemName, szToken );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool CH3DOutfitTable::AddItem( H3DOutfitElement &outfit )
|
||||
{
|
||||
if( m_mapName2Outfit.end() != m_mapName2Outfit.find( outfit.szItemName ) )
|
||||
{
|
||||
// <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD> <20><EFBFBD><D7B8><EFBFBD> <20>ִ<EFBFBD>.
|
||||
return false;
|
||||
}
|
||||
|
||||
m_mapName2Outfit[outfit.szItemName] = outfit;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool CH3DOutfitTable
|
||||
::GetOutfit( H3DOutfitElement* &pOutfit, char* szOutfitName )
|
||||
{
|
||||
std::map<char*, H3DOutfitElement, szi_less>::iterator it;
|
||||
|
||||
it = m_mapName2Outfit.find( szOutfitName );
|
||||
if( m_mapName2Outfit.end() == it )
|
||||
{
|
||||
/*outfit.lMeshCount = 0;
|
||||
outfit.lTexCount = 0;
|
||||
outfit.pszMeshName = NULL;
|
||||
outfit.pszTexName = NULL;*/
|
||||
pOutfit = NULL;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
pOutfit = &(it->second);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user