mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 18:51:16 +00:00
Match RegistrationBook::HandleKeyPress
This commit is contained in:
parent
20aaf8f665
commit
0e004aa162
@ -52,7 +52,7 @@ class RegistrationBook : public LegoWorld {
|
|||||||
MxStillPresenter* m_name[10][7]; // 0x168
|
MxStillPresenter* m_name[10][7]; // 0x168
|
||||||
struct {
|
struct {
|
||||||
MxS16 m_letters[7]; // 0x00
|
MxS16 m_letters[7]; // 0x00
|
||||||
undefined2 m_unk0x0e; // 0x0e
|
MxS16 m_cursorPos; // 0x0e
|
||||||
} m_unk0x280; // 0x280
|
} m_unk0x280; // 0x280
|
||||||
MxControlPresenter* m_checkmark[10]; // 0x290
|
MxControlPresenter* m_checkmark[10]; // 0x290
|
||||||
undefined2 m_unk0x2b8; // 0x2b8
|
undefined2 m_unk0x2b8; // 0x2b8
|
||||||
@ -65,7 +65,7 @@ class RegistrationBook : public LegoWorld {
|
|||||||
LPDIRECTDRAWSURFACE m_checkboxNormal; // 0x2cc
|
LPDIRECTDRAWSURFACE m_checkboxNormal; // 0x2cc
|
||||||
|
|
||||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||||
MxLong HandleKeyPress(MxS8 p_key);
|
MxLong HandleKeyPress(MxU8 p_key);
|
||||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||||
MxLong HandleNotification19(MxParam& p_param);
|
MxLong HandleNotification19(MxParam& p_param);
|
||||||
void FUN_100775c0(MxS16 p_playerIndex);
|
void FUN_100775c0(MxS16 p_playerIndex);
|
||||||
|
|||||||
@ -25,14 +25,14 @@ const char* g_infoman = "infoman";
|
|||||||
MxLong g_checkboxBlinkTimer = 0;
|
MxLong g_checkboxBlinkTimer = 0;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f7968
|
// GLOBAL: LEGO1 0x100f7968
|
||||||
MxBool g_nextCheckbox = 0;
|
MxBool g_nextCheckbox = FALSE;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076d20
|
// FUNCTION: LEGO1 0x10076d20
|
||||||
RegistrationBook::RegistrationBook() : m_registerDialogueTimer(0x80000000), m_unk0xfc(1)
|
RegistrationBook::RegistrationBook() : m_registerDialogueTimer(0x80000000), m_unk0xfc(1)
|
||||||
{
|
{
|
||||||
memset(m_alphabet, 0, sizeof(m_alphabet));
|
memset(m_alphabet, 0, sizeof(m_alphabet));
|
||||||
memset(m_name, 0, sizeof(m_name));
|
memset(m_name, 0, sizeof(m_name));
|
||||||
m_unk0x280.m_unk0x0e = 0;
|
m_unk0x280.m_cursorPos = 0;
|
||||||
|
|
||||||
memset(m_checkmark, 0, sizeof(m_checkmark));
|
memset(m_checkmark, 0, sizeof(m_checkmark));
|
||||||
memset(&m_unk0x280, -1, sizeof(m_unk0x280) - 2);
|
memset(&m_unk0x280, -1, sizeof(m_unk0x280) - 2);
|
||||||
@ -43,9 +43,9 @@ RegistrationBook::RegistrationBook() : m_registerDialogueTimer(0x80000000), m_un
|
|||||||
NotificationManager()->Register(this);
|
NotificationManager()->Register(this);
|
||||||
|
|
||||||
m_unk0x2c1 = 0;
|
m_unk0x2c1 = 0;
|
||||||
m_checkboxHilite = 0;
|
m_checkboxHilite = NULL;
|
||||||
m_checkboxSurface = NULL;
|
m_checkboxSurface = NULL;
|
||||||
m_checkboxNormal = 0;
|
m_checkboxNormal = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076f50
|
// FUNCTION: LEGO1 0x10076f50
|
||||||
@ -154,62 +154,56 @@ MxLong RegistrationBook::HandleEndAction(MxEndActionNotificationParam& p_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100772d0
|
// FUNCTION: LEGO1 0x100772d0
|
||||||
MxLong RegistrationBook::HandleKeyPress(MxS8 p_key)
|
MxLong RegistrationBook::HandleKeyPress(MxU8 p_key)
|
||||||
{
|
{
|
||||||
MxS8 key;
|
MxS16 key;
|
||||||
if (p_key < 'a' || 'z' < p_key) {
|
if (p_key >= 'a' && p_key <= 'z') {
|
||||||
key = p_key;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
key = p_key - ' ';
|
key = p_key - ' ';
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
key = p_key;
|
||||||
|
}
|
||||||
|
|
||||||
switch (key) {
|
if ((key < 'A' || key > 'Z') && key != '\b') {
|
||||||
case ' ':
|
if (key == ' ') {
|
||||||
if (key < 'A' || key > 'Z') {
|
|
||||||
DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav);
|
||||||
BackgroundAudioManager()->RaiseVolume();
|
BackgroundAudioManager()->RaiseVolume();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
case 8:
|
}
|
||||||
if (0 < m_unk0x280.m_unk0x0e) {
|
else if (key != '\b' && m_unk0x280.m_cursorPos < 7) {
|
||||||
m_unk0x280.m_unk0x0e--;
|
m_name[0][m_unk0x280.m_cursorPos] = m_alphabet[key - 'A']->Clone();
|
||||||
|
|
||||||
m_name[0][m_unk0x280.m_unk0x0e]->Enable(FALSE);
|
if (m_name[0][m_unk0x280.m_cursorPos] != NULL) {
|
||||||
|
m_alphabet[key - 'A']->GetAction()->SetUnknown24(m_alphabet[key - 'A']->GetAction()->GetUnknown24() + 1);
|
||||||
|
m_name[0][m_unk0x280.m_cursorPos]->Enable(TRUE);
|
||||||
|
m_name[0][m_unk0x280.m_cursorPos]->SetTickleState(MxPresenter::e_repeating);
|
||||||
|
m_name[0][m_unk0x280.m_cursorPos]->SetPosition(m_unk0x280.m_cursorPos * 23 + 343, 121);
|
||||||
|
|
||||||
delete m_name[0][m_unk0x280.m_unk0x0e];
|
if (m_unk0x280.m_cursorPos == 0) {
|
||||||
m_name[0][m_unk0x280.m_unk0x0e] = NULL;
|
|
||||||
|
|
||||||
if (m_unk0x280.m_unk0x0e == 0) {
|
|
||||||
m_checkmark[0]->Enable(FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_unk0x280.m_letters[m_unk0x280.m_unk0x0e] = -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (m_unk0x280.m_unk0x0e < 7) {
|
|
||||||
MxStillPresenter* presenter = m_alphabet[key - 65];
|
|
||||||
m_name[0][m_unk0x280.m_unk0x0e] = presenter->Clone();
|
|
||||||
|
|
||||||
if (m_name[0][m_unk0x280.m_unk0x0e] == NULL) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
presenter->GetAction()->SetUnknown24(presenter->GetAction()->GetUnknown24() + 1);
|
|
||||||
m_name[0][m_unk0x280.m_unk0x0e]->Enable(TRUE);
|
|
||||||
m_name[0][m_unk0x280.m_unk0x0e]->SetTickleState(MxPresenter::e_repeating);
|
|
||||||
m_name[0][m_unk0x280.m_unk0x0e]->SetPosition(m_unk0x280.m_unk0x0e * 23 + 343, 121);
|
|
||||||
|
|
||||||
if (m_unk0x280.m_unk0x0e == 0) {
|
|
||||||
m_checkmark[0]->Enable(TRUE);
|
m_checkmark[0]->Enable(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_unk0x280.m_letters[m_unk0x280.m_unk0x0e] = key - 'A';
|
m_unk0x280.m_letters[m_unk0x280.m_cursorPos] = key - 'A';
|
||||||
m_unk0x280.m_unk0x0e++;
|
m_unk0x280.m_cursorPos++;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (key == '\b' && m_unk0x280.m_cursorPos > 0) {
|
||||||
|
m_unk0x280.m_cursorPos--;
|
||||||
|
|
||||||
|
m_name[0][m_unk0x280.m_cursorPos]->Enable(FALSE);
|
||||||
|
|
||||||
|
delete m_name[0][m_unk0x280.m_cursorPos];
|
||||||
|
m_name[0][m_unk0x280.m_cursorPos] = NULL;
|
||||||
|
|
||||||
|
if (m_unk0x280.m_cursorPos == 0) {
|
||||||
|
m_checkmark[0]->Enable(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_unk0x280.m_letters[m_unk0x280.m_cursorPos] = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user