Commit Graph

4986 Commits

Author SHA1 Message Date
Randy Heit 6428b399d6 Try to sanitize the exec+pullin mess
- Old mess:
  * Execute autoexec files right away.
  * Execute -exec files right away.
  * Execute command line commands right away.
    - If, during any of the above, an unknown command or a set of an
      unknown variable is encountered, store it for later.
    - Pullin commands are directly executed and add to the list of files
      to load.
  * Do a little setup, including parsing CVARINFOs.
  * Retry saved commands in case CVARINFO added a cvar they refer to.
- New, less messy, mess:
  * Parse autoexec files into an array.
  * Parse -exec files.
  * Parse command line commands.
    - During all of the above, exec commands are also parsed into the
      array immediately rather than being saved for execution later.
    - Pullin commands are parsed into a different array. The pullin
      command doesn't actually do anything directly anymore.
  * Add all the pullin files to the list of files to load.
  * Do a little setup, including parsing CVARINFOs.
  * Execute every command that was parsed in the preceding steps.
2015-04-07 12:55:50 -05:00
Randy Heit e4cadc90a5 Fix grammar: then -> than 2015-04-07 11:08:28 -05:00
Christoph Oelckers c5a4221b58 - fixed handling of args for non-actor mapthings again. As it turns out there was insufficient information in the data to properly decide this case so a new flag was added to make it all more reliable. 2015-04-07 16:27:57 +02:00
Christoph Oelckers 268e7df992 - fixed: We must not allow the engine to start without a default MAPINFO definition.
Both 'Adventures of Square' IWADs were missing an entry for base MAPINFO and as a result did not define the common editor numbers.
To prevent this, a new mindefaults MAPINFO was added to zdoom.pk3 which now gets loaded if IWADINFO does not specify a game-specific file.
This minimum setting sets all gamedefaults to a reasonable base value and defines all other things that are required to be defined.
2015-04-07 14:09:55 +02:00
Christoph Oelckers dd91141b35 - updated the blurb that's being put above the IWAD specific autoload sections. 2015-04-07 09:11:46 +02:00
Christoph Oelckers 6f5dbdefb0 - fixed: args of non-actor mapthings were ignored. 2015-04-07 08:51:21 +02:00
Christoph Oelckers e75bdf86db - move section renaming code into FGameConfigFile's constructor so renaming of the old and creation of the new autoload sections can be done in one step, not two. 2015-04-07 08:46:42 +02:00
Christoph Oelckers cf7c04b605 - more autoload name changing: hacx.1/2 -> hacx.hacx1/2 and chex.1/3 -> chex.chex1/3 2015-04-07 08:41:45 +02:00
Christoph Oelckers c584e9ec95 - fixed destructor call of FConfigSection in FConfigFile. 2015-04-06 23:23:50 +02:00
Christoph Oelckers 2cc6e74b31 - renamed Hacx's autoload sections to remove minor version numbers. 2015-04-06 21:43:55 +02:00
Christoph Oelckers 4971e7def1 - another GCC countof fix... 2015-04-06 21:40:14 +02:00
Christoph Oelckers 7d2ab461d9 - don't use 'countof' to iterate through a static array that's defined inside a function. Some GCC versions apparently do not like that. 2015-04-06 20:59:43 +02:00
Christoph Oelckers a013703e1c - add a NULL pointer check for the config to BaseFileSearch. 2015-04-06 16:44:03 +02:00
Christoph Oelckers dfda74ffe3 - automatically create autoload section based on IWADINFO.
This has an important implication:
Previously the config was loaded before IWADINFO so in order to allow the config to access the data this had to be switched around.
This means that zdoom.pk3 will not be looked for in the global IWAD search paths anymore, but since it shouldn't be there to begin with it should be an acceptable compromise.
2015-04-06 13:52:08 +02:00
Christoph Oelckers 258822ef3b - redid autoload handler and resource file filtering to use the newly defined method with multi-part names.
As a result the old 'Group' property could be removed and all other means to get a section name were disabled.
As an example, if the code gets 'doom.doom2.commercial' it will use the following sections in this order:

global.autoload
doom.autoload
doom.doom2.autoload
doom.doom2.commercial.autoload.
2015-04-06 11:57:12 +02:00
Christoph Oelckers 3241b1d3db - add new config section names to iwadinfo.txt 2015-04-06 11:31:08 +02:00
Christoph Oelckers 3114a26bc8 - allow renaming of config sections and added migration code to rename the old autoload sections to the more flexible naming system that's planned. 2015-04-06 11:21:28 +02:00
Christoph Oelckers cac634567b - use a proper FString to hold the name of config sections instead of a buffer tacked onto the actual structure. This is necessary if we want to be able to rename a section. 2015-04-06 10:51:28 +02:00
Randy Heit b300cfaf62 Remove old pre-INI config migration code
- As if any of this matters now. It's not the 90s anymore.
2015-04-05 21:56:00 -05:00
Randy Heit c36222d2ef Externalized default key bindings 2015-04-05 21:40:53 -05:00
Randy Heit 62d036a63e Added gametype-based filter
- For when IWADs are too specific, filter by the base gametype too.
- Minor small edits to the sndinfo.txt files so that zipdir will notice
  the changes, since it doesn't check path names when checking for
  file differences.
