16,472
社区成员
发帖
与我相关
我的任务
分享
//定时器消息
void CGameClientDlg::OnTimer(UINT nIDEvent)
{
//倒数定时器
if ((nIDEvent==IDI_GAME_TIMER)&&(m_wCurrentUser!=INVALID_CHAIR))
{
//设置时间
if ((m_bLimitTime==true)&&(m_StatusInfo[m_wCurrentUser].wLimitTimeCount!=0xFFFF))
{
//递减时间
m_StatusInfo[m_wCurrentUser].wLimitTimeCount--;
//时间切换
if (m_StatusInfo[m_wCurrentUser].wLimitTimeCount==0xFFFF)
{
if (m_GameRuleInfo.wRuleTimeOutCount>0)
{
//设置变量
m_GameRuleInfo.wRuleTimeOutCount--;
m_StatusInfo[m_wCurrentUser].wLimitTimeCount=m_GameRuleInfo.wRuleStepTime;
//玩家设置
if ((GetMeChairID()==m_wCurrentUser)&&(IsLookonMode()==false))
{
//发送消息
SendData(SUB_C_TIME_OUT);
//提示消息
TCHAR szMessage[128];
_snprintf(szMessage,sizeof(szMessage),TEXT("下棋超时了,还有 %ld 次 %ld 秒的超时机会"),
m_GameRuleInfo.wRuleTimeOutCount+1,m_GameRuleInfo.wRuleStepTime);
InsertSystemString(szMessage);
}
}
else
{
//删除定时器
KillTimer(IDI_GAME_TIMER);
m_StatusInfo[m_wCurrentUser].wLimitTimeCount=0;
//玩家设置
if ((GetMeChairID()==m_wCurrentUser)&&(IsLookonMode()==false))
{
//发送消息
SendData(SUB_C_TIME_OUT);
//设置界面
m_GameClientView.m_btPeace.EnableWindow(FALSE);
m_GameClientView.m_btRegret.EnableWindow(FALSE);
m_GameClientView.m_btGiveUp.EnableWindow(FALSE);
m_GameClientView.m_ChessBorad.CleanCountInfo();
m_GameClientView.m_ChessBorad.SetSelectMode(SM_NO_SELECT);
if (m_GameClientView.m_ChessCountInfo.GetSafeHwnd()!=NULL) m_GameClientView.m_ChessCountInfo.DestroyWindow();
//提示消息
InsertSystemString(TEXT("下棋超时,你被判输"));
PlayGameSound(AfxGetInstanceHandle(),"TIME_OUT");
}
}
}
//播放声音
if ((m_StatusInfo[m_wCurrentUser].wLimitTimeCount<=5)&&(GetMeChairID()==m_wCurrentUser)&&(IsLookonMode()==false))
{
PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_WARN"));
}
}
//设置视图
m_StatusInfo[m_wCurrentUser].wUseTimeCount++;
m_GameClientView.SetUserStatusInfo(SwitchViewChairID(m_wCurrentUser),m_StatusInfo[m_wCurrentUser]);
return;
}
__super::OnTimer(nIDEvent);
}