📄 servertoolview.cpp
字号:
// total
m_lcTotal.ShowWindow( !bShow );
m_stTotal.ShowWindow( !bShow );
// distribute zone
m_stDist.ShowWindow( bShow );
m_lcDist.ShowWindow( bShow );
// agent zone
m_stAgent.ShowWindow( bShow );
m_lcAgent.ShowWindow( bShow );
// map zone
m_stMap.ShowWindow( bShow );
m_lcMap.ShowWindow( bShow );
m_btnTServer.ShowWindow( bShow );
}
// update -----------------------------------------------------------------------------------------
void CServerToolView::UpdateServerControl()
{
UpdateUserCount();
m_editMaxUser.SetWindowText( "MaxUser" );
m_editVersion.SetWindowText( "Version" );
m_cbUserLevel.SetCurSel( 0 );
if( m_cbServerSet.GetCurSel() > 0 )
{
CString str;
m_cbServerSet.GetLBText( m_cbServerSet.GetCurSel(), str );
CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
if( pServerSet )
{
char temp[256];
// MaxUser
m_editMaxUser.SetWindowText( itoa((int)pServerSet->m_dwMaxUser, temp, 10) );
// ClientExeVersion
m_editVersion.SetWindowText( pServerSet->m_sClientExeVersion );
// UserLevel
m_cbUserLevel.SetCurSel( pServerSet->m_nUserLevel-1 );
UpdateData( FALSE );
}
}
}
void CServerToolView::UpdateUserCount()
{
if( m_cbServerSet.GetCurSel() > 0 )
{
CString str;
m_cbServerSet.GetLBText( m_cbServerSet.GetCurSel(), str );
CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
if( pServerSet )
m_stUserCount.Format( "%d", pServerSet->GetTotalUserCount() );
}
else
m_stUserCount.Format( "%d", SERVERSETMNG->GetTotalUserCount() );
UpdateData( FALSE );
}
void CServerToolView::UpdateServerMonitor()
{
CServerSet* pServerSet = NULL;
CServer* pServer = NULL;
LV_ITEM lvitem;
char temp[256];
int i = 0;
int index = m_cbServerSet.GetCurSel();
if( index == 0 ) // All Server
{
m_lcTotal.DeleteAllItems();
for( i = 1; i < m_cbServerSet.GetCount(); ++i )
{
m_cbServerSet.GetLBText( i, temp );
pServerSet = SERVERSETMNG->GetServerSet( temp );
if( pServerSet )
{
pServer = pServerSet->GetServer( DISTRIBUTE_SERVER, 0 );
if( pServer )
{
lvitem.iItem = m_lcTotal.GetItemCount(); // 青
lvitem.iSubItem = 0;
lvitem.mask = LVIF_TEXT | LVIF_STATE;
lvitem.stateMask = LVIS_STATEIMAGEMASK;
lvitem.state = INDEXTOSTATEIMAGEMASK( pServer->m_nState );
lvitem.pszText = pServer->m_sState;
m_lcTotal.InsertItem( &lvitem );
m_lcTotal.SetItemText( lvitem.iItem, 1, itoa( pServerSet->GetTotalUserCount(), temp, 10 ) );
m_lcTotal.SetItemText( lvitem.iItem, 2, pServerSet->m_sServerSetName );
m_lcTotal.SetItemText( lvitem.iItem, 3, itoa( pServerSet->m_nServerSet, temp, 10 ) );
}
}
m_stUserCount.Format( "%d", SERVERSETMNG->m_dwTotalUserCount );
}
}
else
{
// delete item
m_lcDist.DeleteAllItems();
m_lcAgent.DeleteAllItems();
// m_lcMurim.DeleteAllItems();
m_lcMap.DeleteAllItems();
m_cbServerSet.GetLBText( index, temp );
pServerSet = SERVERSETMNG->GetServerSet( temp );
if( pServerSet == NULL ) return;
// distribute
CListCtrl* pListCtrl;
vector<CServer*>::iterator iter = pServerSet->m_vecServer.begin();
for(;iter != pServerSet->m_vecServer.end();++iter)
{
pServer = (*iter);
switch(pServer->m_nServerKind)
{
case DISTRIBUTE_SERVER: pListCtrl = &m_lcDist; break;
case AGENT_SERVER: pListCtrl = &m_lcAgent; break;
// case MURIM_SERVER: pListCtrl = &m_lcMurim; break;
case MAP_SERVER: pListCtrl = &m_lcMap; break;
default:
continue;
}
lvitem.iItem = pListCtrl->GetItemCount(); // 青
lvitem.iSubItem = 0;
lvitem.mask = LVIF_TEXT | LVIF_STATE;
lvitem.stateMask = LVIS_STATEIMAGEMASK;
lvitem.state = INDEXTOSTATEIMAGEMASK( pServer->m_nState );
lvitem.pszText = pServer->m_sState;
pListCtrl->InsertItem( &lvitem );
pListCtrl->SetItemText( lvitem.iItem, 1, itoa( pServer->m_dwUserCount, temp, 10 ) );
pListCtrl->SetItemText( lvitem.iItem, 2, pServer->m_sName );
pListCtrl->SetItemText( lvitem.iItem, 3, itoa( pServer->m_nServerNum, temp, 10 ) );
pListCtrl->SetItemText( lvitem.iItem, 4, pServer->m_sIP );
pListCtrl->SetItemText( lvitem.iItem, 5, itoa( pServer->m_nPort, temp, 10 ) );
}
}
UpdateData( FALSE );
}
void CServerToolView::UpdateCommand()
{
}
// Server Control ---------------------------------------------------------------------------------
void CServerToolView::OnSelchangeComboServerset()
{
if( m_cbServerSet.GetCurSel() > 0 )
ShowServerMonitor( TRUE );
else
ShowServerMonitor( FALSE );
UpdateServerControl();
UpdateServerMonitor();
}
void CServerToolView::OnButtonServerOn()
{
if( m_nToolLevel != eOperPower_Master ) return;
CString str, temp;
m_cbServerSet.GetWindowText( str );
temp.Format( "Turn On %s Server?", str );
if( MessageBox( temp, "Turn On", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoServerSetOn( (char*)(LPCTSTR)str );
m_bServerOff = FALSE;
LOG( "Button ServerOn : %s", (char*)(LPCTSTR)str );
}
}
void CServerToolView::OnButtonServerOff()
{
if( m_nToolLevel != eOperPower_Master ) return;
CString str, temp;
m_cbServerSet.GetWindowText( m_strAutoPatch );
temp.Format( "Turn Off %s Server?", m_strAutoPatch );
if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
// SERVERSETMNG->DoServerSetOff( (char*)(LPCTSTR)m_strAutoPatch );
{
SERVERSETMNG->DoAllUserDisconnect( (char*)(LPCTSTR)m_strAutoPatch );
m_bServerOff = TRUE;
m_dwServerOffTime = 0;
LOG( "Button ServerOff(AllUserDisconnect) : %s", (char*)(LPCTSTR)m_strAutoPatch );
}
}
void CServerToolView::OnButtonServerRefresh()
{
/* CString str;
m_cbServerSet.GetWindowText( str );
// SERVERSETMNG->DoServerSetRefresh( (char*)(LPCTSTR)str );
SERVERSETMNG->DoQueryUserCount();
*/
ReConnectToMAS();
LOG( "Button Refresh : Reconnect To MAS!!" );
}
void CServerToolView::OnButtonServerUserout()
{
/* CString str, temp;
m_cbServerSet.GetWindowText( str );
temp.Format( "%s甫(阑) Turn Off 窍矫摆嚼聪鳖?", str );
if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
SERVERSETMNG->DoAllUserDisconnect( (char*)(LPCTSTR)str );
*/
}
void CServerToolView::OnButtonVersionChange()
{
if( m_nToolLevel != eOperPower_Master ) return;
CString str, temp, version;
m_cbServerSet.GetWindowText( str );
m_editVersion.GetWindowText( version );
temp.Format( "Change %s's Version To %s?", str, version );
if( MessageBox( temp, "Version Change", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoChangeClientExeVersion( (char*)(LPCTSTR)str, (char*)(LPCTSTR)version );
LOG( "Button VersionChange : %s", (char*)(LPCTSTR)version );
}
}
void CServerToolView::OnButtonMaxuserChange()
{
if( m_nToolLevel != eOperPower_Master ) return;
CString str, temp, maxuser;
m_cbServerSet.GetWindowText( str );
m_editMaxUser.GetWindowText( maxuser );
DWORD user = (DWORD)atoi( (const char*)(LPCTSTR)maxuser );
temp.Format( "Change %s's MaxUser To %s?", str, maxuser );
if( MessageBox( temp, "MaxUser Change", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoChangeMaxUser( (char*)(LPCTSTR)str, user );
LOG( "Button MaxUserChange : %d", user );
}
}
void CServerToolView::OnButtonUserlevel()
{
CString str;
m_cbServerSet.GetWindowText( str );
CString user[7] = { "God", "Programmer", "Developer", "GM", "SuperUser", "User", "SubUser" };
int level = m_cbUserLevel.GetCurSel();
char temp[256];
wsprintf( temp, "Change %s's UserLevel To %s?", str, user[level] );
if( MessageBox( temp, "UserLevel", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoChangeUserLevel( (char*)(LPCTSTR)str, level+1 );
LOG( "Button UserLevelChange : %d", level+1 );
}
}
void CServerToolView::OnButtonAutopatch()
{
if( m_nToolLevel != eOperPower_Master ) return;
if( m_pMSInfoDlg )
m_pMSInfoDlg->SetFocus();
else
{
m_pMSInfoDlg = new CMSInfoDlg;
m_pMSInfoDlg->Create( (CMainFrame*)AfxGetMainWnd() );
m_pMSInfoDlg->ShowWindow( SW_SHOW );
}
}
void CServerToolView::OnButtonUsercount()
{
if( m_nToolLevel != eOperPower_Master )
return;
if( m_pUserCountDlg )
m_pUserCountDlg->SetFocus();
else
{
m_pUserCountDlg = new CUserCount;
m_pUserCountDlg->Create( (CMainFrame*)AfxGetMainWnd() );
m_pUserCountDlg->ShowWindow( SW_SHOW );
}
}
// 鞘夸绝阑瘤档...
void CServerToolView::OnButtonOffmsgbox()
{
CString str, temp;
m_cbServerSet.GetWindowText( str );
temp.Format( "Turn Off %s's AssertMsgBox?", str );
if( MessageBox( temp, "Assert MsgBox Off", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoAssertMsgBox( (char*)(LPCTSTR)str, FALSE );
}
}
void CServerToolView::OnButtonOnmsgbox()
{
CString str, temp;
m_cbServerSet.GetWindowText( str );
temp.Format( "Turn On %s's AssertMsgBox?", str );
if( MessageBox( temp, "Assert MsgBox On", MB_OKCANCEL ) == IDOK )
{
SERVERSETMNG->DoAssertMsgBox( (char*)(LPCTSTR)str, TRUE );
}
}
void CServerToolView::ReConnectToMAS()
{
m_bReconnect = FALSE;
NETWORK->Release();
if( SERVERSETMNG->Init( "MASList.ini" ) )
{
NETWORK->Init(this->GetParentFrame()->m_hWnd );
//------------------------------------------------------------------------------------
m_cbServerSet.ResetContent();
m_cbCmdServerSet.ResetContent();
m_cbServerSet.AddString( "All Server" );
m_cbCmdServerSet.AddString( "All Server" );
DWORD tick = GetTickCount();
CServerSet* pServerSet = NULL;
int count = 0;
for( int i = 0; i < SERVERSETMNG->GetMaxServerSet(); ++i )
{
pServerSet = SERVERSETMNG->GetServerSet( i );
if( pServerSet )
{
if( !NETWORK->ConnectToServer( i, pServerSet->m_sMASIP, pServerSet->m_nMASPort ) )
{
pServerSet->Release();
}
else
{
pServerSet->m_dwMsgCheckTime = tick;
m_cbServerSet.AddString( pServerSet->m_sServerSetName );
m_cbCmdServerSet.AddString( pServerSet->m_sServerSetName );
++count;
}
}
}
m_cbServerSet.SetCurSel( 0 );
m_cbCmdServerSet.SetCurSel( 0 );
//------------------------------------------------------------------------------------
if( count )
{
EnableServerControl( FALSE );
EnableServerMonitor( FALSE );
EnableCommand( FALSE );
EnableToolFromLevel( m_nToolLevel );
UpdateServerControl();
OnSelchangeComboServerset(); // UpdateServerMonitor()
SERVERSETMNG->DoQueryClientExeVersion();
SERVERSETMNG->DoQueryMaxUser();
SERVERSETMNG->DoQueryUserLevel();
SERVERSETMNG->DoQueryUserCount();
SERVERSETMNG->DoServerSetRefresh( "All Server" );
}
else
{
MessageBox( "Can't Connect To MAS!!", "Error!!", MB_OK );
GetParentFrame()->PostMessage( WM_CLOSE );
}
}
UpdateData( FALSE );
}
// Command ----------------------------------------------------------------------------------------
void CServerToolView::OnButtonNotify()
{
if( m_bNotify )
{
if( MessageBox( "Stop To Send Notification Message?", "Confirm!!", MB_OKCANCEL ) == IDOK )
{
m_btnNotify.SetBitmap( m_bmpGray );
}
else
return;
}
else
{
if( m_strCurFileName == "" || m_strCurFileName == "None" )
{
MessageBox( "First, You Have To Edit Notification File!!", "Error!!" );
return;
}
else
{
if( MessageBox( "Send Notification Message?", "Confirm!!", MB_OKCANCEL ) == IDOK )
{
m_btnNotify.SetBitmap( m_bmpGreen );
CString str;
m_editRepeatNum.GetWindowText( str );
m_nRepeatNum = atoi( (LPCTSTR)str );
m_RepeatEdit.GetWindowText( str );
m_nRepeatTime = atoi( (LPCTSTR)str );
m_nCheckTime = m_nRepeatTime;
m_NotifyMessage.SetRepeatNum( m_nRepeatNum );
}
else
return;
}
}
m_bNotify = !m_bNotify;
}
void CServerToolView::OnButtonNotifyEdit()
{
/* m_NotifyDlg.Init( m_strCurFileName, &m_NotifyMessage );
if( m_NotifyDlg.DoModal() == IDOK )
{
m_strCurFileName = m_NotifyDlg.m_strCurFileName;
if( m_strCurFileName != "None" && m_strCurFileName != "" )
{
m_NotifyMessage.Open( (char*)((LPCTSTR)m_strCurFileName) );
m_editRepeatNum.EnableWindow( TRUE );
m_RepeatEdit.EnableWindow( TRUE );
}
UpdateData( FALSE );
}
*/
CFileDialog dlg( TRUE, NULL, "*.txt", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"txt 颇老 (*.txt)|*.txt||", NULL );
if( dlg.DoModal() == IDOK )
{
m_strCurFileName = dlg.GetFileName();
m_NotifyMessage.Open( (char*)(LPCTSTR)m_strCurFileName );
m_editRepeatNum.EnableWindow( TRUE );
m_RepeatEdit.EnableWindow( TRUE );
}
}
void CServerToolView::OnChangeEditMessage()
{
if( m_MessageEdit.m_bReturn )
{
CString str, temp, msg, setname;
m_MessageEdit.GetWindowText( str );
int length = 0;
if( length = str.GetLength() )
{
temp.Format( "Send Notification Message?\n\n\"%s\"", str );
if( MessageBox( temp, "Message", MB_OKCANCEL ) == IDOK )
{
m_cbCmdServerSet.GetLBText( m_cbCmdServerSet.GetCurSel(), setname );
LOG( "Send Notice : \"%s\"", (char*)(LPCTSTR)str );
msg = "";
msg += str;
SERVERSETMNG->DoSendMessage( (char*)(LPCTSTR)setname, (char*)((LPCTSTR)msg) );
m_MessageEdit.SetWindowText( "" );
}
}
m_MessageEdit.m_bReturn = FALSE;
}
}
void CServerToolView::OnButtonCommandSend()
{
}
// Server Monitor ---------------------------------------------------------------------------------
void CServerToolView::OnDblClickServerList(CListCtrl* pListCtrl,WORD ServerKind)
{
POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
if( pos )
{
int nItem = pListCtrl->GetNextSelectedItem( pos );
char servernum[256];
pListCtrl->GetItemText( nItem, 3, servernum, 256 );
CString str, temp;
m_cbServerSet.GetWindowText( str ); // serverset name
CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
if( pServerSet )
{
CServer* pServer = pServerSet->GetServer( ServerKind, atoi( servernum ) );
if( pServer )
{
switch( pServer->m_nState )
{
case eServerState_On:
{
temp.Format( "Turn Off %s's %sServer?", str, pServer->m_sName );
if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
pServer->DoServerOff();
}
break;
case eServerState_Off:
{
temp.Format( "Turn On %s's %sServer?", str, pServer->m_sName );
if( MessageBox( temp, "Turn On", MB_OKCANCEL ) == IDOK )
pServer->DoServerOn();
}
break;
case eServerState_AbNormal:
{
temp.Format( "Turn Off %s's %sServer?", str, pServer->m_sName );
if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
pServer->DoKillServer();
// pServer->DoServerOff();
}
break;
}
}
}
}
}
void CServerToolView::OnDblclkListcontrolDist(NMHDR* pNMHDR, LRESULT* pResult)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -