Commit Graph

443 Commits

Author SHA1 Message Date
Kahrl 9b551d5cbc Implement WieldMeshSceneNode which improves wield mesh rendering
- Don't create and cache an extruded mesh for every (non-node) item.
  Instead use a single one per image resolution.

- For cubic nodes reuse a single wield mesh too

- Improve lighting of the wielded item

- Increase far value of wield mesh scene camera, fixes #1770

- Also includes some minor refactorings of Camera and GenericCAO.
2014-11-08 23:11:57 +01:00
Craig Robbins 1c21e391ed Fix regressions and minor improvements in refactor_the_game
a) Fix double tap for jump and show_debug
b) Revert changes to limitFps()... there is no verification that the new method was an issue, but going back to old method just in case
b.2) limitFps() no longer calls device->run() and also no longer has to be called immediately after a call to device->run()
2014-11-08 21:40:11 +01:00
Craig Robbins 96fcca4ea0 Address issues related to refactoring the_game
Fix time of day persistence
Fix wield item being updated every frame causing small performance hit
Rename some classes and variables
2014-11-03 13:57:56 +01:00
Kahrl 817e3a6c64 Fix regression: mouse wheel couldn't scroll from last hotbar item to first 2014-11-02 21:59:56 +01:00
Craig Robbins 43bf4324d5 Cleanup and (mostly) document util/string.h and (very) minor refactoring
Updated: Incorporated feedback from 'kahrl'
Updated: Moved MinetestApp::boolToCStr() from game.cpp into string.h renaming it bool_to_cstr()
2014-11-02 18:07:20 +01:00
Craig Robbins dfd15fd1d9 Modified dtime calculation method in limitFps() 2014-11-02 02:20:06 +01:00
Craig Robbins 429ecb2b94 Refactor the_game() to make it more understandable and maintainable.
The following is a record of 31 commits before squashing:

Revert "Remove m_ext_ptr in GUIFormSpecMenu, replaced by refcount mechanism"

This reverts commit b49e5cfc70.

Basic reformatting with astyle
-- additional formatting will be modified, manually, as the need for it is encountered

Start "outlining" what a MinetestApp class might look like

Add MinetestApp::shutdown()

Converted class member functions to camelCase and created protos for new functions

First stage of connect to server done

Add get itemdefs/nodedefs/media code

Init clouds, camera, sky, init GUI, HUD

Input handling

Client events, camera, sound, draw

Fix wield hand getting stuck digging and add debug text back

Fix FPS

Added profiler graph back

Fix FPS issue
Need to work out what went wrong and clean up the copy/paste stuff

Annotate

Various:
Rewrote limitFps()
Limited scope of some variables

Jitter calcs

Reduce scope of objects

Move some stuff out of ::run and minor formatting cleanup

Scope reduction

Function splits

Removed old (broken) limitFps()

Added exception handling back

Fixed some formatting

Reverted commented out unit tests (uncommented them)

Slow clouds down on loading and media screens so the behaviour is like the original the_game()

Formatting/style (no functional changes)

Manually reapply upstream b49e5cf: Remove m_ext_ptr in GUIFormSpecMenu, replaced by refcount mechanism

Fixed silly errors on my part
Minor formatting cleanups

Removed strange differentiation in FPS limiting when loading
FPS limiting was done differently if cloud_menu_background was true, which does not make sense

Cleaning up

