const char **touchgui_button_imagenames = (const char *[]) {
"jump_btn.png",
"down.png",
- "zoom.png"
+ "zoom.png",
+ "aux_btn.png"
};
const char **touchgui_joystick_imagenames = (const char *[]) {
case zoom_id:
key = "zoom";
break;
+ case special1_id:
+ key = "special1";
+ break;
case fly_id:
key = "freemove";
break;
m_touchscreen_threshold = g_settings->getU16("touchscreen_threshold");
m_fixed_joystick = g_settings->getBool("fixed_virtual_joystick");
+ m_joystick_triggers_special1 = g_settings->getBool("virtual_joystick_triggers_aux");
m_screensize = m_device->getVideoDriver()->getScreenSize();
}
// init zoom button
initButton(zoom_id,
rect<s32>(m_screensize.X - (1.25 * button_size),
- m_screensize.Y - (3 * button_size),
+ m_screensize.Y - (4 * button_size),
m_screensize.X - (0.25 * button_size),
- m_screensize.Y - (2 * button_size)),
+ m_screensize.Y - (3 * button_size)),
L"z", false);
+ // init special1/aux button
+ if (!m_joystick_triggers_special1)
+ initButton(special1_id,
+ rect<s32>(m_screensize.X - (1.25 * button_size),
+ m_screensize.Y - (2.5 * button_size),
+ m_screensize.X - (0.25 * button_size),
+ m_screensize.Y - (1.5 * button_size)),
+ L"spc1", false);
+
m_settingsbar.init(m_texturesource, "gear_icon.png", settings_starter_id,
- v2s32(m_screensize.X - (button_size / 2),
- m_screensize.Y - ((SETTINGS_BAR_Y_OFFSET + 1) * button_size)
- + (button_size * 0.5)),
- v2s32(m_screensize.X,
- m_screensize.Y - (SETTINGS_BAR_Y_OFFSET * button_size)
- + (button_size * 0.5)), AHBB_Dir_Right_Left,
- 3.0);
+ v2s32(m_screensize.X - (1.25 * button_size),
+ m_screensize.Y - ((SETTINGS_BAR_Y_OFFSET + 1.0) * button_size)
+ + (0.5 * button_size)),
+ v2s32(m_screensize.X - (0.25 * button_size),
+ m_screensize.Y - (SETTINGS_BAR_Y_OFFSET * button_size)
+ + (0.5 * button_size)),
+ AHBB_Dir_Right_Left, 3.0);
m_settingsbar.addButton(fly_id, L"fly", "fly_btn.png");
m_settingsbar.addButton(noclip_id, L"noclip", "noclip_btn.png");
"chat_hide_btn.png", "chat_show_btn.png");
m_rarecontrolsbar.init(m_texturesource, "rare_controls.png",
- rare_controls_starter_id,
- v2s32(0,
- m_screensize.Y
- - ((RARE_CONTROLS_BAR_Y_OFFSET + 1) * button_size)
- + (button_size * 0.5)),
- v2s32(button_size / 2,
- m_screensize.Y - (RARE_CONTROLS_BAR_Y_OFFSET * button_size)
- + (button_size * 0.5)), AHBB_Dir_Left_Right,
- 2);
+ rare_controls_starter_id,
+ v2s32(0.25 * button_size,
+ m_screensize.Y - ((RARE_CONTROLS_BAR_Y_OFFSET + 1.0) * button_size)
+ + (0.5 * button_size)),
+ v2s32(0.75 * button_size,
+ m_screensize.Y - (RARE_CONTROLS_BAR_Y_OFFSET * button_size)
+ + (0.5 * button_size)),
+ AHBB_Dir_Left_Right, 2.0);
m_rarecontrolsbar.addButton(chat_id, L"Chat", "chat_btn.png");
m_rarecontrolsbar.addButton(inventory_id, L"inv", "inventory_btn.png");
angle = fmod(angle + 180 + 22.5, 360);
// reset state before applying
- for (unsigned int i = 0; i < 4; i ++)
+ for (unsigned int i = 0; i < 5; i ++)
m_joystick_status[i] = false;
if (distance <= m_touchscreen_threshold) {
m_joystick_status[j_left] = true;
}
- // move joystick "button"
if (distance > button_size) {
+ m_joystick_status[j_special1] = true;
+ // move joystick "button"
s32 ndx = (s32) button_size * dx / distance - (s32) button_size / 2;
s32 ndy = (s32) button_size * dy / distance - (s32) button_size / 2;
if (m_fixed_joystick) {
void TouchScreenGUI::applyJoystickStatus()
{
- for (unsigned int i = 0; i < 4; i ++) {
+ for (unsigned int i = 0; i < 5; i ++) {
+ if (i == 4 && !m_joystick_triggers_special1)
+ continue;
+
SEvent translated{};
translated.EventType = irr::EET_KEY_INPUT_EVENT;
translated.KeyInput.Key = id2keycode(m_joystick_names[i]);