Commit graph

1102 commits

Author SHA1 Message Date
Randy Heit
17972b5d06 Revert "Add "support" for user string variables in DECORATE"
- This reverts commit c90a1c0c96.
- DECORATE looks to be very dependant on functions that take strings as
  parameters receiving those strings as constants and not as expressions,
  so being able to declare string variables with DECORATE is pretty much
  useless.
2016-04-03 19:15:00 -05:00
Christoph Oelckers
fd27c8db9e Merge branch 'master' into floatcvt
# Conflicts:
#	src/dobjtype.cpp
#	src/dobjtype.h
#	src/version.h
2016-04-04 01:21:24 +02:00
Randy Heit
c90a1c0c96 Add "support" for user string variables in DECORATE
- This is "support" in the very most basic sense. You can declare them,
  but you can't actually do anything with them, since the decorate parser
  can't handle expressions when it's parsing string arguments. However,
  they seem to be getting properly initialized and destroyed, which is
  what this was added to test. If it doesn't look like too much trouble, I
  might try to turn them into something actually worth something.
2016-04-03 18:10:09 -05:00
Randy Heit
7c8cff64e6 Added code to initialize and destroy string variables in classes
- Will require being able to add strings to non-native classes to actually
  test this.
2016-04-03 17:45:04 -05:00
Randy Heit
da496bbe62 Use AddField() to add user variables in DECORATE 2016-04-03 16:21:48 -05:00
Randy Heit
3357af32e5 Generalize FxArrayElement to work with all numeric elements (not just 32-bit ints) 2016-04-03 16:21:41 -05:00
Randy Heit
0cc2705b99 Added A_LogFloat 2016-04-03 16:12:35 -05:00
Christoph Oelckers
70b8afc5ec - fixed: A_CheckLOF did the trace pitch calculation wrong. 2016-04-03 21:26:57 +02:00
Christoph Oelckers
02a586e6b2 - removed a redundant Vec3Offset call in A_SpawnParticle. 2016-04-03 21:03:49 +02:00
Christoph Oelckers
0eb35d6c6e Merge branch 'master' into floatcvt
# Conflicts:
#	src/dobjtype.cpp
#	src/dobjtype.h
2016-03-30 09:47:25 +02:00
Randy Heit
b6e3358b1c Add A_SetUserVarFloat and A_SetUserArrayFloat 2016-03-29 22:41:37 -05:00
Randy Heit
e2711a74e7 Add float user vars for DECORATE
- PClass::Extend now takes alignment into consideration.
2016-03-29 21:48:57 -05:00
Christoph Oelckers
d87f861e87 Merge branch 'master' into floatcvt
# Conflicts:
#	src/p_spec.cpp
#	src/p_spec.h
2016-03-28 22:23:41 +02:00
Christoph Oelckers
263051a77b - removed a few unnecessary #includes. 2016-03-28 22:20:25 +02:00
MajorCooke
4eee1c7af1 Fixed: A_FaceMovementDirection was backwards. 2016-03-27 14:21:07 +02:00
Christoph Oelckers
228c447a02 - fixed: A_FireCustomMissile used the player position as offset. 2016-03-27 14:20:14 +02:00
Christoph Oelckers
26ff2f73d7 - floatified P_TryMove and the sliding and bouncing code. 2016-03-27 13:29:58 +02:00
Christoph Oelckers
696fde69b8 - moved the bot support code from AActor::Tick to a subfunction in the bot sources. No need to pollute a main game file with this stuff. 2016-03-26 01:30:28 +01:00
Christoph Oelckers
fb8e03d5eb - floatified FLineOpening.
- some smaller fixes.
2016-03-25 18:43:37 +01:00
Christoph Oelckers
2b33601d00 - The fixed_t type for the VM also is not needed any longer and was removed. 2016-03-25 15:50:39 +01:00
Christoph Oelckers
8cdfbeea01 - made AActor::__pos a genuine float vatiable. 2016-03-25 15:43:20 +01:00
Christoph Oelckers
3a598d672e - removed the angle_t type from the VM, now that nothing in the interface requires it anymore. 2016-03-25 14:55:01 +01:00
Christoph Oelckers
a3b687bc4e - renamed PARAM_DANGLE macros to PARAM_ANGLE, now that the old angle_t type is no longer used in the VM interface. 2016-03-25 13:23:07 +01:00
Christoph Oelckers
21340c6eba - floatified the rest of thingdef_codeptr.cpp and got rid of the remaining fixed_t and angle_t parameters in VM-accessed function. The VM should now be free of those types completely. 2016-03-25 12:57:22 +01:00
Christoph Oelckers
f76524f459 - some cleanup on P_RailAttack plus a bit of parameter floatification in thingdef_codeptr.cpp 2016-03-25 00:59:14 +01:00
Christoph Oelckers
4d22b346f4 - floatified the remaining fixed point variables accessible through DECORATE. PROP_FIXED_PARAM is no longer used anywhere. 2016-03-24 23:50:29 +01:00
Christoph Oelckers
7a26318bf0 - floatified friction. 2016-03-24 22:50:03 +01:00
Christoph Oelckers
6c9e5b03c8 - floatified meleerange, pushfactor and radiusdamagefactor, 2016-03-24 21:31:04 +01:00
Christoph Oelckers
e077510773 - floatified MaxTargetRange and MeleeThreshold. 2016-03-24 20:56:59 +01:00
Christoph Oelckers
c66ff5939d - floatified AActor::bouncefactor and wallbouncefactor. 2016-03-24 20:43:35 +01:00
Christoph Oelckers
4a79602325 - floatification of g_shared.
- rewrote FraggleScript's movecamera function because it was utterly incomprehensible.
2016-03-24 01:46:11 +01:00
Christoph Oelckers
6557f3b8c8 - floatified quake and weapon code 2016-03-23 20:45:48 +01:00
Christoph Oelckers
2dbd79cc8d - floatified the return data from Trace(). 2016-03-23 18:07:04 +01:00
Christoph Oelckers
70d87f94f2 Merge branch 'master' into floatcvt
# Conflicts:
#	src/p_acs.cpp
#	src/r_utility.cpp
#	src/thingdef/thingdef_codeptr.cpp
#	src/version.h
2016-03-23 14:15:24 +01:00
MajorCooke
b16e696157 - Added offset and angle parameters to A_CheckBlock.
- Includes 2 flags, affixed by CBF_: AbsolutePos, and AbsoluteAngle.
- AbsolutePos: Absolute position of where to check.
- AbsoluteAngle: Angle parameter is used as is, not added onto the actor's current angle.
2016-03-23 14:05:31 +01:00
Christoph Oelckers
0d1fbcf65f - flattened the following commits by Major Cooke:
* Added falloff parameter to A_QuakeEx.
- Treated just like A_Explode's 'fullradiusdamage' parameter, where the quake will fall off from this distance on out to the edge. Default is 0, which means no falloff.
- Credits to MaxED and Michaelis for helping.

