aboutsummaryrefslogtreecommitdiff
path: root/archive/hgewin/input.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgewin/input.cpp')
-rwxr-xr-xarchive/hgewin/input.cpp261
1 files changed, 0 insertions, 261 deletions
diff --git a/archive/hgewin/input.cpp b/archive/hgewin/input.cpp
deleted file mode 100755
index 0610376..0000000
--- a/archive/hgewin/input.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
-** Haaf's Game Engine 1.8
-** Copyright (C) 2003-2007, Relish Games
-** hge.relishgames.com
-**
-** Core functions implementation: input
-*/
-
-
-#include "hge_impl.h"
-
-
-const char *KeyNames[] =
-{
- "?",
- "Left Mouse Button", "Right Mouse Button", "?", "Middle Mouse Button",
- "?", "?", "?", "Backspace", "Tab", "?", "?", "?", "Enter", "?", "?",
- "Shift", "Ctrl", "Alt", "Pause", "Caps Lock", "?", "?", "?", "?", "?", "?",
- "Escape", "?", "?", "?", "?",
- "Space", "Page Up", "Page Down", "End", "Home",
- "Left Arrow", "Up Arrow", "Right Arrow", "Down Arrow",
- "?", "?", "?", "?", "Insert", "Delete", "?",
- "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
- "?", "?", "?", "?", "?", "?", "?",
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
- "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
- "Left Win", "Right Win", "Application", "?", "?",
- "NumPad 0", "NumPad 1", "NumPad 2", "NumPad 3", "NumPad 4",
- "NumPad 5", "NumPad 6", "NumPad 7", "NumPad 8", "NumPad 9",
- "Multiply", "Add", "?", "Subtract", "Decimal", "Divide",
- "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "Num Lock", "Scroll Lock",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "Semicolon", "Equals", "Comma", "Minus", "Period", "Slash", "Grave",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?",
- "Left bracket", "Backslash", "Right bracket", "Apostrophe",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
- "?", "?", "?"
-};
-
-
-bool CALL HGE_Impl::Input_GetEvent(hgeInputEvent *event)
-{
- CInputEventList *eptr;
-
- if(queue)
- {
- eptr=queue;
- memcpy(event, &eptr->event, sizeof(hgeInputEvent));
- queue=eptr->next;
- delete eptr;
- return true;
- }
-
- return false;
-}
-
-void CALL HGE_Impl::Input_GetMousePos(float *x, float *y)
-{
- *x=Xpos; *y=Ypos;
-}
-
-
-void CALL HGE_Impl::Input_SetMousePos(float x, float y)
-{
- POINT pt;
- pt.x=(long)x; pt.y=(long)y;
- ClientToScreen(hwnd, &pt);
- SetCursorPos(pt.x,pt.y);
-}
-
-int CALL HGE_Impl::Input_GetMouseWheel()
-{
- return Zpos;
-}
-
-bool CALL HGE_Impl::Input_IsMouseOver()
-{
- return bMouseOver;
-}
-
-bool CALL HGE_Impl::Input_GetKeyState(int key)
-{
- return ((GetKeyState(key) & 0x8000) != 0);
-}
-
-int CALL HGE_Impl::Input_GetKeyStateEx(int key)//New function
-{
- if (!Input_GetKeyState(key)&&keylast[key])return HGEKST_RELEASE;
- if (!Input_GetKeyState(key))return HGEKST_NONE;
- if (keylast[key])return HGEKST_KEEP;
- return HGEKST_HIT;
-}
-
-bool CALL HGE_Impl::Input_KeyDown(int key)
-{
- return (keyz[key] & 1) != 0;
-}
-
-bool CALL HGE_Impl::Input_KeyUp(int key)
-{
- return (keyz[key] & 2) != 0;
-}
-
-const char* CALL HGE_Impl::Input_GetKeyName(int key)
-{
- return KeyNames[key];
-}
-
-int CALL HGE_Impl::Input_GetKey()
-{
- return VKey;
-}
-
-int CALL HGE_Impl::Input_GetChar()
-{
- return Char;
-}
-
-
-//////// Implementation ////////
-
-
-void HGE_Impl::_InputInit()
-{
- POINT pt;
- GetCursorPos(&pt);
- ScreenToClient(hwnd, &pt);
- Xpos = (float)pt.x;
- Ypos = (float)pt.y;
-
- memset(&keyz, 0, sizeof(keyz));
- memset(keylast,0,sizeof(keylast));
-}
-
-void HGE_Impl::_UpdateMouse()
-{
- POINT pt;
- RECT rc;
-
- GetCursorPos(&pt);
- GetClientRect(hwnd, &rc);
- MapWindowPoints(hwnd, NULL, (LPPOINT)&rc, 2);
-
- if(bCaptured || (PtInRect(&rc, pt) && WindowFromPoint(pt)==hwnd))
- bMouseOver=true;
- else
- bMouseOver=false;
-}
-
-void HGE_Impl::_BuildEvent(int type, int key, int scan, int flags, int x, int y)
-{
- CInputEventList *last, *eptr=new CInputEventList;
- unsigned char kbstate[256];
- POINT pt;
-
- eptr->event.type=type;
- eptr->event.chr=0;
- pt.x=x; pt.y=y;
-
- GetKeyboardState(kbstate);
- if(type==INPUT_KEYDOWN)
- {
- if((flags & HGEINP_REPEAT) == 0) keyz[key] |= 1;
- ToAscii(key, scan, kbstate, (unsigned short *)&eptr->event.chr, 0);
- }
- if(type==INPUT_KEYUP)
- {
- keyz[key] |= 2;
- ToAscii(key, scan, kbstate, (unsigned short *)&eptr->event.chr, 0);
- }
- if(type==INPUT_MOUSEWHEEL)
- {
- eptr->event.key=0; eptr->event.wheel=key;
- ScreenToClient(hwnd,&pt);
- }
- else { eptr->event.key=key; eptr->event.wheel=0; }
-
- if(type==INPUT_MBUTTONDOWN)
- {
- keyz[key] |= 1;
- SetCapture(hwnd);
- bCaptured=true;
- }
- if(type==INPUT_MBUTTONUP)
- {
- keyz[key] |= 2;
- ReleaseCapture();
- Input_SetMousePos(Xpos, Ypos);
- pt.x=(int)Xpos; pt.y=(int)Ypos;
- bCaptured=false;
- }
-
- if(kbstate[VK_SHIFT] & 0x80) flags|=HGEINP_SHIFT;
- if(kbstate[VK_CONTROL] & 0x80) flags|=HGEINP_CTRL;
- if(kbstate[VK_MENU] & 0x80) flags|=HGEINP_ALT;
- if(kbstate[VK_CAPITAL] & 0x1) flags|=HGEINP_CAPSLOCK;
- if(kbstate[VK_SCROLL] & 0x1) flags|=HGEINP_SCROLLLOCK;
- if(kbstate[VK_NUMLOCK] & 0x1) flags|=HGEINP_NUMLOCK;
- eptr->event.flags=flags;
-
- if(pt.x==-1) { eptr->event.x=Xpos;eptr->event.y=Ypos; }
- else
- {
- if(pt.x<0) pt.x=0;
- if(pt.y<0) pt.y=0;
- if(pt.x>=nScreenWidth) pt.x=nScreenWidth-1;
- if(pt.y>=nScreenHeight) pt.y=nScreenHeight-1;
-
- eptr->event.x=(float)pt.x;
- eptr->event.y=(float)pt.y;
- }
-
- eptr->next=0;
-
- if(!queue) queue=eptr;
- else
- {
- last=queue;
- while(last->next) last=last->next;
- last->next=eptr;
- }
-
- if(eptr->event.type==INPUT_KEYDOWN || eptr->event.type==INPUT_MBUTTONDOWN)
- {
- VKey=eptr->event.key;Char=eptr->event.chr;
- }
- else if(eptr->event.type==INPUT_MOUSEMOVE)
- {
- Xpos=eptr->event.x;Ypos=eptr->event.y;
- }
- else if(eptr->event.type==INPUT_MOUSEWHEEL)
- {
- Zpos+=eptr->event.wheel;
- }
-}
-
-void HGE_Impl::_ClearQueue()
-{
- CInputEventList *nexteptr, *eptr=queue;
-
- memset(&keyz, 0, sizeof(keyz));
-
- while(eptr)
- {
- nexteptr=eptr->next;
- delete eptr;
- eptr=nexteptr;
- }
-
- queue=0; VKey=0; Char=0; Zpos=0;
-}