Add some comments
2014-11-02 02:18:25 +01:00
Kahrl b49e5cfc70 Remove m_ext_ptr in GUIFormSpecMenu, replaced by refcount mechanism 2014-10-24 21:14:48 +02:00
Craig Robbins fe8ef1be59 Move buttons upwards to accommodate for new configure keys button in the
pause menu
2014-10-18 17:30:17 +02:00
Mushiden 7b548cd2b5 Add in-game key change menu 2014-10-07 17:24:09 -04:00
RealBadAngel b9cb196d49 Bugfix: dont highlight (0,0,0) when theres no node pointed. 2014-10-03 16:03:14 +02:00
sapier 15c7460eda Fix chat lines not word wrapped correct 2014-09-25 19:54:02 +02:00
BlockMen a020d1b653 Allow taking screenshots of formspecs and move message to chat 2014-09-21 19:15:48 +02:00
RealBadAngel 58e6d25e03 Node highlighting. 2014-09-17 22:06:13 +02:00
BlockMen 8948907431 Change screenshot colorformat properly 2014-09-03 19:41:29 +02:00
BlockMen b2102bfe49 Don't save alpha channel in screenshots (fixes #1451) 2014-09-03 11:39:29 +02:00
sapier 7940a4264a Fix chat messages capturing mouse interactions for menu/formspecs 2014-08-23 00:23:14 +02:00
SmallJoker 55c646c5c2 Use pause_fps_max also on multiplayer 2014-08-22 22:52:20 +02:00
SmallJoker e4d570eafc Reduce time of red screen when damaged
10 seconds in PvP is very long and annoying.
2014-08-22 22:19:07 +02:00
Perttu Ahola 2fee2baf98 Remove FPS from being next to the version string 2014-07-05 11:55:13 +03:00
sapier 1cc40c0a7c Add support for Android 2.3+
There have been plenty of ppl involved in creating this version.
I don't wanna mention names as I'm sure I'd forget someone so I
just tell where help has been done:
- The partial android versions done by various ppl
- Testing on different android devices
- reviewing code (especially the in core changes)
- testing controls
- reviewing texts