* - Added HighPoint parameter to QuakeEx.
- Allows fine tuning of where the quake's maximum or minimum occurs, in tics. This must be a range between [1, duration).
- For up or down scaling quakes, this sets the quake to reach maximum sooner or start minimizing later.
- For both, this indicates when the strongest will occur. Default is 0, or in the middle.

The original commits were nearly impossible to find in the convoluted commit tree, so I think it's preferable to have one clean commit instead.
2016-03-23 14:03:10 +01:00
Christoph Oelckers
7c87479eea - parameter rework of several spawning functions. 2016-03-23 13:31:12 +01:00
Christoph Oelckers
f60eac8dc0 - floatified FMapThing, dropoffz and GetBobOffset 2016-03-23 12:21:52 +01:00
Christoph Oelckers
f8cf4bcf3d - trimmed down the AActor Spawn interface and removed all non-float variants.
This still needs some cleanup in a few calling functions.
2016-03-23 10:42:41 +01:00
Christoph Oelckers
6b3c0ecbd3 - floatified viewheight variables and some related code. 2016-03-22 18:06:08 +01:00
Christoph Oelckers
af427b80bd - did some cleanup and consolidation on damage factor code while converting it all to floating point.
- made armor properties floating point.
2016-03-22 16:35:41 +01:00
Christoph Oelckers
1eb106e2c5 - floatification of some alpha parameters. 2016-03-22 13:35:16 +01:00
Christoph Oelckers
a652c061f6 - converted g_strife to full floating point use, except the floor height changing stuff in A_LightGoesOut. 2016-03-22 12:42:27 +01:00
Christoph Oelckers
cf79e1cb6d - fixed some leftover fixed point remnants in g_hexen.
- made the full-coordinate version of P_SpawnPlayerMissile use float coordinates.
2016-03-22 00:30:56 +01:00
Christoph Oelckers
4155e84a1c - made player_t::crouchoffset and FPlayerStart's coordinates doubles and added a float version of divline_t so that I could complete the conversion of Hexen's game code.
- consolidated the actor based damage factor code which was repeated multiple times in various damage inflicting functions.
2016-03-22 00:06:58 +01:00
Christoph Oelckers
c830801da3 - g_hexen almost done except for 3 things that require more extensive changes. 2016-03-21 22:20:10 +01:00
Christoph Oelckers
f1602882c8 - added a no-parameter Spawn function for inventory items that never show on the map, because the coordinate and replacement parameters will always be 0 for them.
- started converting g_hexen.

Most importantly this removes CHolyWeave as it is just a specialized version of A_Weave with far more convoluted use of parameters.
2016-03-21 14:00:05 +01:00
Christoph Oelckers
4e60ea0252 - made AActor::alpha a floating point value
- replaced some uses of FRACUNIT with OPAQUE when it was about translucency.
- simplified some overly complicated translucency multiplications in the SBARINFO code.
2016-03-21 12:18:46 +01:00
Christoph Oelckers
1ff4bb419c - made AActor::gravity and FMapThing::gravity floats. 2016-03-21 00:51:19 +01:00
Christoph Oelckers
289cdfbefd - made AActor::floorclip a double. 2016-03-20 23:42:27 +01:00
Christoph Oelckers
cff8e51811 - converted AActor::height to double. 2016-03-20 20:55:06 +01:00
Christoph Oelckers
8362c6a856 - conversion of floorz to double. 2016-03-20 19:52:35 +01:00
Christoph Oelckers
b81080ce08 - converted most of g_heretic to float. 2016-03-20 16:51:42 +01:00
Christoph Oelckers
0bdb65c477 - made AActor::radius a double.
This means that all files in g_doom are now fully converted.
2016-03-20 15:04:13 +01:00
Christoph Oelckers
ec58e70078 - replaced ceilingz with a floating point variable, also in FCheckPosition. 2016-03-20 13:32:53 +01:00
Christoph Oelckers
ada5097e34 - converted scale variables in AActor, FMapThing and skin to float. 2016-03-20 12:13:00 +01:00
Christoph Oelckers
51b05d331d - replaced AActor::vel and player_t::Vel with a floating point version.
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.

Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
Christoph Oelckers
f332a098cd - reworked calls to P_SpawnPlayerMissile, P_AimLineAttack and P_LineAttack to use floating point angles. 2016-03-18 00:43:05 +01:00
Christoph Oelckers
aa09cbdada - renamed some functions and fixed a few more conversion errors. 2016-03-17 00:07:37 +01:00
Christoph Oelckers
b140d71c49 - several fixes. 2016-03-16 22:29:35 +01:00
Christoph Oelckers
671291227e - first stage of converting actor angles to float complete
Patched up everything so that it compiles without errors again. This only addresses code related to some compile error. A large portion of the angle code still uses angle_t and converts back and forth.
2016-03-16 12:41:26 +01:00
Christoph Oelckers
c64eee5b15 Merge branch 'master' into float
# Conflicts:
#	src/g_heretic/a_hereticweaps.cpp
#	src/p_map.cpp
#	src/p_mobj.cpp
#	src/p_things.cpp
#	src/portal.cpp
2016-03-15 00:16:13 +01:00
Christoph Oelckers
651817fad7 - made AActor::velx/y/z and player_t::velx/y fixedvec's.
(This commit is 95% search & replace with only a few places where velz was used as a local variable changed.)
2016-03-12 14:11:43 +01:00
Christoph Oelckers
161d03231a - added custom math routines for reliability. 2016-03-11 15:45:47 +01:00
Christoph Oelckers
f8ebfb541e - use typedefs for TVector<double> etc.
(Better have this out of the way before messing around with this stuff...)
2016-03-10 20:45:45 +01:00
Christoph Oelckers
3d367d585d - did some profiling which revealed that P_PointInSector was called needlessly often. Did some optimization to the MultiBlock iterators to avoid this problem. 2016-03-10 14:22:18 +01:00
Christoph Oelckers
899389e6a4 - link actors into blockmap through linked line portals.
Links through sector portals are not done because nearly all the checks can be performed without doing this so if it works without there's no need to add more processing time.
Will have to see if there's cases left where such a link is needed and if so, whether there's better options to do it.

