commit
a5ff72e635
|
@ -66,6 +66,7 @@ CInput::CInput()
|
|||
{ INPUT_SLOT_CAMERA_UP, "camup" },
|
||||
{ INPUT_SLOT_CAMERA_DOWN, "camdown" },
|
||||
{ INPUT_SLOT_PAUSE, "pause" },
|
||||
{ INPUT_SLOT_CMDLINE, "cmdline" },
|
||||
};
|
||||
|
||||
m_kmodState = 0;
|
||||
|
@ -275,6 +276,7 @@ void CInput::SetDefaultInputBindings()
|
|||
m_inputBindings[INPUT_SLOT_CAMERA_DOWN].primary = KEY(PAGEDOWN);
|
||||
m_inputBindings[INPUT_SLOT_PAUSE].primary = KEY(PAUSE);
|
||||
m_inputBindings[INPUT_SLOT_PAUSE].secondary = KEY(p);
|
||||
m_inputBindings[INPUT_SLOT_CMDLINE].primary = KEY(BACKQUOTE);
|
||||
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_X].axis = 0;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_Y].axis = 1;
|
||||
|
|
|
@ -182,6 +182,7 @@ void InitializeEventTypeTexts()
|
|||
EVENT_TYPE_TEXT[EVENT_INTERFACE_READ] = "EVENT_INTERFACE_READ";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_ABORT] = "EVENT_INTERFACE_ABORT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_USER] = "EVENT_INTERFACE_USER";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_SATCOM] = "EVENT_INTERFACE_SATCOM";
|
||||
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_CHAP] = "EVENT_INTERFACE_CHAP";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_LIST] = "EVENT_INTERFACE_LIST";
|
||||
|
|
|
@ -210,6 +210,7 @@ enum EventType
|
|||
EVENT_INTERFACE_READ = 411,
|
||||
EVENT_INTERFACE_ABORT = 412,
|
||||
EVENT_INTERFACE_USER = 413,
|
||||
EVENT_INTERFACE_SATCOM = 414,
|
||||
|
||||
EVENT_INTERFACE_CHAP = 420,
|
||||
EVENT_INTERFACE_LIST = 421,
|
||||
|
|
|
@ -105,6 +105,7 @@ enum InputSlot
|
|||
INPUT_SLOT_CAMERA_UP,
|
||||
INPUT_SLOT_CAMERA_DOWN,
|
||||
INPUT_SLOT_PAUSE,
|
||||
INPUT_SLOT_CMDLINE,
|
||||
|
||||
INPUT_SLOT_MAX
|
||||
};
|
||||
|
|
|
@ -161,6 +161,7 @@ void InitializeRestext()
|
|||
stringsEvent[EVENT_INTERFACE_FREE] = TR("Free game\\Free game without a specific goal");
|
||||
stringsEvent[EVENT_INTERFACE_CODE_BATTLES] = TR("Code battles\\Program your robot to be the best of them all!");
|
||||
stringsEvent[EVENT_INTERFACE_USER] = TR("Custom levels\\Levels from mods created by the users");
|
||||
stringsEvent[EVENT_INTERFACE_SATCOM] = TR("SatCom");
|
||||
stringsEvent[EVENT_INTERFACE_NAME] = TR("Change player\\Change player");
|
||||
stringsEvent[EVENT_INTERFACE_SETUP] = TR("Options\\Preferences");
|
||||
stringsEvent[EVENT_INTERFACE_AGAIN] = TR("Restart\\Restart the mission from the beginning");
|
||||
|
@ -238,6 +239,7 @@ void InitializeRestext()
|
|||
stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAMERA_UP] = TR("Camera up\\Increase camera angle while visiting message origin");
|
||||
stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CAMERA_DOWN] = TR("Camera down\\Decrease camera angle while visiting message origin");
|
||||
stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_PAUSE] = TR("Pause\\Pause the game without opening menu");
|
||||
stringsEvent[EVENT_INTERFACE_KEY+INPUT_SLOT_CMDLINE] = TR("Cheat console\\Show cheat console");
|
||||
|
||||
stringsEvent[EVENT_INTERFACE_VOLSOUND] = TR("Sound effects:\\Volume of engines, voice, shooting, etc.");
|
||||
stringsEvent[EVENT_INTERFACE_VOLMUSIC] = TR("Background sound :\\Volume of audio tracks");
|
||||
|
|
|
@ -351,6 +351,7 @@ std::string PhaseToString(Phase phase)
|
|||
if (phase == PHASE_WIN) return "PHASE_WIN";
|
||||
if (phase == PHASE_LOST) return "PHASE_LOST";
|
||||
if (phase == PHASE_QUIT_SCREEN) return "PHASE_QUIT_SCREEN";
|
||||
if (phase == PHASE_SATCOM) return "PHASE_SATCOM";
|
||||
return "(unknown)";
|
||||
}
|
||||
|
||||
|
@ -516,6 +517,12 @@ void CRobotMain::ChangePhase(Phase phase)
|
|||
}
|
||||
|
||||
m_ui->ChangePhase(m_phase);
|
||||
if (m_phase == PHASE_SATCOM)
|
||||
{
|
||||
m_interface->DeleteControl(EVENT_WINDOW5);
|
||||
StartDisplayInfo(InjectLevelPathsForCurrentLevel("cbot.txt", "help/%lng%"), 0);
|
||||
}
|
||||
|
||||
if (!resetWorld) return;
|
||||
|
||||
dim.x = 32.0f/640.0f;
|
||||
|
@ -708,21 +715,25 @@ bool CRobotMain::ProcessEvent(Event &event)
|
|||
}
|
||||
|
||||
// Management of the console.
|
||||
if (event.type == EVENT_TEXT_INPUT &&
|
||||
event.GetData<TextInputData>()->text[0] == KEY(BACKQUOTE)) // Pause ?
|
||||
if (event.type == EVENT_KEY_DOWN)
|
||||
{
|
||||
if (m_phase != PHASE_PLAYER_SELECT &&
|
||||
!m_movie->IsExist() &&
|
||||
!m_movieLock && !m_editLock && !m_cmdEdit)
|
||||
auto data = event.GetData<KeyEventData>();
|
||||
|
||||
if (data->slot == INPUT_SLOT_CMDLINE)
|
||||
{
|
||||
Ui::CEdit* pe = static_cast<Ui::CEdit*>(m_interface->SearchControl(EVENT_CMD));
|
||||
if (pe == nullptr) return false;
|
||||
pe->SetState(Ui::STATE_VISIBLE);
|
||||
m_interface->SetFocus(pe);
|
||||
if (m_phase == PHASE_SIMUL) m_cmdEditPause = m_pause->ActivatePause(PAUSE_ENGINE);
|
||||
m_cmdEdit = true;
|
||||
if (m_phase != PHASE_PLAYER_SELECT &&
|
||||
!m_movie->IsExist() &&
|
||||
!m_movieLock && !m_editLock && !m_cmdEdit)
|
||||
{
|
||||
Ui::CEdit* pe = static_cast<Ui::CEdit*>(m_interface->SearchControl(EVENT_CMD));
|
||||
if (pe == nullptr) return false;
|
||||
pe->SetState(Ui::STATE_VISIBLE);
|
||||
m_interface->SetFocus(pe);
|
||||
if (m_phase == PHASE_SIMUL) m_cmdEditPause = m_pause->ActivatePause(PAUSE_ENGINE);
|
||||
m_cmdEdit = true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (event.type == EVENT_KEY_DOWN &&
|
||||
|
@ -734,6 +745,7 @@ bool CRobotMain::ProcessEvent(Event &event)
|
|||
pe->GetText(cmd, 50);
|
||||
pe->SetText("");
|
||||
pe->ClearState(Ui::STATE_VISIBLE);
|
||||
m_interface->SetFocus(nullptr);
|
||||
if (m_phase == PHASE_SIMUL)
|
||||
{
|
||||
m_pause->DeactivatePause(m_cmdEditPause);
|
||||
|
@ -778,6 +790,9 @@ bool CRobotMain::ProcessEvent(Event &event)
|
|||
if (event.type == EVENT_OBJECT_INFOOK)
|
||||
StopDisplayInfo();
|
||||
|
||||
if (m_displayInfo == nullptr && m_phase == PHASE_SATCOM)
|
||||
ChangePhase(PHASE_MAIN_MENU);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ enum Phase
|
|||
PHASE_WIN,
|
||||
PHASE_LOST,
|
||||
PHASE_QUIT_SCREEN,
|
||||
PHASE_SATCOM,
|
||||
};
|
||||
std::string PhaseToString(Phase phase);
|
||||
bool IsInSimulationConfigPhase(Phase phase);
|
||||
|
|
|
@ -484,10 +484,12 @@ bool CEdit::EventProcess(const Event &event)
|
|||
if ( event.customParam == m_eventType )
|
||||
{
|
||||
m_bFocus = true;
|
||||
UpdateFocus();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bFocus = false;
|
||||
UpdateFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -504,10 +506,12 @@ bool CEdit::EventProcess(const Event &event)
|
|||
if ( m_bEdit || m_bHilite ) m_bCapture = true;
|
||||
}
|
||||
m_bFocus = true;
|
||||
UpdateFocus();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bFocus = false;
|
||||
UpdateFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3229,9 +3233,13 @@ void CEdit::SetFocus(CControl* control)
|
|||
|
||||
if (oldFocus != m_bFocus)
|
||||
{
|
||||
// Start/stop text input mode, this toggles the on-screen keyboard
|
||||
CApplication::GetInstancePointer()->SetTextInput(m_bFocus);
|
||||
UpdateFocus();
|
||||
}
|
||||
}
|
||||
|
||||
void CEdit::UpdateFocus()
|
||||
{
|
||||
CApplication::GetInstancePointer()->SetTextInput(m_bFocus);
|
||||
}
|
||||
|
||||
}
|
|
@ -228,6 +228,7 @@ protected:
|
|||
void UpdateScroll();
|
||||
|
||||
void SetFocus(CControl* control) override;
|
||||
void UpdateFocus(); // Start/stop text input mode, this toggles the on-screen keyboard
|
||||
|
||||
protected:
|
||||
std::unique_ptr<CScroll> m_scroll; // vertical scrollbar on the right
|
||||
|
|
|
@ -162,6 +162,12 @@ void CScreenMainMenu::CreateInterface()
|
|||
pl->SetFontType(Gfx::FONT_COURIER);
|
||||
pl->SetFontSize(Gfx::FONT_SIZE_SMALL);
|
||||
|
||||
// SatCom button
|
||||
pos.x = ox+sx*4.4f;
|
||||
pos.y = oy+sy*4.4f;
|
||||
pb = pw->CreateButton(pos, dim, 128+60, EVENT_INTERFACE_SATCOM);
|
||||
pb->SetState(STATE_SHADOW);
|
||||
|
||||
SetBackground("textures/interface/interface.png");
|
||||
CreateVersionDisplay();
|
||||
}
|
||||
|
@ -223,6 +229,10 @@ bool CScreenMainMenu::EventProcess(const Event &event)
|
|||
m_main->ChangePhase(PHASE_PLAYER_SELECT);
|
||||
break;
|
||||
|
||||
case EVENT_INTERFACE_SATCOM:
|
||||
m_main->ChangePhase(PHASE_SATCOM);
|
||||
break;
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue