Commit graph

10240 commits

Author SHA1 Message Date
Randy Heit
1948642758 Add Printf extension %H
- This conversion has behavior similar to %g: It automatically behaves like
  %f or %e based on the number of output characters. However, unlike %g,
  this decision is also based on what will produce the smallest string
  without truncating the output. The precision field (the * in %.*f) is
  ignored. Converting a double to text with %H and then back to a double
  should be lossless.
2013-09-25 20:46:45 -05:00
Braden Obrzut
658b4f7e0f - For some reason git decided not to include the actual changes for the last commit. 2013-09-21 15:30:32 -04:00
Braden Obrzut
e8bcbd14fb - Added vid_asyncblit for Linux and OS X. It defaults to true and sets SDL_AYNCBLIT on the frame buffer. This allows for ZDoom to obtain ~100% CPU usage with an uncapped frame rate on Linux like it should. (Not sure if it does anything for OS X yet.) It also makes uncapped play smoothly for me (as long as the frame rate is >= 2*refresh rate), but I'm not sure if capped feels more jittery or not. I could use some feedback here. Do note that vid_asyncblit requires a restart after the value is changed. 2013-09-21 13:20:36 -04:00
Braden Obrzut
f73275ad88 - Applied Tesseract's patch for drawimage extensions. (Extended icon support and maximum width/height.) 2013-09-21 12:46:19 -04:00
Randy Heit
0fb9f98a96 Add void and error types; rejigger pointer types
- Added TypeVoid for statements, which produce no type.
- Added TypeError for expressions whose arguments are incompatible.
- Pointers now derive from PBasicType instead of PInt. Since they have their own register sets in the VM, this seems to make more sense than treating them as integers.
2013-09-20 21:10:20 -05:00
Christoph Oelckers
625883cb0c Merge branch 'master' of https://github.com/rheit/zdoom 2013-09-20 10:44:03 +02:00
Christoph Oelckers
a144221174 - changed the invisible waiting frame of the ExplosiveBarrel to use TNTA10 instead of the real barrel frame. This is so that sprite checks do not erroneously determine that there's still something to see. GZDoom's dynamic light code has problems with this. 2013-09-20 10:43:10 +02:00
Christoph Oelckers
841572d0ec - fixed: The dynamic light definition for Hexen's FireBull was incorrect. 2013-09-20 10:32:47 +02:00
Christoph Oelckers
0ff21c3af7 - fixed: Sprites may never be used as a base of a texture redirect
Due to autoexpansion to remove filtering artifacts their dimensions are not the same as for patches. But if the sprite hadn't been used yet this information won't have been set yet.
2013-09-20 10:28:12 +02:00
Randy Heit
fc843c28ba Merge branch 'maint' 2013-09-18 22:06:31 -05:00
Randy Heit
5850279090 - Fixed: Thing_SetGoal could put an actor's target and goal out of sync.
If an actor is already targeting a goal, and Thing_SetGoal is used on
  it, it would still be left targeting the old goal instead of the new
  one. This messed up checks in A_Chase for walking towards a goal vs a
  real target.
2013-09-18 22:03:59 -05:00
Randy Heit
ad7aefff20 - Fixed: Do not apply AVOIDMELEE logic when moving toward a goal 2013-09-18 21:52:29 -05:00
Randy Heit
75535fba72 Do not enter testing mode if a valid mode is not selected.
- It doesn't make much sense to "test" the current mode if a non-video
  mode is selected in the menu, so don't.
2013-09-18 21:32:46 -05:00
Randy Heit
e3741c8097 GetSelectedSize() needs to check for a valid selection.
- With mouse navigation, there's no guarantee that there even is a
  selected item.
2013-09-18 21:29:19 -05:00
Randy Heit
a7a7d5d6b3 Add missing prantheses for A_CustomPunch's puffFlags calculation
- Fixed: Need parentheses for precedence when setting puffFlags in
  A_CustomPunch. Otherwise, it's completely broken.
2013-09-18 21:25:00 -05:00
Randy Heit
d05cdb79ef Switch true to LAF_ISMELEEATTACK inside A_Punch's call to P_LineAttack() 2013-09-18 21:22:21 -05:00
Randy Heit
0cf68af7d2 Overload operator = for player_t
- This fixes crashes when quitting multiplayer games because the default
  byte-for-byte copy caused PredictionPlayerBackup and the console player
  to point to the exact same userinfo data and to both try and free it
  when they are deleted.
2013-09-18 21:14:44 -05:00
Randy Heit
285be8db92 Fixed: wi_noautostartmap was not sync safe
- Make wi_noautostartmap a userinfo cvar. This allows it to be
  communicated across the network and saved in demos. If any player has it
  set, then the intermission screen will not automatically advance to the
  next level.
2013-09-18 20:45:39 -05:00
Randy Heit
e748c49dd0 - Fixed: m_specialpaths.cpp did not compile under Linux. 2013-09-18 17:29:42 -05:00
Christoph Oelckers
8ef130c376 Merge branch 'master' of https://github.com/rheit/zdoom 2013-09-18 09:40:48 +02:00
Christoph Oelckers
f591c5df5e - fixed: saving the config to the user's known folders should use the GAME_DIR #define, not 'zdoom' so that child ports can have their own. 2013-09-18 09:40:40 +02:00
Randy Heit
e021fba5e1 Improve NoDelay reliability.
- Instead of tying NoDelay behavior to OF_JustSpawned, use a new actor
  flag, MF7_HANDLENODELAY. This only gets cleared once it has actually
  been checked by Tick(). This is necessary because freeze mode delays the
  initial run of Tick() past the initial spawn, so OF_JustSpawned will no
  longer be set when it does the initial tick.
- Delay NoDelay processing if an actor is spawned dormant. Actors spawned
  dormant have Deactivate() called before they tick, so MF7_HANDLENODELAY
  will remain set as long as an actor is dormant. This allows the NoDelay
  handling to occur as expected once it is activated.
2013-09-17 20:44:13 -05:00
Randy Heit
a3e74bb39f Merge branch 'master' of github.com:rheit/zdoom 2013-09-17 17:32:04 -05:00
Randy Heit
88b05fe2a1 Fixed: SHGetKnownFolderPath needs to be declared as WINAPI. 2013-09-17 17:31:29 -05:00
Christoph Oelckers
c1aac878b0 Merge branch 'maint' 2013-09-15 23:12:21 +02:00
Christoph Oelckers
8847d5649a - fixed: Bridge needs to call Super::Destroy. 2013-09-15 23:11:55 +02:00
Christoph Oelckers
d36afb975c - fixed the Linux portion of m_specialpaths.cpp which had a section of GetUserFile duplicated. 2013-09-15 08:57:22 +02:00
Randy Heit
0645053431 Add support for standard file paths on Windows.
- If the current user does not have write permissions for the directory
  zdoom.exe is located in, use standard folder paths located in their home
  directory instead. This is a common scenario when people put ZDoom into
  Program Files. (Ironically, zdoom.ini used to be in AppData, buth then
  people complained when it wasn't in the same directory as zdoom.exe, so
  it got turned into zdoom-<user>.ini so at least it could retain some
  multi-user support. I'm not sure when the AppData support was removed,
  though, since it should have still been kept around for migrating
  configs to the new name.)
2013-09-14 23:07:59 -05:00
Randy Heit
da02a44126 Consolidate special path functions into m_specialpaths.cpp
- Also remove CDROM_DIR while I'm at it.
2013-09-14 21:04:00 -05:00
Christoph Oelckers
e4e26e7aa7 Merge branch 'maint' 2013-09-13 10:17:38 +02:00
Christoph Oelckers
ea0e4ed344 - fixed: The Hexen bridge must make its balls disappear when it gets destroyed.
Hexen did this with a call to A_BridgeRemove in Thing_Destroy which merely set a flag in the bridge object, which cannot be done safely in ZDoom because it's not guaranteed that the ball object calls A_BridgeOrbit and the garbage collector may delete the bridge actor before it can be checked so now the Bridge's Destroy method deletes all balls attached to the bridge object itself.
2013-09-13 10:07:43 +02:00
Randy Heit
743b05189e Give the parser knowledge of constants for unary - and +
- Since the tokenizer never gives the parser negative numbers but always a
  unary minus followed by a positive number, it seems reasonable to make
  the parser smart enough to turn these into negative constants without
  generating extra tree nodes.
