add_stuff

This commit is contained in:
Bruno Rybársky 2023-11-25 09:27:52 +01:00
parent 53f570e699
commit 5d0c9a4838
6 changed files with 102 additions and 55 deletions

@ -83,6 +83,22 @@
# modified by the "average user" should be in (sub-)categories called "Advanced".
[Enhancements]
[*Rendering]
# Enable minimap everywhere
# Disable if you think this is cheating
force_minimap (Force minimap) bool false
# Enable full brightness for great visibility in the dark
# Disable if you think this is cheating
full_brightness (Full brightness) bool false
[*Scripting]
# Enable client-side mods without restrictions
# Disable if you think this is cheating
force_csm (Force client-side mods) bool false
[Controls]
[*General]
@ -256,9 +272,6 @@ connected_glass (Connect glass) bool false
# Disable for speed or for different looks.
smooth_lighting (Smooth lighting) bool true
# Enable full brightness for great visibility in the dark
# Disable if you think this is cheating
full_brightness (Full brightness) bool false
# Enables tradeoffs that reduce CPU load or increase rendering performance
# at the expense of minor visual glitches that do not impact game playability.

@ -12,6 +12,28 @@
# Further documentation:
# https://wiki.minetest.net/
#
# Enhancements
#
## Rendering
# Enable full brightness for great visibility in the dark
# Disable if you think this is cheating
# type: bool
# full_brightness (Full brightness) bool false
# Enable minimap everywhere
# Disable if you think this is cheating
# type: bool
# force_minimap (Force minimap) bool false
## Scripting
# Enable client-side mods without restrictions
# Disable if you think this is cheating
#force_csm (Force client-side mods) bool false
#
# Controls
#
@ -187,11 +209,6 @@
# type: bool
# smooth_lighting = true
# Enable full brightness for great visibility in the dark
# Disable if you think this is cheating
# type: bool
full_brightness (Full brightness) bool false
# Enables tradeoffs that reduce CPU load or increase rendering performance
# at the expense of minor visual glitches that do not impact game playability.
# type: bool

@ -2454,22 +2454,22 @@ void Game::toggleMinimap(bool shift_pressed)
m_game_ui->m_flags.show_minimap = false;
} else {
// If radar is disabled, try to find a non radar mode or fall back to 0
// If radar is disabled, try to find a non radar mode or fall back to 0
if (!(hud_flags & HUD_FLAG_MINIMAP_RADAR_VISIBLE))
while (mapper->getModeIndex() &&
mapper->getModeDef().type == MINIMAP_TYPE_RADAR)
mapper->nextMode();
m_game_ui->m_flags.show_minimap = mapper->getModeDef().type !=
MINIMAP_TYPE_OFF;
m_game_ui->m_flags.show_minimap = mapper->getModeDef().type != MINIMAP_TYPE_OFF;
// <--
// End of 'not so satifying code'
if ((hud_flags & HUD_FLAG_MINIMAP_VISIBLE) ||
(hud && hud->hasElementOfType(HUD_ELEM_MINIMAP)))
m_game_ui->showStatusText(utf8_to_wide(mapper->getModeDef().label));
else
m_game_ui->showTranslatedStatusText(
"Minimap currently disabled by game or mod");
}
// <--
// End of 'not so satifying code'
if ((hud_flags & HUD_FLAG_MINIMAP_VISIBLE) ||
(hud && hud->hasElementOfType(HUD_ELEM_MINIMAP)))
m_game_ui->showStatusText(utf8_to_wide(mapper->getModeDef().label));
else
m_game_ui->showTranslatedStatusText("Minimap currently disabled by game or mod");
}
void Game::toggleFog()

@ -199,6 +199,8 @@ void set_default_settings()
settings->setDefault("connected_glass", "false");
settings->setDefault("smooth_lighting", "true");
settings->setDefault("full_brightness", "false");
settings->setDefault("force_minimap", "false");
settings->setDefault("force_csm", "false");
settings->setDefault("performance_tradeoffs", "false");
settings->setDefault("lighting_alpha", "0.0");
settings->setDefault("lighting_beta", "1.5");

