CKeyLockComposer Class Reference

CTileArranger에서 생성된 Graph 위에 Lock과 Key를 배치한다. More...

#include <KeyLockComposer.h>

List of all members.

Public Member Functions

int Process (CTileArranger *pTileArranger)
 CKeyLockComposer의 member function을 호출하여 사용자 조건에 맞는 key-lock을 배치한다.

Private Member Functions

void ConstructGraph (TiledGraph *tiledGraph)
 m_pTileArranger로부터 slotmatrix를 읽어서 tiledgraph 를 구성한다.
int AllocateLock (LockDef lockdef, int rootX, int rootY, TiledGraph &g, Lock *newLock)
 새로운 Lock을 할당한다.
int AllocateKey (int rootX, int rootY, TiledGraph &g, Key *newKey)
 새로운 Key를 할당한다.
int GetCutGraph (TiledGraph &tileGraph, Lock &lock, TiledGraph *newGraph)
 입력으로 주어진 graph 를 복사한 다음에 lock에 해당하는 edge를 끊은 tiledGraph를 반환한다.
void FindBridges (TiledGraph &g, int rootX, int rootY, vector< Bridge > *bridges)
 주어진 Graph에서 Bridge를 찾는다.
int ADFS (TiledGraph &g, int x, int y, int parentX, int parentY, bool isRoot)
 깊이 우선 탐색을 통해 Articulation Point와 Bridge를 찾는다.
int SubsequentProcessToLock (LockDef lockdef, TiledGraph &tileGraph, Lock newLock, int sectionStartX, int sectionStartY)
 새로운 Lock을 배치한 뒤의 절차를 처리한다.

Private Attributes

CTileArrangerm_pTileArranger
 class CTileArranger의 pointer
TiledGraph m_tiledGraph
 class CTileArranger의 Graph 생성 결과로부터 생성한 TiledGraph
vector< Lockm_locks
 생성한 Lock의 목록
vector< Keym_keys
 생성한 Key의 목록
int m_dForDfs [MAX_SLOT_MATRIX_SIZE][MAX_SLOT_MATRIX_SIZE]
 ADFS() 함수에서 Articulation Point와 Bridge를 구할 때 사용한다.
int m_lowForDfs [MAX_SLOT_MATRIX_SIZE][MAX_SLOT_MATRIX_SIZE]
 ADFS() 함수에서 Articulation Point와 Bridge를 구할 때 사용한다.
vector< Coor > m_artiPoints
 ADFS() 함수에서 발견한 Artiulcation Point의 목록.
bool m_bVisitedBfs [MAX_SLOT_MATRIX_SIZE][MAX_SLOT_MATRIX_SIZE]
 AllocateKey() 내부에서 너비 우선 탐색을 할 때 사용한다.

Friends

class CCelledMapGenerator


Detailed Description

CTileArranger에서 생성된 Graph 위에 Lock과 Key를 배치한다.

Member Function Documentation

int CKeyLockComposer::Process ( CTileArranger pTileArranger  ) 

CKeyLockComposer의 member function을 호출하여 사용자 조건에 맞는 key-lock을 배치한다.

Parameters:
pTileArranger CTileArranger의 pointer
Returns:
에러 코드

void CKeyLockComposer::ConstructGraph ( TiledGraph tiledGraph  )  [private]

m_pTileArranger로부터 slotmatrix를 읽어서 tiledgraph 를 구성한다.

Parameters:
tiledGraph 구성된 graph를 반환할 pointer

int CKeyLockComposer::AllocateLock ( LockDef  lockdef,
int  rootX,
int  rootY,
TiledGraph g,
Lock newLock 
) [private]

새로운 Lock을 할당한다.

인자로 주어진 LockDef에 맞는 Lock을 (rootX, rootY) 로부터 도달 가능한 위치에 배치한다.

Parameters:
lockdef 생성할 Lock의 정의
rootX Graph에서 게임의 주인공이 진행하기 시작하는 지점의 x좌표
rootY Graph에서 게임의 주인공이 진행하기 시작하는 지점의 y좌표
g Lock을 배치해야 하는 graph
newLock 새로 배치한 Lock의 정의를 반환할 pointer
Returns:
에러 코드

