Example #1
0
void CReactorTool::Refresh ()
{
    if (!m_bInited)
        return;
    if (!GetMine ())
        return;
    EnableControls (file_type != RDL_FILE);
    m_pTrigger = GetMine ()->CCTriggers (m_nTrigger);
    m_nCountDown = m_mine->ReactorTime ();
    m_nSecretReturn = m_mine->SecretCubeNum ();
    InitLBTargets ();
    OnSetTarget ();
    UpdateData (FALSE);
}
Example #2
0
void CCubeTool::OnSide (int nSide)
{
if (!GetMine ())
	return;
m_mine->Current ()->side = m_nSide = nSide;
theApp.MineView ()->Refresh ();
}
Example #3
0
void CWallTool::OnDeleteWallAll () 
{
if (!GetMine ())
	return;
bool bUndo = theApp.SetModified (TRUE);
theApp.LockUndo ();
theApp.MineView ()->DelayRefresh (true);
CDSegment *seg = m_mine->Segments ();
CDSide *side;
bool bAll = (m_mine->MarkedSegmentCount (true) == 0);
int i, j, nDeleted = 0;
for (i = m_mine->SegCount (); i; i--, seg++) {
	side = seg->sides;
	for (j = 0; j < MAX_SIDES_PER_SEGMENT; j++, side++) {
		if (side->nWall >= MAX_WALLS)
			continue;
		if (bAll || m_mine->SideIsMarked (i, j)) {
			m_mine->DeleteWall (side->nWall);
			nDeleted++;
			}
		}
	}
theApp.MineView ()->DelayRefresh (false);
if (nDeleted) {
	theApp.UnlockUndo ();
	theApp.MineView ()->Refresh ();
	Refresh ();
	}
else
	theApp.ResetModified (bUndo);
}
Example #4
0
void CCubeTool::OnPoint (int nPoint)
{
if (!GetMine ())
	return;
m_mine->Current ()->point = m_nPoint = nPoint;
theApp.MineView ()->Refresh ();
}
Example #5
0
void CCubeTool::OnAddCube () 
{
if (!GetMine ())
	return;
m_mine->AddSegment ();
theApp.MineView ()->Refresh ();
}
Example #6
0
void CCubeTool::OnDeleteCube () 
{
if (!GetMine ())
	return;
m_mine->DeleteSegment (m_mine->Current ()->segment);
theApp.MineView ()->Refresh ();
}
Example #7
0
void CCubeTool::OnSetCube () 
{
if (!GetMine ())
	return;
m_mine->Current ()->segment = CBCubeNo ()->GetCurSel ();
theApp.MineView ()->Refresh ();
}
Example #8
0
void CTextureTool::OnSaveTexture () 
{
if (!GetMine ())
	return;

	HINSTANCE	hInst = AfxGetApp()->m_hInstance;
	char			t1Name [20],
					t2Name [20];
	CDSide		*side = m_mine->CurrSide ();
	CComboBox	*pcb;

save_texture1 = side->nBaseTex & 0x3fff;
save_texture2 = side->nOvlTex & 0x3fff;
int i;
for (i = 0; i < 4; i++)
	save_uvls [i].l = side->uvls [i].l;

//CBTexture1 ()->SelectString (-1, texture_name1);
//CBTexture2 ()->SelectString (-1, texture_name2);
pcb = CBTexture1 ();
LoadString (hInst, texture_resource + pcb->GetItemData (pcb->GetCurSel ()), t1Name, sizeof (t1Name));
pcb = CBTexture2 ();
if (i = pcb->GetItemData (pcb->GetCurSel ()))
	LoadString (hInst, texture_resource + i, t2Name, sizeof (t2Name));
else
	strcpy (t2Name, "(none)");
sprintf(m_szTextureBuf ,"%s,%s", t1Name, t2Name);
UpdateData (FALSE);
//SaveTextureStatic->SetText(message);
}
Example #9
0
void CCubeTool::DoDataExchange (CDataExchange *pDX)
{
if (!GetMine ())
	return;

DDX_CBIndex (pDX, IDC_CUBE_CUBENO, m_nCube);
//DDX_CBIndex (pDX, IDC_CUBE_TYPE, m_nType);
SelectItemData (CBType (), m_nType);
DDX_Double (pDX, IDC_CUBE_LIGHT, m_nLight);
DDX_Radio (pDX, IDC_CUBE_SIDE1, m_nSide);
DDX_Radio (pDX, IDC_CUBE_POINT1, m_nPoint);
for (int	i = 0; i < 3; i++) {
	DDX_Double (pDX, IDC_CUBE_POINTX + i, m_nCoord [i]);
	if (m_nCoord [i] < -0x7fff)
		m_nCoord [i] = -0x7fff;
	else if (m_nCoord [i] > 0x7fff)
		m_nCoord [i] = 0x7fff;
//	DDV_MinMaxInt (pDX, (long) m_nCoord [i], -0x7fff, 0x7fff);
	}
DDX_Check (pDX, IDC_CUBE_ENDOFEXIT, m_bEndOfExit);
DDX_Check (pDX, IDC_CUBE_SETDEFTEXTURE, m_bSetDefTexture);
++m_nOwner;
DDX_CBIndex (pDX, IDC_CUBE_OWNER, m_nOwner);
m_nOwner--;
DDX_Text (pDX, IDC_CUBE_GROUP, m_nGroup);
if (m_nGroup < -1)
	m_nGroup = -1;
else if (m_nGroup > 127)
	m_nGroup = 127;
//DDV_MinMaxInt (pDX, m_nGroup, -1, 127);
}
Example #10
0
void CCubeTool::OnLight () 
{
if (!GetMine ())
	return;
UpdateData (TRUE);
m_mine->CurrSeg ()->static_light = (FIX) (m_nLight * 24 * 327.68);
theApp.SetModified (TRUE);
}
Example #11
0
void CCubeTool::OnAddEquipGen ()
{
if (!GetMine ())
	return;
m_mine->AddEquipMaker ();
m_nLastCube = -1;
Refresh ();
}
Example #12
0
void CCubeTool::OnAddBotGen ()
{
if (!GetMine ())
	return;
m_mine->AddRobotMaker ();
m_nLastCube = -1;
Refresh ();
}
Example #13
0
static void OpenPlace(HANDLE hDlg,BoardParams *DlgParams,int row,int col,CHECK_OPEN_PLACE check)
{
  FarDialogItem DialogItem; int color;
  if(row<0) return;
  if(col<0) return;
  if(row>=DlgParams->width) return;
  if(col>=DlgParams->height) return;
  Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem);
  if(GET_DATA_1(DialogItem)==STATE_CLOSE)
  {
    SET_DATA_1(DialogItem,STATE_OPEN);
    DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color);
    int bgcolor=GetBG(row,col,GET_DATA_1(DialogItem));
    DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color;
    DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor;
    Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem);
    if(!GET_DATA_0(DialogItem))
    {
      OpenPlace(hDlg,DlgParams,row-1,col-1,COP_NONE);
      OpenPlace(hDlg,DlgParams,row-1,col,COP_NONE);
      OpenPlace(hDlg,DlgParams,row-1,col+1,COP_NONE);
      OpenPlace(hDlg,DlgParams,row,col-1,COP_NONE);
      OpenPlace(hDlg,DlgParams,row,col+1,COP_NONE);
      OpenPlace(hDlg,DlgParams,row+1,col-1,COP_NONE);
      OpenPlace(hDlg,DlgParams,row+1,col,COP_NONE);
      OpenPlace(hDlg,DlgParams,row+1,col+1,COP_NONE);
    }
    if(check!=COP_NONE) CheckStop(hDlg,DlgParams,row,col);
  }
  else if(check==COP_CHECK_ALL&&GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)>0&&GET_DATA_0(DialogItem)<9)
  {
    int mines=0;
    mines+=GetMine(row-1,col-1,hDlg,DlgParams,true);
    mines+=GetMine(row-1,col,hDlg,DlgParams,true);
    mines+=GetMine(row-1,col+1,hDlg,DlgParams,true);
    mines+=GetMine(row,col-1,hDlg,DlgParams,true);
    mines+=GetMine(row,col+1,hDlg,DlgParams,true);
    mines+=GetMine(row+1,col-1,hDlg,DlgParams,true);
    mines+=GetMine(row+1,col,hDlg,DlgParams,true);
    mines+=GetMine(row+1,col+1,hDlg,DlgParams,true);
    if(mines==GET_DATA_0(DialogItem)) //FIXME
    {
      OpenPlace(hDlg,DlgParams,row-1,col-1,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row-1,col,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row-1,col+1,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row,col-1,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row,col+1,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row+1,col-1,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row+1,col,COP_CHECK_STOP);
      OpenPlace(hDlg,DlgParams,row+1,col+1,COP_CHECK_STOP);

      CheckStop(hDlg,DlgParams,row,col);
    }
  }
}
Example #14
0
bool CTextureTool::GetAdjacentSide (INT16 start_segment, INT16 start_side, INT16 linenum,
												INT16 *adj_segnum, INT16 *adj_sidenum) 
{
if (!GetMine ())
	return false;

	CDSegment *seg;
	INT16 sidenum,childnum;
	INT16 point0,point1,vert0,vert1;
	INT16 childs_side,childs_line;
	INT16 childs_point0,childs_point1,childs_vert0,childs_vert1;
	int side_child[6][4] = {
		{4,3,5,1},
		{2,4,0,5},
		{5,3,4,1},
		{0,4,2,5},
		{2,3,0,1},
		{0,3,2,1}
		};

  // figure out which side of child shares two points w/ start_side
  // find vert numbers for the line's two end points
point0 = line_vert[side_line[start_side][linenum]][0];
point1 = line_vert[side_line[start_side][linenum]][1];
seg = m_mine->Segments () + start_segment;
vert0  = seg->verts[point0];
vert1  = seg->verts[point1];

sidenum = side_child[start_side][linenum];
childnum = seg->children[sidenum];
if (childnum < 0 || childnum >= m_mine->SegCount ())
	return false;
for (childs_side=0;childs_side<6;childs_side++) {
	seg = m_mine->Segments () + childnum;
	if ((seg->children[childs_side] == -1) ||
	    (seg->sides[childs_side].nWall < m_mine->GameInfo ().walls.count)) {
		for (childs_line=0;childs_line<4;childs_line++) {
			// find vert numbers for the line's two end points
			childs_point0 = line_vert[side_line[childs_side][childs_line]][0];
			childs_point1 = line_vert[side_line[childs_side][childs_line]][1];
			childs_vert0  = seg->verts[childs_point0];
			childs_vert1  = seg->verts[childs_point1];
			// if points of child's line == corresponding points of parent
			if (childs_vert0 == vert1 && childs_vert1 == vert0 ||
				childs_vert0 == vert0 && childs_vert1 == vert1) {
				// now we know the child's side & line which touches the parent
				// child:  childnum, childs_side, childs_line, childs_point0, childs_point1
				// parent: start_segment, start_side, linenum, point0, point1
				*adj_segnum = childnum;
				*adj_sidenum = childs_side;
				return true;
				}
			}
		}
	}
return false;
}
Example #15
0
void CCubeTool::OnDeleteObj () 
{
if (!GetMine ())
	return;
CDSegment *seg = m_mine->CurrSeg ();
if (IsBotMaker (seg))
	DeleteBot ();
else if (IsEquipMaker (seg))
	DeleteEquip ();
}
Example #16
0
void CWallTool::OnAddWall ()
{
if (!GetMine ())
	return;

CDWall *wall;
CDSegment *seg [2];
CDSide *side [2];
INT16 segnum [2]; 
INT16 sidenum [2];

bool bRefresh = false;

m_bDelayRefresh = true;
seg [0] = m_mine->CurrSeg ();
side [0] = m_mine->CurrSide ();
segnum [0] = m_mine->Current ()->segment;
sidenum [0] = m_mine->Current ()->side;
if (m_mine->GetOppositeSide (segnum [1], sidenum [1], segnum [0], sidenum [0])) {
	seg [1] = m_mine->Segments (segnum [1]);
	side [1] = seg [1]->sides + sidenum [1];
	}

for (BOOL bSide = FALSE; bSide <= m_bBothSides; bSide++)
	if (side [bSide]->nWall < m_mine->GameInfo ().walls.count)
		ErrorMsg ("There is already a wall at that side of the current cube.");
	else if (m_mine->GameInfo ().walls.count >= MAX_WALLS)
		ErrorMsg ("The maximum number of walls is already reached.");
	else {
		if ((file_type != RDL_FILE) && (seg [bSide]->children [sidenum [bSide]] == -1))
			m_mine->AddWall (-1, -1, WALL_OVERLAY, 0, KEY_NONE, -2, m_defOvlTexture);
		else if (wall = m_mine->AddWall (segnum [bSide], sidenum [bSide], m_defWall.type, m_defWall.flags, 
													m_defWall.keys, m_defWall.clip_num, m_defTexture)) {
			if (wall->type == m_defWall.type) {
				wall->hps = m_defWall.hps;
				wall->cloak_value = m_defWall.cloak_value;
				}
			else if (wall->type == WALL_CLOAKED) {
				wall->hps = 0;
				wall->cloak_value = 16;
				}
			else {
				wall->hps = 0;
				wall->cloak_value = 31;
				}
			}
			// update main window
		bRefresh = true;
		}
m_bDelayRefresh = false;
if (bRefresh) {
	theApp.MineView ()->Refresh ();
	Refresh ();
	}
}
Example #17
0
void CWallTool::InitCBWallNo ()
{
if (!GetMine ())
	return;
CComboBox *pcb = CBWallNo ();
pcb->ResetContent ();
int i;
for (i = 0; i < m_mine->GameInfo ().walls.count; i++)
	pcb->AddString (itoa (i, message, 10));
pcb->SetCurSel (m_nWall [0]);
}
Example #18
0
void CReactorTool::OnAddTarget ()
{
    if (!GetMine ())
        return;
    int segnum, sidenum;
    UpdateData (TRUE);
    sscanf (m_szTarget, "%d,%d", &segnum, &sidenum);
    if ((segnum < 0) || (segnum >= m_mine->SegCount ()) || (sidenum < 1) || (sidenum > 6))
        return;
    AddTarget (segnum, sidenum);
}
Example #19
0
void CReactorTool::OnAddWallTarget ()
{
    if (!GetMine ())
        return;
    CDSelection *other = (m_mine->Current () == &m_mine->Current1 ()) ? &m_mine->Current2 () : &m_mine->Current1 ();
    int i = FindTarget (other->segment, other->side);
    if (i < 0)
        return;
    LBTargets ()->SetCurSel (i);
    OnAddTarget ();
}
Example #20
0
void CCubeTool::OnResetCoord ()
{
if (!GetMine ())
	return;
m_nVertex = m_mine->CurrSeg ()->verts[side_vert[m_mine->Current ()->side][m_mine->Current ()->point]];
m_nCoord [0] = (double) m_mine->Vertices (m_nVertex)->x / 0x10000L;
m_nCoord [1] = (double) m_mine->Vertices (m_nVertex)->y / 0x10000L;
m_nCoord [2] = (double) m_mine->Vertices (m_nVertex)->z / 0x10000L;
UpdateData (FALSE);
theApp.MineView ()->Refresh (false);
}
Example #21
0
void CReactorTool::OnCountDown ()
{
    if (!GetMine ())
        return;
    char szVal [5];
    ::GetWindowText (GetDlgItem (IDC_REACTOR_COUNTDOWN)->m_hWnd, szVal, sizeof(szVal));
    if (!*szVal)
        return;
    UpdateData (TRUE);
    theApp.SetModified (TRUE);
    m_mine->ReactorTime () = m_nCountDown;
}
Example #22
0
void CReactorTool::OnSecretReturn ()
{
    if (!GetMine ())
        return;
    char szVal [5];
    ::GetWindowText (GetDlgItem (IDC_REACTOR_SECRETRETURN)->m_hWnd, szVal, sizeof(szVal));
    if (!*szVal)
        return;
    UpdateData (TRUE);
    theApp.SetModified (TRUE);
    m_mine->SecretCubeNum () = m_nSecretReturn;
}
Example #23
0
void CTextureTool::PasteTexture (INT16 segnum, INT16 sidenum, INT16 nDepth) 
{
if (nDepth <= 0) 
	return;

if (!GetMine ())
	return;

	CDSegment	*seg = m_mine->Segments (segnum);
	CDSide		*side = seg->sides + sidenum;
	INT16			old_texture1, 
					old_texture2;
	int			i;

// remember these texture for a comparison below
old_texture1 = side->nBaseTex;
old_texture2 = side->nOvlTex;
if ((old_texture1 < 0) || (old_texture1 >= MAX_TEXTURES))
	old_texture1 = 0;
if ((old_texture2 < 0) || (old_texture2 >= MAX_TEXTURES))
	old_texture2 = 0;
// mark segment as "pasted"
seg->seg_number = 1;
// paste texture
m_mine->SetTexture (segnum, sidenum, m_bUse1st ? save_texture1 : -1, m_bUse2nd ? save_texture2 : -1);
for (i = 0; i < 4; i++)
	side->uvls [i].l = save_uvls [i].l;

// now check each adjing side to see it has the same texture
for (i = 0; i < 4; i++) {
	INT16 adj_segnum, adj_sidenum;
	if (GetAdjacentSide (segnum, sidenum, i, &adj_segnum, &adj_sidenum)) {
		// if adj matches and its not "pasted" yet
		seg = m_mine->Segments (adj_segnum);
		side = seg->sides + adj_sidenum;
#if 0
		if (seg->seg_number)
			continue;
		if (m_bUse1st && (side->nBaseTex != old_texture1))
			continue;
		if (m_bUse2nd && (side->nOvlTex != old_texture2))
			continue;
		PasteTexture (adj_segnum, adj_sidenum, --nDepth);
#else
		if ((seg->seg_number == 0) &&
			 (!m_bUse1st || (side->nBaseTex == old_texture1)) &&
			 (!m_bUse2nd || (side->nOvlTex == old_texture2))) {
			PasteTexture (adj_segnum, adj_sidenum, --nDepth);
			}
#endif
		}
	}
}
Example #24
0
void CCubeTool::OnSetCoord ()
{
if (!GetMine ())
	return;
UpdateData (TRUE);
theApp.SetModified (TRUE);
m_nVertex = m_mine->CurrSeg ()->verts[side_vert[m_mine->Current ()->side][m_mine->Current ()->point]];
m_mine->Vertices (m_nVertex)->x = (FIX) (m_nCoord [0] * 0x10000L);
m_mine->Vertices (m_nVertex)->y = (FIX) (m_nCoord [1] * 0x10000L);
m_mine->Vertices (m_nVertex)->z = (FIX) (m_nCoord [2] * 0x10000L);
theApp.MineView ()->Refresh (false);
}
Example #25
0
CDWall *CWallTool::GetOtherWall (void)
{
if (!GetMine ())
	return m_pWall [1] = NULL;

INT16 opp_segnum, opp_sidenum;

if (!m_mine->GetOppositeSide (opp_segnum, opp_sidenum))
	return m_pWall [1] = NULL;
m_nWall [1] = m_mine->Segments (opp_segnum)->sides [opp_sidenum].nWall;
return m_pWall [1] = (m_nWall [1] < m_mine->GameInfo ().walls.count ? m_mine->Walls (m_nWall [1]) : NULL);
}
Example #26
0
void CPrefsDlg::SetAppSettings (bool bInitApp)
{
    if (m_bInvalid)
        return;
    if (strcmp (descent_path, strlwr (m_d1Path))) {
        strcpy (descent_path, m_d1Path);
        WritePrivateProfileString ("DLE-XP", "DescentDirectory", descent_path, "dle-xp.ini");
        if (file_type == RDL_FILE)
            FreeTextureHandles();
    }
    if (strcmp(descent2_path, strlwr (m_d2Path))) {
        bool	bChangePig = true;
        if (HasCustomTextures() &&
                (QueryMsg ("Changing the pig file will affect the custom textures\n"
                           "in this level because of the change in palette.\n"
                           "(Reload the level to fix custom texture appeareance.)\n\n"
                           "Are you sure you want to do this?") != IDOK))
            bChangePig = false;
        if (bChangePig) {
            strcpy (descent2_path, m_d2Path);
            WritePrivateProfileString ("DLE-XP", "Descent2Directory", descent2_path, "dle-xp.ini");
            if (file_type == RL2_FILE)
                FreeTextureHandles (false);
            GetMine ()->LoadPalette ();
            theApp.MineView ()->ResetView (true);
        }
    }
    if (strcmp (levels_path, strlwr (m_missionsPath))) {
        strcpy (levels_path, m_missionsPath);
        WritePrivateProfileString ("DLE-XP", "levelsDirectory", levels_path, "dle-xp.ini");
    }
    if (!bInitApp)
        theApp.MineView ()->DelayRefresh (true);
    theApp.MineView ()->m_nViewDist = m_nViewDist;
    theApp.MineView ()->SetViewMineFlags (m_mineViewFlags);
    theApp.MineView ()->SetViewObjectFlags (m_objViewFlags);
    theApp.TextureView ()->SetViewFlags (m_texViewFlags);
    depth_perception = m_depthPerceptions [m_iDepthPerception];
    theApp.MineView ()->DepthPerception () = depth_perception;
    *(theApp.MineView ()->MineCenter ()) = m_nMineCenter;
    if (!bInitApp) {
        theApp.MineView ()->DelayRefresh (false);
        theApp.MineView ()->Refresh (false);
    }
    angle_rate = m_rotateRates [m_iRotateRate];
    move_rate = (long) (m_moveRate * 0x10000L);
    bExpertMode = (m_bExpertMode != 0);
    theApp.GetMine ()->UseTexColors () = m_bUseTexColors != 0;
    if (!bInitApp)
        SaveAppSettings (false);
    theApp.m_bSplashScreen = m_bSplashScreen;
    theApp.m_undoList.SetMaxSize (m_nMaxUndo);
}
Example #27
0
void CReactorTool::OnDeleteWallTarget ()
{
    if (!GetMine ())
        return;
    CDSelection *other = (m_mine->Current () == &m_mine->Current1 ()) ? &m_mine->Current2 () : &m_mine->Current1 ();
    int i = FindTarget (other->segment, other->side);
    if (i < 0) {
        DEBUGMSG (" Reactor tool: Trigger doesn't target other cube's current side.");
        return;
    }
    LBTargets ()->SetCurSel (i);
    OnDeleteTarget ();
}
Example #28
0
void CCubeTool::InitCBCubeNo ()
{
if (!GetMine ())
	return;
CComboBox *pcb = CBCubeNo ();
if (m_mine->SegCount () != pcb->GetCount ()) {
	pcb->ResetContent ();
	int i;
	for (i = 0; i < m_mine->SegCount (); i++)
		pcb->AddString (itoa (i, message, 10));
	}
pcb->SetCurSel (m_nCube);
}
Example #29
0
void CTextureTool::OnSetLight () 
{
if (!GetMine ())
	return;
UpdateData (TRUE);
CDSide *side = m_mine->CurrSide ();
INT16 mode = side->nOvlTex & 0xc000;
int i, j;
for (i = 0; i < 4; i++) {
	j = (i + lightIdxFromMode [mode / 0x4000]) % 4;
	side->uvls [i].l = (UINT16) (m_lights [j] * 327.68);
	}
theApp.MineView ()->Refresh ();
}
Example #30
0
void CMainFrame::OnConvert () 
{
	CConvertDlg	d;

if (file_type == RDL_FILE) {
	if (d.DoModal () == IDOK) {
		MineView ()->Refresh ();
		if (bExpertMode)
			INFOMSG (" Mine converted to a Descent 2 level")
		else
			ErrorMsg ("Mine converted to a Descent 2 level.");
		GetMine ()->ConvertWallNum (MAX_WALLS1 + 1, MAX_WALLS2 + 1);
		}
	}