Commit graph

3288 commits

Author SHA1 Message Date
terminx
107bb7a3fa Introduce "twalltype" for temporary uses of walltype where using wall_tracker_hook() would be invalid. This is similar to "tspritetype" and fixes a bunch of problems in the editor that cropped up when changing the tracker sanity checks to an assert that only exists in debug builds (branching upon any write to a sprite, sector or wall had an unacceptable impact on performance).
git-svn-id: https://svn.eduke32.com/eduke32@4903 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:56:38 +00:00
terminx
364cf15c4f Questionable CON changes and optimizations. <3
git-svn-id: https://svn.eduke32.com/eduke32@4902 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:56:10 +00:00
terminx
64943543a4 Place the current loading percentage into RETURN for EVENT_DISPLAYLOADINGSCREEN.
git-svn-id: https://svn.eduke32.com/eduke32@4900 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:55:36 +00:00
terminx
4911b9a949 Revise C++ structure trackers for performance and introduce "tspritetype", for temporary sprites or other usages where using the trackers would be invalid or undesired. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4898 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:55:07 +00:00
terminx
655bbed3b1 Faster/better optimized access to game structures from C-CON.
git-svn-id: https://svn.eduke32.com/eduke32@4897 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:54:11 +00:00
terminx
1f2705c4bc Clean up/refactor a few gamevar related functions based on building as C++/C99 and some interesting articles I read about how GCC and Clang optimize switches. Worth a few FPS here.
git-svn-id: https://svn.eduke32.com/eduke32@4895 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:53:44 +00:00
terminx
c591711fe8 MSVC C++ build fixes. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4890 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:52:15 +00:00
terminx
9ab6ab7139 Fix up weapon switching deficiencies
git-svn-id: https://svn.eduke32.com/eduke32@4888 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:51:17 +00:00
hendricks266
0699a44e4e When using search paths detected from a Megaton installation, also use the SC-55 oggs included with it.
git-svn-id: https://svn.eduke32.com/eduke32@4887 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-08 15:15:10 +00:00
hendricks266
e3de98e2ae Clean up autodetected game install search paths on all platforms that use them.
This should prevent Lunar Apocalypse from becoming Nuclear Winter with Megaton on Linux and Mac.

git-svn-id: https://svn.eduke32.com/eduke32@4886 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-08 15:14:47 +00:00
hendricks266
1f3ce84585 Menus: Disable the spinning nuke icon back button on Android.
git-svn-id: https://svn.eduke32.com/eduke32@4885 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-08 15:14:18 +00:00
hendricks266
589c993c39 Implement UserMapHacks.
git-svn-id: https://svn.eduke32.com/eduke32@4884 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-08 15:14:00 +00:00
helixhorned
b5bb86b8e2 Mapster32: make sprite duplication examples in m32script_ex.map work again.
- Work around a sequencing issue (assignment of searchstat) in
  M32_DrawRoomsAndMasks()
- When having sprites highlighted and changing shade, since r1943 change
  every highlighted sprite's shade if one of them is aimed at. With this
  revision, if SHIFT is pressed while doing that, only change the aimed at
  sprite's shade
- a.m32: Use 'break' from a state instead of 'return'. The former may be
  "sticky" in a way that is not intended. Needs to be debugged later.
- Update instructions in m32script_ex.map

DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@4880 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-06 19:56:41 +00:00
helixhorned
a9cb38dbcf game.c: revert changes of r4861 ("consult g_mirrorCount instead of gotpic[]").
git-svn-id: https://svn.eduke32.com/eduke32@4879 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-05 21:54:31 +00:00
helixhorned
8f1df579e1 Lunatic: in control/lua, sync ALLOWED_VIEWTYPE with change from r4814 (allow 2).
DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@4878 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-05 21:54:28 +00:00
helixhorned
17fab4d8ac Cleanup of various engine functions.
- factor out calculation of player-relative and screen+clipped-player-relative
  coordinates into get_rel_coords() and get_screen_coords(), respectively
- the usual beautification stuff, especially since we're now on C99

git-svn-id: https://svn.eduke32.com/eduke32@4875 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:45:00 +00:00
helixhorned
b0c48eec25 CON: always return non-negative values from 'clipmove' and related.
Previously, the C function clipmove() returned negative values when hit a
wall (32768+wallnum) or sprite (49152+spritenum) because internally,
these values were encoded into a *signed* 16-bit integer. This made no
difference to C code using it, since it always proceeded by bit checks,
but was inconsistent with documentation on CON 'clipmove' on the wiki.