For line portals such links are necessary to have proper collision detection with actors that are currently transitioning the portal.
2016-03-08 14:41:37 +01:00
Randy Heit
8b9a0da5ef That was hard to read 2016-03-07 09:58:52 -06:00
MajorCooke
af50a79e55 - Fixed: ScaleY was not defaulting to ScaleX when specified as 0, which is how the behavior originally was in 2.8. This behavior can now be toggled with a new boolean, 'usezero'. 2016-03-07 09:02:34 -06:00
Christoph Oelckers
5175d56129 - made adjustments to P_LineAttack and P_RailAttack to deal with altered angles by passing through a non-parallel portal.
- fixed: P_FindFloorCeiling set the floorsector for a new ceilingheight.

Note: P_DrawRailTrail still needs to be changed, at the moment rail trails through portals will not work correctly.
2016-03-06 21:58:36 +01:00
Christoph Oelckers
caf2ca0df7 - fixed: CallStateChain must never allow a jumping function to set the chain's overall result to successful. 2016-03-04 15:11:20 +01:00
Christoph Oelckers
81b634a798 - preparation for making Trace portal aware: Added a new flag Trace_PortalRestrict, so that I could disable portals without static offset for P_LinePickActor and A_CheckLOF, because both depend on the target info being retainable which requires a static offset. 2016-03-04 01:13:16 +01:00
MajorCooke
59ad6206de Added CBF_NOACTORS to A_CheckBlock.
- Self explanatory, doesn't count actors as blocking them.
2016-03-02 20:35:54 -06:00
MajorCooke
7f672039bf Cleanup. 2016-03-03 02:58:44 +01:00
MajorCooke
fb3769a730 Added offsetforward to A_CheckLOF.
- offsetforward is to A_SpawnItemEx's x offset property, just like offsetwidth is to y offset.
2016-03-03 02:58:43 +01:00
Christoph Oelckers
f5fd0df077 - made P_AimLineAttack work through sector portals.
Note: Test output not removed yet!
2016-03-02 20:44:02 +01:00
Randy Heit
c160121f45 Add float casts to DECORATE for the sake of completeness 2016-03-01 11:36:15 -06:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
b4a002a07f - preparations for allowing hitscans through portals.
To allow processing the hit through an arbitrary portal without reference to the portal group table, P_AimLineAttack and P_LineAttack need to pass some more info than just the linetarget.
We need the relative positions of shooter and target within the visual reference of the other to calculate proper angles and we need to know if such a portal was crossed at all, because a few things, e.g. seeker missiles won't work with them.

- fixed setup of target acquisition for the Mage Staff.

The pre-acquired seeker target was never passed to the spawned projectiles.
2016-03-01 16:39:31 +01:00
Randy Heit
7c9fd12fc0 Don't generate code to call DECORATE cast functions
- All the cast functions do is return their parameter, so skip the
  function call and use the parameter directly.