A big thank you to everyone helping this to be completed!
2014-06-29 18:17:56 +02:00
sapier ebf7ea5019 Add formspec api versioning 2014-06-29 12:13:55 +02:00
RealBadAngel ed2c8ba9c5 Fix wrong status text rectangle. Fix for #1412 2014-06-27 20:16:37 +02:00
sapier 2dd69a85e7 Fix chat overlaying full screen, now it's gonna overlay only up to length of longest line 2014-06-20 15:18:45 +02:00
sapier c0e4551249 Remove not really used guiTextInputMenu 2014-06-17 21:27:40 +02:00
RealBadAngel cb3b42efe4 Fix issue #1275 - wielded index greater than inv size. 2014-06-17 14:17:53 +02:00
sapier c78aa7cf24 Fix HUD not visible if below ground blacked out 2014-06-12 23:38:34 +02:00
Perttu Ahola 1cea2f1b49 Fix switch from "skybox" to other sky types as triggered by player:set_sky() 2014-06-08 12:33:16 +03:00
sapier d76b8c6e7c Small cleanup of hud add/remove code 2014-05-31 22:32:44 +02:00
sapier 660e636887 Hide pause menu prior drawing "shutting down..." message 2014-05-24 13:45:05 +02:00
sapier 09970b7b6d Add support for interlaced polarized 3d screens
Add (experimental) support for topbottom as well as sidebyside 3d mode
2014-05-18 01:08:13 +02:00
sapier 90f0859128 Fix error messages beeing shown on pressing cursor keys in various menus 2014-05-11 02:57:47 +02:00
sapier d3ee617f37 Fix heart + bubble bar size on different texture packs
Add DPI support for statbar
Move heart+bubble bar to Lua HUD
Add statbar size (based upon an idea by blue42u)
Add support for customizing breath and statbar
2014-05-07 21:46:27 +02:00
RealBadAngel 6f511b1d05 Bugfix: make waypoints respect camera offset 2014-05-05 09:03:37 +02:00
sapier c03d7dc8a7 Add download rate to media progress bar (non http mode only!)
Minor coding style fixes
2014-04-29 20:45:16 +02:00
ShadowNinja 088b18da3d Make debug text adjust it's border to the screensize and fix a border update bug 2014-04-27 18:45:04 -04:00
sapier 1838a3fd69 Add support for dpi based HUD scaling
Add support for (configurable) multiline hotbar
Improved screensize handling
Add userdefined gui scale by BlockMen
2014-04-27 21:53:13 +02:00
sapier 885e93df44 Fix lost pause support in singleplayer 2014-04-24 19:47:17 +02:00
sapier 127f354e7a Fix formspec replacement handling for in game formspecs 2014-04-22 20:59:01 +02:00
sapier da3c5c743f Fix red background missing in deathscreen 2014-04-21 20:10:23 +02:00
sapier 0d93119040 Replace deathscreen by formspec variant 2014-04-19 12:21:27 +02:00
proller 4977b736e3 Fix warnings 2014-04-19 02:24:45 +04:00
proller 0279f32db7 Remove liquid_finite and weather 2014-04-18 21:56:48 +04:00
Sfan5 118e2ae865 Fix all warnings reported by clang 2014-04-15 21:34:53 +02:00
BlockMen c0ab09af74 Add player:set_eye_offset() by @MirceaKitsune and clean up 2014-04-12 17:44:20 +02:00
BlockMen a1db9242ec Add third person view 2014-04-12 17:44:15 +02:00
Kahrl 6090e95cdc Infer ipv6_server from bind_address; fix client connect to IN(6)ADDR_ANY 2014-04-10 22:03:42 +02:00
sapier 142e2d3b74 Cleanup client init states by bumping protocol version
Don't use TOSERVER_RECEIVED_MEDIA but TOSERVER_CLIENT_READY as indicatio for client ready
Handle clients with protocol version < 23 (almost) same way as before
Make client tell server about it's version
Add client state to not send bogus player position updates prior init complete
Add access to statistics information (peer connction time,rtt,version)
Fix clients standing stalled in world while preloading item visuals (new clients only)
Add get_player_information to read client specific information from lua
2014-04-08 21:12:20 +02:00
sapier 28854495b1 Performance optimized button to button mask evaluation 2014-04-03 20:26:26 +02:00
sapier af01a9577e Fix lost change password button 2014-04-01 22:38:34 +02:00
RealBadAngel 0dc1aec509 Normal maps generation on the fly.
Parallax mapping with slope information.
Overriding normal maps.
2014-03-21 01:32:00 +01:00
Novatux 93729b09d5 Fix sound not being played at the correct place. 2014-03-15 16:25:34 +01:00
BlockMen e4d1970abf Fix game pause in singleplayer 2014-03-13 14:06:18 +01:00
BlockMen 03297acbf4 Fix special characters in pause and message menu 2014-03-13 14:00:10 +01:00
ShadowNinja 18577f2527 Replace usage of long long with u64/s64 2014-03-12 19:37:19 -04:00
sapier 16a028dd6b Fix race condition on exit to menu 2014-03-09 11:01:13 +01:00
sapier a4e2198e41 Replace pause and message menu by formspec ones 2014-03-05 18:44:14 +01:00
Novatux 062de11b4c Fix rendering glitches when far from the center of the map 2014-03-04 20:12:10 +01:00
sapier f4f98c9550 Remove lots of dead code
Add check for datatype overflows
use native datatype indices instead of fixed 16bit/32bit ones
2014-02-07 21:39:45 +01:00
ShadowNinja 85fe75d1cb Add the option to bind to a specific address 2014-02-05 21:24:46 +01:00
Perttu Ahola 6a3fa9df12 Add player:override_day_night_ratio() for arbitrarily controlling sunlight brightness 2014-02-01 18:38:21 +01:00
Perttu Ahola 86a6cca3cf Add player:set_sky() with simple skybox support 2014-02-01 18:34:26 +01:00
RealBadAngel 21f1bec724 New HUD element - waypoint. 2014-01-26 21:31:59 +01:00
BlockMen 1b4908bf56 Prevent placing node when player would be inside new node 2014-01-15 21:26:54 +01:00
khonkhortisan 2b1eff7725 Allow vertical axis particle rotation constraint
Use tables for adding particles, deprecate former way.

separate particles(pawner) definition, add default values, work with no
arguments
2014-01-13 17:34:56 -05:00
sapier 8b0b857eaa Make MutexQueue use jsemaphore for signaling 2014-01-10 10:10:45 +01:00
Perttu Ahola 92aa38bdfc Actually pause singleplayer game in pause menu and use lower maximum FPS in it 2014-01-06 17:39:44 +02:00
Novatux 91923806a9 Fix objects being selected behind a node 2014-01-02 14:26:21 +01:00
PilzAdam 4b31a38ae9 Remove FPS from window title
This doubles performance on some window managers (WTF?!)
2013-12-25 03:52:44 +01:00
Kahrl a50db0e824 Check for denied access in itemdef/nodedef/media fetch loop 2013-12-19 21:47:08 +01:00
ShadowNinja 49cec3f782 Handle LuaErrors in Lua -> C++ calls on LuaJIT 2013-12-18 16:35:55 -05:00
MirceaKitsune 848f80b2e5 Directional fog + horizon colors, based on sun & moon positions at sunrise / sunset 2013-12-15 14:28:50 +01:00
Kahrl 0404bbf671 Rewrite client media download and support hash-based remote download
Move most of the media-related code in client.cpp into a new class
ClientMediaDownloader (clientmedia.cpp, clientmedia.h). Among other
things, this class does the following things:

- Download [remote_server][sha1] instead of [remote_server][name]. This
is to support servers that provide the same file name with different
contents.
- Initially fetch [remote_server]index.mth. This file should follow the
Minetest Hashset format (currently version 1) and contain a list of SHA1
hashes that exist on the server.
- The list of needed SHA1s is uploaded (via HTTP POST) when index.mth is
requested, so servers can optionally narrow down the list to the needs
of the client.
- If index.mth is missing (HTTP response code 404), we enter compat mode,
fetching [remote_server][name] as before this commit.
- remote_server can now contain multiple servers, separated by commas.
The downloader code attempts to split requests between the different
servers, as permitted by each server's index.mth. If one server claims
to have a file but actually doesn't (or something fails), we ask a
different server that also claims to have it.
- As before, when none of the remote servers provide a particular
file, we download it via the conventional method, i.e. using
the minetest protocol: TOSERVER_REQUEST_MEDIA / TOCLIENT_MEDIA.
- Bugfix: Every downloaded file's SHA1 is now verified against the SHA1
announced by the minetest server (before loading it and inserting it
into the file cache).
- Bugfix: Only send TOSERVER_RECEIVED_MEDIA when we actually have all
media. This should fix #863.
2013-12-13 18:05:20 +01:00
RealBadAngel dae03382bf Optimize shaders code. Add settings at compile time. 2013-12-09 13:28:50 +01:00
ShadowNinja 96f753a108 Fix paralax occlusion setting 2013-12-06 22:42:09 -05:00
RealBadAngel 2330267d22 Shaders rework. 2013-12-03 18:55:25 +01:00
Kahrl 8bc7ea61b9 Show git hash in version string at top left corner of window 2013-09-28 21:30:17 +02:00
proller cfe6eaa66b Use cached "weather" setting 2013-09-17 02:57:36 +04:00
proller 62bc5331aa Fog depend on humidity 2013-09-17 02:43:24 +04:00
Kahrl 3c4734d69a Change mainmenu texture handling + small misc changes
Texture names must now be escaped in formspec elements image[],
background[], image_button[], image_button_exit[].

Instead of special-case handling of texture loading (and unloading
which was missing) in guiFormSpecMenu.cpp, use the newly created
ISimpleTextureSource interface which is a minimal subset of
ITextureSource. There is an implementation of this interface
used by GUIEngine (MenuTextureSource).

Fix an off-by-one bug in unescape_string; it caused requests for a
texture called "\0".
2013-09-11 00:08:56 +02:00
sapier 7935044820 Fix selectionbox not honoring anaglyph mode 3d distortion 2013-09-05 00:57:09 +02:00
Kahrl 1ad9365d34 Fix enable_fog = false not having any effect when shaders are enabled 2013-09-03 13:23:30 +02:00
Kahrl 4e1f50035e Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenu 2013-08-14 21:03:33 +02:00
Kahrl c8930850e3 Remove farmesh 2013-08-13 09:25:13 +02:00
Novatux 383153419b Add texture pack selection to main menu 2013-08-04 16:52:30 +02:00
Perttu Ahola c50c9a10f1 Fix and improve view range tuner 2013-08-03 18:46:18 +03:00
Esteban I. Ruiz Moreno c6cb97e693 Make bumpmapping compatible with irrlicht 1.8 2013-07-31 19:35:28 +02:00
proller 3aedfac968 Weather support 2013-07-27 23:21:48 +04:00
PilzAdam cba90d4441 Make range of tools configureable 2013-07-20 20:37:59 +02:00
PilzAdam c8bd2ae11c Dont play digging sound if not digging 2013-07-09 02:42:05 +02:00
RealBadAngel 3f6f327cb9 Add texture bumpmapping feature. 2013-07-04 02:36:32 +02:00
sapier 967121a34b Replace C++ mainmenu by formspec powered one 2013-07-02 19:58:20 -04:00
Kahrl 8161ab573f Remove texture atlas / AtlasPointer, rename getTextureRaw to getTexture 2013-07-02 03:03:10 +02:00
arsdragonfly 4bbb78a99b Fix i18n of some strings. 2013-07-02 00:13:50 +00:00
proller f960c3be31 Add support for IPv6
Two new configuration options are added:
     - "enable_ipv6" to enable/disable the overall use of IPv6
     - "ipv6_server" to enable/disable the use of IPv6 sockets when running
       a server (when "enable_ipv6" is enabled)