The following commands are affected too, since they use the value returned
by clipmove(): 'clipmovenoslide', 'movesprite'. Also, the value of
actor[].movflag ('htmovflag' from CON).

Also, fix 'clipmove*' in LunaCON and add lunatic/test/checknearwall.con
as an example of how to implement a being-close-to-a-wall checker as
requested in
http://forums.duke4.net/topic/7869-determining-closeness-to-a-wall/

git-svn-id: https://svn.eduke32.com/eduke32@4874 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:44:58 +00:00
helixhorned
2daa44ca6a engine.c: fix clipmove() against floor-aligned sprites.
Introduced in r3207. Oops.

git-svn-id: https://svn.eduke32.com/eduke32@4873 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-30 20:05:22 +00:00
helixhorned
61f7c9e30f sounds.c: don't crash S_PlayMusic() if passed null pointer for 'fn'.
This may happen if no title/end music is defined from CON.
Thanks to Zaxtor for the bug report.

git-svn-id: https://svn.eduke32.com/eduke32@4871 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 22:12:40 +00:00
hendricks266
d73c7f1afe Menus: Amend r4862 so that touch devices, which do not display the crosshair as a cursor, are not completely prevented from using touch input by the lack of a crosshair tile.
git-svn-id: https://svn.eduke32.com/eduke32@4870 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:36:09 +00:00
hendricks266
fcbd0737bb Menus: Fix the Screen Size slider so that it works properly after the screen size has been modified in-game with [-]/[+].
git-svn-id: https://svn.eduke32.com/eduke32@4869 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:35:56 +00:00
hendricks266
aa9f767052 Menus: Fix selecting "None" for Anisotropy.
git-svn-id: https://svn.eduke32.com/eduke32@4868 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:35:44 +00:00
hendricks266
3bc47565a3 Menus: Fix opening a MenuEntryOptionList when the option's value is "Custom".
git-svn-id: https://svn.eduke32.com/eduke32@4867 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:35:32 +00:00
hendricks266
6797e8a3d5 Menus: Convert MenuRange*_t's "displaytype" field to "flags", add a flag to enforce clamping to the defined intervals, and apply this flag to the Screen Size slider.
git-svn-id: https://svn.eduke32.com/eduke32@4866 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:35:20 +00:00
hendricks266
a74317a104 Menus: When pressing left or right on a slider that has moved by the mouse to a position between the defined intervals, do not round to the nearest interval and then increment or decrement. Instead, check if rounding will satisfy the movement before moving further.
git-svn-id: https://svn.eduke32.com/eduke32@4865 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:35:07 +00:00
hendricks266
571a44cd8d Menus: Mouse controls now respect MenuEntry_t's disabled flag.
git-svn-id: https://svn.eduke32.com/eduke32@4864 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 21:34:54 +00:00
helixhorned
d7b88df6af actors.c: replace hard-coded list with missing check for SFLAG_NODAMAGEPUSH.
In A_RadiusDamage(). The code snippet that is disabled for such actors
increases the damaged actor's .xvel by (4 times the) damage amount and
is responsible for the strange effect of enemies becoming faster TOWARDS
the player on being hit with an RPG frontally.

Thanks to Fox for a keen eye.