2015-04-05 20:24:49 -05:00
Christoph Oelckers a91997d12c - fixed: Don't try to load autoload sections for empty section names. 2015-04-05 22:07:24 +02:00
Christoph Oelckers 0ae74b844d Merge branch 'osx_text_paste' of https://github.com/alexey-lysiuk/gzdoom 2015-04-05 12:18:23 +02:00
alexey.lysiuk 7b89312923 Fixed potential issue with read beyond buffer boundaries 2015-04-05 11:52:57 +03:00
alexey.lysiuk ebd8f24103 Fixed compilation with OS X SDK 10.4 2015-04-05 11:39:49 +03:00
alexey.lysiuk 82f7b439c8 Improved text pasting on OS X
Support for UTF-8 and UTF-16 encodings should cover all cases of text pasting from clipboard
2015-04-05 10:59:07 +03:00
Randy Heit 89054f5d60 Use filtering and LOADACS to autoload strfhelp.o
- No more special case for STRFHELP in the executable!
2015-04-04 18:40:48 -05:00
Randy Heit e451faa1cc Fixed: FString::ReallocBuffer could write to unallocated memory
- Previously, calling ReallocBuffer with a smaller buffer size than the
  current one could overwrite unallocated memory. This required that the
  string it was called on had more than one reference and therefore
  required creating a new copy. The entire original string would be
  copied, whether it fit in the new buffer or not.
2015-04-04 18:20:05 -05:00
Randy Heit 6da887c34f Use Truncate to chop off extension in LumpNameSetup.
- Left() always creates a new string. Truncate() can reuse the old one if
  it only has one reference.
2015-04-04 18:20:05 -05:00
Randy Heit 4315423200 Rename ns_invalid to ns_hidden
- Also use ns_hidden by name in LumpNameSetup().
2015-04-04 18:20:04 -05:00
Randy Heit 2103fe2a14 Make FResourceLump::LumpNameSetup's argument an FString 2015-04-04 18:20:03 -05:00
Randy Heit bbbbb7ac9d Reorder FMapThing to remove padding 2015-04-04 18:20:03 -05:00
Christoph Oelckers 1fddd1859e - fixed: FResourceFile::FilterLumps must use a proper copy of the filename to pass to LumpNameSetup instead of a pointer to the file name's stringbuffer, because that function will overwrite the variable it is taken from. 2015-04-05 00:38:29 +02:00
Christoph Oelckers 25e19ab471 Merge branch 'master' of https://github.com/rheit/zdoom 2015-04-05 00:31:55 +02:00
Christoph Oelckers b6a4511dd1 - move conversation ID definition to MAPINFO as well. Uses the newly added filter feature to handle the teaser differences. 2015-04-05 00:31:15 +02:00
rheit 60a0966f0f Merge pull request #306 from alexey-lysiuk/osx_vid_autoswitch
Added control of automatic graphics switching on OS X
2015-04-04 15:41:18 -05:00
Christoph Oelckers 6e45c565a0 - fixed: FResourceLump::LumpNameSetup's iname parameter can point to the FullName variable's stringbuffer so any assignment to that variable must be done indirectly. 2015-04-04 20:52:55 +02:00
Christoph Oelckers a5c75c1b1a - added some missing autoload sections (Hacx 1.2 vs. Hacx 2, Hexen vs Deathkings and Heretic vs. Shadows of the Serpent Riders.) and filter names for Strifeteaser1 and Strifeteaser2 which are needed for exporting the conversation IDs to MAPINFO 2015-04-04 20:44:27 +02:00
alexey.lysiuk 193b491b63 Added control of automatic graphics switching on OS X
Automatic graphics switching is enabled by default
Set vid_autoswitch CVAR to false to disable it
2015-04-04 17:36:55 +03:00
Christoph Oelckers 87229f4787 Merge branch 'fix_filter_crash' of https://github.com/alexey-lysiuk/gzdoom 2015-04-04 14:12:13 +02:00
Christoph Oelckers bd96adafda - cleanup 2015-04-04 14:12:04 +02:00
alexey.lysiuk 8b92c45f84 Fixed crash in lump filtering caused by uninitialized variables 2015-04-04 12:38:37 +03:00
Christoph Oelckers 747e160c96 Merge branch 'master' of https://github.com/rheit/zdoom 2015-04-04 10:30:37 +02:00
Christoph Oelckers 338a220df8 - add empty editor number mapping for GZDoom's dynamic lights so that these will no longer produce errors when loaded with ZDoom. 2015-04-04 10:30:09 +02:00
Christoph Oelckers 51591d10b0 - handle slope things through new definition tables as well. Since these get processed outside P_SpawnMapThing it required some restructuring so that the actual spawn data is present when slope things get processed.
- removed FMapThing::Serialize because it isn't used anywhere - it was rather broken anyway.
2015-04-04 10:25:01 +02:00
Randy Heit a5e67f7332 Split sndinfo.txt up into multiple files using filter directories.
- This means the original need for $ifdoom, $ifheretic, etc directives is
  no more, but they need to stay for compatibility with third-party wads
  that use them.
2015-04-03 22:58:58 -05:00
Randy Heit 7b4d6e2f87 Add lump filtering for archive resources
- Multi-directory archives (e.g. zips) now support filtering lumps
  depending on the loaded IWAD. The search rules are the same as for the
  Autoload entries in the user's ini. For instance, if you are playing
  Doom 2, the following filters will be applied:
  * "filter/doom2/*"
  * "filter/doom/*"
  They will be renamed to strip out the "filter/doom2/" and "filter/doom/"
  parts and will be ordered so they take precedence over any files not
  inside a filter/ directory. Any files inside another filter/ directory
  (e.g. "filter/hexen/*") will be ignored.
2015-04-03 22:42:22 -05:00
Randy Heit fc6f983c13 Fix memory leak when passing directories to -file 2015-04-03 21:50:08 -05:00
Randy Heit efa82cf38b Consolidate archive sorting into FResourceFile base class 2015-04-03 20:22:18 -05:00
Randy Heit 966d0b7034 Use FString for FResourceLump::FullName 2015-04-03 20:00:58 -05:00