📄 gameresourcemanager.cpp
字号:
#ifdef _FILE_BIN_
sprintf(filename,"Resource/LoginPoint.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"Resource/LoginPoint.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
while(1)
{
if(file.IsEOF())
break;
pLogin[n].Kind = file.GetWord();
file.GetString(pLogin[n].MapName);
pLogin[n].MapNum = file.GetWord();
pLogin[n].Map_SubKind = file.GetByte();
pLogin[n].CurPoint.x = file.GetFloat();
pLogin[n].CurPoint.y = 0;
pLogin[n].CurPoint.z = file.GetFloat();
pLogin[n].chx_num = file.GetWord();
++n;
}
return TRUE;
}
#ifdef _MAPSERVER_
BOOL CGameResourceManager::CheckCorrectLoginPoint(VECTOR3* pos)
{
static float maxdist = 1000;
for( int i = 0; i < MAX_POINT_NUM; i++)
{
if(m_LoginPoint[i].MapNum == GetLoadMapNum())
{
float dist = CalcDistanceXZ(pos,&m_LoginPoint[i].CurPoint);
if(dist < maxdist) //烙狼
return TRUE;
}
}
for( i = 0; i < MAX_POINT_NUM; i++)
{
if(m_MapChangeArea[i].MoveMapNum == GetLoadMapNum())
{
float dist = CalcDistanceXZ(pos,&m_MapChangeArea[i].MovePoint);
if(dist < maxdist) //烙狼
return TRUE;
}
}
return FALSE;
}
void CGameResourceManager::GetRegenPoint(VECTOR3& pos,VECTOR3& RandPos,WORD LoginIndex,WORD MapchangeIndex)
{
if(MapchangeIndex)
{
MAPCHANGE_INFO* changeinfo = GetMapChangeInfo(MapchangeIndex);
if(!changeinfo)
{
char temp[128];
sprintf(temp,"MapChangePoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
if(changeinfo->MoveMapNum != GAMERESRCMNGR->GetLoadMapNum())
MapchangeIndex = 0;
else
{
pos.x = changeinfo->MovePoint.x;
pos.y = 0;
pos.z = changeinfo->MovePoint.z;
}
}
}
if(MapchangeIndex == 0)
{
LOGINPOINT_INFO* LoginPoint = GetLoginPointInfoFromMapNum(GAMERESRCMNGR->GetLoadMapNum());//LoginIndex);
if(!LoginPoint)
{
char temp[128];
sprintf(temp,"LoginPoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
pos.x = LoginPoint->CurPoint.x;
pos.y = 0;
pos.z = LoginPoint->CurPoint.z;
}
}
int temp;
temp = rand() % 500 - 250;
RandPos.x = pos.x + temp;
temp = rand() % 500 - 250;
RandPos.z = pos.z + temp;
RandPos.y = 0;
ASSERT(!(pos.x == 0 && pos.z == 0));
}
#endif
//-----------------------------------------------------------------------------------------------------------//
// 辑滚父 荤侩窍绰 何盒
#ifdef _SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
void CGameResourceManager::GetMonsterStats(WORD wMonsterKind, monster_stats * stats)
{
/* stats->AttributeAttackMin1 = GetMonsterInfo(wMonsterKind)->Attack1Property;
stats->AttributeAttackMax1 = GetMonsterInfo(wMonsterKind)->Attack2Property;
stats->AttributeAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack1Property;
stats->AttributeAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2Property;*/
stats->Attack1OccurProportion = (WORD)GetMonsterListInfo(wMonsterKind)->AttackRate[0]; // 傍拜1 惯积 犬伏
stats->PhysicalAttackMin1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMin; // 傍拜1 弥家 傍拜仿
stats->PhysicalAttackMax1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMax;
// stats->PhysicalAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMin; // 傍拜1 弥家 傍拜仿
// stats->PhysicalAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMax;
// 规绢
stats->PhysicalDefense = GetMonsterListInfo(wMonsterKind)->PhysicalDefense;
stats->AttributeResist = GetMonsterListInfo(wMonsterKind)->AttribResist;
}
BOOL CGameResourceManager::LoadNpcRegen(NPC_REGEN pNpcRegen[MAX_NPC_GROUPNUM][MAX_NPC_REGEN_NUM])
{
char filename[64];
char value[64] = {0,};
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"./Resource/NpcRegen.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"./Resource/NpcRegen.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
WORD Group = 1;
WORD count = 1;
while(1)
{
if(file.IsEOF())
break;
if(Group > MAX_NPC_GROUPNUM || n > MAX_NPC_REGEN_NUM) break;
if(count > MONSTERGROUPUNIT)
{
count = 1;
n = 1;
Group++;
m_TotalNpcGroupCount++;
}
pNpcRegen[Group][n].MapNum = file.GetWord();
if(pNpcRegen[Group][n].MapNum == 0)
break;
pNpcRegen[Group][n].NpcKind = file.GetWord();
file.GetString(pNpcRegen[Group][n].Name);
pNpcRegen[Group][n].NpcIndex = (WORD)file.GetDword();
pNpcRegen[Group][n].Pos.x = file.GetFloat();
pNpcRegen[Group][n].Pos.y = 0;
pNpcRegen[Group][n].Pos.z = file.GetFloat();
pNpcRegen[Group][n].Angle = file.GetFloat();
count++;
n++;
if(n > m_MaxNpcRegenCount)
m_MaxNpcRegenCount = n;
}
SetNpcRegenLoadFlag(TRUE);
return TRUE;
}
void CGameResourceManager::SetLoadMapNum(WORD Mapnum)
{
m_LoadingMapNum = Mapnum;
}
//-----------------------------------------------------------------------------------------------------------//
#endif //_SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
BOOL CGameResourceManager::LoadExpPoint()
{
char filename[64];
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/characterExpPoint.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"Resource/characterExpPoint.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int idx =0;
while(1)
{
if(idx > MAX_CHARACTER_LEVEL_NUM-1) break;
if(file.IsEOF())
break;
file.GetWord(); // 饭骇
m_CharacterExpPoint[idx] = file.GetExpPoint(); // 版氰摹
idx++;
}
file.Release();
return TRUE;
}
BOOL CGameResourceManager::LoadPlayerxMonsterPoint()
{
#ifdef _FILE_BIN_
CMHFile file;
int idx = 0;
if( !file.Init( "Resource/PlayerxMonsterPoint.bin", "rb") )
return FALSE;
while(1)
{
if(idx > MAX_PLAYERLEVEL_NUM - 1) break;
char value[64] = {0,};
// MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 1篮 gap捞 0老版快锭巩俊
for(int levelgap = 0 ; levelgap < MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 ; levelgap++)
{
m_PLAYERxMONSTER_POINT[idx][levelgap] = file.GetInt();
}
idx++;
}
file.Release();
#else
FILE * fp = NULL;
int idx = 0;
fp = fopen("Resource/PlayerxMonsterPoint.txt", "rt");
if(!fp) return FALSE;
while(1)
{
if(idx > MAX_PLAYERLEVEL_NUM - 1) break;
char value[64] = {0,};
// MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 1篮 gap捞 0老版快锭巩俊
for(int levelgap = 0 ; levelgap < MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 ; levelgap++)
{
fscanf(fp, "%s", value);
m_PLAYERxMONSTER_POINT[idx][levelgap] = atoi(value);
}
idx++;
}
fclose(fp);
#endif
return TRUE;
}
EXPTYPE CGameResourceManager::GetPLAYERxMONSTER_POINT(LEVELTYPE level,int levelgap)
{
ASSERT(0 < level && level < 255); // 255 is temp Max Level of Mon
ASSERT(-MONSTERLEVELRESTRICT_LOWSTARTNUM <= levelgap &&
levelgap <= MAX_MONSTERLEVELPOINTRESTRICT_NUM );
return m_PLAYERxMONSTER_POINT[level-1][levelgap+MONSTERLEVELRESTRICT_LOWSTARTNUM];
}
//-----------------------------------------------------------------------------------------------------------//
// 辑滚父 荤侩窍绰 何盒
#ifdef _SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------------------------------//
#endif //_SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
BOOL CGameResourceManager::LoadTacticStartInfoList()
{
CMHFile file;
char filename[64];
TACTICSTART_INFO Info;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/tacticstartinfo.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"Resource/tacticstartinfo.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
while(1)
{
if(file.IsEOF())
break;
Info.TacticID = file.GetWord();
file.GetString(Info.Name);
Info.NeedMemberNum = file.GetByte();
Info.WaitingTime = file.GetWord();
Info.WaitingNaeryuk = file.GetWord();
Info.SuccessNaeryuk = file.GetWord();
Info.TacticStartEffect = FindEffectNum(file.GetString());
Info.SkillNum = file.GetWord();
for(int i=0; i<6; ++i)
{
Info.PosX[i] = file.GetFloat();
Info.PosZ[i] = file.GetFloat();
}
TACTICMGR->AddTacticStartInfo(&Info);
++n;
}
file.Release();
return TRUE;
}
//-----------------------------------------------------------------------------------------------------------//
// 努扼捞攫飘父 荤侩窍绰 何盒
#ifdef _CLIENT_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
void CGameResourceManager::DeletePreLoadData()
{
//
sPRELOAD_INFO* pPreLoadInfo = NULL;
m_PreLoadDataTable.SetPositionHead();
while( pPreLoadInfo = m_PreLoadDataTable.GetData() )
{
delete pPreLoadInfo;
}
m_PreLoadDataTable.RemoveAll();
//
PRELOADEFF* pEff = NULL;
PTRLISTSEARCHSTART(m_PreLoadEfflist, PRELOADEFF*, pEff);
m_PreLoadEfflist.Remove(pEff);
delete pEff;
pEff = NULL;
PTRLISTSEARCHEND
m_PreLoadEfflist.RemoveAll();
}
#include ".\Engine\EngineObject.h" // for PreLoadObject()
void CGameResourceManager::PreLoadData()
{
// DWORD n;
// YH2DO 肺爹俊 措茄 犬沥 鞘夸
/* 纳腐磐绰 呈公 腹酒辑 阜酒初澜
//////////////////////////////////////////////////////////////////////////
// 纳腐磐 Preload
DIRECTORYMGR->SetLoadMode(eLM_Character);
for(int job=0;job<eJOB_Max;++job)
{
CEngineObject::PreLoadObject(m_ModFileList[GENDER_MALE][job].BaseObjectFile);
CEngineObject::PreLoadObject(m_ModFileList[GENDER_FEMALE][job].BaseObjectFile);
for(n=0;n<m_ModFileList[GENDER_MALE][job].MaxModFile;++n)
CEngineObject::PreLoadObject(m_ModFileList[GENDER_MALE][job].ModFile[n]);
for(n=0;n<m_ModFileList[GENDER_FEMALE][job].MaxModFile;++n)
CEngineObject::PreLoadObject(m_ModFileList[GENDER_FEMALE][job].ModFile[n]);
}
for(n=0;n<m_HairModList[GENDER_MALE].MaxModFile;++n)
CEngineObject::PreLoadObject(m_HairModList[GENDER_MALE].ModFile[n]);
for(n=0;n<m_HairModList[GENDER_FEMALE].MaxModFile;++n)
CEngineObject::PreLoadObject(m_HairModList[GENDER_FEMALE].ModFile[n]);
//////////////////////////////////////////////////////////////////////////
*/
DIRECTORYMGR->SetLoadMode(eLM_Character);
CEngineObject::PreLoadObject("Man.chx");
CEngineObject::PreLoadObject("Woman.chx");
/*
//////////////////////////////////////////////////////////////////////////
// Npc
DIRECTORYMGR->SetLoadMode(eLM_Npc);
for(n=0;n<m_MaxNpcChxList;++n)
CEngineObject::PreLoadObject(m_NpcChxList[n].FileName);
//////////////////////////////////////////////////////////////////////////
*/
DIRECTORYMGR->SetLoadMode(eLM_Root);
}
BOOL CGameResourceManager::LoadModFileList(MOD_LIST pModList[GENDER_MAX])
{
CMHFile file;
char filename[64];
DWORD idx = 0;
//////////////////////////////////////////////////////////////////////////
// 巢磊
idx = 0;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/ModList_M.bin");
if(!file.Init(filename,"rb"))
return FALSE;
#else
sprintf(filename,"Resource/ModList_M.txt");
if(!file.Init(filename,"rt"))
return FALSE;
#endif
// BaseObjectFile
pModList[GENDER_MALE].BaseObjectFile = file.GetString();
pModList[GENDER_MALE].MaxModFile = file.GetDword();
pModList[GENDER_MALE].ModFile = new StaticString[pModList[GENDER_MALE].MaxModFile];
while(1)
{
if(idx >= pModList[GENDER_MALE].MaxModFile) break;
pModList[GENDER_MALE].ModFile[idx] = file.GetString();
++idx;
}
file.Release();
//////////////////////////////////////////////////////////////////////////
// 咯磊
idx = 0;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/ModList_W.bin");
if(!file.Init(filename,"rb"))
return FALSE;
#else
sprintf(filename,"Resource/ModList_W.txt");
if(!file.Init(filename,"rt"))
return FALSE;
#endif
// BaseObjectFile
pModList[GENDER_FEMALE].BaseObjectFile = file.GetString();
pModList[GENDER_FEMALE].MaxModFile = file.GetDword();
pModList[GENDER_FEMALE].ModFile = new StaticString[pModList[GENDER_FEMALE].MaxModFile];
while(1)
{
if(idx >= pModList[GENDER_FEMALE].MaxModFile) break;
pModList[GENDER_FEMALE].ModFile[idx] = file.GetString();
++idx;
}
file.Release();
return TRUE;
}
BOOL CGameResourceManager::LoadFaceModFileList(MOD_LIST pFaceModList[GENDER_MAX]) //pjscode
{
//倔奔 包访
CMHFile file;
char filename[64];
DWORD idx = 0;
//////////////////////////////////////////////////////////////////////////
// 巢磊
idx = 0;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/FaceList_M.bin");
if(!file.Init(filename,"rb"))
return FALSE;
#else
sprintf(filename,"Resource/FaceList_M.txt");
if(!file.Init(filename,"r"))
return FALSE;
#endif
pFaceModList[GENDER_MALE].MaxModFile = file.GetDword();
pFaceModList[GENDER_MALE].ModFile = new StaticString[pFaceModList[GENDER_MALE].MaxModFile];
while(1)
{
if(idx >= pFaceModList[GENDER_MALE].MaxModFile) break;
pFaceModList[GENDER_MALE].ModFile[idx] = file.GetString();
++idx;
}
file.Release();
//////////////////////////////////////////////////////////////////////////
// 咯磊
idx = 0;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/FaceList_W.bin");
if(!file.Init(filename,"rb"))
return FALSE;
#else
sprintf(filename,"Resource/FaceList_W.txt");
if(!file.Init(filename,"rt"))
return FALSE;
#endif
pFaceModList[GENDER_FEMALE].MaxModFile = file.GetDword();
pFaceModList[GENDER_FEMALE].ModFile = new StaticString[pFaceModList[GENDER_FEMALE].MaxModFile];
while(1)
{
if(idx >= pFaceModList[GENDER_FEMALE].MaxModFile) break;
pFaceModList[GENDER_FEMALE].ModFile[idx] = file.GetString();
++idx;
}
file.Release();
return TRUE;
}
BOOL CGameResourceManager::LoadBodyModFileList(MOD_LIST pBodyModList[GENDER_MAX])
{
CMHFile file;
char filename[64];
DWORD idx = 0;
//////////////////////////////////////////////////////////////////////////
// 巢磊
idx = 0;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/BodyList_M.bin");
if(!file.Init(filename,"rb"))
return FALSE;
#else
sprintf(filename,"Resource/BodyList_M.txt");
if(!file.Init(filename,"rt"))
return FALSE;
#endif
pBodyModList[GENDER_MALE].MaxModFile = file.GetDword();
pBodyModList[GENDER_MALE].ModFile = new StaticString[pBodyModList[GENDER_MALE].MaxModFile];
while(1)
{
if(idx >= pBodyModList[GENDER_MALE].MaxModFile) break;
pBodyModList[GENDER_MALE].ModFile[idx] = file.GetString();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -