Commit graph

147 commits

Author SHA1 Message Date
Yamagi Burmeister
11ad28b711 Unify gl_mode and sw_mode in r_mode. 2018-01-09 14:03:45 +01:00
Yamagi Burmeister
ae9d7e397f Rename gl_*scale to r_*scale. 2018-01-09 09:19:39 +01:00
Yamagi Burmeister
2c149eda99 Call te soft renderer just "Software" and not "SDL Soft". 2017-12-17 09:59:37 +01:00
Denis Pauk
4f9833153f Fix background under cinematic and gamma values 2017-12-11 23:33:19 +02:00
Denis Pauk
c43e944a3d Rebase soft render from https://icculus.org/quake2/
* deleted asm code
* added support 2k+ resolutions
* SDL2 support
2017-12-11 23:33:19 +02:00
Yamagi
7b6340ddff Merge pull request #245 from 0lvin/back_button_as_escape
Add support for use controller back button as ESC
2017-10-22 18:19:56 +02:00
Yamagi Burmeister
185e89722a Don't unqueue OpenAL raw samples if OpenAL isn't initialized.
This fixes a crash at menu entry if a cinematic is playing when the
game is build with OpenAL support, but s_openal is set to 0.
2017-10-22 17:58:31 +02:00
Denis Pauk
61da3dffd1 Add support for use back button as ESC, as example first button in SDL_GAMECONTROLLERCONFIG 2017-10-14 18:58:19 +03:00
Denis Pauk
e7199f5c41 Add support for joystick/gamecontroller(axis/buttons/hats)/haptic.
By default joystick "in_joystick" and haptic feedback haptic ("joy_haptic_magnitude")
are disabled. And can be anabled by menu in options section. Joystick/Haptic
options are showed only if have found any.

By default axis is mapped in such way:
 * Left X(joy_axis_leftx): sidemove
 * Left Y(joy_axis_lefty): forwardmove
 * Right X(joy_axis_rightx): yaw
 * Right Y(joy_axis_righty): pitch
 * Trigger Left(joy_axis_triggerleft): triggerleft
 * Trigger Right(joy_axis_triggerright): triggerright

Joystick sensitivity varibales:
 * joy_yawsensitivity,
 * joy_pitchsensitivity,
 * joy_forwardsensitivity,
 * joy_sidesensitivity,
 * joy_upsensitivity.

For change joystick axis mapping to gamecontoller axis export SDL_GAMECONTROLLERCONFIG before run,
e.g.: SDL_GAMECONTROLLERCONFIG='<joystick guid>,<joystick name>,leftx:a0,lefty:a1,rightx:a2,righty:a3,'

Add menu navigation by dpad and thresholds:
 * Add threshold for axis (based on ioquake3), 0.15 by defaults.
 * Navigate in menus by dpad (up/down, left/right, any joystick button for enter).

Defaults:
 * in_joystick "0.0"
 * joy_haptic_magnitude "0.0"
 * joy_axis_leftx "sidemove"
 * joy_axis_leftx_threshold "0.15"
 * joy_axis_lefty "forwardmove"
 * joy_axis_lefty_threshold "0.15"
 * joy_axis_rightx "yaw"
 * joy_axis_rightx_threshold "0.15"
 * joy_axis_righty "pitch"
 * joy_axis_righty_threshold "0.15"
 * joy_axis_triggerleft "triggerleft"
 * joy_axis_triggerleft_threshold "0.15"
 * joy_axis_triggerright "triggerright"
 * joy_axis_triggerright_threshold "0.15"
 * joy_forwardsensitivity "1.0"
 * joy_pitchsensitivity "1.0"
 * joy_sidesensitivity "1.0"
 * joy_upsensitivity "1.0"
 * joy_yawsensitivity "1.0"
2017-09-16 14:23:12 +03:00
Yamagi Burmeister
503ab368a2 Decouple horplus and fov in the video menu.
Until now the video menu enforced:

* fov set to 90 and horplus set to 1
* fov set to something other than 90 and horplus to 0

If the user hat configured another configuration through the console the
menu would reset it, even if only unrelated changes are applied. With
this change horplus is ignored by the menu and only fov is altered. The
rationale behind this is that most users want horplus enabled and all
others can disable it through the console.

This is believed to fix issue #225.
2017-08-30 15:05:02 +02:00
Yamagi Burmeister
7f46d808d2 Second part of Developer_searchpath() removal.
This was forgotten in the first commit. :(
2017-08-07 18:10:32 +02:00
Yamagi Burmeister
ff7772f11d Don't let baseq2/pak0.pak/maps.lst shadow baseq2/maps.lst.
While here reimplement the same hack for baseq2/players, lost somewhere
on the way. This is just another searchpath f*ckup. For some reasons
paks have a higher priority than plain directories. We do not want that
for the maps.lst and players/ since id Software decided to put updated
versions of them directly into baseq2/...

This closes issue #217.
2017-08-02 20:08:05 +02:00
Yamagi Burmeister
86fd714788 Allow to choose the fullscreen mode through the menu.
There're 3 possible values:
* no -> vid_fullsceen == 0
* keep resolution -> vid_fullscreen == 1
* switch_resolution -> vid_fullscreen == 2
2017-08-01 18:32:44 +02:00
Daniel Gibson
1da7ff5594 Fix Jennell Jaquays' name in credits and quit screen
the latter is done by identifying the baseq2 pics/quit.pcx in LoadPCX()
and changing some pixels
2017-06-12 18:32:56 +02:00
Yamagi Burmeister
6119591c6a Fix build with WITH_OPENAL disabled.
This closes issue #192.
2017-05-13 16:53:20 +02:00
Yamagi Burmeister
eb2a11f0b2 Unqueue raw samples when the menu is entered during cinematic playback
When the client is paused (either explicit or by entering the menu or
console) the cinematic is paused, too. Therefor no more sound samples
are generated and added to the playback queue, the existing samples are
played over and over again. Until now these samples weren't hearable,
because OpenAL marked them as processed and AL_StreamUpdate() removed
them from OpenALs playback queues. This changed in the previous commit,
now the stay in OpenALs queue and are hearable.

Fix this by calling AL_UnqueueRawSamples() when the menu or console is
entered during cinematic playback.
2017-04-22 09:50:52 +02:00
Yamagi Burmeister
0608eed7c3 Fix order of the video menu items.
The internal order of the items is determined by Menu_AddItem() and
not the y position. Without this change the cursor didn't jump from
item to item, but from the mode list box to the aspect list box,
skipping the brightness slider.
2017-04-11 14:54:22 +02:00
Yamagi Burmeister
b48108cf37 Add the renderer selection back to the video menu.
Remove the 'viewsize' slider to free one row. Use this row for the new
renderer selection. While at it reorder the items.
2017-04-10 23:15:36 +02:00
Yamagi Burmeister
df86c46e57 Several adjustments to the visual impression.
- Bump vid_gamma to 1.2 in both GL1 and GL3. A default value of 1.0 is
  too dark.
- Lower gl3_overbrightbits to 1.3, the previous value of 1.5 was too
  bright. This can be seen in later units, for example on mine1 some
  textures blended into white.
- Lower gl3_particle_size to 40. A value of 60 may be okay, but with
  gl3_particle_fade_factor 1.2 the particles take up too much screen
  estate in close range combat.

With this changes GL3 looks (at least for me) nearly the same as GL1
rendered through the removed multitexturing path.
2017-04-10 19:28:46 +02:00
Daniel Gibson
c4c21075a4 vid_listmodes command to show video modes, add 720p mode
the very unusual 1280x854 mode has been replaced with the more common
1280x720 ("720p").
2017-02-25 20:33:17 +01:00
Daniel Gibson
f13e15e561 ref_gl.so builds and works (on Linux, with Makefile)
still dirty, seems to use some symbols from client directly, which will
not work on Windows.
2017-02-19 05:53:56 +01:00
Yamagi Burmeister
af957c5e36 Fix a small buffer overflow when disabling shuffle playback
Repeat 10 times:
 - strcat() is evil
 - strcat() is evil
 ...

While here fix another small inconsistency: Vorbis playback should
stop when switching 'shuffle' on.

The overflow was reported by @tomgreen66 in pull request #168.
2016-12-28 17:23:51 +01:00
Yamagi Burmeister
9af1af55a5 Allow reading player models from pak / pk2 / pk3 / zip files.
This fixes #119. As always I've chosen the least invasive way to solve
this problem. Trying to open players/$model/trix.md2 is hack, but solves
the problem without changes to filesystem.c and it's API.
2016-08-16 19:58:22 +02:00
Simon McVittie
92668ca6b1 Fix spelling errors detected by lintian
Based on a patch by Fabian Greffrath against an earlier version of
yquake2.
2016-07-01 09:38:54 +01:00
svdijk
354d2ff789 Menu: Some alignment fixes for scaled menus 2015-12-13 11:48:02 +01:00
svdijk
8a9741dd89 Videomenu: Minor optimization to GetCustomValue for subsequent calls 2015-11-16 22:23:15 +01:00
svdijk
8d7f4a74e6 Videomenu: Simplify uiscale initialization 2015-11-16 19:26:46 +01:00
svdijk
a6b3bfd35a qmenu.c: Some whitespace changes for consistency. 2015-11-16 19:18:50 +01:00
svdijk
de8c50bcb9 Videomenu: Make the "custom" value handling less error prone. 2015-11-16 19:11:00 +01:00
svdijk
1804fad355 Videomenu: Add integer scaling options up to 6x 2015-11-09 22:14:45 +01:00
svdijk
e92b54990d Videomenu: Also include crosshair_scale in the ui scale option 2015-11-09 22:09:48 +01:00
svdijk
8d9cdc0768 Videomenu: Limit the ui scale option to integer values
Fractional values look ugly. If people really want this they can set this from the console, we won't "advise" it from the menu.
2015-11-08 18:20:54 +01:00
svdijk
0cdf927d3e Default the various scale variables to "-1" (automatic) 2015-11-08 12:48:27 +01:00
svdijk
64d4e8e619 Videomenu: Change the HUD scale option to a more generic UI scale option 2015-11-08 12:46:38 +01:00
svdijk
dae3de4b73 Videomenu: Don't mess up custom hudscale setting upon "apply" 2015-11-08 11:15:36 +01:00
Daniel Gibson
fd31e0060d Remove CD music enable box and introduce OGG volume slider in menu
The CD music enable / disable box wasn't used by many users for two
reasons: CD music playback needs a CDROM drive with analog output.
Such drives aren't available for at least 10 years. And CD music is
unsupported with SDL2. A OGG volume slider is much more usefull.
2015-11-01 17:45:09 +01:00
Yamagi Burmeister
7456daf65f Do not display baseq2 savegames in mods / addons
The savegame list is generated by calling FS_FOpenFile() for each
possible savegame name. When a file handle is returned the savegame
exists, otherwise the savegame slot is empty. But FS_FOpenFile()
searches in every directory known to the VFS. If a savegame file
isn't found in $moddir but in baseq2, the file in baseq2 is opened
and a baseq2 savegame is displayed in the mods / addons savegame menu.

The fix is compromise between a clean solution and invasiveness:

- Refactor FS_FOpenFile() to include FS_FOpenFileRead(). FS_FOpenFile()
  was used only to open read only files, limit its's possibilities to
  do exactly that.
- Introduce a new flag "gamedir_only" to FS_FOpenFile(). When true
  only the gamedir directories are searched and not other directories
  like baseq2.
- Change all callers to FS_FOpenFile()s new signature.
- Use the new gamedir_only flag to limit the searchpath for savegames
  to the gamedir.
2015-10-25 16:44:22 +01:00
David Reid
33ad02b0d0 A couple more fixes to menu scaling.
Relates to issue #87. This should be the last commit for the menu scaling.
2015-10-22 22:06:48 +10:00
David Reid
dc53635f46 Fix alignment in the Multiplayer -> Player Setup menu.
Relates to issue #87.
2015-10-22 21:41:58 +10:00
David Reid
585e7dbfda Fix alignment in Multiplayer -> Join Network Server -> Address Book menu.
Relates to issue #87.
2015-10-22 21:04:45 +10:00
David Reid
490c5c15a3 Fix alignment in the key bindings menu.
Relates to issue #87.
2015-10-22 20:52:41 +10:00
David Reid
c623d5639c A bunch of alignment fixes to menus.
So far, fixed menus include:
 - Multiplayer
 - Multiplayer -> Start Network Server
 - Multiplayer -> Start Network Server -> Deathmatch Flags
 - Options
 - Video Options

Related to issue #87.
2015-10-22 20:36:41 +10:00
Yamagi Burmeister
7ddbedc9c5 Enable hudscaling by default
The default value is now -1 aka "auto". If someone wants to disable it
hew can do so in the menu.
2015-06-06 20:56:39 +02:00
Yamagi Burmeister
50ad12ce13 Add a video menu entry to set the HUD scaling factor 2015-06-06 20:45:05 +02:00
Yamagi Burmeister
9bda84299c Mark all keys as "up" when the refresher is restarted
This is a less intrusive variant of the old Key_ClearState() function.
When the refresher is restarted or the menu is left, this function is
called to mark all keys as "up". That works around some corner cases
where a key is still marked "down" and thus the first stroke is detected
as a repetition.
2015-01-28 20:55:28 +01:00
Yamagi Burmeister
db10e0db87 Untangle the input system from the refresher
In the old times the refresher was a stand alone DLL. For performance
reasons and to avoid laggy input parts of the input system were
implemented in this DLL. Now that the renfresher is part of the main
binary and initialized at client startup we can remove most of the
abstractions between input system, refresher and client. Also the
input system can be treated as a normal subsystem.

Changes:
- Untangle the VID_* stuff and the IN_* stuff. The functions
  called by function pointers in in_state are now called directly
  and 'struct in_state' was removed.

- Remove input.h and rename the appropriate backend functions.
  There's no longer a need for an abstraction layer between the
  input backend and the input frontend.

- Move input initialization and shutdown into CL_Init(), like it's
  already done for all other subsystems.

- Remove Key_ClearStates(). I'm pretty sure that's a left over from
  the old Win 9x backends and unnecessary.

- General cleanup.
2015-01-16 18:23:39 +01:00
Yamagi Burmeister
47634e64e8 Rename the 'ogg volume' functions to 'ogg enable'
These functions never set the OGG volume, the just enables or disabled
OGG playback. Rename them to match their purpose.
2014-10-25 09:40:13 +02:00
Yamagi Burmeister
4d5cb5686d Rename the "cdvolume" functions to "cdenable"
Historicaly this functions were used to adjust the cd music volume. In
YQ2 they were converted to enable or disable the cd music. Change their
name to match their current purpose.
2014-10-25 09:31:44 +02:00
Yamagi Burmeister
3fc549ca42 Implement scaling of several non-menu elements
- The loading plaque
- The pause plaque
- The "Quit Screen"
2014-06-24 19:39:18 +02:00
Yamagi Burmeister
af70f276a9 Implement scaling of the menu
This commit has some drawbacks:
- It's rather hacky. The Quake II menu is crap and was never intended
  to be scaled. My approach was to add scaling to most of the generic
  functions and handle all the special cases in the non generic parts
  of the menu. A better solution would require to rewrite at least
  parts of the menu. And like it's said in qmenu.c: I won't do that.
- Some menu elements are aligned to the right, others to the left. In
  many places magic numbers are used to align elements by hand. This
  makes it very hard to impossible to implement a scaling logic which
  works in all situations. With this approach most menus look good up
  to at least a scaling factor of 3. Especially the "Player Setup"
  menu is very problematic at small disalignements are unavoidable.

Please note, that only the menu system itself is scaled. Some elements
like the the "Quit Screen" or the loading plaque are still missing. They
will be done in a later commit.
2014-06-24 19:39:10 +02:00