git-svn-id: https://svn.eduke32.com/eduke32@4863 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 20:57:13 +00:00
helixhorned
7033205fcf Menus: disable mouse pointer if CROSSHAIR is void. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4862 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 19:48:20 +00:00
helixhorned
1734e0db53 In G_HandleMirror(), consult g_mirrorCount instead of gotpic[] w/ MIRROR.
DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@4861 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 15:40:06 +00:00
helixhorned
c320dba4d0 Lunatic translator: add stand-alone option -fnames, generating names.h file.
git-svn-id: https://svn.eduke32.com/eduke32@4860 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 15:40:04 +00:00
hendricks266
ec3a73efd2 Fix playing end-of-episode ANMs.
git-svn-id: https://svn.eduke32.com/eduke32@4859 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 20:39:43 +00:00
hendricks266
4bc4735480 If you save over an autonamed savegame and change the name, don't overwrite your edit with another autofill.
git-svn-id: https://svn.eduke32.com/eduke32@4858 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 20:39:30 +00:00
hendricks266
8a68f2d5a9 Menus: Enumify the "status" parameter of M_MenuText into MenuTextFlags_t.
git-svn-id: https://svn.eduke32.com/eduke32@4857 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:37:39 +00:00
hendricks266
7a1e94440a Menus: Implement mouse/touch/pointer controls for all widgets.
git-svn-id: https://svn.eduke32.com/eduke32@4856 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:37:27 +00:00
hendricks266
6ac1850482 Menus: Replace the "disabled" member of MenuEntry_t with "flags" so that the other 31 bits can be utilized.
git-svn-id: https://svn.eduke32.com/eduke32@4855 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:37:12 +00:00
hendricks266
4f9831d45c Menus: Disable normal left-click/touch menu functionality when the mouse is active.
git-svn-id: https://svn.eduke32.com/eduke32@4854 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:36:58 +00:00
hendricks266
598e33319c Add the necessary plumbing to sdlayer to detect mousedown, mouseup, and dragging.
git-svn-id: https://svn.eduke32.com/eduke32@4853 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:36:43 +00:00
hendricks266
bfb3614b92 Introduce preprocessor token EDUKE32_TOUCH_DEVICES that covers both Android and iOS, and replace selected instances of __ANDROID__ with it.
git-svn-id: https://svn.eduke32.com/eduke32@4852 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:36:14 +00:00
hendricks266
b010dfd2ee Menus: Add scrollbars to the FileSelect menu type.
git-svn-id: https://svn.eduke32.com/eduke32@4851 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:35:48 +00:00
hendricks266
1c3043bf50 Tabs to spaces in menus.c.
git-svn-id: https://svn.eduke32.com/eduke32@4850 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:35:34 +00:00
hendricks266
399c062326 Refactor menus in preparation for touch functionality.
git-svn-id: https://svn.eduke32.com/eduke32@4849 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 18:35:21 +00:00
helixhorned
cb45393b3a Mapster32: disable all loop checks as they spam the log too much. DONT_BUILD.
The one introduced with r4569.

git-svn-id: https://svn.eduke32.com/eduke32@4848 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 17:17:53 +00:00
helixhorned
2494c56768 Propagate 'smoothratio' to scenes drawn from the position of a camera.
That is, make interpolation work properly there -- both when 'using' a
VIEWSCREEN and when rendering the scene onto a TILE_VIEWSCR. This makes
a difference only if the camera is in a moving sector.

git-svn-id: https://svn.eduke32.com/eduke32@4847 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 17:17:52 +00:00
helixhorned
8024273aca Prettify viewscreen turned to STATIC in breakable cameras mode. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4845 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 18:05:41 +00:00
helixhorned
f3532f8a34 C-CON: fix 'writearraytofile' for 64-bit platforms.
git-svn-id: https://svn.eduke32.com/eduke32@4844 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:30:01 +00:00
helixhorned
51fe706907 Tweak the behavior of viewscreens to what is more logical IMO.
- At a given time, at most one viewscreen may display TILE_VIEWSCR, namely
  that one which is g_curViewscreen
- sync kinds of distance to compare against VIEWSCREEN_ACTIVE_DISTANCE (was
  Manhattan vs. dist(), now both the latter)
- fix resetting to VIEWSCREEN tile when player is greater from it than that
  distance. When the player is closer to it again, it is *not* reset to
  TILE_VIEWSCR.
- more sync'd g_curViewscreen and sprite[i].yvel (for 'i' being the viewscreen
  sprite)

Note: in a multiplayer context, this needs to be thought about once more.

git-svn-id: https://svn.eduke32.com/eduke32@4843 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:30:00 +00:00
helixhorned
a1091233d2 CON: allow passing more than one flag to the 'spriteflags' directive.
These will be bitwise-OR'd.

git-svn-id: https://svn.eduke32.com/eduke32@4841 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:58 +00:00
helixhorned
2eff7bf6ce gamedef.c: factor out some dup'd code into C_BitOrNextValue(), C_FinishBitOr().
git-svn-id: https://svn.eduke32.com/eduke32@4840 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:57 +00:00
helixhorned
b2e09b5a18 In C-CON build, prevent leak of gamevar/gamearray labels on savegame loading.
Also, rewrite the loops in Gv_Free() and Gv_Clear() in the plain fashion so
that they are correct even if the number of gamearrays exceeds the number of
gamevars.

git-svn-id: https://svn.eduke32.com/eduke32@4839 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:56 +00:00
helixhorned
7da543e4f0 cache1d.c: Revert changes in r4665 unrelated to unrolling, fixing oob write.
Specifically, we must make sure that dasizeof <= LZWSIZE (or so) in
c1d_{read,write}_compressed() (what the assertion in the last commit was about,
and is now redundant). This fixes saving of e.g. large gamearrays with the C-CON
build. Bump BYTEVERSION.

An alternative for setting dasizeof to 1 would be to factor it and keep dividing
as long as it's > LZWSIZE.

git-svn-id: https://svn.eduke32.com/eduke32@4838 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:55 +00:00