aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-07-06 15:50:55 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-07-06 15:50:55 +0200
commite610149c0cc3516b61115541f2f4f78344a0bb2c (patch)
treeb1205a15af51db02c9301f4ab8ecdd7527d13c10 /src/client
parenta87805a9445f280ca71da322c4b32cf357744511 (diff)
downloaddragonfireclient-e610149c0cc3516b61115541f2f4f78344a0bb2c.tar.xz
Initial Commit
Diffstat (limited to 'src/client')
-rw-r--r--src/client/client.h6
-rw-r--r--src/client/content_cao.cpp3
-rw-r--r--src/client/game.cpp50
-rw-r--r--src/client/game.h3
-rw-r--r--src/client/inputhandler.cpp3
-rw-r--r--src/client/keys.h5
-rw-r--r--src/client/mapblock_mesh.cpp20
-rw-r--r--src/client/mesh_generator_thread.h2
8 files changed, 81 insertions, 11 deletions
diff --git a/src/client/client.h b/src/client/client.h
index 1e6ba4140..3c0c133e0 100644
--- a/src/client/client.h
+++ b/src/client/client.h
@@ -445,6 +445,10 @@ public:
{
return m_env.getLocalPlayer()->formspec_prepend;
}
+
+ void sendPlayerPos();
+ MeshUpdateThread m_mesh_update_thread;
+
private:
void loadMods();
bool checkBuiltinIntegrity();
@@ -459,7 +463,6 @@ private:
void ReceiveAll();
- void sendPlayerPos();
void deleteAuthData();
// helper method shared with clientpackethandler
@@ -492,7 +495,6 @@ private:
MtEventManager *m_event;
- MeshUpdateThread m_mesh_update_thread;
ClientEnvironment m_env;
ParticleManager m_particle_manager;
std::unique_ptr<con::Connection> m_con;
diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp
index 5d719293a..fa2ed43c9 100644
--- a/src/client/content_cao.cpp
+++ b/src/client/content_cao.cpp
@@ -793,6 +793,9 @@ void GenericCAO::addToScene(ITextureSource *tsrc)
void GenericCAO::updateLight(u8 light_at_pos)
{
+ if (g_settings->getBool("fullbright"))
+ light_at_pos = 255;
+
// Don't update light of attached one
if (getParent() != NULL) {
return;
diff --git a/src/client/game.cpp b/src/client/game.cpp
index 9f8eb8c94..7c2249296 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -1069,6 +1069,12 @@ void Game::processKeyInput()
toggleFast();
} else if (wasKeyDown(KeyType::NOCLIP)) {
toggleNoClip();
+ } else if (wasKeyDown(KeyType::XRAY)) {
+ toggleXray();
+ } else if (wasKeyDown(KeyType::FULLBRIGHT)) {
+ toggleFullbright();
+ } else if (wasKeyDown(KeyType::KILLAURA)) {
+ toggleKillaura();
} else if (wasKeyDown(KeyType::MUTE)) {
bool new_mute_sound = !g_settings->getBool("mute_sound");
g_settings->setBool("mute_sound", new_mute_sound);
@@ -1327,6 +1333,44 @@ void Game::toggleNoClip()
}
}
+void Game::toggleXray()
+{
+ bool xray = ! g_settings->getBool("xray");
+ g_settings->set("xray", bool_to_cstr(xray));
+
+ if (xray) {
+ m_game_ui->showTranslatedStatusText("Xray enabled");
+ } else {
+ m_game_ui->showTranslatedStatusText("Xray disabled");
+ }
+ client->m_mesh_update_thread.doUpdate();
+}
+
+void Game::toggleFullbright()
+{
+ bool fullbright = ! g_settings->getBool("fullbright");
+ g_settings->set("fullbright", bool_to_cstr(fullbright));
+
+ if (fullbright) {
+ m_game_ui->showTranslatedStatusText("Fullbright enabled");
+ } else {
+ m_game_ui->showTranslatedStatusText("Fullbright disabled");
+ }
+ client->m_mesh_update_thread.doUpdate();
+}
+
+void Game::toggleKillaura()
+{
+ bool killaura = ! g_settings->getBool("killaura");
+ g_settings->set("killaura", bool_to_cstr(killaura));
+
+ if (killaura) {
+ m_game_ui->showTranslatedStatusText("Killaura enabled");
+ } else {
+ m_game_ui->showTranslatedStatusText("Killaura disabled");
+ }
+}
+
void Game::toggleCinematic()
{
bool cinematic = !g_settings->getBool("cinematic");
@@ -2181,7 +2225,7 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
f32 d = getToolRange(selected_def, hand_item.getDefinition(itemdef_manager));
if(g_settings->getBool("increase_tool_range"))
- d = 1000;
+ d = 5;
core::line3d<f32> shootline;
@@ -2697,7 +2741,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed,
m_game_ui->setInfoText(infotext);
- if (input->getLeftState() || g_settings->getBool("killaura")) {
+ if (input->getLeftState() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast"))) {
bool do_punch = false;
bool do_punch_damage = false;
@@ -2707,7 +2751,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed,
runData.object_hit_delay_timer = object_hit_delay;
}
- if (input->getLeftClicked() || g_settings->getBool("killaura"))
+ if (input->getLeftClicked() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast")))
do_punch = true;
if (do_punch) {
diff --git a/src/client/game.h b/src/client/game.h
index c1afb79fa..43b366057 100644
--- a/src/client/game.h
+++ b/src/client/game.h
@@ -736,6 +736,9 @@ public:
void togglePitchMove();
void toggleFast();
void toggleNoClip();
+ void toggleXray();
+ void toggleFullbright();
+ void toggleKillaura();
void toggleCinematic();
void toggleAutoforward();
diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp
index a79b04a90..b8c236b8d 100644
--- a/src/client/inputhandler.cpp
+++ b/src/client/inputhandler.cpp
@@ -71,6 +71,9 @@ void KeyCache::populate()
getKeySetting("keymap_decrease_viewing_range_min");
key[KeyType::RANGESELECT] = getKeySetting("keymap_rangeselect");
key[KeyType::ZOOM] = getKeySetting("keymap_zoom");
+ key[KeyType::XRAY] = "KEY_KEY_X";
+ key[KeyType::FULLBRIGHT] = "KEY_KEY_F";
+ key[KeyType::KILLAURA] = "KEY_KEY_C";
key[KeyType::QUICKTUNE_NEXT] = getKeySetting("keymap_quicktune_next");
key[KeyType::QUICKTUNE_PREV] = getKeySetting("keymap_quicktune_prev");
diff --git a/src/client/keys.h b/src/client/keys.h
index 50d3d194b..08f5e36ab 100644
--- a/src/client/keys.h
+++ b/src/client/keys.h
@@ -68,7 +68,10 @@ public:
DECREASE_VIEWING_RANGE,
RANGESELECT,
ZOOM,
-
+ XRAY,
+ FULLBRIGHT,
+ KILLAURA,
+
QUICKTUNE_NEXT,
QUICKTUNE_PREV,
QUICKTUNE_INC,
diff --git a/src/client/mapblock_mesh.cpp b/src/client/mapblock_mesh.cpp
index c165438a0..ec8967366 100644
--- a/src/client/mapblock_mesh.cpp
+++ b/src/client/mapblock_mesh.cpp
@@ -681,6 +681,7 @@ static u8 face_contents(content_t m1, content_t m2, bool *equivalent,
u8 c1 = f1.solidness;
u8 c2 = f2.solidness;
+
if (c1 == c2)
return 0;
@@ -689,6 +690,7 @@ static u8 face_contents(content_t m1, content_t m2, bool *equivalent,
else if (c2 == 0)
c2 = f2.visual_solidness;
+
if (c1 == c2) {
*equivalent = true;
// If same solidness, liquid takes precense
@@ -805,25 +807,35 @@ static void getTileInfo(
VoxelManipulator &vmanip = data->m_vmanip;
const NodeDefManager *ndef = data->m_client->ndef();
v3s16 blockpos_nodes = data->m_blockpos * MAP_BLOCKSIZE;
-
+ content_t cXray = ndef->getId(g_settings->get("xray_node"));
+ bool xray = g_settings->getBool("xray");
+
const MapNode &n0 = vmanip.getNodeRefUnsafe(blockpos_nodes + p);
+ content_t c0 = n0.getContent();
+ if (xray && c0 == cXray)
+ c0 = CONTENT_AIR;
+
// Don't even try to get n1 if n0 is already CONTENT_IGNORE
- if (n0.getContent() == CONTENT_IGNORE) {
+ if (c0 == CONTENT_IGNORE) {
makes_face = false;
return;
}
const MapNode &n1 = vmanip.getNodeRefUnsafeCheckFlags(blockpos_nodes + p + face_dir);
- if (n1.getContent() == CONTENT_IGNORE) {
+ content_t c1 = n1.getContent();
+ if (xray && c1 == cXray)
+ c1 = CONTENT_AIR;
+
+ if (c1 == CONTENT_IGNORE) {
makes_face = false;
return;
}
// This is hackish
bool equivalent = false;
- u8 mf = face_contents(n0.getContent(), n1.getContent(),
+ u8 mf = face_contents(c0, c1,
&equivalent, ndef);
if (mf == 0) {
diff --git a/src/client/mesh_generator_thread.h b/src/client/mesh_generator_thread.h
index 9a42852a3..2bb74589e 100644
--- a/src/client/mesh_generator_thread.h
+++ b/src/client/mesh_generator_thread.h
@@ -126,6 +126,6 @@ private:
// TODO: Add callback to update these when g_settings changes
int m_generation_interval;
-protected:
+public:
virtual void doUpdate();
};