2016-02-29 22:26:05 -06:00
Randy Heit
92f74634d6 Remove FxParameter and use a single function instead 2016-02-29 22:08:06 -06:00
Randy Heit
fb8d8dc775 Remove "state" from "Invalid state parameter" error message
- It's confusing to see this from inside an anonymous function. Actually,
  maybe it should be reworded altogether?
2016-02-29 21:44:12 -06:00
Randy Heit
cb1d9597f2 Allow if {} else if {} with DECORATE
This is as opposed to `if {} else { if {} }`, which is what was required
previously to express the same construct.
2016-02-29 21:40:10 -06:00
Randy Heit
f23c0121c5 Use new type system with DECORATE 2016-02-29 21:11:59 -06:00
Christoph Oelckers
d4f87203bd - added portal awareness to several functions.
* Arch-Vile resurrection
 * Boom point pushers (due to complete lack of z-handling only for line portals.)
 * A_RadiusGive

These also require a more thorough collection of portal groups than simple position checks.
2016-02-28 23:08:32 +01:00
Christoph Oelckers
8be690fbf2 - fixed type truncation warning. 2016-02-28 21:16:16 +01:00
alexey.lysiuk
fcb38a9419 Made index of VM intrinsic functions unsigned
No more 'comparison of integers of different signs: int and unsigned long' warning
2016-02-27 15:14:13 +02:00
Christoph Oelckers
eafd2519b4 - fixed a few incorrect uses of AngleTo function.
- added portal offsetting to all AproxDistance, AngleTo and Vec*To members of AActor.
- optimized displacement retrieval so that the most common case with no offset retrieves a constant null-vector which can be optimized away fully by the compiler.
- early out in P_GetOffsetPosition if there's no portal lines nearby, so that the common case can skip the traverser completely even on maps with line portals.
2016-02-26 11:52:50 +01:00
Randy Heit
fd78686679 Add clamp() to DECORATE 2016-02-25 14:31:37 -06:00
Randy Heit
7f57f68ce1 Added GetSpawnHealth() and GetGibHealth() for DECORATE 2016-02-25 10:08:08 -06:00
Randy Heit
a862f728b6 Add remaining VM-supported floating point operations to DECORATE
- These are:
  * exp
  * log
  * log10
  * ceil
  * floor
  * acos
  * asin
  * atan
  * tan
  * cosh
  * sinh
  * tanh
2016-02-25 09:41:49 -06:00
Randy Heit
8ee820042f Tablified the DECORATE floating point operations (sqrt,cos,sin) 2016-02-25 09:23:46 -06:00
Christoph Oelckers
e11da06e69 - some preparations for actor interpolation through wall portals. 2016-02-25 00:41:31 +01:00
Randy Heit
326907f6ab Cleanup parsing of DECORATE intrinsics
- Split specific parsing for each intrinsic out of ParseExpression0 and
  into their own functions.
- Instead of reserving keywords for intrinsics, identify them by name
  within TK_Identifier's handling.
2016-02-23 19:39:29 -06:00
Randy Heit
1f09341d2b Let min/max pre-solve for 2+ constants, even if there are non-constants 2016-02-23 16:37:52 -06:00
Randy Heit
1ffb7ad109 Add min and max to DECORATE 2016-02-23 16:26:00 -06:00
MajorCooke
c3ffeb1e9d A_RadiusGive Missile check fix
- Don't use isMissile(). Check directly for the flag at the moment of calling and not the default. Otherwise, things changing themselves will still be ineligible for non-missile checks.
2016-02-22 11:30:44 -06:00
alexey.lysiuk
89ca14a587 Fixed memory leak caused by return statement parsing 2016-02-22 14:24:34 +02:00
Randy Heit
70c663b253 Revert "Add PARAM_STATE_NOT_NULL for the A_Jump* functions"
- This reverts commit cab39973df.
  I was wrong. DoJump never allowed jumping to NULL states.
2016-02-21 19:21:39 -06:00
Randy Heit
19af8a3a82 Change error message for missing return 2016-02-20 23:14:14 -06:00
Randy Heit
e7b9e7e955 Rename A_Int/A_Bool/A_State to int/bool/state
- This is an effort to emphasize that these are just type casts. Now they
  look like function-style casts with no action function styling.
  They do no magic joojoo at all. The only reason they exist is because
  the DECORATE parser can only parse return statements that call a
  function, so these satisfy that requirement. i.e. *return int(666);* is
  identical to *return 666;* (if the parser could handle the latter).
2016-02-20 22:05:17 -06:00
Randy Heit
cab39973df Add PARAM_STATE_NOT_NULL for the A_Jump* functions
- Now that state jumps are handled by returning a state, we still need a
  way for them to jump to a NULL state. If the parameter processed by this
  macro turns out to be NULL, Actor's 'Null' state will be substituted
  instead, since that's something that can be jumped to.
2016-02-20 21:52:29 -06:00
Randy Heit
5e298173f7 Redo ACTION_RETURN macros so they can be treated like return statements 2016-02-20 21:34:58 -06:00
Randy Heit
81314a6cd6 Revert "- fixed a few occurences where ACTION_RETURN_* eliminated the side effect of its argument when no return value was requested."
This reverts commit 7ede77c1d2.
2016-02-20 21:27:42 -06:00
Christoph Oelckers
7ede77c1d2 - fixed a few occurences where ACTION_RETURN_* eliminated the side effect of its argument when no return value was requested.
This macro should not be used on function calls that actually perform an action aside from calculating the return value!
2016-02-20 13:13:53 +01:00
Randy Heit
c3432a1ddb Fix CustomInventory never succeeding
- A != should have been ==.
2016-02-19 22:09:35 -06:00
Randy Heit
4770dc2dfb Fix improper detection of if statements returning 2016-02-19 16:38:30 -06:00
Randy Heit
80d49d6bb9 Fix crash when parsing an empty action list for DECORATE 2016-02-19 16:31:53 -06:00
Randy Heit
a31bd78abe Fix definitions of A_State/A_Int/A_Bool
- These aren't action functions, so PARAM_ACTION_PROLOGUE is
  inappropriate.
2016-02-19 00:29:19 -06:00
Randy Heit
cb0fd5967f Oops. Had FxCastStateToBool backwards. 2016-02-18 22:53:18 -06:00
Randy Heit
a399f40e5f Support casting states to booleans
- This is so that you can call an A_Jump-type function from inside an if
  statement and do something other than jump if the jump condition was
  met. e.g.

    {
        if (A_Jump(128, "Foo"))
	{
            A_Log("The function would have jumped");
	}
	else
	{
	    A_Log("The function would not have jumped");
	}
    }
2016-02-18 22:40:04 -06:00
Randy Heit
eace79ccad Add some functions for use with DECORATE return
- Since DECORATE's return statement can only return the results of
  function calls (I do not want to spend the time necessary to make it
  return arbitrary expressions), here are three functions to get around
  this limitation:
  * A_State - Returns the state passed to it. You can simulate A_Jump
    functions with this.
  * A_Int - Returns the int passed to it.
  * A_Bool - Returns the bool passed to it.
- e.g. If you want to return the number 3, you use this:

    return A_Int(3);

  If you want to jump to a different state, you use this:

    return A_State("SomeState");
2016-02-18 22:15:03 -06:00
Randy Heit
fbbaae781b Merge remote-tracking branch 'origin/master' 2016-02-18 22:05:40 -06:00
Randy Heit
b1098ede93 Restore "direct" call optimization for DECORATE 2016-02-18 22:05:16 -06:00
Randy Heit
ade780d810 Redo ACustomInventory::CallStateChain to check return types 2016-02-18 22:05:10 -06:00
Randy Heit
b8a16600ac Braces around ACTION_RETURN used in an if are no longer optional 2016-02-18 21:39:13 -06:00
Randy Heit
b2ccd0bd28 Use action function return value to make state jumps happen
- The A_Jump family of action functions now return the state to jump
  to (NULL if no jump is to be taken) instead of jumping directly.
  It is the caller's responsibility to handle the jump. This will
  make it possible to use their results in if statements and
  do something other than jump.
- DECORATE return statements can now return the result of a function
  (but not any random expression--it must be a function call). To
  make a jump happen from inside a multi-action block, you must
  return the value of an A_Jump function. e.g.:
    { return A_Jump(128, "SomeState"); }
- The VMFunction class now contains its prototype instead of storing
  it at a higher level in PFunction. This is so that
  FState::CallAction can easily tell if a function returns a state.
- Removed the FxTailable class because with explicit return
  statements, it's not useful anymore.
2016-02-18 20:39:40 -06:00
Christoph Oelckers
f2125ea420 - this needs a return value... 2016-02-17 12:36:56 +01:00
Christoph Oelckers
42c6245a50 - restored A_CountdownArg to what it looked like before the scripting branch.
The new version did not work as expected anymore.
2016-02-17 11:42:45 +01:00
Randy Heit
0f70d10521 Add 'float' and 'state' as possible return types for action functions 2016-02-16 12:09:00 -06:00
Christoph Oelckers
6adb069506 - rewrote p_local.h so that it doesn't pull in the entire bunch of headers.
This was to resolve some circular dependencies with the portal code.
The most notable changees:

 * FTextureID was moved from textures.h to doomtype.h because it is frequently needed in files that don't want to do anything with actual textures.
 * split off the parts from p_maputl into a separate header.
 * consolidated all blockmap related data into p_blockmap.h
 * split off the polyobject parts into po_man.h
2016-02-15 02:14:34 +01:00
Christoph Oelckers
340faef1ec - fixed a few 64-bit warnings. 2016-02-13 13:37:28 +01:00
Christoph Oelckers
d25455736a - store floating point parameters for DECORATE properties as doubles. 2016-02-12 01:21:29 +01:00
Christoph Oelckers
584147b8bb - removed all occurences of FVector2 and FVector3 from the playsim code. 2016-02-11 20:01:12 +01:00
MajorCooke
dcfdb50307 - Fixed: checkz wasn't used.
- Use 0 instead of false.
2016-02-10 18:04:59 -06:00
MajorCooke
fefdb266cd - Fixed: The coordinates need to be converted to doubles first. Also use length instead of length squared. 2016-02-10 17:48:17 -06:00
MajorCooke
e04fe06226 GetDistance Non-Action (Double version)
- Added GetDistance(bool checkz, ptr = aaptr_target).
- Returns the distance of an actor. Must be target, master or tracer.
2016-02-10 17:13:50 -06:00
Christoph Oelckers
d712686122 - fixed: A_CountdownArg could no longer access the first arg.
The latest bit of refactoring turned a '<0' check into '>0', while it should have been '>=0'.
2016-02-10 21:56:45 +01:00
Christoph Oelckers
7e45c49c2f - fixed: The expression evaluator must ignore the action function symbol for ACS_NamedExecuteWithResult.
This is necessary because otherwise the incompatible action function will take precedence over the special handling for this inside FxFunctionCall.
2016-02-10 21:48:28 +01:00
Christoph Oelckers
4428d073d5 - fixed: code generation for floating point negation was wrong. 2016-02-10 20:08:19 +01:00
Christoph Oelckers
d18a839836 - to prevent further occurences of ValueType == 0 being misinterpreted, change it to signify unknown value type and ensure that any real type is non-zero. 2016-02-10 17:11:50 +01:00
Christoph Oelckers
85a3cd984d - fixed: ParseParameter should not make any assumptions about the necessity of a type cast between int and float.
With late resolving it cannot be guaranteed at this point and caused some incorrectly compiled code. Since the cast gets optimized away anyway when not needed there's no point being this selective with applying it.
2016-02-10 17:06:33 +01:00
Christoph Oelckers
d1b2ef5368 - some refactoring of olddecorations.cpp to move some repeated code into a subfunction. 2016-02-10 14:38:08 +01:00
Christoph Oelckers
b5029e0976 - call the native A_BossDeath directly instead of going through the VM-enabled action function.
- undo some formatting screwup in a_clericstaff.cpp.
2016-02-10 13:57:21 +01:00
Christoph Oelckers
3e5d1feecd - fixed: A_CheckProximity could return unmorphed player pawns of currently morphed players. 2016-02-10 11:58:54 +01:00
Christoph Oelckers
3358181f18 - cleaned up the class data organization:
* moved RestrictedToPlayerClass and ForbiddenToPlayerClass arrays to AInventory.
 * moved all copy-from-parent code into DeriveData functions.
