rnd-20090623-1-src
[rocksndiamonds.git] / src / game_sp / Input.c
1 // ----------------------------------------------------------------------------
2 // Input.c
3 // ----------------------------------------------------------------------------
4
5 #include "Input.h"
6
7 static char *VB_Name = "modInput";
8 // --- Option Explicit
9
10 boolean KeyState[255 + 1];
11 DemoBufferObject DemoBuffer;
12
13 //
14 // Public KeyFlagSpace As Boolean
15 // Public KeyFlagUp As Boolean
16 // Public KeyFlagLeft As Boolean
17 // Public KeyFlagDown As Boolean
18 // Public KeyFlagRight As Boolean
19 // Public KeyFlagEnter As Boolean
20 // Public KeyFlagESC As Boolean
21 // Public KeyFlagR As Boolean
22 // Public KeyFlagRShift As Boolean
23
24 int KeyScanCode7;
25
26 void subCheckJoystick()
27 {
28 }
29
30 int subCheckRightMouseButton()
31 {
32   int subCheckRightMouseButton;
33
34   // return button state
35
36   return subCheckRightMouseButton;
37 }
38
39 int subProcessKeyboardInput()
40 {
41   int subProcessKeyboardInput;
42
43   int LastKey;
44
45   //  On Error GoTo NoKeyboardAccessEH
46   //    Call DKeyboard.Acquire
47   //  On Error GoTo 0
48   //  Call DKeyboard.GetDeviceStateKeyboard(KeyState)
49   //  With KeyState
50   if (DemoFlag != 0)
51   {
52     subGetNextDemoKey();
53     if (ExitToMenuFlag != 0)
54       return subProcessKeyboardInput;
55
56   }
57   else
58   {
59     if (KeyState[vbKeySpace])
60     {
61       if (KeyState[vbKeyUp])
62       {
63         DemoKeyCode = keySpaceUp;
64       }
65       else if (KeyState[vbKeyLeft])
66       {
67         DemoKeyCode = keySpaceLeft;
68       }
69       else if (KeyState[vbKeyDown])
70       {
71         DemoKeyCode = keySpaceDown;
72       }
73       else if (KeyState[vbKeyRight])
74       {
75         DemoKeyCode = keySpaceRight;
76       }
77       else
78       {
79         DemoKeyCode = keySpace;
80       }
81
82     }
83     else
84     {
85       if (KeyState[vbKeyUp])
86       {
87         DemoKeyCode = keyUp;
88       }
89       else if (KeyState[vbKeyLeft])
90       {
91         DemoKeyCode = keyLeft;
92       }
93       else if (KeyState[vbKeyDown])
94       {
95         DemoKeyCode = keyDown;
96       }
97       else if (KeyState[vbKeyRight])
98       {
99         DemoKeyCode = keyRight;
100       }
101       else
102       {
103         DemoKeyCode = keyNone;
104       }
105     }
106   }
107
108   // demo recording
109   if (RecordDemoFlag == 1)
110     DemoBuffer.AddDemoKey(DemoKeyCode);
111
112   if (DemoKeyCode != LastKey && ! NoDisplayFlag)
113   {
114 #if 0
115     MainForm.ShowKey(DemoKeyCode);
116 #endif
117     LastKey = DemoKeyCode;
118   }
119
120   if (KeyState[vbKeyEscape])
121   {
122     if (BlockingSpeed)
123     {
124       //        Call MainForm.menSpeed_Click(4)
125     }
126     else
127     {
128       KillMurphyFlag = 1;
129       //        ExplodeFieldSP MurphyPosIndex
130       //        LeadOutCounter = &H20
131     }
132   }
133
134   if (KeyState[vbKeyR])
135   {
136     subFetchAndInitLevelB();
137   }
138
139   if (KeyState[vbKeyShift])
140     subDisplayRedDiskCount();
141
142 #if 0
143   if (KeyState[vbKeyReturn])
144     MainForm.PanelVisible = (ShowPanel == 0);
145 #endif
146
147   //  End With
148   //  Call DKeyboard.Unacquire
149   return subProcessKeyboardInput;
150
151 NoKeyboardAccessEH:
152   Debug.Print("! Keyboard access");
153
154   return subProcessKeyboardInput;
155 }