int CKeyLockComposer::AllocateKey ( int  rootX,
int  rootY,
TiledGraph g,
Key newKey 
) [private]

새로운 Key를 할당한다.

(rootX, rootY) 로부터 도달 가능한 위치에 Key를 배치한다.

Parameters:
rootX Graph에서 게임의 주인공이 진행하기 시작하는 지점의 x좌표
rootY Graph에서 게임의 주인공이 진행하기 시작하는 지점의 y좌표
g Key를 배치해야 하는 graph
newKey 새로 배치한 Key의 정의를 반환할 pointer
Returns:
에러 코드

int CKeyLockComposer::GetCutGraph ( TiledGraph tileGraph,
Lock lock,
TiledGraph newGraph 
) [private]

입력으로 주어진 graph 를 복사한 다음에 lock에 해당하는 edge를 끊은 tiledGraph를 반환한다.

Parameters:
tileGraph 원본 Tiled Graph
lock graph에서 끊어야 하는 Lock
newGraph 새로 생성된 Tiled Graph
Returns:
에러 코드

void CKeyLockComposer::FindBridges ( TiledGraph g,
int  rootX,
int  rootY,
vector< Bridge > *  bridges 
) [private]

주어진 Graph에서 Bridge를 찾는다.

Parameters:
g tiled graph
rootX 깊이 우선 탐색을 시작할 Slot의 x좌표
rootY 깊이 우선 탐색을 시작할 Slot의 y좌표
bridges 발견한 Bridge의 목록을 반환할 pointer
Returns:
에러 코드

int CKeyLockComposer::ADFS ( TiledGraph g,
int  x,
int  y,
int  parentX,
int  parentY,
bool  isRoot 
) [private]

깊이 우선 탐색을 통해 Articulation Point와 Bridge를 찾는다.

Parameters:
g tiled graph
x 현재 탐색 중인 Slot의 x좌표
y 현재 탐색 중인 Slot의 y좌표
parentX 부모 Slot의 x좌표
parentY 부모 Slot의 y좌표
isRoot 현재 탐색 중인 Slot이 깊이 우선 탐색 트리의 루트인지 여부
Returns:
에러 코드

int CKeyLockComposer::SubsequentProcessToLock ( LockDef  lockdef,
TiledGraph tileGraph,
Lock  newLock,
int  sectionStartX,
int  sectionStartY 
) [private]

새로운 Lock을 배치한 뒤의 절차를 처리한다.

새로 배치한 Lock이 중첩 Lock인 경우에는 새로운 Lock을 배치하고 그 안쪽에 이전 Lock의 Key를 배치해야 한다. 중첩 Lock이 아니라면 Lock의 바깥쪽에 Key를 배치하는 절차가 필요하다.

Parameters:
lockdef 생성한 Lock의 정의
tileGraph tiled graph
newLock 새로 배치한 Lock
sectionStartX 현재 Section의 시작 지점의 x좌표
sectionStartY 현재 Section의 시작 지점의 y좌표
Returns:
에러 코드


Member Data Documentation

int CKeyLockComposer::m_dForDfs[MAX_SLOT_MATRIX_SIZE][MAX_SLOT_MATRIX_SIZE] [private]

ADFS() 함수에서 Articulation Point와 Bridge를 구할 때 사용한다.

각 Slot이 깊이 우선 탐색에서 몇 번째로 방문되었는지 저장

int CKeyLockComposer::m_lowForDfs[MAX_SLOT_MATRIX_SIZE][MAX_SLOT_MATRIX_SIZE] [private]

ADFS() 함수에서 Articulation Point와 Bridge를 구할 때 사용한다.

각 Slot의 서브 트리에서 Back Edge를 통해 도달 가능한 Slot의 최소 m_dForDfs 값


The documentation for this class was generated from the following files:
Generated on Wed Dec 19 12:25:56 2007 for Random Level Generator by  doxygen 1.5.4