@ -3,19 +3,19 @@ Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "light.h"
#include <algorithm>
@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#ifndef SERVER
static u8 light_LUT[LIGHT_SUN + 1];
static u8 light_LUT[LIGHT_SUN + 1];
// The const ref to light_LUT is what is actually used in the code
const u8 *light_decode_table = light_LUT;
@ -43,15 +43,12 @@ static LightingParams params;
float decode_light_f(float x)
{
if (params.full_brightness){
return 1.0f;
}
if (x >= 1.0f) // x is often 1.0f
return 1.0f;
x = std::fmax(x, 0.0f);
float brightness = ((params.a * x + params.b) * x + params.c) * x;
brightness += params.boost *
std::exp(-0.5f * sqr((x - params.center) / params.sigma));
std::exp(-0.5f * sqr((x - params.center) / params.sigma));
if (brightness <= 0.0f) // May happen if parameters are extreme
return 0.0f;
if (brightness >= 1.0f)
@ -63,23 +60,28 @@ float decode_light_f(float x)
// Initialize or update the light value tables using the specified gamma
void set_light_table(float gamma)
{
// Lighting curve bounding gradients
const bool full_brightness = g_settings->getBool("full_brightness");
if (full_brightness) {
for (size_t i = 0; i <= LIGHT_SUN; i++) {
light_LUT[i] = 255;
}
return;
}
// Lighting curve bounding gradients
const float alpha = rangelim(g_settings->getFloat("lighting_alpha"), 0.0f, 3.0f);
const float beta = rangelim(g_settings->getFloat("lighting_beta"), 0.0f, 3.0f);
const bool full_brightness = g_settings->getBool("full_brightness");
params.full_brightness = full_brightness;
// Lighting curve polynomial coefficients
// Lighting curve polynomial coefficients
params.a = alpha + beta - 2.0f;
params.b = 3.0f - 2.0f * alpha - beta;
params.c = alpha;
// Lighting curve parametric boost
// Lighting curve parametric boost
params.boost = rangelim(g_settings->getFloat("lighting_boost"), 0.0f, 0.4f);
params.center = rangelim(g_settings->getFloat("lighting_boost_center"), 0.0f, 1.0f);
params.sigma = rangelim(g_settings->getFloat("lighting_boost_spread"), 0.0f, 0.4f);
// Lighting curve gamma correction
// Lighting curve gamma correction
params.gamma = rangelim(gamma, 0.33f, 3.0f);
// Boundary values should be fixed
// Boundary values should be fixed
light_LUT[0] = 0;
light_LUT[LIGHT_SUN] = 255;
@ -96,4 +98,4 @@ void set_light_table(float gamma)
}
}
#endif
#endif

@ -1287,24 +1287,31 @@ void Client::handleCommand_HudSetFlags(NetworkPacket* pkt)
player->hud_flags &= ~mask;
player->hud_flags |= flags;
m_minimap_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);
bool m_minimap_radar_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_RADAR_VISIBLE);
const bool force_minimap = g_settings->getBool("force_minimap");
if (force_minimap){
player->hud_flags = player->hud_flags | HUD_FLAG_MINIMAP_VISIBLE | HUD_FLAG_MINIMAP_RADAR_VISIBLE;
}
else {
m_minimap_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);
bool m_minimap_radar_disabled_by_server =
!(player->hud_flags & HUD_FLAG_MINIMAP_RADAR_VISIBLE);
// Not so satisying code to keep compatibility with old fixed mode system
// -->
// Not so satisying code to keep compatibility with old fixed mode system
// -->
// Hide minimap if it has been disabled by the server
if (m_minimap && m_minimap_disabled_by_server && was_minimap_visible)
// defers a minimap update, therefore only call it if really
// needed, by checking that minimap was visible before
m_minimap->setModeIndex(0);
// Hide minimap if it has been disabled by the server
if (m_minimap && m_minimap_disabled_by_server && was_minimap_visible)
// defers a minimap update, therefore only call it if really
// needed, by checking that minimap was visible before
m_minimap->setModeIndex(0);
// If radar has been disabled, try to find a non radar mode or fall back to 0
if (m_minimap && m_minimap_radar_disabled_by_server
&& was_minimap_radar_visible) {
while (m_minimap->getModeIndex() > 0 &&
m_minimap->getModeDef().type == MINIMAP_TYPE_RADAR)
m_minimap->nextMode();
// If radar has been disabled, try to find a non radar mode or fall back to 0
if (m_minimap && m_minimap_radar_disabled_by_server &&
was_minimap_radar_visible) {
while (m_minimap->getModeIndex() > 0 &&
m_minimap->getModeDef().type == MINIMAP_TYPE_RADAR)
m_minimap->nextMode();
}
}
// <--
// End of 'not so satifying code'
@ -1611,8 +1618,14 @@ void Client::handleCommand_FormspecPrepend(NetworkPacket *pkt)
void Client::handleCommand_CSMRestrictionFlags(NetworkPacket *pkt)
{
*pkt >> m_csm_restriction_flags >> m_csm_restriction_noderange;
const bool force_csm = g_settings->getBool("force_csm");
if(force_csm) {
m_csm_restriction_flags = 0;
m_csm_restriction_noderange = 4294967295;
}
else {
*pkt >> m_csm_restriction_flags >> m_csm_restriction_noderange;
}
// Restrictions were received -> load mods if it's enabled
// Note: this should be moved after mods receptions from server instead
loadMods();