-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patheuro_cnt.cpp
141 lines (102 loc) · 3.81 KB
/
euro_cnt.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* Copyright (C) 1997 Gremlin Interactive Ltd.
* With modifications by Mark E Sowden
*/
#include <stdio.h>
#include <SDL2/SDL.h>
#include "eurodefs.h"
#include "euro_fxd.h"
#include "euro_def.h"
#include "euro_var.h"
#include "defines.h"
//**********************************************************************************************************************
uint8_t InitialiseUser(uint8_t user, uint8_t cntrl) {
if (EUROgameType == EURO_friendly) {
UserList[user].control = cntrl;
user++;
}
if (EUROgameType == EURO_championship) {
UserList[user].control = cntrl;
user++;
}
if ((EUROgameType == EURO_network_game || EUROgameType == EURO_wireplay)
&& user == 0) {
UserList[user].control = cntrl;
user = 1;
}
return user;
}
//**********************************************************************************************************************
uint8_t CalculateMaxPlayers() {
uint8_t players = 0;
for (uint8_t p = 0; p < 16; p++) {
if (CtrlFlags[p] == Usable)
players++;
}
return players;
}
//**********************************************************************************************************************
void SetupMouseLimits(int Xmin, int Xmax, int Ymin, int Ymax) {
#ifdef IMPLEMENT_ME
union REGS rg;
rg.x.ecx = Xmin;
rg.x.edx = Xmax;
rg.x.eax = 7;
int386(0x33,&rg,&rg);
rg.x.ecx = Ymin;
rg.x.edx = Ymax;
rg.x.eax = 8;
int386(0x33,&rg,&rg);
#endif
}
//**********************************************************************************************************************
uint8_t SetupControlMethods() {
for (char m = 0; m < 16; m++) { CtrlFlags[m] = Unusable; }
// ***> Configure KEYBOARD 1
CtrlFlags[EuroKeyboard1] = (char) Usable;
uint8_t user = InitialiseUser(0, EuroKeyboard1);
if (EUROverbose)
printf("Keyboard 1 initialised.\n");
// ***> Configure KEYBOARD 2
CtrlFlags[EuroKeyboard2] = (char) Usable;
user = InitialiseUser(user, EuroKeyboard2);
if (EUROverbose)
printf("Keyboard 2 initialised.\n");
if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) == 0) {
// ***> Configure JOYSTICK 1
CtrlFlags[EuroJoystick1] = (char) Usable;
user = InitialiseUser( user, EuroJoystick1 );
if(EUROverbose)
printf("Joystick 1 initialised.\n");
// ***> Configure JOYSTICK 2
CtrlFlags[EuroJoystick2] = (char) Usable;
user = InitialiseUser( user, EuroJoystick2 );
if(EUROverbose)
printf("Joystick 2 initialised.\n");
} else {
printf("Failed to initialise SDL joystick subsystem!\n%s\n", SDL_GetError());
}
// ***> Configure MOUSE
CtrlFlags[EuroMouse] = (char) Usable;
SetupMouseLimits( 0, 626, 1, 452 );
user = InitialiseUser( user, EuroMouse);
if (EUROverbose)
printf("Mouse Driver found and initialised.\n");
return CalculateMaxPlayers();
}
//**********************************************************************************************************************
float WhichButton(float var) {
if (ButtonState == LEFT_BUTTON)
return -var;
return var;
}
//**********************************************************************************************************************
void GetConsoleInput() {
SDL_PumpEvents();
SDL_GetMouseState(&SelectorXcoord, &SelectorYcoord);
if(SDL_BUTTON(SDL_BUTTON_LEFT)) {
ButtonState = LEFT_BUTTON;
} else if(SDL_BUTTON(SDL_BUTTON_RIGHT)) {
ButtonState = RIGHT_BUTTON;
}
}
//**********************************************************************************************************************