Commit graph

4974 commits

Author SHA1 Message Date
Randy Heit
6384613487 Allow using constants in other constants before their definitions.
- Something like this is now valid:
    const foo = bar + 10;
    const bar = 1000;
2013-10-25 22:30:25 -05:00
Randy Heit
76d2e8cfc4 Set node type when nil-ing an id node.
- Nodes can't stay as type AST_ExprID if they don't also have the
  operation PEX_ID.
2013-10-25 22:30:25 -05:00
Randy Heit
850055a766 Add evaluation of constant unary and binary expressions
- Added ZCCCompiler class as a place to generate IR and symbols from an
  AST. Right now, all it does is simplify constant expressions into
  constant values.
- Do type promotion on the AST where appropriate.
- Added true and false tokens to the parser driver.
2013-10-25 22:30:24 -05:00
Randy Heit
d0968af9a6 Separate the AST from the parser state. 2013-10-25 22:30:24 -05:00
Randy Heit
dbc9fd6c0e Pad PSymbolConstNumeric to ensure it's the same size as PSymbolConstString 2013-10-25 22:30:12 -05:00
Randy Heit
c7e817dfb9 Added type conversion search routines
- PType::FindConversion() can find a path to convert one type to another.
  This is completely generic and can handle any number of conversion
  functions.
2013-10-23 22:39:51 -05:00
Braden Obrzut
7dbf4ec38f - Slight cleanup and I accidentally inverted the map generation flag. 2013-10-12 01:58:39 -04:00
Braden Obrzut
0759a4b438 - Actually, lets not use /Gm since it's incompatible with /MP which will be much faster on multi-core machines.
- Added ZDOOM_GENERATE_MAPFILE which enables linker map file generation.
2013-10-12 01:44:57 -04:00
Braden Obrzut
03b75ae7c1 - Fixed a few flags for Visual Studio compilation. 2013-10-12 00:56:49 -04:00
Braden Obrzut
3e90b65014 - Use release compiler flags for debug builds of third party libraries. 2013-10-12 00:24:04 -04:00
Braden Obrzut
b9a1528747 - DYN_FLUIDSYNTH now defaults to ON.
- Added ZDOOM_OUTPUT_OLDSTYLE (could probably use a more descriptive name) which causes CMake to vary the executable name by build type and place the exes and pk3s into the directory specified in ZDOOM_OUTPUT_DIR.
- ALL_BUILD will now launch ZDoom.
2013-10-10 17:40:15 -07:00
Randy Heit
d76dbcaa9d Merge branch 'maint' 2013-10-09 22:33:58 -05:00
Randy Heit
02514dc9b2 - Fixed: AFSwordMissile::DoSpecialDamage had a unique prototype
so it would never actually be called.
2013-10-09 22:32:52 -05:00
Randy Heit
637798c1b5 Add handling for +warp at the command line.
- Command-line console commands are executed before a level is entered, so
  trying to use +warp to position yourself at a specific location will not
  work. We now specially handle this command so that it does work.
2013-10-09 22:15:11 -05:00
Randy Heit
1f723c10ae Add CF_INTERPVIEW for players.
- Added CF_INTERPVIEW flag for players. A_SetPitch/A_SetAngle and the
  similar ACS APROPs set this when changing an angle. This forces the
  renderer to interpolate the view angles instead of updating with the
  latest mouse positions. The effect lasts one tick.
2013-10-09 21:50:24 -05:00
Randy Heit
c2bac9d2df Add WorldPanning flag for camera texture definitions.
- To make camera textures pan in world units instead of texture units, you
  can now add "WorldPanning" at the end of the cameratexture definition in
  ANIMDEFS, after the "fit" specification. e.g.

    cameratexture CAMTEX 128 128 fit 64 64 worldpanning
2013-10-09 21:29:28 -05:00
Christoph Oelckers
03f19a12fa Merge branch 'maint' 2013-10-09 12:52:33 +02:00
Christoph Oelckers
8170cfbf98 - added my own FMOD path to CMakeLists.txt so that I can use it to create VC++ 2010 files with it. 2013-10-09 12:52:07 +02:00
Randy Heit
242f2ab7b0 Merge branch 'maint' 2013-10-08 21:51:51 -05:00
Randy Heit
0c9c624e8c Do not follow NextThinker links in DestroyThinkersInList
- Fixed: DThinker::Destroy(Most)ThinkersInList() were unreliable when
  destroyed thinkers destroyed more thinkers in the same list.
  Specifically, if the thinker it destroyed caused the very next thinker
  in the list to also be destroyed, it would get lost in the thinker list
  and end up with a NULL node. So just keep iterating through the first
  thinker in the list until there are none left. Since destroying a
  thinker causes it to remove itself from its list, the first thinker will
  always be changing as long as there's something to destroy.
2013-10-08 21:32:26 -05:00
Randy Heit
3c376aa342 Move C_ExecCmdLineParams() call slightly later in the startup process.
- Fixed: You could not set any CVARINFO-defined cvars from the command line
  because command line console commands were executed before wads were
  even loaded. Off the top of my head, I can't think of anything that would\
  break by having them get executed after wads are loaded.
2013-10-08 20:18:35 -05:00
Randy Heit
d558cf51a9 - Fixed: ABackpackItem::CreateTossable did not check for failure from the supermethod. 2013-10-08 19:59:46 -05:00
Braden Obrzut
4ced90756a - Let CMake know about noncompiled cpp files so they can appear in project files.
- Fixed: Somehow when I added a way to disable generator expressions I inverted the meaning of NO_GENERATOR_EXPRESSIONS.
2013-10-08 15:35:50 -04:00
Christoph Oelckers
eb186a5b92 Merge branch 'maint' 2013-10-07 11:58:53 +02:00
Christoph Oelckers
c4d2a021b0 - fixed: AInventory::BecomePickup must not restore the MF_COUNTITEM flag when transforming the inventory item into a pickup again. 2013-10-07 11:53:58 +02:00
Braden Obrzut
f386d6b1e3 - Embed the proper manifest file and group soure files when building Visual Studio projects with CMake. (The groups probably also apply to other project types as well.) 2013-10-06 14:37:51 -04:00
Randy Heit
4bd5bf310b Do not use GT, GTEQ, or NEQ operators in the AST.
- Since the VM doesn't directly support the GT, GTEQ, and NEQ comparisons,
  don't use them in the trees either. Instead, wrap them as LTEQ, LT, and
  EQEQ inside a BoolNot operator.
2013-10-02 23:28:06 -05:00
Braden Obrzut
ffae34c5fd - Changed the new default alignment keyword for drawimage from topleft to none in order to allow a potential topleft without image offsets. 2013-09-30 20:02:05 -04:00
Randy Heit
a0dbcb5d5b Add TRUE and FALSE terminals to the zcc grammar
- I can't believe I completely forgot to let the parser handle true and
  false literals.
- Consolidate all the %include blocks in zcc-parse.lemon into a single
  one, because Lemon all of a sudden decided it didn't like me having more
  than one in the grammar file.
- Added a PBool type to represent boolean values with.
2013-09-28 21:16:44 -05:00
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
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