2016-02-10 00:46:51 +01:00
Christoph Oelckers
6ce0c9f78e - split up PClass::Derive and its child functions because part of them is also needed when initializing an inherited native class with the properties of its parent - but calling the base version in PClass is not possible.
- moved a few AActor properties out of the EXE so that I could easily test if it works.
2016-02-10 00:17:00 +01:00
Christoph Oelckers
b484cbf18a - fixed: It is not guaranteed that the class object that is created by FindClassTentative actually matches the real object that is required later, so it needs to be replaced wherever it could be referenced once the real object is created.
- removed some unneeded code from earlier attempts to fix the class type resolving issue.
2016-02-09 23:08:51 +01:00
Christoph Oelckers
ff70cf1ee7 - fixed: Resolving non-constant DECORATE expressions must be delayed until everything has been parsed.
If done as before, forward-declared classes cannot be found, and the immediate resolving is only needed for constant expressions, so explicitly enabling it in the 4 places where it is needed ensures that those unresolvable expressions remain intact until the final processing pass righr before the code generator is started.
2016-02-09 19:02:44 +01:00
Christoph Oelckers
5261acce1d - undid incorrect part of CheckClass fix. 2016-02-09 17:55:43 +01: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
6c92525fcd - added an option to FindClassTentative to make eventual failure to declare the missing class non-fatal.
Damn those old mods with broken actor references. Thanks to those FxClassTypeCast may not throw fatal errors.
2016-02-09 12:26:00 +01:00
Christoph Oelckers
26b657b637 Merge branch 'master' of https://github.com/rheit/zdoom 2016-02-09 11:51:39 +01:00
Christoph Oelckers
8823b60c0d - fixed: FxClassTypeCast must use FindClassTentative to get the class type.
This function may well be invoked before a class is actually defined, so it needs to create a placeholder to be filled in later.
2016-02-09 11:51:19 +01:00
Randy Heit
f0b4962052 Fix: CountInv must return a value if the caller's expecting one 2016-02-08 22:21:42 -06:00
coelckers
1ca2293983 Merge pull request #538 from MajorCooke/CountInv
CountInv(itemtype, ptr_select)
2016-02-08 21:06:30 +01:00
Christoph Oelckers
0a7b17c469 Merge branch 'master' of https://github.com/rheit/zdoom 2016-02-08 21:01:46 +01:00
Christoph Oelckers
ceba4b0dae - fixed: old style DECORATE must use exactly the same method to store the damage function as the modern version.
The difference in handling crashed with Daedalus.
2016-02-08 21:01:25 +01:00
MajorCooke
124e0458cf - Fixed: A_CheckProximity could trigger an assert because the flags and ptr were not flagged as optional.
- Fixed: CPXF_ANCESTOR no longer worked for some reason because apparently the IsAncestorOf() functionality has changed. Use IsKindOf instead.
2016-02-08 10:26:18 -06:00
Christoph Oelckers
c940c2ba81 - fixed: The counters for the whirlwind were initialized too late, the first time they are needed is in P_CheckMissileSpawn, which gets called from inside P_SpawnMissile. Also took the opportunity and moved them to properties that are accessible from DECORATE. 2016-02-08 13:34:54 +01:00