Commit graph

124 commits

Author SHA1 Message Date
Christoph Oelckers
a1a73ef2b3 - moved the initial C_InitConsole call into D_DoomMain
The only difference here were the size values on Windows but for this initial call they have been useless for a long time. When this code was written the console buffer still had a fixed width that needed to be set before adding any text.
2019-10-01 01:00:37 +02:00
Christoph Oelckers
9f15efc5f5 - also put the Windows system specific exit handlers into atexit's list
Again, these have no place in the game's own uninit code.
2019-10-01 00:51:14 +02:00
Christoph Oelckers
e7c388dccd - don't throw exceptions before the system isn't initialized
If the window cannot be opened this has no way to report the problem. In this case a message box is needed.
2019-10-01 00:42:21 +02:00
Christoph Oelckers
cfe89ef6e6 - created a new zmusic library which will eventually contain all the music playback code.
Currently all it contains are the MIDI sources and the MIDI devices, the rest needs to be reworked first.
2019-09-28 18:32:25 +02:00
Christoph Oelckers
66db894866 - split off all music code from s_sound.cpp 2019-08-23 17:15:19 +02:00
Christoph Oelckers
79ad3e6203 - define _WIN32_WINNT to 0x600 (Vista) in the CMake project instead of littering all files with inconsistent settings for the target version. 2019-07-14 16:55:01 +02:00
Christoph Oelckers
3030a6d389 - set Visual C++ compiler to use /permissive- mode and fixed the one error this generated.
This also means that Visual Studio 2015 is no longer supported as it has no proper standard conforming compile mode.
2019-06-20 20:25:34 +02:00
Christoph Oelckers
2766303cfc - consolidated the 3 atterm implementations.
Each platform had its own copy. Why?
2019-06-10 12:01:01 +02:00
Christoph Oelckers
0153c2aefa - use the Unicode version of GetCommandLine for the crash log. 2019-04-04 17:49:53 +02:00
alexey.lysiuk
025e50219f - fixed missing command line in crash reports
https://forum.zdoom.org/viewtopic.php?t=64149
2019-04-04 16:37:51 +03:00
Christoph Oelckers
714c656753 - set a Unicode capable font for the Windows console.
The default raster font only contains the OEM 437 code page which is quite useless.
2019-03-16 10:50:53 +01:00
Christoph Oelckers
78d0fa9269 - fixed Windows startup.
* the window class name was still ASCII, thanks to some totally pointless and ultimately dangerous type cast to LPCTSTR which rendered all type checks ineffective.
* use wWinMain instead of WinMain so that a Unicode argv gets created. For whatever reason, the ANSI startup leaves this variable empty.
* added a 'disablecrashlog' CCMD for Windows. It is a lot more useful with a debugger present to get the standard crash notification from the system which allows opening a debugger than the crash log and no option to open a debugger.
2019-02-17 10:10:41 +01:00
Christoph Oelckers
868ac5adf8 - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.
2019-02-14 22:23:33 +01:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
Christoph Oelckers
f6a91e1722 - moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this. 2019-01-31 19:38:04 +01:00
Christoph Oelckers
fa3312e2a9 - moved gamestate_t to g_game.h.
This made reviewing the code for accessing the global state hard, because the doomdef.h contains mainly constants, this particular item was the only thing in there that represents actual engine state.
2019-01-31 00:28:43 +01:00
Christoph Oelckers
a7746278a8 - a few remaining simple ones
This also removes a few pointless comments that popped up and consolidates setting a level's music into a subfuntion.
2019-01-28 01:25:52 +01:00
Christoph Oelckers
64595abe60 - moved main polyobject array into FLevelLocals and simplified the setup process to not depend on P_SpawnMapThing.
Since the SpawnedThings array is still available when polyobjects are spawned it makes no sense to create an expensive linked list in P_SpawnMapThing.
This can be done far better by scanning through the array again and collect all matching items in a second array.
2018-12-28 10:08:39 +01:00
Christoph Oelckers
467c73b2d7 - split P_SetupLevel so that the main part of it can be made part of the MapLoader class.
- allocate BlockNodes from the same memory arena as SecNodes.
2018-12-27 23:34:07 +01:00
alexey.lysiuk
8b46be7686 - print VM stack trace on startup abort exception
https://forum.zdoom.org/viewtopic.php?t=62650
2018-12-11 10:46:56 +02:00
Christoph Oelckers
bced30d1e3 - made CDoomError inherit from std::exception so that the main catch block can also deal with exceptions thrown by the STL.
- Also do not ignore empty exception messages as irrelevant. The only irrelevant exception type is CNoRunExit.
2018-11-23 10:18:52 +01:00
Christoph Oelckers
548ccb1df4 - removed some references to r_viewpoint in game code
Mainly to reduce number of search results.
2018-06-19 11:20:36 +02:00
alexey.lysiuk
e1e441091d - fixed potential crash on startup, Windows only
At least one version of Windows SDK (10.0.17134.0) has broken _pgmptr/_get_pgmptr()
It points to an empty string for multi-byte character set applications
GetModuleFileName() is now used instead regardless of compiler/toolchain
Added extra guard against unexpected program paths to avoid crashes

https://forum.zdoom.org/viewtopic.php?t=60598
2018-05-16 11:44:49 +03:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Christoph Oelckers
7589dfda25 - removed test and debug code. 2018-04-03 00:53:45 +02:00
Christoph Oelckers
1fc4c9801b - moved all GLDEFS parsing into a dedicated source file.
- split gl_postprocessshader.h in two so that the hardware independent part can be used by GLDEFS without pulling in all of OpenGL.
2018-04-02 12:28:20 +02:00
Rachael Alexanderson
d16ad3dcb5 - added I_FriendlyWindowTitle cvar, which takes the current game/mod name and uses it as a default window title. 2017-10-31 19:47:56 -04:00
Magnus Norddahl
e27e89b57d - Make sure a hung worker thread always crashes the application 2017-05-21 12:03:12 +02:00
Christoph Oelckers
9fc309d5b5 - stop the music when processing a fatal error. 2017-05-19 12:20:33 +02:00
alexey.lysiuk
8fbb5372b2 Fixed 32-bit Windows crash reporter
Restored old exception handling for 32-bit Windows executable
Tested on 32-bit Windows XP (previously exited without notification), 64-bit Windows 7 and 10 (previously deadlocked in system DLLs)
2017-05-10 11:34:48 +03:00
Christoph Oelckers
cd180d29c7 - block direct use of 'new' for DObjects.
This is to ensure that the Class pointer can be set right on creation. ZDoom had always depended on handling this lazily which poses some problems for the VM.
So now there is a variadic Create<classtype> function taking care of that, but to ensure that it gets used, direct access to the new operator has been blocked.

This also neccessitated making DArgs a regular object because they get created before the type system is up. Since the few uses of DArgs are easily controllable this wasn't a big issue.

- did a bit of optimization on the bots' decision making whether to pick up a health item or not.
2017-04-14 13:31:58 +02:00
Magnus Norddahl
0c9014b984 - move r_utility globals into r_viewpoint and r_viewwindow
- change r_utility functions to only work on FRenderViewpoint and FViewWindow
2017-03-11 23:28:07 +01:00
Christoph Oelckers
fec958cc0a - finally managed to get rid of the DWORD type.
This one was particularly nasty because Windows also defines a DWORD, but in Windows it is an unsigned long, not an unsigned int so changing types caused type conflicts and not all could be removed.
Those referring to the Windows type have to be kept, fortunately they are mostly in the Win32 directory, with a handful of exceptions elsewhere.
2017-03-10 19:46:22 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
c8db1f151e - fixed: All FNames inside actor classes need to be FNameNoInit or their constructor will overwrite them after copying the defaults. 2017-02-15 12:16:24 +01:00
Christoph Oelckers
d8ebbcfc08 - fixed: When loading a savegame the player class in the userinfo needs to be updated.
- fixed: Class pointers should not be added to the list of garbage collected pointers.
- fixed several warnings in the event code.
2017-02-15 11:55:08 +01:00
Christoph Oelckers
ca2ac4e4fd - reverted debug stuff. 2017-01-11 17:16:07 +01:00
Christoph Oelckers
72101473d0 - fixed: The texture for legacy dynamic light handling was always allocated, even if not needed, and it was never freed. 2017-01-11 10:47:45 +01:00
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Magnus Norddahl
c4ca70101d Fix console window geometry size 2016-12-10 10:29:43 +01:00
Magnus Norddahl
fb4e34d178 Fix crash reporter for 64 bit 2016-12-08 14:36:17 +01:00
Braden Obrzut
9342898361 - Added support for GTK3 (thanks to "MineyMe" and edward-san)
- Replaced GTK/OS X (note different from Cocoa) clipboard code with SDL clipboard API.
- Removed requirement to link to GTK in order to compile with GTK support.
	- GTK is no longer init'd if the GTK IWAD picker is not used.
	- Our usage of GTK is such that the dynamic loader can work with both GTK2 and GTK3 depending on what's installed.
	- Since we're accumulating a lot of library loaders I've built a generic interface as FModule which replaces TOptWin32Proc and the loaders in the OpenAL and Fluidsynth code.
2016-11-12 18:32:09 -05:00
Christoph Oelckers
fc25a74a03 - fixed: In case of a crash the buffered console output was not dumped to the rich edit control so it never got into the crash log. 2016-05-28 20:11:19 +02:00
Christoph Oelckers
db86385cf6 - removed STACK_ARGS.
The only reason this even existed was that ZDoom's original VC projects used __fastcall. The CMake generated project do not, they stick to __cdecl.
Since no performance gain can be seen by using __fastcall the best course of action is to just remove all traces of it from the source and forget that it ever existed.
2016-04-11 10:46:30 +02:00
Christoph Oelckers
8680391e0b - floatified the global view variables.
The software renderer still uses internal copies of the fixed point version.
2016-04-01 12:22:16 +02:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
4d2a52418f - added an errorlog option.
This cuts down on as much message noise as possible, outputs everything to a file specified as a parameter and then quits immediately, allowing this to run from a batch that's supposed to check a larger list of files for errors.
Multiple outputs get appended if the file already exists.
2016-02-09 14:20:49 +01:00
Christoph Oelckers
d8ea128f38 Merge branch 'master' into scripting
Conflicts:
	src/p_effect.cpp
	src/p_effect.h
	src/p_local.h
	src/p_map.cpp
	src/thingdef/thingdef_codeptr.cpp
2015-07-16 20:37:17 +02:00
Christoph Oelckers
c677dd37f5 - changed I_PrintStr so that it doesn't add everything to the RichEdit control right away.
The RichEdit control can become quite slow with large amounts of text being added constantly.
Since anything that gets added while the game is running can't be seen anyway unless a fatal error is produced, it buffers the text locally now, without any processing, and only adds it to the RichEdit control in case a fatal error causes the control to be displayed again.
2015-07-15 12:53:58 +02:00
Christoph Oelckers
450e5aec52 - this shouldn't have been committed. 2015-04-28 15:45:10 +02:00