⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbdmanager.cpp

📁 分布式坦克大战游戏,多机运行
💻 CPP
字号:
/*****************************************************************************
*                                                                             
*   KbdManager.cpp                                                            
*                                                                             
*   Electrical Engineering Faculty - Software Lab                             
*   Spring semester 1998                                                      
*                                                                             
*   Tanks game                                                                
*                                                                             
*   Module description: The keyboard manager holds the player control keys in
*                       use. It allows the user to assign his own keys to the
*                       different tank actions, check for conflicts, and store
*                       the table for future use in the registry file.
*                                                                             
*   Authors: Eran Yariv - 28484475                                           
*            Moshe Zur  - 24070856                                           
*                                                                            
*                                                                            
*   Date: 23/09/98                                                           
*                                                                            
******************************************************************************/
#include <stdafx.h>
#include <KbdManager.h>
#include "keymappingdlg.h"

void
CKbdManager::SetKbdMapping()
{
    // Make a copy of current set of keys, and pass it to dlg:
    CKeysTable NewKeys = m_Keys;
    // Create Keys configuration dlg:
	CKeyMappingDlg dlg(&NewKeys);

	int nResponse = dlg.DoModal();
	if (nResponse == IDOK)  // Replace the current settings with the new ones:
	{
        m_Keys = NewKeys;
	}
}

/*------------------------------------------------------------------------------

  Function: RefreshManouverSet

  Purpose:  Refresh the local tank's maneuver set after each use, to deal with
            situation of focus lost of the main game dialog.

  Input:    None.

  Output:   None.

  Remarks:  When the game loose it's focus, the WM_KEY_UP message may be missed,
            thus causing the tank to repeat it's last maneuver set. To eliminate
            this phenomena, we check the key board state after every use of the
            maneuver set by the local tank.

------------------------------------------------------------------------------*/
void
CKbdManager::RefreshManouverSet()
{
    ASSERT(m_pManouverSet);

    for (int i = 0; i < 8; i++)
    {
        UINT uKeyCode = m_Keys.GetKey(i);

        if (! GetAsyncKeyState(uKeyCode))   // Key is up or nother window got the kbd input
            m_pManouverSet -> UnsetBit (i);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -