WindowMud

MainFrm.cpp Source Code

Download this source code in text format (MainFrm.cpp)

/***********************************************************
* WindowMud - Window Mud Server                            *
* File:   MainFrm.cpp                                      *
* Usage:  AppWizard generated                              *
*                                                          *
* No warranty is given or implied.                         *
* There is no license associated with this code.           *
* There are no restrictions on the use of this code.       *
* This code may be used in any way the reader wishes.      *
* No credit or credits are given and none are required.    *
* The reader may take this code and claim they wrote it.   *
************************************************************/

/***********************************************************
* Includes                                                 *
************************************************************/

#include "stdafx.h"
#include "WindowMud.h"
#include "MainFrm.h"
#include "Config.h"

/***********************************************************
* Globals                                                  *
************************************************************/

bool MenuControlStartGameEnabled = true;
bool MenuControlStopGameEnabled  = false;

extern void BigDog();

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_CONTROL_START_GAME, OnControlStartGame)
	ON_UPDATE_COMMAND_UI(ID_CONTROL_START_GAME, OnUpdateControlStartGame)
	ON_COMMAND(ID_CONTROL_STOP_GAME, OnControlStopGame)
	ON_UPDATE_COMMAND_UI(ID_CONTROL_STOP_GAME, OnUpdateControlStopGame)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CMDIFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CMDIFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CMDIFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

/***********************************************************
* Code to start BigDog as a separate thread                *
************************************************************/

UINT CMainFrame::StartBigDog(LPVOID param)
{
  int AfxMsgBox;
  THREADSTRUCT *ts = (THREADSTRUCT*)param;

  AfxMsgBox = AfxMessageBox("Click OK to START the WindowMud Server", MB_OKCANCEL);
  if (AfxMsgBox == IDOK)
  {
    MenuControlStartGameEnabled = false;
    MenuControlStopGameEnabled  = true;
    BigDog();
    AfxMessageBox("The WindowMud Server has Stopped");
    MenuControlStartGameEnabled = true;
    MenuControlStopGameEnabled  = false;
  }
  else
  if (AfxMsgBox == IDCANCEL)
  {
    MenuControlStartGameEnabled = true;
    MenuControlStopGameEnabled  = false;
    AfxMessageBox("You pressed CANCEL, the WindowMud Server was NOT started");
  }
  AfxEndThread(0);
  return 1;
}

/***********************************************************
* OnControlStartGame - Menu: Control->Start                *
************************************************************/

void CMainFrame::OnControlStartGame() 
{
  THREADSTRUCT *_param = new THREADSTRUCT;
  _param->_this = this;
  AfxBeginThread (StartBigDog, _param);
}

/***********************************************************
* OnUpdateControlStartGame                                 *
************************************************************/

void CMainFrame::OnUpdateControlStartGame(CCmdUI *pCmdUI) 
{
  pCmdUI->Enable(MenuControlStartGameEnabled);
}

/***********************************************************
* OnControlStopGame - Menu: Control->Stop                  *
************************************************************/

void CMainFrame::OnControlStopGame() 
{
  CString GoGoGoFileName;
  CString StopItFileName;

  GoGoGoFileName  = CONTROL_DIR;
  GoGoGoFileName += "GoGoGo";
  StopItFileName  = CONTROL_DIR;
  StopItFileName += "StopIt";
  CFile::Rename(GoGoGoFileName, StopItFileName);
}

/***********************************************************
* OnUpdateControlStopGame                                  *
************************************************************/

void CMainFrame::OnUpdateControlStopGame(CCmdUI* pCmdUI) 
{
  pCmdUI->Enable(MenuControlStopGameEnabled);
}