summaryrefslogtreecommitdiff
path: root/movieobjects/dmekeyboardinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'movieobjects/dmekeyboardinput.cpp')
-rw-r--r--movieobjects/dmekeyboardinput.cpp141
1 files changed, 141 insertions, 0 deletions
diff --git a/movieobjects/dmekeyboardinput.cpp b/movieobjects/dmekeyboardinput.cpp
new file mode 100644
index 0000000..0fcea71
--- /dev/null
+++ b/movieobjects/dmekeyboardinput.cpp
@@ -0,0 +1,141 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#include "movieobjects/dmekeyboardinput.h"
+#include "movieobjects_interfaces.h"
+#include "datamodel/dmelementfactoryhelper.h"
+
+#include "vgui/iinput.h"
+#include "vgui/keycode.h"
+#include "tier3/tier3.h"
+
+#include "tier0/dbg.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+//-----------------------------------------------------------------------------
+// global list of all keys supported
+//-----------------------------------------------------------------------------
+struct KeyInfo
+{
+ vgui::KeyCode code;
+ const char *str;
+};
+
+const uint g_nKeys = 48;
+const KeyInfo g_keyInfo[ g_nKeys ] =
+{
+ { KEY_0, "0" },
+ { KEY_1, "1" },
+ { KEY_2, "2" },
+ { KEY_3, "3" },
+ { KEY_4, "4" },
+ { KEY_5, "5" },
+ { KEY_6, "6" },
+ { KEY_7, "7" },
+ { KEY_8, "8" },
+ { KEY_9, "9" },
+ { KEY_A, "A" },
+ { KEY_B, "B" },
+ { KEY_C, "C" },
+ { KEY_D, "D" },
+ { KEY_E, "E" },
+ { KEY_F, "F" },
+ { KEY_G, "G" },
+ { KEY_H, "H" },
+ { KEY_I, "I" },
+ { KEY_J, "J" },
+ { KEY_K, "K" },
+ { KEY_L, "L" },
+ { KEY_M, "M" },
+ { KEY_N, "N" },
+ { KEY_O, "O" },
+ { KEY_P, "P" },
+ { KEY_Q, "Q" },
+ { KEY_R, "R" },
+ { KEY_S, "S" },
+ { KEY_T, "T" },
+ { KEY_U, "U" },
+ { KEY_V, "V" },
+ { KEY_W, "W" },
+ { KEY_X, "X" },
+ { KEY_Y, "Y" },
+ { KEY_Z, "Z" },
+ { KEY_F1, "F1" },
+ { KEY_F2, "F2" },
+ { KEY_F3, "F3" },
+ { KEY_F4, "F4" },
+ { KEY_F5, "F5" },
+ { KEY_F6, "F6" },
+ { KEY_F7, "F7" },
+ { KEY_F8, "F8" },
+ { KEY_F9, "F9" },
+ { KEY_F10, "F10" },
+ { KEY_F11, "F11" },
+ { KEY_F12, "F12" },
+};
+
+
+//-----------------------------------------------------------------------------
+// Expose this class to the scene database
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeKeyboardInput, CDmeKeyboardInput );
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CDmeKeyboardInput::OnConstruction()
+{
+ m_keys = new CDmaVar< bool >[ g_nKeys ];
+
+ for ( uint ki = 0; ki < g_nKeys; ++ki )
+ {
+ m_keys[ ki ].Init( this, g_keyInfo[ ki ].str );
+ }
+}
+
+void CDmeKeyboardInput::OnDestruction()
+{
+ delete[] m_keys;
+}
+
+bool CDmeKeyboardInput::IsDirty()
+{
+ for ( uint ki = 0; ki < g_nKeys; ++ki )
+ {
+ if ( m_keys[ ki ].Get() != GetKeyStatus( ki ) )
+ return true;
+ }
+ return false;
+}
+
+void CDmeKeyboardInput::Operate()
+{
+ for ( uint ki = 0; ki < g_nKeys; ++ki )
+ {
+ m_keys[ ki ].Set( GetKeyStatus( ki ) );
+ }
+}
+
+void CDmeKeyboardInput::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+}
+
+void CDmeKeyboardInput::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ for ( uint ki = 0; ki < g_nKeys; ++ki )
+ {
+ attrs.AddToTail( m_keys[ ki ].GetAttribute() );
+ }
+}
+
+bool CDmeKeyboardInput::GetKeyStatus( uint ki )
+{
+ return g_pVGuiInput->IsKeyDown( g_keyInfo[ ki ].code );
+}