mirror of
https://github.com/doukutsu-rs/doukutsu-rs
synced 2025-04-01 23:34:54 +00:00
light cone toggle
This commit is contained in:
parent
cd959f8f7c
commit
3f9ad235ce
|
@ -35,6 +35,7 @@ impl SettingsMenu {
|
||||||
|
|
||||||
pub fn init(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
|
pub fn init(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
|
||||||
self.graphics.push_entry(MenuEntry::Toggle("Lighting effects:".to_string(), state.settings.shader_effects));
|
self.graphics.push_entry(MenuEntry::Toggle("Lighting effects:".to_string(), state.settings.shader_effects));
|
||||||
|
self.graphics.push_entry(MenuEntry::Toggle("Player's weapon light cone:".to_string(), state.settings.light_cone));
|
||||||
self.graphics
|
self.graphics
|
||||||
.push_entry(MenuEntry::Toggle("Motion interpolation:".to_string(), state.settings.motion_interpolation));
|
.push_entry(MenuEntry::Toggle("Motion interpolation:".to_string(), state.settings.motion_interpolation));
|
||||||
self.graphics.push_entry(MenuEntry::Toggle("Subpixel scrolling:".to_string(), state.settings.subpixel_coords));
|
self.graphics.push_entry(MenuEntry::Toggle("Subpixel scrolling:".to_string(), state.settings.subpixel_coords));
|
||||||
|
@ -156,6 +157,14 @@ impl SettingsMenu {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(1, toggle) => {
|
MenuSelectionResult::Selected(1, toggle) => {
|
||||||
|
if let MenuEntry::Toggle(_, value) = toggle {
|
||||||
|
state.settings.light_cone = !state.settings.light_cone;
|
||||||
|
let _ = state.settings.save(ctx);
|
||||||
|
|
||||||
|
*value = state.settings.light_cone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuSelectionResult::Selected(2, toggle) => {
|
||||||
if let MenuEntry::Toggle(_, value) = toggle {
|
if let MenuEntry::Toggle(_, value) = toggle {
|
||||||
state.settings.motion_interpolation = !state.settings.motion_interpolation;
|
state.settings.motion_interpolation = !state.settings.motion_interpolation;
|
||||||
let _ = state.settings.save(ctx);
|
let _ = state.settings.save(ctx);
|
||||||
|
@ -163,7 +172,7 @@ impl SettingsMenu {
|
||||||
*value = state.settings.motion_interpolation;
|
*value = state.settings.motion_interpolation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(2, toggle) => {
|
MenuSelectionResult::Selected(3, toggle) => {
|
||||||
if let MenuEntry::Toggle(_, value) = toggle {
|
if let MenuEntry::Toggle(_, value) = toggle {
|
||||||
state.settings.subpixel_coords = !state.settings.subpixel_coords;
|
state.settings.subpixel_coords = !state.settings.subpixel_coords;
|
||||||
let _ = state.settings.save(ctx);
|
let _ = state.settings.save(ctx);
|
||||||
|
@ -171,7 +180,7 @@ impl SettingsMenu {
|
||||||
*value = state.settings.subpixel_coords;
|
*value = state.settings.subpixel_coords;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(3, toggle) => {
|
MenuSelectionResult::Selected(4, toggle) => {
|
||||||
if let MenuEntry::Toggle(_, value) = toggle {
|
if let MenuEntry::Toggle(_, value) = toggle {
|
||||||
state.settings.original_textures = !state.settings.original_textures;
|
state.settings.original_textures = !state.settings.original_textures;
|
||||||
state.reload_textures();
|
state.reload_textures();
|
||||||
|
@ -180,7 +189,7 @@ impl SettingsMenu {
|
||||||
*value = state.settings.original_textures;
|
*value = state.settings.original_textures;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(4, toggle) => {
|
MenuSelectionResult::Selected(5, toggle) => {
|
||||||
if let MenuEntry::Toggle(_, value) = toggle {
|
if let MenuEntry::Toggle(_, value) = toggle {
|
||||||
state.settings.seasonal_textures = !state.settings.seasonal_textures;
|
state.settings.seasonal_textures = !state.settings.seasonal_textures;
|
||||||
state.reload_textures();
|
state.reload_textures();
|
||||||
|
@ -189,7 +198,7 @@ impl SettingsMenu {
|
||||||
*value = state.settings.seasonal_textures;
|
*value = state.settings.seasonal_textures;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(6, _) | MenuSelectionResult::Canceled => {
|
MenuSelectionResult::Selected(7, _) | MenuSelectionResult::Canceled => {
|
||||||
self.current = CurrentMenu::MainMenu
|
self.current = CurrentMenu::MainMenu
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
|
|
|
@ -809,6 +809,7 @@ impl GameScene {
|
||||||
[(&self.player1, &self.inventory_player1), (&self.player2, &self.inventory_player2)].iter()
|
[(&self.player1, &self.inventory_player1), (&self.player2, &self.inventory_player2)].iter()
|
||||||
{
|
{
|
||||||
if player.cond.alive() && !player.cond.hidden() && inv.get_current_weapon().is_some() {
|
if player.cond.alive() && !player.cond.hidden() && inv.get_current_weapon().is_some() {
|
||||||
|
if state.settings.light_cone {
|
||||||
let range = match () {
|
let range = match () {
|
||||||
_ if player.up => 60..120,
|
_ if player.up => 60..120,
|
||||||
_ if player.down => 240..300,
|
_ if player.down => 240..300,
|
||||||
|
@ -836,6 +837,23 @@ impl GameScene {
|
||||||
range,
|
range,
|
||||||
batch,
|
batch,
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
self.draw_light(
|
||||||
|
interpolate_fix9_scale(
|
||||||
|
player.prev_x - self.frame.prev_x,
|
||||||
|
player.x - self.frame.x,
|
||||||
|
state.frame_time,
|
||||||
|
),
|
||||||
|
interpolate_fix9_scale(
|
||||||
|
player.prev_y - self.frame.prev_y,
|
||||||
|
player.y - self.frame.y,
|
||||||
|
state.frame_time,
|
||||||
|
),
|
||||||
|
5.0,
|
||||||
|
(150, 150, 150),
|
||||||
|
batch,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,15 @@ use crate::sound::InterpolationMode;
|
||||||
pub struct Settings {
|
pub struct Settings {
|
||||||
#[serde(default = "current_version")]
|
#[serde(default = "current_version")]
|
||||||
pub version: u32,
|
pub version: u32,
|
||||||
|
#[serde(default = "default_true")]
|
||||||
pub seasonal_textures: bool,
|
pub seasonal_textures: bool,
|
||||||
pub original_textures: bool,
|
pub original_textures: bool,
|
||||||
pub shader_effects: bool,
|
pub shader_effects: bool,
|
||||||
|
#[serde(default = "default_true")]
|
||||||
|
pub light_cone: bool,
|
||||||
|
#[serde(default = "default_true")]
|
||||||
pub subpixel_coords: bool,
|
pub subpixel_coords: bool,
|
||||||
|
#[serde(default = "default_true")]
|
||||||
pub motion_interpolation: bool,
|
pub motion_interpolation: bool,
|
||||||
pub touch_controls: bool,
|
pub touch_controls: bool,
|
||||||
pub soundtrack: String,
|
pub soundtrack: String,
|
||||||
|
@ -35,6 +40,8 @@ pub struct Settings {
|
||||||
pub debug_outlines: bool,
|
pub debug_outlines: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn default_true() -> bool { true }
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn current_version() -> u32 { 2 }
|
fn current_version() -> u32 { 2 }
|
||||||
|
|
||||||
|
@ -84,6 +91,7 @@ impl Default for Settings {
|
||||||
seasonal_textures: true,
|
seasonal_textures: true,
|
||||||
original_textures: false,
|
original_textures: false,
|
||||||
shader_effects: true,
|
shader_effects: true,
|
||||||
|
light_cone: true,
|
||||||
subpixel_coords: true,
|
subpixel_coords: true,
|
||||||
motion_interpolation: true,
|
motion_interpolation: true,
|
||||||
touch_controls: cfg!(target_os = "android"),
|
touch_controls: cfg!(target_os = "android"),
|
||||||
|
|
Loading…
Reference in a new issue