Commit graph

674 commits

Author SHA1 Message Date
Edoardo Prezioso
7b35f32f3d - Added the 'GiveInventory' method to the actor.
This will help cleaning up the item giving code. Returns a bool, in case the pickup failure might turn to be interesting in the future.
2016-04-21 15:59:23 +02:00
Christoph Oelckers
e5dc92f998 - some reshuffling of save data so that the actors won't get restored before the sectors.
Note that this required splitting P_SerializeWorld, because sector_t and FSectorPortal contain some actor pointers, for which the same rule applies: Portal linking can only be done after all sectors have been read, meaning it cannot be done along with the rest of the data in these structures.

Obviously such a change breaks savegame compatibility so the min. savegame version had to be increased again.
2016-04-20 19:42:00 +02:00
Christoph Oelckers
3532dd9ea1 - fixed coordinate correctness issues with P_CheckFor3DFloor/CeilingHit. 2016-04-20 13:28:19 +02:00
Christoph Oelckers
322b9fc0ae - wrap access to portal properties into sector_t:: member functions. 2016-04-19 11:35:28 +02:00
Christoph Oelckers
2327107f32 - fixed: Actors cannot be linked into the world until after all actors and sectors have been deserialized.
Two issues:

Portal linking requires all skyboxes in the sectors to be present, without them some info is not there when needed.
UpdateWaterLevel was called in AActor::Serialize, which operated on the freshly loaded level where lots of things haven't been set up yet and plane heights may be wrong.
2016-04-18 15:27:19 +02:00
Christoph Oelckers
54d78df267 - added a new sector list to AActor that collects all portal-linked sectors the actor's center is in. (Inspired by Eternity's solution to the same problem.)
This is for rendering the sprite properly in all areas the actor touches. The original thinglist is not sufficient for this and Boom's touching thinglist has other purposes and collects too much data.
This new list will only get filled in when the actor is actually crossing a portal plane, for the normal sector thinglist will still be used.
This piggybacks on the msecnode_t code which has been extended to be able to handle more than one list by passing the sector's membert pointers as parameters.
2016-04-17 23:48:04 +02:00
Christoph Oelckers
d48c0ce25c - fixed some particle positioning errors. 2016-04-10 10:57:48 +02:00
Christoph Oelckers
919f99db61 - fixed typo in actor scale assignment when spawning. 2016-04-08 16:52:42 +02:00
Christoph Oelckers
32bbec7cad - fixed: the random offset that gets used when spawning blood applies to both sprites and particles, not just sprites. 2016-04-07 14:14:44 +02:00
Christoph Oelckers
ddb2f6b6cb - fixed: P_SpawnPlayerMissile still used the angle_t values for offsetting the autoaim traces. 2016-04-07 13:11:23 +02:00
Christoph Oelckers
55cbeb0253 - fixed pitch calculation in P_SeekerMissile with SMF_PRECISE. 2016-04-04 23:07:21 +02:00
Christoph Oelckers
3ee42f6aa6 - removed all savegame compatibility handling, since the data is just too different from what it was before to try to convert it. 2016-04-03 20:55:23 +02:00
Christoph Oelckers
6445615b5d - fixed the sound location calculations which got somewhat broken by the constant changes during the conversion. 2016-03-31 21:13:32 +02:00
Christoph Oelckers
77f2530236 - floatified the sector plane movers and removed some of the ZatPoint conversion cruft. 2016-03-30 09:41:46 +02:00
Christoph Oelckers
25f5e8449a - replaced all direct access to sector plane coefficients with wrapper functions. 2016-03-29 12:40:41 +02:00
Christoph Oelckers
c7ae4688a3 - replaced all direct access to vertex coordinates with wrapper functions.
So that code replacement can be done piece by piece and not all at once.
2016-03-29 10:07:06 +02:00
Christoph Oelckers
05504b65d2 - floatified p_scroll.cpp
While testing this it became clear that with the higher precision of doubles it has to be avoided at all costs to compare an actor's z position with a value retrieved from ZatPoint to check if it is standing on a floor. There can be some minor variations, depending on what was done with this value. Added isAbove, isBelow and isAtZ checking methods to AActor which properly deal with the problem.
2016-03-28 21:04:46 +02:00
Christoph Oelckers
a99ebc2356 - floatified p_sight.cpp. 2016-03-28 16:22:21 +02:00
Christoph Oelckers
5e1c79c050 - floatified the rest of p_mobj_cpp and removed a large part of the conversion cruft from the headers that was needed to keep the code compileable. 2016-03-28 12:03:07 +02:00
Christoph Oelckers
2fff7005ad - floatified more of p_mobj.cpp 2016-03-28 10:01:24 +02:00
Christoph Oelckers
217414cb1c -floatified P_ExplodeMissile and P_XYMovement 2016-03-28 00:55:57 +02:00
Christoph Oelckers
8b4a33794a - floatified P_ChangeSector. 2016-03-27 22:35:58 +02:00
Christoph Oelckers
26ff2f73d7 - floatified P_TryMove and the sliding and bouncing code. 2016-03-27 13:29:58 +02:00
Christoph Oelckers
1877eca2ab - more floatification of p_map, plus some stuff used in those functions. 2016-03-27 01:06:54 +01:00
Christoph Oelckers
00ea8662b8 - floatification of p_enemy and p_interaction.cpp. 2016-03-26 20:59:35 +01:00
Christoph Oelckers
dabed04d2a - floatification of p_3dfloors, p_3dmidtex and p_acs.cpp plus some leftovers.
- removed all references to Doom specific headers from xs_Float.h and cmath.h.
2016-03-26 12:36:15 +01:00
Christoph Oelckers
30b57fd7b0 - floatification of G_CheckSpot and a few other things. 2016-03-26 09:28:00 +01: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
c2e7858e05 - looks like the oldz parameter in UpdateWaterLevel is not needed at all... 2016-03-26 01:13:36 +01:00
Christoph Oelckers
e42b0171b3 - floatification of bot code. 2016-03-26 00:34:56 +01:00
Christoph Oelckers
8e13d13916 - floatified the automap. 2016-03-25 21:54:59 +01:00
Christoph Oelckers
2cf3b20ea8 - floatified the last remaining AActor member variable 'damagemultiply'. 2016-03-25 16:30:31 +01:00
Christoph Oelckers
1125101b37 - floatified AActor::Prev plus the stuff using it.
- rewrote some coordinate functions in AActor to use real float math instead of converting back and forth between float and fixed.
2016-03-25 16:25:25 +01:00
Christoph Oelckers
8cdfbeea01 - made AActor::__pos a genuine float vatiable. 2016-03-25 15:43:20 +01:00
Christoph Oelckers
8b6b5e7b1c - preparation for upcoming work: rename the fixed point versions of PosRelative. 2016-03-25 14:18:50 +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
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
2dbd79cc8d - floatified the return data from Trace(). 2016-03-23 18:07:04 +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
2a0d5a621a - floatified some stuff in g_shared.
Note: This commit does not handle z-spawn positions correctly.
2016-03-23 00:53:09 +01:00
Christoph Oelckers
301f5abadc - floatified the decal code. 2016-03-22 22:07:38 +01:00
Christoph Oelckers
6b3c0ecbd3 - floatified viewheight variables and some related code. 2016-03-22 18:06:08 +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