- And since we're doing it for unary -, we might as well do it for unary +
  as well and avoid extra nodes when we know we don't need them.
2013-09-12 22:22:43 -05:00
Randy Heit
2a1414ad66 Use labels in autogenerated enum value expressions
- For an enum like this:
    enum { value1 = SOME_NUM*2, value2 };
  Generate an increment expression for value2 of the form
    (add (id value1) 1)
  and not
    (add (* SOME_NUM 2) 1)
2013-09-12 22:06:57 -05:00
Randy Heit
af8e0f2ba6 Represent enumerations as constant definitions
- Instead of representating enumeration values with a special node type,
  use the same ZCC_ConstantDef nodes that const_def produces. These are
  created at the same scope as the ZCC_Enum, rather than being contained
  entirely within it. To mark the end of enums for a single instance of
  ZCC_Enum, a ZCC_EnumTerminator node is now appended to the chain of
  ZCC_ConstantDefs.
2013-09-12 22:00:49 -05:00
Randy Heit
d5fa550118 Make ZCC_TreeNode::AppendSibling() work with lists
- Previously, you could only append lone nodes to ZCC_TreeNode lists.
  Now you can append one list to another.
2013-09-12 22:00:49 -05:00
Christoph Oelckers
fef0782a43 - added glext headers to the project because they seem to be broken in newer versions, causing compile errors on Linux. 2013-09-12 10:27:32 +02:00
Randy Heit
2ab3974752 Add a PSymbolConstString class
- Constants can be strings, but the existing PSymbolConst couldn't handle
  them. The old PSymbolConst is now PSymbolConstNumeric, and the new
  PSymbolConst is a now a baseclass for it and PSymbolConstString.
2013-09-10 22:01:00 -05:00
Randy Heit
33e835b58d Accept name constants in the grammar 2013-09-10 21:56:13 -05:00
Randy Heit
b6e525d935 Add missing closing " for string constants in AST dumps 2013-09-10 21:50:27 -05:00
Randy Heit
52d5e74e7e Mark unsigned constants in AST dumps.
- Add the u suffix to unsigned integer constants printed in AST dumps.
2013-09-10 21:48:15 -05:00
Randy Heit
1b4851224e Let the grammar accept unsigned integer constants 2013-09-10 21:44:32 -05:00
Randy Heit
33344201fa Let the scanner returned unsigned integers
- The scanner already recognized the u suffix for unsigned integers, but
  otherwise ignored it. Return it as a proper token.
2013-09-10 21:40:05 -05:00
Randy Heit
aec6aff7a8 Don't accept l as a suffix for floating point numbers in the scanner
- We're never going to support long doubles, so don't pretend.
2013-09-10 21:30:33 -05:00
Randy Heit
6545c48e07 Accept constant definitions at global scope 2013-09-10 21:25:50 -05:00
Randy Heit
3044fdd0a9 Use %f instead of %g in AST dumps
- To ensure that floating point constants are identifiable as floating
  point, FLispString::AddFloat() now prints them with %f.
2013-09-10 21:24:32 -05:00
Randy Heit
61666e1515 Consolidate constant expression nodes into a single type
- Instead of having ZCC_ExprString, ZCC_ExprInt, and ZCC_ExprFloat,
  just use a single ZCC_ExprConstant. It should simplify type
  promotion and constant folding in the future.
2013-09-10 21:10:48 -05:00
Randy Heit
f9f8d1e79b Add a type field for ZCC expressions.
- Constants can fill out the type field right away. Other expressions will need
  to wait until a later pass, after names have been resolved, so they get
  initialized to NULL.
2013-09-10 20:50:21 -05:00
Randy Heit
6584819d01 Use PType for typing things in PSymbolConst. 2013-09-07 20:35:46 -05:00
Christoph Oelckers
2885056f46 - moved GLEXT API out of RenderContext struct. 2013-09-03 18:29:39 +02:00
Christoph Oelckers
26943fe3fd - removed gl interface function pointers for all OpenGL32.dll entry points. 2013-09-03 14:05:41 +02:00