90 lines
2.8 KiB
C++
90 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#include "TerrainInfoForSegment.h"
|
|
#include <toolkit/XBossWorker.h>
|
|
|
|
class CBossTerrainSegmentLoadThread;
|
|
|
|
class CTerrainSegmentLoadThread : public XBossWorker::XWorker
|
|
{
|
|
public:
|
|
CTerrainSegmentLoadThread( class CTerrainMapEngine * pMapEngine, int nSegmentIndex, const K3DPoint& rSegmentOrigin, int nTileCountPerSegment, int nTileCountPerMap, float fTileLength)
|
|
: m_pMapEngine( pMapEngine )
|
|
, m_bFinished( false )
|
|
, m_nSegmentIndex( nSegmentIndex )
|
|
, m_ptSegmentOrigin( rSegmentOrigin )
|
|
, m_nTileCountPerSegment( nTileCountPerSegment )
|
|
, m_nTileCountPerMap( nTileCountPerMap )
|
|
, m_fTileLength( fTileLength )
|
|
, m_nMapPosX( 0 )
|
|
, m_nMapPosY( 0 )
|
|
, m_nScriptIndex( -1 )
|
|
, m_pTerrainInfo( NULL )
|
|
{
|
|
// _oprint( "CTerrainSegmentLoadThread : [%d]\n", nSegmentIndex );
|
|
}
|
|
|
|
/// 총 9개의 세그먼트의 정보를 넣는다. 영역 바깥인 경우 넣지 않으면 된다.
|
|
void SetMapFileNameAndSegmentIndex( int nMapNum, const char* szMapFileName, int nSegmentIndexInMap )
|
|
{
|
|
if( 0 <= nMapNum && nMapNum < 9 )
|
|
{
|
|
m_SegmentInitStruct[ nMapNum ].strMapFileName = szMapFileName;
|
|
m_SegmentInitStruct[ nMapNum ].nSegmentIndexInMap = nSegmentIndexInMap;
|
|
}
|
|
}
|
|
|
|
// 스크립트 파일 정보를 넣는다.
|
|
//void SetLocationFileName( int nMapPosX, int nMapPosY, int nScriptIndex, const char* szLocationFileName )
|
|
//{
|
|
// m_nMapPosX = nMapPosX;
|
|
// m_nMapPosY = nMapPosY;
|
|
// m_nScriptIndex = nScriptIndex;
|
|
// m_strLocationFileName = szLocationFileName;
|
|
//}
|
|
|
|
void SetMapPos( int nMapPosX, int nMapPosY )
|
|
{
|
|
m_nMapPosX = nMapPosX;
|
|
m_nMapPosY = nMapPosY;
|
|
}
|
|
|
|
bool IsFinished() const { return m_bFinished; }
|
|
int GetSegmentIndex() const { return m_nSegmentIndex; }
|
|
int GetScriptIndex() const { return m_nScriptIndex; }
|
|
|
|
/// 외부로 나가는 결과값
|
|
CTerrainInfoForSegment* GetTerrainInfo() const { return m_pTerrainInfo; }
|
|
CTerrainInfoForSegment::PROPLOAD_INFO GetPropLoadInfo() const { return m_PropLoadInfo; }
|
|
CTerrainInfoForSegment::SPEEDGRASSLOAD_INFO & GetSpeedGrassLoadInfo() { return m_SpeedGrassLoadInfo; }
|
|
|
|
bool onProcess( int nThreadNum );
|
|
void onEnd( bool bIsCancel ) { m_bFinished = true; }
|
|
|
|
private:
|
|
|
|
friend class CBossTerrainSegmentLoadThread;
|
|
|
|
volatile bool m_bFinished;
|
|
int m_nSegmentIndex;
|
|
|
|
K3DPoint m_ptSegmentOrigin;
|
|
int m_nTileCountPerSegment;
|
|
int m_nTileCountPerMap;
|
|
float m_fTileLength;
|
|
|
|
CTerrainInfoForSegment::INITSTRUCT m_SegmentInitStruct[9];
|
|
|
|
int m_nMapPosX, m_nMapPosY;
|
|
std::string m_strLocationFileName;
|
|
int m_nScriptIndex;
|
|
|
|
class CTerrainMapEngine * m_pMapEngine;
|
|
|
|
// 결과값 ( 외부로 넘기므로 소멸자에서 제거하지 않는다. )
|
|
private:
|
|
CTerrainInfoForSegment* m_pTerrainInfo;
|
|
CTerrainInfoForSegment::PROPLOAD_INFO m_PropLoadInfo;
|
|
CTerrainInfoForSegment::SPEEDGRASSLOAD_INFO m_SpeedGrassLoadInfo;
|
|
};
|