areaeditor/
/*
** AreaEditor - a program for editing SMAUG and ROM area files.
** Author: Nick Gammon
** http://www.gammon.com.au/
** See Copyright Notice at the end of AreaEditor.h
*/

#include "stdafx.h"
#include "AreaEditor.h"

#include "AreaEditorDoc.h"

#include "RoomMapView.h"

// constructor
CRoomMap::CRoomMap (CRuntimeClass* pViewClass, CAreaEditorDoc * pDoc) 
    : CMUDitem (pViewClass, pDoc) 
  {
  vnum = 0;		/* which map this room belongs to */
  x = 0;		/* horizontal coordinate */
  y = 0;		/* vertical coordinate */
  entry = 'N';		/* code that shows up on map */ 
  } // end of constructor


void CRoomMap::ChangeRHview (CAreaEditorView * pLHview, CView * pwhichView)
  {
  CRoomMapView * pView = (CRoomMapView *) pwhichView;

	ASSERT(pView->IsKindOf(RUNTIME_CLASS(CRoomMapView)));

  pView->m_map = this;

  }

CString CRoomMap::Summary (void)
  {
  return CFormat ("#%i", 
                  vnum);
  }


#define DUPLICATE(arg) arg = RHside->arg

// copy function for duplicating maps
void CRoomMap::Copy (const CRoomMap * const RHside)
  {
  DUPLICATE (vnum);
  DUPLICATE (x);
  DUPLICATE (y);
  DUPLICATE (entry);
  } // end of CRoomMap::Copy


// clone this map
void CRoomMap::Duplicate (CAreaEditorView * pView)
  {

  HTREEITEM hdlItem = m_pTreeCtrl->GetParentItem (m_hdlTreeItem);

  if (!hdlItem)
    return;

  // find associated MUD item, if any
  CMUDitem * pItem = (CMUDitem *) m_pTreeCtrl->GetItemData (hdlItem);
  
  if (!pItem)
    return; 

  CRoomMap * newmap = pItem->AddMap (pView);

  if (newmap)
    {
    newmap->Copy (this);    // copy existing map over
    newmap->m_pTreeCtrl->SetItemText (newmap->m_hdlTreeItem, 
                                              newmap->Summary ());
    newmap->GoTo ();
    }

  } // end of CRoomMap::Duplicate