mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Added an option for hold and added everything to the settings
This commit is contained in:
@ -192,6 +192,8 @@ Enjoy your stay in the World of Veloren."#,
|
|||||||
|
|
||||||
"hud.settings.general": "General",
|
"hud.settings.general": "General",
|
||||||
"hud.settings.none": "None",
|
"hud.settings.none": "None",
|
||||||
|
"hud.settings.press_behavior.toggle": "Toggle",
|
||||||
|
"hud.settings.press_behavior.hold": "Hold",
|
||||||
"hud.settings.help_window": "Help Window",
|
"hud.settings.help_window": "Help Window",
|
||||||
"hud.settings.debug_info": "Debug Info",
|
"hud.settings.debug_info": "Debug Info",
|
||||||
"hud.settings.tips_on_startup": "Tips-On-Startup",
|
"hud.settings.tips_on_startup": "Tips-On-Startup",
|
||||||
@ -219,6 +221,7 @@ Enjoy your stay in the World of Veloren."#,
|
|||||||
"hud.settings.zoom_sensitivity": "Zoom Sensitivity",
|
"hud.settings.zoom_sensitivity": "Zoom Sensitivity",
|
||||||
"hud.settings.invert_scroll_zoom": "Invert Scroll Zoom",
|
"hud.settings.invert_scroll_zoom": "Invert Scroll Zoom",
|
||||||
"hud.settings.invert_mouse_y_axis": "Invert Mouse Y Axis",
|
"hud.settings.invert_mouse_y_axis": "Invert Mouse Y Axis",
|
||||||
|
"hud.settings.free_look_behavior": "Free look behavior",
|
||||||
|
|
||||||
"hud.settings.view_distance": "View Distance",
|
"hud.settings.view_distance": "View Distance",
|
||||||
"hud.settings.maximum_fps": "Maximum FPS",
|
"hud.settings.maximum_fps": "Maximum FPS",
|
||||||
@ -308,6 +311,9 @@ Send Chat Message
|
|||||||
Scroll Chat
|
Scroll Chat
|
||||||
|
|
||||||
|
|
||||||
|
Free look
|
||||||
|
|
||||||
|
|
||||||
Chat commands:
|
Chat commands:
|
||||||
|
|
||||||
/alias [Name] - Change your Chat Name
|
/alias [Name] - Change your Chat Name
|
||||||
|
@ -231,6 +231,7 @@ pub enum Event {
|
|||||||
Logout,
|
Logout,
|
||||||
Quit,
|
Quit,
|
||||||
ChangeLanguage(LanguageMetadata),
|
ChangeLanguage(LanguageMetadata),
|
||||||
|
ChangeFreeLookBehavior(PressBehavior),
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Are these the possible layouts we want?
|
// TODO: Are these the possible layouts we want?
|
||||||
@ -271,6 +272,11 @@ pub enum ShortcutNumbers {
|
|||||||
On,
|
On,
|
||||||
Off,
|
Off,
|
||||||
}
|
}
|
||||||
|
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
|
||||||
|
pub enum PressBehavior {
|
||||||
|
Toggle = 0,
|
||||||
|
Hold = 1,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Show {
|
pub struct Show {
|
||||||
ui: bool,
|
ui: bool,
|
||||||
@ -1825,6 +1831,9 @@ impl Hud {
|
|||||||
settings_window::Event::AdjustWindowSize(new_size) => {
|
settings_window::Event::AdjustWindowSize(new_size) => {
|
||||||
events.push(Event::AdjustWindowSize(new_size));
|
events.push(Event::AdjustWindowSize(new_size));
|
||||||
},
|
},
|
||||||
|
settings_window::Event::ChangeFreeLookBehavior(behavior) => {
|
||||||
|
events.push(Event::ChangeFreeLookBehavior(behavior));
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::{
|
use super::{
|
||||||
img_ids::Imgs, BarNumbers, CrosshairType, Intro, ShortcutNumbers, Show, XpBar, MENU_BG,
|
img_ids::Imgs, BarNumbers, CrosshairType, Intro, PressBehavior, ShortcutNumbers, Show, XpBar,
|
||||||
TEXT_COLOR,
|
MENU_BG, TEXT_COLOR,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
i18n::{list_localizations, LanguageMetadata, VoxygenLocalization},
|
i18n::{list_localizations, LanguageMetadata, VoxygenLocalization},
|
||||||
@ -141,7 +141,8 @@ widget_ids! {
|
|||||||
sct_num_dur_text,
|
sct_num_dur_text,
|
||||||
sct_num_dur_slider,
|
sct_num_dur_slider,
|
||||||
sct_num_dur_value,
|
sct_num_dur_value,
|
||||||
|
free_look_behavior_text,
|
||||||
|
free_look_behavior_list
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,6 +221,7 @@ pub enum Event {
|
|||||||
SctPlayerBatch(bool),
|
SctPlayerBatch(bool),
|
||||||
SctDamageBatch(bool),
|
SctDamageBatch(bool),
|
||||||
ChangeLanguage(LanguageMetadata),
|
ChangeLanguage(LanguageMetadata),
|
||||||
|
ChangeFreeLookBehavior(PressBehavior),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum ScaleChange {
|
pub enum ScaleChange {
|
||||||
@ -1254,6 +1256,45 @@ impl<'a> Widget for SettingsWindow<'a> {
|
|||||||
.graphics_for(state.ids.mouse_y_invert_button)
|
.graphics_for(state.ids.mouse_y_invert_button)
|
||||||
.color(TEXT_COLOR)
|
.color(TEXT_COLOR)
|
||||||
.set(state.ids.mouse_y_invert_label, ui);
|
.set(state.ids.mouse_y_invert_label, ui);
|
||||||
|
|
||||||
|
// Free look behaviour
|
||||||
|
Text::new(
|
||||||
|
&self
|
||||||
|
.localized_strings
|
||||||
|
.get("hud.settings.free_look_behavior"),
|
||||||
|
)
|
||||||
|
.down_from(state.ids.mouse_zoom_invert_button, 10.0)
|
||||||
|
.font_size(self.fonts.cyri.scale(14))
|
||||||
|
.font_id(self.fonts.cyri.conrod_id)
|
||||||
|
.color(TEXT_COLOR)
|
||||||
|
.set(state.ids.free_look_behavior_text, ui);
|
||||||
|
|
||||||
|
let mode_label_list = [
|
||||||
|
&self
|
||||||
|
.localized_strings
|
||||||
|
.get("hud.settings.press_behavior.toggle"),
|
||||||
|
&self
|
||||||
|
.localized_strings
|
||||||
|
.get("hud.settings.press_behavior.hold"),
|
||||||
|
];
|
||||||
|
|
||||||
|
// Get which free look behavior is currently active
|
||||||
|
let selected = self.global_state.settings.gameplay.free_look_behavior as usize;
|
||||||
|
|
||||||
|
if let Some(clicked) = DropDownList::new(&mode_label_list, Some(selected))
|
||||||
|
.w_h(200.0, 30.0)
|
||||||
|
.color(MENU_BG)
|
||||||
|
.label_color(TEXT_COLOR)
|
||||||
|
.label_font_id(self.fonts.cyri.conrod_id)
|
||||||
|
.down_from(state.ids.free_look_behavior_text, 8.0)
|
||||||
|
.set(state.ids.free_look_behavior_list, ui)
|
||||||
|
{
|
||||||
|
match clicked {
|
||||||
|
0 => events.push(Event::ChangeFreeLookBehavior(PressBehavior::Toggle)),
|
||||||
|
1 => events.push(Event::ChangeFreeLookBehavior(PressBehavior::Hold)),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3) Controls Tab --------------------------------
|
// 3) Controls Tab --------------------------------
|
||||||
@ -1367,6 +1408,9 @@ impl<'a> Widget for SettingsWindow<'a> {
|
|||||||
{}\n\
|
{}\n\
|
||||||
\n\
|
\n\
|
||||||
\n\
|
\n\
|
||||||
|
{}\n\
|
||||||
|
\n\
|
||||||
|
\n\
|
||||||
\n\
|
\n\
|
||||||
\n\
|
\n\
|
||||||
\n\
|
\n\
|
||||||
@ -1417,6 +1461,7 @@ impl<'a> Widget for SettingsWindow<'a> {
|
|||||||
controls.bag,
|
controls.bag,
|
||||||
controls.enter,
|
controls.enter,
|
||||||
"Mouse Wheel", // Scroll chat
|
"Mouse Wheel", // Scroll chat
|
||||||
|
controls.free_look
|
||||||
))
|
))
|
||||||
.color(TEXT_COLOR)
|
.color(TEXT_COLOR)
|
||||||
.right_from(state.ids.controls_text, 0.0)
|
.right_from(state.ids.controls_text, 0.0)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
ecs::MyEntity,
|
ecs::MyEntity,
|
||||||
hud::{DebugInfo, Event as HudEvent, Hud},
|
hud::{DebugInfo, Event as HudEvent, Hud, PressBehavior},
|
||||||
i18n::{i18n_asset_key, VoxygenLocalization},
|
i18n::{i18n_asset_key, VoxygenLocalization},
|
||||||
key_state::KeyState,
|
key_state::KeyState,
|
||||||
menu::char_selection::CharSelectionState,
|
menu::char_selection::CharSelectionState,
|
||||||
@ -402,10 +402,19 @@ impl PlayState for SessionState {
|
|||||||
Event::InputUpdate(GameInput::Charge, state) => {
|
Event::InputUpdate(GameInput::Charge, state) => {
|
||||||
self.inputs.charge.set_state(state);
|
self.inputs.charge.set_state(state);
|
||||||
},
|
},
|
||||||
Event::InputUpdate(GameInput::FreeLook, true) => {
|
Event::InputUpdate(GameInput::FreeLook, state) => {
|
||||||
|
match (global_state.settings.gameplay.free_look_behavior, state) {
|
||||||
|
(PressBehavior::Toggle, true) => {
|
||||||
free_look = !free_look;
|
free_look = !free_look;
|
||||||
self.hud.free_look(free_look);
|
self.hud.free_look(free_look);
|
||||||
},
|
},
|
||||||
|
(PressBehavior::Hold, state) => {
|
||||||
|
free_look = state;
|
||||||
|
self.hud.free_look(free_look);
|
||||||
|
},
|
||||||
|
_ => {},
|
||||||
|
};
|
||||||
|
},
|
||||||
Event::AnalogGameInput(input) => match input {
|
Event::AnalogGameInput(input) => match input {
|
||||||
AnalogGameInput::MovementX(v) => {
|
AnalogGameInput::MovementX(v) => {
|
||||||
self.key_state.analog_matrix.x = v;
|
self.key_state.analog_matrix.x = v;
|
||||||
@ -681,6 +690,9 @@ impl PlayState for SessionState {
|
|||||||
global_state.settings.graphics.window_size = new_size;
|
global_state.settings.graphics.window_size = new_size;
|
||||||
global_state.settings.save_to_file_warn();
|
global_state.settings.save_to_file_warn();
|
||||||
},
|
},
|
||||||
|
HudEvent::ChangeFreeLookBehavior(behavior) => {
|
||||||
|
global_state.settings.gameplay.free_look_behavior = behavior;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
hud::{BarNumbers, CrosshairType, Intro, ShortcutNumbers, XpBar},
|
hud::{BarNumbers, CrosshairType, Intro, PressBehavior, ShortcutNumbers, XpBar},
|
||||||
i18n,
|
i18n,
|
||||||
render::{AaMode, CloudMode, FluidMode},
|
render::{AaMode, CloudMode, FluidMode},
|
||||||
ui::ScaleMode,
|
ui::ScaleMode,
|
||||||
@ -69,7 +69,7 @@ impl Default for ControlSettings {
|
|||||||
Self {
|
Self {
|
||||||
primary: KeyMouse::Mouse(MouseButton::Left),
|
primary: KeyMouse::Mouse(MouseButton::Left),
|
||||||
secondary: KeyMouse::Mouse(MouseButton::Right),
|
secondary: KeyMouse::Mouse(MouseButton::Right),
|
||||||
toggle_cursor: KeyMouse::Key(VirtualKeyCode::Tab),
|
toggle_cursor: KeyMouse::Key(VirtualKeyCode::L),
|
||||||
escape: KeyMouse::Key(VirtualKeyCode::Escape),
|
escape: KeyMouse::Key(VirtualKeyCode::Escape),
|
||||||
enter: KeyMouse::Key(VirtualKeyCode::Return),
|
enter: KeyMouse::Key(VirtualKeyCode::Return),
|
||||||
command: KeyMouse::Key(VirtualKeyCode::Slash),
|
command: KeyMouse::Key(VirtualKeyCode::Slash),
|
||||||
@ -346,6 +346,7 @@ pub struct GameplaySettings {
|
|||||||
pub shortcut_numbers: ShortcutNumbers,
|
pub shortcut_numbers: ShortcutNumbers,
|
||||||
pub bar_numbers: BarNumbers,
|
pub bar_numbers: BarNumbers,
|
||||||
pub ui_scale: ScaleMode,
|
pub ui_scale: ScaleMode,
|
||||||
|
pub free_look_behavior: PressBehavior,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for GameplaySettings {
|
impl Default for GameplaySettings {
|
||||||
@ -367,6 +368,7 @@ impl Default for GameplaySettings {
|
|||||||
shortcut_numbers: ShortcutNumbers::On,
|
shortcut_numbers: ShortcutNumbers::On,
|
||||||
bar_numbers: BarNumbers::Off,
|
bar_numbers: BarNumbers::Off,
|
||||||
ui_scale: ScaleMode::RelativeToWindow([1920.0, 1080.0].into()),
|
ui_scale: ScaleMode::RelativeToWindow([1920.0, 1080.0].into()),
|
||||||
|
free_look_behavior: PressBehavior::Toggle,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user