2013-06-23 11:31:22 +04:00
PilzAdam 81c8b404e7 Play placing sound only if place prediction was successful 2013-06-19 21:42:12 +00:00
PilzAdam 9b6f1d647c Dont dig or place nodes if interact priv is missing (clientside) 2013-06-19 21:42:12 +00:00
PilzAdam 53066024f6 Add drowning 2013-06-19 15:47:00 +00:00
PilzAdam 7a58c1d4ca Reset dig_time when switching to a tool that cant dig the current node 2013-06-13 13:34:48 +00:00
Kahrl 21d6b39fd7 Enable word wrapping in profiler IGUIStaticText (freetype needs this) 2013-06-13 14:32:53 +02:00
PilzAdam 2cdf0ff4ab Play player_damage.ogg when recieving damage and additionally play player_falling_damage.ogg when recieving falling damage 2013-06-12 20:27:06 +00:00
Esteban I. Ruiz Moreno 7cb5217255 Close console when it loses focus but it is still on screen 2013-06-05 21:14:14 +02:00
Kahrl 7721948a2f Generate debug HUD text with ostringstream instead of snprintf.
This should fix #730.
2013-06-01 01:50:08 +02:00
sapier efc75db764 Bugfix: Update formname on showing new formspec while already one shown 2013-05-26 01:45:46 +02:00
Kahrl 96fe1de832 Add ObjectRef.hud_set_hotbar_itemcount and add TOCLIENT_HUD_SET_PARAM 2013-05-26 00:23:33 +02:00
PilzAdam 865f380c91 Predict param2 of facedir nodes and attachment of attached_node nodes 2013-05-24 02:10:03 +02:00
PilzAdam 3e2efdf18a Add a little animation when changing the wielded item 2013-05-20 01:09:41 +02:00
kwolekr f577facf79 Fix regression of world loading caused by 81c863ac 2013-05-19 12:07:00 -04:00
Esteban I. Ruiz Moreno 822723c246 Add mouse_sensitivity option 2013-05-13 17:39:16 +02:00
Zeg9 bda62bd3bf Add progress bar to item visuals preloading 2013-05-13 17:08:51 +02:00
PilzAdam 782d06be46 Fix memory leak by dropping sky 2013-05-10 19:12:24 +02:00
Zeg9 81c863ac4d Add clouds to all loading screens and better progress handling 2013-05-10 15:04:21 +02:00
Zeg9 0913287578 Add progress bar and clouds to loading screen 2013-05-08 20:26:43 +02:00
ShadowNinja a031a15487 Don't predict placement of nodes if they would replace a non buildable_to node 2013-05-03 17:03:25 +02:00
Kahrl 777ac58f85 Predict wallmounted param2 during node placement prediction.
Also clean up the_game a bit: move node placement prediction to a
separate function.
2013-05-03 17:03:25 +02:00
kwolekr d3f0ce6224 Generalize hud_builtin_enable into hud_set_flags 2013-04-25 19:37:36 -04:00
Diego Martínez e703c5b81f Added support to disable built-in HUD elements 2013-04-24 17:28:00 +03:00
Diego Martínez 9894167bbf Added offset support for HUD items 2013-04-23 09:34:11 +03:00
Diego Martínez 7c37b1891a Added support for alignment in HUD items 2013-04-23 09:34:10 +03:00
kwolekr 666aae3593 Split HUD code off to hud.cpp, make into a class, extensive Lua HUD modification 2013-04-18 02:19:31 -04:00
Jonathon Anderson 49f6e347f0 Lua HUD 2013-04-18 02:14:33 -04:00
sapier 10502b59bc addon extended resource accounting 2013-04-07 23:38:22 -04:00
sapier cd27c8ef5d replace Server smart pointer with conventional one to gain control over dtor call order 2013-04-07 22:42:36 -04:00
khonkhortisan 1586cdac53 unkn own block -> unkn own node 2013-04-05 15:57:39 +02:00
PilzAdam 5e7e0347cd Add different place sound for nodes 2013-03-29 20:14:18 +01:00
Jeija e1ff5b1361 Allow spawning particles from the server, from lua
Spawn single particles or make use of ParticleSpawner for many randomly spawned particles.
Accessible in Lua using minetest.spawn_particle and minetest.add_particlespawner.
Increase Protocol Version to 17.

