Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/Scene/Legacy/v3/PlayerLegacyv3.cpp
1177 views
1
2
RSDK::Legacy::v3::Player RSDK::Legacy::v3::playerList[LEGACY_v3_PLAYER_COUNT];
3
int32 RSDK::Legacy::v3::playerListPos = 0;
4
int32 RSDK::Legacy::v3::activePlayer = 0;
5
int32 RSDK::Legacy::v3::activePlayerCount = 1;
6
7
uint16 RSDK::Legacy::v3::upBuffer = 0;
8
uint16 RSDK::Legacy::v3::downBuffer = 0;
9
uint16 RSDK::Legacy::v3::leftBuffer = 0;
10
uint16 RSDK::Legacy::v3::rightBuffer = 0;
11
uint16 RSDK::Legacy::v3::jumpPressBuffer = 0;
12
uint16 RSDK::Legacy::v3::jumpHoldBuffer = 0;
13
14
uint8 RSDK::Legacy::v3::nextLeaderPosID = 1;
15
uint8 RSDK::Legacy::v3::lastLeaderPosID = 0;
16
17
int16 RSDK::Legacy::v3::leaderPositionBufferX[16];
18
int16 RSDK::Legacy::v3::leaderPositionBufferY[16];
19
20
void RSDK::Legacy::v3::ProcessPlayerControl(Player *player)
21
{
22
switch (player->controlMode) {
23
default:
24
case CONTROLMODE_NORMAL:
25
player->up = stickL[CONT_P1].keyUp.down || controller[CONT_P1].keyUp.down;
26
player->down = stickL[CONT_P1].keyDown.down || controller[CONT_P1].keyDown.down;
27
player->left = stickL[CONT_P1].keyLeft.down || controller[CONT_P1].keyLeft.down;
28
player->right = stickL[CONT_P1].keyRight.down || controller[CONT_P1].keyRight.down;
29
30
if (player->left && player->right) {
31
player->left = false;
32
player->right = false;
33
}
34
35
player->jumpHold = controller[CONT_P1].keyA.down || controller[CONT_P1].keyB.down || controller[CONT_P1].keyC.down;
36
player->jumpPress = controller[CONT_P1].keyA.press || controller[CONT_P1].keyB.press || controller[CONT_P1].keyC.press;
37
38
upBuffer <<= 1;
39
upBuffer |= (uint8)player->up;
40
41
downBuffer <<= 1;
42
downBuffer |= (uint8)player->down;
43
44
leftBuffer <<= 1;
45
leftBuffer |= (uint8)player->left;
46
47
rightBuffer <<= 1;
48
rightBuffer |= (uint8)player->right;
49
50
jumpPressBuffer <<= 1;
51
jumpPressBuffer |= (uint8)player->jumpPress;
52
53
jumpHoldBuffer <<= 1;
54
jumpHoldBuffer |= (uint8)player->jumpHold;
55
56
if (activePlayerCount >= 2 && !player->followPlayer1) {
57
upBuffer <<= 1;
58
upBuffer |= (uint8)player->up;
59
60
downBuffer <<= 1;
61
downBuffer |= (uint8)player->down;
62
63
leftBuffer <<= 1;
64
leftBuffer |= (uint8)player->left;
65
66
rightBuffer <<= 1;
67
rightBuffer |= (uint8)player->right;
68
69
jumpPressBuffer <<= 1;
70
jumpPressBuffer |= (uint8)player->jumpPress;
71
72
jumpHoldBuffer <<= 1;
73
jumpHoldBuffer |= (uint8)player->jumpHold;
74
75
leaderPositionBufferX[nextLeaderPosID] = player->XPos >> 16;
76
leaderPositionBufferY[nextLeaderPosID] = player->YPos >> 16;
77
nextLeaderPosID = (nextLeaderPosID + 1) & 0xF;
78
lastLeaderPosID = (nextLeaderPosID + 1) & 0xF;
79
}
80
break;
81
82
case CONTROLMODE_NONE:
83
if (activePlayerCount >= 2 && !player->followPlayer1) {
84
upBuffer <<= 1;
85
upBuffer |= (uint8)player->up;
86
87
downBuffer <<= 1;
88
downBuffer |= (uint8)player->down;
89
90
leftBuffer <<= 1;
91
leftBuffer |= (uint8)player->left;
92
93
rightBuffer <<= 1;
94
rightBuffer |= (uint8)player->right;
95
96
jumpPressBuffer <<= 1;
97
jumpPressBuffer |= (uint8)player->jumpPress;
98
99
jumpHoldBuffer <<= 1;
100
jumpHoldBuffer |= (uint8)player->jumpHold;
101
102
leaderPositionBufferX[nextLeaderPosID] = player->XPos >> 16;
103
leaderPositionBufferY[nextLeaderPosID] = player->YPos >> 16;
104
nextLeaderPosID = (nextLeaderPosID + 1) & 0xF;
105
lastLeaderPosID = (nextLeaderPosID + 1) & 0xF;
106
}
107
break;
108
109
case CONTROLMODE_SIDEKICK:
110
player->up = upBuffer >> 15;
111
player->down = downBuffer >> 15;
112
player->left = leftBuffer >> 15;
113
player->right = rightBuffer >> 15;
114
player->jumpPress = jumpPressBuffer >> 15;
115
player->jumpHold = jumpHoldBuffer >> 15;
116
117
player->boundEntity->XPos = leaderPositionBufferX[lastLeaderPosID] << 16;
118
player->boundEntity->YPos = leaderPositionBufferY[lastLeaderPosID] << 16;
119
break;
120
}
121
}
122