/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWizard (C) 1998 by Russ Pillsbury (Windows NT version)| (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * ****************************************************************************/ // MainFrm.cpp : implementation of the CMainFrame class #include "stdafx.h" #include "SmaugWiz.h" #include "MainFrm.h" #include "smaug.h" #include "SysData.h" #include "descriptor.h" #include "SmaugWizDoc.h" #include "SmaugFiles.h" #include "FilesDlg.h" #include "SysDlg.h" #include "StatDlg.h" #include "SaveDlg.h" #include "LevelDlg.h" #include "HitAndThrowDlg.h" #include "TitlesDlg.h" #include "roomcfg.h" #include "LogDlg.h" #include "OptionDlg.h" #include "obj_vnum.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_COMMAND(ID_APP_EXIT, OnAppExit) ON_WM_CLOSE() ON_COMMAND(ID_FILE_START, OnFileStart) ON_UPDATE_COMMAND_UI(ID_FILE_START, OnUpdateFileStart) ON_COMMAND(ID_FILE_DOWN, OnFileDown) ON_UPDATE_COMMAND_UI(ID_FILE_DOWN, OnUpdateFileDown) ON_COMMAND(ID_CFG_FILES, OnCfgFiles) ON_COMMAND(ID_CFG_SYSDATA, OnCfgSysdata) ON_COMMAND(ID_STATMENU, OnStatmenu) ON_COMMAND(ID_TITLES, OnTitles) ON_COMMAND(ID_MUD_START, OnMudStart) ON_UPDATE_COMMAND_UI(ID_MUD_START, OnUpdateMudStart) ON_COMMAND(ID_STOP_MUD, OnStopMud) ON_UPDATE_COMMAND_UI(ID_STOP_MUD, OnUpdateStopMud) //}}AFX_MSG_MAP // Global help commands ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFinder) ON_COMMAND(ID_HELP, CFrameWnd::OnHelp) ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp) ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpFinder) 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 (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.Create(this) || !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: Remove this if you don't want tool tips or a resizeable toolbar m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // 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) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnAppExit() { OnClose (); } void CMainFrame::OnClose() { if (gpDoc->m_bShuttingDown && ! bSmaugDown) then return; // still shutting down if (! bSmaugDown) then do_shutdown (supermob, "mud now"); // gpDoc->ShutSmaugDown (); else CFrameWnd::OnClose (); } void CMainFrame::OnFileStart () { if (gpDoc->BootAndStart ()) { GetActiveView ()->SetTimer (1, 1000 / PULSE_PER_SECOND, NULL); bSmaugDown = FALSE; } #ifdef n_DEBUG oldMemState.Checkpoint(); #endif } void CMainFrame::OnUpdateFileStart (CCmdUI* pCmdUI) { pCmdUI->Enable (bSmaugDown); } void CMainFrame::OnFileDown () { do_shutdown (supermob, "mud now"); // gpDoc->ShutSmaugDown (); } void CMainFrame::OnUpdateFileDown (CCmdUI* pCmdUI) { pCmdUI->Enable (! bSmaugDown); } void CMainFrame::OnCfgFiles() { // Make sure BrBrowse.ocx is registered static bool bRegistered = FALSE; CString s; if (! bRegistered) { HINSTANCE hLib = LoadLibrary ("BrBrowse.ocx"); if (hLib < (HINSTANCE)HINSTANCE_ERROR) { s.Format ("Unable to load BrBrowse.ocx,\n" "Make sure control is installed in the system32 directory."); MessageBox (s, "Serv", MB_ICONHAND | MB_OK); return; //unable to load DLL } // Find the entry point. FARPROC lpDllEntryPoint = GetProcAddress (hLib, "DllRegisterServer"); if (lpDllEntryPoint) (*lpDllEntryPoint) (); else { s.Format ("Unable to Register BrBrowse.ocx,\n" "Make sure control is installed in the system32 directory.\n" "(Config/Files will not work until control is registered)"); MessageBox (s, "Serv", MB_ICONHAND | MB_OK); return; } bRegistered = TRUE; } CFilesDlg dlg; // Initialize dialog data dlg.m_FileRoot = FileTable.m_FileRoot; if (dlg.DoModal () == IDOK) { // retrieve the dialog data if (FileTable.m_FileRoot != dlg.m_FileRoot) { FileTable.m_FileRoot = dlg.m_FileRoot; gpDoc->SetRegisteredSmaugWizPath ("SmaugWiz", FileTable.m_FileRoot); SysData.ReLoad (); } } } void CMainFrame::OnCfgSysdata() { // If the system data is not yet loaded, load it now. if (! SysData.IsLoaded ()) SysData.Load (); CPropertySheet dlg; dlg.SetTitle ("Smaug Wizard Configuration"); CSysDlg SysDlg; CSaveDlg SaveDlg; CLevelDlg LevDlg; CHitAndThrowDlg HitDlg; CRoomCfg RoomDlg; CLogDlg LogDlg; CObj_Vnum ObjDlg; COptionDlg OptionDlg; dlg.AddPage (&SysDlg); dlg.AddPage (&SaveDlg); dlg.AddPage (&LevDlg); dlg.AddPage (&HitDlg); dlg.AddPage (&RoomDlg); dlg.AddPage (&LogDlg); dlg.AddPage (&ObjDlg); dlg.AddPage (&OptionDlg); SysDlg.m_AuthGroup = SysData.m_Authorization; SysDlg.m_AuthDelay = SysData.m_AuthDelay; SysDlg.m_Port = SysData.GetPort (); SysDlg.m_bAutoReboot = SysData.IsAutoReboot (); SysDlg.m_RebootDelay = SysData.GetRebootDelay (); SysDlg.m_RebootHour = SysData.GetRebootHour (); SysDlg.m_RebootDays = SysData.GetRebootInterval (); SysDlg.m_bAutoStart = SysData.IsAutoStart (); SysDlg.m_StartDelay = SysData.GetStartDelay (); SysDlg.m_bResolveHostNames = SysData.bNameResolving; SaveDlg.m_bBackup = SysData.IsBackup (); SaveDlg.m_bAutoSave = SysData.IsAutoSave (); SaveDlg.m_AutoSaveFreq = SysData.SaveFrequency; SaveDlg.m_PwdChange = SysData.IsSavePasswordOnChange (); SaveDlg.m_bSaveOnGet = SysData.IsSaveOnGet (); SaveDlg.m_bSavePut = SysData.IsSaveOnPut (); SaveDlg.m_bSaveOnDrop = SysData.IsSaveOnDrop (); SaveDlg.m_bSaveOnGive = SysData.IsSaveOnGive (); SaveDlg.m_bSaveOnReceive = SysData.IsSaveOnReceive (); SaveDlg.m_bSaveOnAuction = SysData.IsSaveOnAuction (); SaveDlg.m_bSaveOnKill = SysData.IsSaveOnKill (); SaveDlg.m_bSaveOnDeath = SysData.IsSaveOnDeath (); SaveDlg.m_bSaveOnZapDrop = SysData.IsSaveOnZapDrop (); SaveDlg.m_bSaveOnIdle = SysData.IsSaveOnIdle (); LevDlg.m_AllMailLevel = SysData.ReadAllMailLev; LevDlg.m_FreeMailLevel = SysData.ReadMailFreeLev; LevDlg.m_WriteMailFreeLevel = SysData.WriteMailFreeLev; LevDlg.m_TakeOthersMailLevel = SysData.TakeOthersMailLev; LevDlg.m_MuseChannelLevel = SysData.MuseLevel; LevDlg.m_ThinkChannelLevel = SysData.ThinkLevel; LevDlg.m_BuildChannelLevel = SysData.BuildLevel; LevDlg.m_LogChannelLevel = SysData.LogLevel; LevDlg.m_ModifyProtoLevel = SysData.ModifyProtoLevel; LevDlg.m_PrivateOverrideLevel = SysData.OverridePrivateLev; LevDlg.m_MsetPlayerLevel = SysData.MsetPlayerLevel; LevDlg.m_GetNoTakeLevel = SysData.GetObjNoTakeLevel; LevDlg.m_UseForceLevel = SysData.ForcePcLevel; HitDlg.m_StunPvP = SysData.StunPlayerLev; HitDlg.m_StunMvP = SysData.StunRegularLev; HitDlg.m_DamagePvP = SysData.PlrPlrDamage; HitDlg.m_DamagePvM = SysData.PlrMobDamage; HitDlg.m_DamageMvP = SysData.MobPlrDamage; HitDlg.m_DamageMvM = SysData.MobMobDamage; RoomDlg.m_raStart = SysData.m_RoomAuthStart; RoomDlg.m_rvSchool = SysData.m_RoomSchool; RoomDlg.m_rvHell = SysData.m_RoomHell; RoomDlg.m_rvTemple = SysData.m_RoomTemple; RoomDlg.m_rvAltar = SysData.m_RoomAltar; RoomDlg.m_rvFallen = SysData.m_RoomHallOfFallen; RoomDlg.m_rvVoid = SysData.m_RoomVoid; RoomDlg.m_rvChat = SysData.m_RoomChat; RoomDlg.m_rvLimbo = SysData.m_RoomLimbo; RoomDlg.m_rvPoly = SysData.m_RoomPoly; LogDlg.m_EBoot = SysData.IsLogBootToFile (); LogDlg.m_EResets = SysData.IsLogResetsToFile (); LogDlg.m_EBuild = SysData.IsLogBuildToFile (); LogDlg.m_EBugs = SysData.IsLogBugsToFile (); LogDlg.m_EPlayers = SysData.IsLogPlayersToFile (); LogDlg.m_EComm = SysData.IsLogCommToFile (); LogDlg.m_SBoot = SysData.IsLogBootToScreen (); LogDlg.m_SResets = SysData.IsLogResetsToScreen (); LogDlg.m_SBuild = SysData.IsLogBuildToScreen (); LogDlg.m_SBugs = SysData.IsLogBugsToScreen (); LogDlg.m_SPlayers = SysData.IsLogPlayersToScreen (); LogDlg.m_SComm = SysData.IsLogCommToScreen (); LogDlg.m_CBuild = SysData.IsLogBuildToChannel (); LogDlg.m_CBugs = SysData.IsLogBugsToChannel (); LogDlg.m_CPlayers = SysData.IsLogPlayersToChannel (); LogDlg.m_CComm = SysData.IsLogCommToChannel (); LogDlg.m_CloseStdErr = SysData.IsCloseStdErr (); LogDlg.m_MaxSize = SysData.GetMaxStdErrSize (); ObjDlg.m_rvMace = SysData.m_ObjMace; ObjDlg.m_rvDagger = SysData.m_ObjDagger; ObjDlg.m_rvSword = SysData.m_ObjSword; ObjDlg.m_rvVest = SysData.m_ObjVest; ObjDlg.m_rvShield = SysData.m_ObjShield; ObjDlg.m_rvBanner = SysData.m_ObjBanner; ObjDlg.m_rvGuide = SysData.m_ObjGuide; OptionDlg.m_bShowLevel = SysData.IsShowLevel (); OptionDlg.m_bRestore = SysData.IsLevelMsg (); if (dlg.DoModal () == IDOK) { // retrieve the dialog data SysData.m_Authorization = SysDlg.m_AuthGroup; SysData.m_AuthDelay = SysDlg.m_AuthDelay; SysData.SetPort (SysDlg.m_Port); SysData.SetAutoReboot (SysDlg.m_bAutoReboot); SysData.SetRebootDelay (SysDlg.m_RebootDelay); SysData.SetRebootHour (SysDlg.m_RebootHour); SysData.SetRebootInterval (SysDlg.m_RebootDays); SysData.SetAutoStart (SysDlg.m_bAutoStart); SysData.SetStartDelay (SysDlg.m_StartDelay); SysData.bNameResolving = SysDlg.m_bResolveHostNames; SysData.SetBackup (SaveDlg.m_bBackup); SysData.SetAutoSave (SaveDlg.m_bAutoSave); SysData.SaveFrequency = SaveDlg.m_AutoSaveFreq; SysData.SetSavePasswordOnChange (SaveDlg.m_PwdChange); SysData.SetSaveOnGet (SaveDlg.m_bSaveOnGet); SysData.SetSaveOnPut (SaveDlg.m_bSavePut); SysData.SetSaveOnDrop (SaveDlg.m_bSaveOnDrop); SysData.SetSaveOnGive (SaveDlg.m_bSaveOnGive); SysData.SetSaveOnReceive (SaveDlg.m_bSaveOnReceive); SysData.SetSaveOnAuction (SaveDlg.m_bSaveOnAuction); SysData.SetSaveOnKill (SaveDlg.m_bSaveOnKill); SysData.SetSaveOnDeath (SaveDlg.m_bSaveOnDeath); SysData.SetSaveOnZapDrop (SaveDlg.m_bSaveOnZapDrop); SysData.SetSaveOnIdle (SaveDlg.m_bSaveOnIdle); SysData.ReadAllMailLev = LevDlg.m_AllMailLevel; SysData.ReadMailFreeLev = LevDlg.m_FreeMailLevel; SysData.WriteMailFreeLev = LevDlg.m_WriteMailFreeLevel; SysData.TakeOthersMailLev = LevDlg.m_TakeOthersMailLevel; SysData.MuseLevel = LevDlg.m_MuseChannelLevel; SysData.ThinkLevel = LevDlg.m_ThinkChannelLevel; SysData.BuildLevel = LevDlg.m_BuildChannelLevel; SysData.LogLevel = LevDlg.m_LogChannelLevel; SysData.ModifyProtoLevel = LevDlg.m_ModifyProtoLevel; SysData.OverridePrivateLev = LevDlg.m_PrivateOverrideLevel; SysData.MsetPlayerLevel = LevDlg.m_MsetPlayerLevel; SysData.GetObjNoTakeLevel = LevDlg.m_GetNoTakeLevel; SysData.ForcePcLevel = LevDlg.m_UseForceLevel; SysData.StunPlayerLev = HitDlg.m_StunPvP; SysData.StunRegularLev = HitDlg.m_StunMvP; SysData.PlrPlrDamage = HitDlg.m_DamagePvP; SysData.PlrMobDamage = HitDlg.m_DamagePvM; SysData.MobPlrDamage = HitDlg.m_DamageMvP; SysData.MobMobDamage = HitDlg.m_DamageMvM; SysData.m_RoomAuthStart = RoomDlg.m_raStart; SysData.m_RoomSchool = RoomDlg.m_rvSchool; SysData.m_RoomHell = RoomDlg.m_rvHell; SysData.m_RoomTemple = RoomDlg.m_rvTemple; SysData.m_RoomAltar = RoomDlg.m_rvAltar; SysData.m_RoomHallOfFallen = RoomDlg.m_rvFallen; SysData.m_RoomVoid = RoomDlg.m_rvVoid; SysData.m_RoomChat = RoomDlg.m_rvChat; SysData.m_RoomLimbo = RoomDlg.m_rvLimbo; SysData.m_RoomPoly = RoomDlg.m_rvPoly; SysData.SetLogBootToFile (LogDlg.m_EBoot); SysData.SetLogResetsToFile (LogDlg.m_EResets); SysData.SetLogBuildToFile (LogDlg.m_EBuild); SysData.SetLogBugsToFile (LogDlg.m_EBugs); SysData.SetLogPlayersToFile (LogDlg.m_EPlayers); SysData.SetLogCommToFile (LogDlg.m_EComm); SysData.SetLogBootToScreen (LogDlg.m_SBoot); SysData.SetLogResetsToScreen (LogDlg.m_SResets); SysData.SetLogBuildToScreen (LogDlg.m_SBuild); SysData.SetLogBugsToScreen (LogDlg.m_SBugs); SysData.SetLogPlayersToScreen (LogDlg.m_SPlayers); SysData.SetLogCommToScreen (LogDlg.m_SComm); SysData.SetLogBuildToChannel (LogDlg.m_CBuild); SysData.SetLogBugsToChannel (LogDlg.m_CBugs); SysData.SetLogPlayersToChannel (LogDlg.m_CPlayers); SysData.SetLogCommToChannel (LogDlg.m_CComm); SysData.SetCloseStdErr (LogDlg.m_CloseStdErr); SysData.SetMaxStdErrSize (LogDlg.m_MaxSize); SysData.m_ObjMace = ObjDlg.m_rvMace; SysData.m_ObjDagger = ObjDlg.m_rvDagger; SysData.m_ObjSword = ObjDlg.m_rvSword; SysData.m_ObjVest = ObjDlg.m_rvVest; SysData.m_ObjShield = ObjDlg.m_rvShield; SysData.m_ObjBanner = ObjDlg.m_rvBanner; SysData.m_ObjGuide = ObjDlg.m_rvGuide; SysData.SetShowLevel (OptionDlg.m_bShowLevel); SysData.SetLevelMsg (OptionDlg.m_bRestore); SysData.Save (); if (gpDoc->m_pLog) { gpDoc->m_pLog->SetFromSysData (); gpDoc->m_pLog->SetType (LOG_NORMAL); // always log normal messages } } } void CMainFrame::OnStatmenu () { // If the system data is not yet loaded, load it now. if (! SysData.IsLoaded ()) SysData.Load (); CStatDlg dlg; // Initialize dialog data dlg.m_StartTime = gpDoc->m_StartTime.GetString (); dlg.m_BootTime = gpDoc->m_BootTime.GetString (); dlg.m_NextBoot = gpDoc->m_RebootTime.GetString (); dlg.m_nPlayers = DList.GetCount (); dlg.m_nMaxPlayers = SysData.MaxPlayers; dlg.m_nAlltimeMax = SysData.AlltimeMax; dlg.m_AlltimeMaxTime = SysData.pTimeOfMax; if (dlg.DoModal () == IDOK) { } } void CMainFrame::OnTitles () { // If the system data is not yet loaded, load it now. if (! SysData.IsLoaded ()) SysData.Load (); CTitlesDlg dlg; // Initialize dialog data dlg.m_LongTitle = SysData.GetLongTitle (); dlg.m_ShortTitle = SysData.GetShortTitle (); dlg.m_Supreme = SysData.GetSupremeEntity (); if (dlg.DoModal () == IDOK) { SysData.SetLongTitle (dlg.m_LongTitle); SysData.SetShortTitle (dlg.m_ShortTitle); SysData.SetSupremeEntity (dlg.m_Supreme); SysData.Save (); } } void CMainFrame::OnMudStart() { OnFileStart (); } void CMainFrame::OnUpdateMudStart(CCmdUI* pCmdUI) { pCmdUI->Enable (bSmaugDown); } void CMainFrame::OnStopMud() { OnFileDown (); } void CMainFrame::OnUpdateStopMud(CCmdUI* pCmdUI) { pCmdUI->Enable (! bSmaugDown); }