Conflicts:
	src/clientserver.h
2013-03-23 23:16:29 +01:00
kwolekr d31f07bd4b Fix most warnings, re-fix MSVC compile error 2013-02-26 01:57:59 -05:00
Sfan5 6d0ea26c2d Update Copyright Years 2013-02-24 20:15:24 +01:00
PilzAdam 497ff1ecd6 Change Minetest-c55 to Minetest 2013-02-24 18:49:03 +01:00
RealBadAngel 4d73d99ebc Add sound volume controls to ingame menu 2013-02-23 16:01:35 +01:00
Jeija 365c169b43 Disable placement prediction for nodes that use on_rightclick 2013-02-19 20:02:40 +01:00
PilzAdam 9f1ae4084d Enable multiline signs 2013-02-12 19:37:25 +01:00
Jeija c1fee78e85 Place block when holding sneak while right-clicking nodes with formspec 2013-01-28 00:44:42 +04:00
PilzAdam c691d619c2 Bugfix: else repeat_rightclick_timer = 0; 2013-01-14 21:38:40 +01:00
Jeija 61f5ca6b16 Add particles 2013-01-14 15:27:00 +01:00
PilzAdam 8aa190606e Disable all HP handling if enable_damage is false 2013-01-07 18:39:45 +01:00
sapier 0b1d09ff4f Fix buttons not working for Lua-triggered formspecs 2013-01-07 19:00:33 +02:00
PilzAdam 615fd498bc Fix typo doubletab -> doubletap 2013-01-04 20:04:48 +01:00
PilzAdam 82fd83fd12 Switch to fly mode if spacebar is doubleclicked
Can be turned off in the key change GUI or in minetest.conf via doubletab_space
2013-01-04 18:51:38 +01:00
Jeija b50da63852 Repeated right clicking when holding the right mouse button
Configure using repeat_rightclick_time in minetest.conf
2013-01-04 18:33:53 +01:00
PilzAdam d2b1210376 Adjust the maximum alpha of the red hurt screen 2013-01-03 16:15:46 +01:00
Jeija a27cdf16f4 Tilt camera on player damage (tweaked by PilzAdam) 2013-01-03 15:16:46 +01:00
PilzAdam 8493979d86 Replace constant red hurt screen with fade out red 2013-01-02 23:06:17 +01:00
sapier da9707950e Add TOCLIENT_SHOW_FORMSPEC to display formspecs at client from lua 2013-01-02 20:59:37 +02:00
Esteban I. Ruiz Moreno 578ece8dd0 Add selectionbox_color, crosshair_color, and crosshair_alpha options 2012-12-27 13:10:03 -03:00
PilzAdam 52ba413185 Only fly through walls in noclip mode wich requires the noclip privilege 2012-12-11 16:44:13 +01:00
Perttu Ahola fd9e226b79 Update GUI texts 2012-12-06 21:02:02 +02:00
Jürgen Doser 7d2f0d7b1b draw gui later. this fixes the hotbar disappearing while rendering to texture. 2012-12-06 20:43:17 +02:00
Perttu Ahola 804a7875a2 Smooth day-night transitions 2012-12-02 18:02:45 +02:00
Perttu Ahola cd1f604ffe Handle day-night transition in shader and make light sources brighter when shaders are used 2012-12-02 14:24:58 +02:00