Commit graph

1046 commits

Author SHA1 Message Date
Christoph Oelckers
47b1fa774d Merge branch 'asmjit' into weapon_scriptification
# Conflicts:
#	src/gi.cpp
#	wadsrc/static/zscript/base.txt
2018-11-26 00:14:44 +01:00
Christoph Oelckers
d6b781312c - removed all remaining native components of the weapon class. 2018-11-25 10:00:55 +01:00
Christoph Oelckers
70d3c31551 - allow defining flags in the script declaration of a class and do that for Weapon. 2018-11-25 09:29:12 +01:00
Christoph Oelckers
b5c4ab8c47 - removed all direct access to AWeapon's members to prepare moving this class fully to the script side.
Disregarding UI-side and setup-related calls there's unfortunately still 6 places in the native game code which require direct access.
2018-11-25 08:17:37 +01:00
Christoph Oelckers
7012179904 - moved MarkPrecacheSounds completely to the script side and added native support to make this a usable feature. 2018-11-25 07:43:05 +01:00
Christoph Oelckers
bc86ec4c51 - removed the less-parameters versions of P_SpawnPlayerMissile, because there was only one native call left to them. 2018-11-25 01:14:50 +01:00
Christoph Oelckers
51ee623b3b - took the weapon selection logic out of the WeaponSlots data and blocked all direct access to the weapon slots internals
This seriously needs to be independent from the data store and better abstracted. More work to come to move this to its proper place.
2018-11-24 22:03:56 +01:00
Christoph Oelckers
3d892d3970 - scriptified FilterCoopRespawnInventory. 2018-11-24 20:58:33 +01:00
Christoph Oelckers
652606f70b - scriptified A_Explode and relatives. 2018-11-24 19:29:52 +01:00
Christoph Oelckers
b267252a09 - fixed: Since out types cannot be marked as such in a function prototype (as it'd cause parameter mismatches in the resolving pass) it is necessary to check the argflags as well when determining the register type. 2018-11-24 09:34:53 +01:00
Christoph Oelckers
ad04001135 - fixed some issues with the bodyque and moved this variable into FLevelLocals
* it was never saved in savegames, leaving the state of dead bodies undefined
* it shouldn't be subjected to pointer substitution because all it contains is old dead bodies, not live ones.
2018-11-19 18:13:23 +01:00
Christoph Oelckers
a981737855 - generate register type info for the parameter lists of all functions.
Currently used for loading parameters into registers.
For checking parameters of native functions some more work is needed to get the info to the function. Currently it doesn't receive the function descriptor.
2018-11-18 17:10:55 +01:00
Christoph Oelckers
94ed30e782 - removed the default parameter handling from all native script functions because it is no longer needed. 2018-11-17 10:03:40 +01:00
Christoph Oelckers
acbdfddb26 Merge remote-tracking branch 'remotes/origin/master' into asmjit 2018-11-16 17:20:12 +01:00
Christoph Oelckers
33fb76698b Avoid using argument count for any kind of decision making in native VM functions.
This allows retaining the functionality, even if for the JIT compiler's benefit all default arguments are pushed onto the stack instead of reading them from the defaults array.
2018-11-16 15:25:37 +01:00
Christoph Oelckers
1250eb5323 - fixed: AActor' friction field was not saved 2018-11-16 08:06:01 +01:00
ZZYZX
ed3355acc6 Explode bouncing projectiles if hit damageable geometry 2018-11-07 00:12:37 +01:00
ZZYZX
d85e5afdfb Destructible geometry - minor fixes and 3D floor support 2018-11-07 00:12:37 +01:00
Player701
56f76a141e - Added a function to get the actor's age in ticks. 2018-11-04 19:58:57 +01:00
Player701
a6dbfcf9c2 - Added a new field to the Actor class which stores the amount of ticks passed since the game started on the moment the actor was spawned.
- Added a function to the Actor class to get its spawn time relative to the current level.
- Added spawn time information to the output of the "info" console command.
2018-11-04 19:58:57 +01:00
Cacodemon345
b1d35eb0b3 Extend SKYEXPLODE flag for LineAttack 2018-11-03 15:24:30 +01:00
ZZYZX
849d110f10 Fixed sector floor/ceiling actions not triggering in P_XYMovement 2018-11-01 00:05:43 +01:00
ZZYZX
b911bbc424 Single commit - destructible geometry feature 2018-10-31 17:22:09 +01:00
Marisa Kirisame
c3894ee348 Exports various resurrection-related functions to ZScript. 2018-10-04 08:59:37 -04:00
Marisa Kirisame
38c8f0d585 Adds OnDrop virtual to inventory items. Called on the dropped item at the end of AActor::DropInventory. 2018-09-16 17:58:57 +02:00
Christoph Oelckers
5b7d3c91f9 - defaulted constructors and assignment operators of several trivial types. 2018-08-25 23:51:36 +02:00
Christoph Oelckers
fad406c4c9 - got rid of FNameNoInit and made the default constructor of FName non-initializing.
This setup has been a constant source of problems so now I reviewed all uses of FName to make sure that everything that needs to be initialized is done manually.
This also merges the player_t constructor into the class definition as default values.
2018-08-19 08:19:19 +02:00
Christoph Oelckers
0c5a47ac90 - fixed: MF3_DONTSPLASH disabled all terrain effects, not just the splash.
Untested for now because the report came without any example to check it with.
2018-06-02 12:10:44 +02:00
Christoph Oelckers
9bdb0f2e49 - renamed the flag bits for sector_t::MoreFlags, so that they are easier to distinguish from sector_t::Flags.
- precalculate if a sector's floor and ceiling plane overlap. This avoids rechecking this for each single call of hw_FakeFlat.
- vertices must be marked dirty every time they change after map setup. That means that ChangePlaneTexZ must do this as well, because it cannot rely on interpolation taking care of it.
- Having a 'dirty' argument for SetPlaneTexZ's ZScript version makes no sense. If the value changes from the script side the vertices must always be marked to be recalculated.
2018-05-01 11:29:29 +02:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
alexey.lysiuk
b0261d9545 Actor's Activation property is now stored in saved game
https://forum.zdoom.org/viewtopic.php?t=60295
2018-04-21 13:12:12 +03:00
Christoph Oelckers
d474b849a5 - removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers.
Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions.
The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
2018-04-04 00:21:25 +02:00
alexey.lysiuk
17bc9c3f69 Fixed handling of default value in Actor.Vec3Angle() 2018-03-31 11:46:06 +03:00
alexey.lysiuk
341a9bcf91 Added target and last enemy to linetarget CCMD output
https://forum.zdoom.org/viewtopic.php?t=59716
2018-03-18 11:23:24 +02:00
Major Cooke
7ac8b496f1 Added Distance(2/3)DSquared functions. 2018-02-28 09:28:11 +01:00
ZZYZX
ef867c3415 Fixed arg0str for dynamic light actors 2018-02-04 03:37:41 -05:00
Christoph Oelckers
2bb80e3d0b - fixed: Upon resurrection, a monster must check if the current setting of the link flags (NOBLOCKMAP and NOSECTOR) match the defaults. 2018-01-29 18:18:31 +01:00
Christoph Oelckers
56e2db38fd - Use FName instead of FString to store arg0str in FMapThing.
This is because FMapThing gets memset to 0 and changing that would cause more work than it is worth to keep the string. The only thing it is used for is the color for dynamic lights and those do not need case sensitivity so a name will just do as well, but require less adjustments elsewhere.
2018-01-21 09:10:04 +01:00
Christoph Oelckers
6aaf5df617 - reworked spot lights to receive all relevant information through the args.
As a bonus, arg0str can now be used for all dynamic lights to pass a color in textual form, including X11R6RGB-names.
2018-01-20 22:41:28 +01:00
Christoph Oelckers
dbf0a68b02 Merge commit '67e3106254e987f5acb9534e725d4f5c3eaa82b2'
# Conflicts:
#	src/doomdata.h
#	src/namedef.h
#	src/p_udmf.cpp
2018-01-20 19:07:54 +01:00
Rachael Alexanderson
ee9736fbb3 - print out FriendlySeeBlocks on 'info' ccmd
- not setting FriendlySeeBlocks on UDMF now causes the actor to use its ZScript default
2018-01-09 15:48:19 -05:00
Rachael Alexanderson
9c189e5d4b - expose a monster's 'friendlyseeblocks' to UDMF 2018-01-09 15:30:45 -05:00
Rachael Alexanderson
7416f42b47 - add 'FriendlySeeBlocks' actor property that allows a modder to expand the maximum radius that a friendly monster can see enemies. 2018-01-09 12:34:12 -05:00
Jonathan Russell
e754fe04ef - removed the 0 check on the UDMF property, so 0 can be a valid aperture 2018-01-04 23:22:45 +00:00
Jonathan Russell
7f7c720883 - added UDMF properties for spotlights (args have all been used up for dynlights) 2018-01-04 22:41:57 +00:00
alexey.lysiuk
8f70d70dd6 Generalized maximum amount for give cheat
https://forum.zdoom.org/viewtopic.php?t=58930
2017-12-31 15:25:51 +02:00
alexey.lysiuk
294bf6ed53 Simplified base class checks in AActor::GiveInventory() 2017-12-31 15:23:54 +02:00
alexey.lysiuk
de4fc97ac6 Fixed ammo limit for give cheat
https://forum.zdoom.org/viewtopic.php?t=58930
2017-12-31 13:30:30 +02:00
Rachael Alexanderson
45531090a7 - add 'playerrespawn' skill flag to allow gameplay mods to retroactively enable player respawns in single player on all maps 2017-12-28 00:53:30 -05:00
Christoph Oelckers
12ad7ee933 Do not call DoEffect when predicting player movement. 2017-09-02 07:57:03 +02:00
nashmuhandes
42db31b816 Added per-actor camera FOV. 2017-08-28 21:14:11 -04:00
Christoph Oelckers
2e670ae71d - fixed: When offsetting the projectile for testing, P_CheckMissileSpawn must also reset the projectile's sector to its new location.
If this isn't done the portal checks may fail and create incorrect positioning info.
2017-08-27 09:16:04 +02:00
Christoph Oelckers
4483d665d4 - fixed: FastProjectile's movement code was missong a portal check. 2017-08-12 13:58:16 +02:00
Christoph Oelckers
163b10286f - Reset interpolation coordinates for all actors before the current thinking turn instead of at the start of each actor's own Tick function so that indirect actor movement gets properly interpolated. 2017-08-12 11:48:36 +02:00
Rachael Alexanderson
91ff447a90 - fixed compile from last commit
- refactored the zscript hookup a bit, made it actually work
2017-07-29 17:03:43 -04:00
Christoph Oelckers
b81a23c5e5 - fixed return type of CountsAsKill. 2017-07-25 08:14:46 +02:00
Christoph Oelckers
e8e940d221 - fixed portal handling for P_CheckMissileSpawn to obey commonly established rules about portal types. 2017-07-20 18:32:54 +02:00
Rachael Alexanderson
63d9148604 Merge https://github.com/coelckers/gzdoom 2017-06-09 05:57:10 -04:00
Christoph Oelckers
8c053c0141 - let P_CheckMissileSpawn also clear MF2_PCROSS before checking the move. 2017-06-08 09:00:26 +02:00
Major Cooke
15df231a95 - Fixed: Vel3DFromAngle's internal function call had the pitch and angle parameters backwards: 2017-06-08 08:54:30 +02:00
Rachael Alexanderson
717e9dd0d8 Merge https://github.com/coelckers/gzdoom 2017-06-07 16:46:21 -04:00
Christoph Oelckers
55df3a91ec - fixed: P_CheckMissileSpawn's setup for P_TryMove must be done in a way that allows detecting portal transitions.
By setting the position before the call any portal lying between the actual spawn point and the check position would be skipped.
2017-06-07 22:42:59 +02:00
Rachael Alexanderson
5d40b2c36c Merge https://github.com/coelckers/gzdoom 2017-06-04 21:04:33 -04:00
Rachael Alexanderson
757957bfac - prevent SetShaded action function from messing up the RGB-to-PAL conversion with a possible overflow
- add RGB-to-PAL support for UDMF fillcolor property
2017-06-04 14:46:03 -04:00
Rachael Alexanderson
64b22f6cb3 Merge https://github.com/coelckers/gzdoom 2017-06-03 22:34:13 -04:00
jplebreton
2c7a0c87c8 add FloatBobStrength Actor property, a multiplier on Z offset created by FloatBob behavior. default of 1.0 is current behavior, set higher/lower for more/less extreme bobbing. 2017-06-03 18:02:27 +02:00
Rachael Alexanderson
fd0602a163 Merge https://github.com/coelckers/gzdoom 2017-05-19 23:40:51 -04:00
Christoph Oelckers
fc8639226d - yet again Visual Studio's autocompletion feature deleted some tildes. 2017-05-19 21:36:32 +02:00
Christoph Oelckers
e1cd0dc588 - major optimization on carry scroller code.
The old version was checking every single actor in every single sector for being affected by a carry scroller if there was so much as a single such scroller in the map.
Changed it so that the scroll thinker flags all actors in the affected sectors so that these expensive calculations can be skipped for everything else.
This change and reduce think time by 1/3 on maps like ZDCMP2 (on the test machine it went down from 6 ms to 4 ms on this map.)
2017-05-19 16:31:44 +02:00
Rachael Alexanderson
0f54d7f854 Merge https://github.com/coelckers/gzdoom 2017-05-17 08:53:34 -04:00
Rachael Alexanderson
a96ef5276d - Added new flags8 actor field. Isn't it frightening how quickly how we got to our 8th flag field?
- Speaking of frightening, added +FRIGHTENING flag.
2017-05-15 19:17:46 +02:00
Rachael Alexanderson
ac244b3229 Merge https://github.com/coelckers/gzdoom 2017-05-10 05:15:49 -04:00
Christoph Oelckers
8be7ff01dd - removed some pointless restrictions from AActor::IsOkayToAttack which prevented its use on normal monsters.
This all made sense as long as the function was only used internally but that's not the case anymore.
2017-05-09 09:57:38 +02:00
Rachael Alexanderson
a59336908c Merge https://github.com/coelckers/gzdoom 2017-05-02 03:13:40 -04:00
Christoph Oelckers
050acc9271 - added rudimentary support for SVE.wad from the Strife Veteran edition so that the extended single player campaign is usable:
* all new things got either an sctor definition or are explicitly deleted through the 'doomednums' section in MAPINFO. CTC related actors are non-functional!
* added a 'noskillflags' option to 'doomednums' so that the lightmap definition things in the maps can be repurposed as dynamic lights.
* added the new dagger powerup.
* added MAPINFO entries for the added maps.
2017-05-01 21:25:54 +02:00
Rachael Alexanderson
ebf33ed24e Merge https://github.com/coelckers/gzdoom
# Conflicts:
#	src/posix/cocoa/i_video.mm
2017-04-30 22:16:01 -04:00
Christoph Oelckers
6e25c34fda - more player code exported 2017-04-30 22:17:51 +02:00
Rachael Alexanderson
c71d23f519 Merge https://github.com/coelckers/gzdoom 2017-04-22 22:02:20 -04:00
Christoph Oelckers
3608299e61 - serialize AActor::boomwaterlevel.
After changing the splash code this looks necessary.
2017-04-22 15:52:24 +02:00
Rachael Alexanderson
5d11c9962b Merge commit '8db239d' 2017-04-18 11:33:52 -04:00
Christoph Oelckers
96d328de9b - removed all Doom Source license and all default Raven copyright headers and replaced them with GPLv3. Also fixed the license in a few other files.
For some files that had the Doom Source license attached but saw heavy external contributions over the years I added a special note to license all original ZDoom code under BSD.
2017-04-17 13:33:19 +02:00
Rachael Alexanderson
997a62de36 Merge https://github.com/coelckers/gzdoom 2017-04-14 23:09:21 -04:00
Christoph Oelckers
cd180d29c7 - block direct use of 'new' for DObjects.
This is to ensure that the Class pointer can be set right on creation. ZDoom had always depended on handling this lazily which poses some problems for the VM.
So now there is a variadic Create<classtype> function taking care of that, but to ensure that it gets used, direct access to the new operator has been blocked.

This also neccessitated making DArgs a regular object because they get created before the type system is up. Since the few uses of DArgs are easily controllable this wasn't a big issue.

- did a bit of optimization on the bots' decision making whether to pick up a health item or not.
2017-04-14 13:31:58 +02:00
Rachael Alexanderson
2c4552da42 Merge https://github.com/coelckers/gzdoom 2017-04-13 10:09:47 -04:00
alexey.lysiuk
1889efa814 Fixed build with Clang
Fixed bunch of compilation errors:
cannot pass non-trivial object of type 'FString' to variadic method; expected type from format string was 'char *' [-Wnon-pod-varargs]

Fixed linker erorr:
g_doomedmap.cpp.o: In function `InitActorNumsFromMapinfo()':
src/g_doomedmap.cpp: undefined reference to `PClass::FindActor(FName)'
2017-04-13 10:40:43 +03:00
Rachael Alexanderson
a15031706d Merge https://github.com/coelckers/gzdoom 2017-04-12 20:33:38 -04:00
Christoph Oelckers
6599e2c425 - moved the VM types into their own file and only include it where really needed. 2017-04-13 01:12:04 +02:00
Christoph Oelckers
9c9b2ccf6d - replaced more dyn_casts and checks for RUNTIME_CLASS(PClassActor)
It is preferable to use IsDescendantOf wherever possible if we ever want to be able to separate PClass from PType.
2017-04-12 10:20:58 +02:00
Christoph Oelckers
5350721ec5 - removed PClass::DeriveData because it is no longer needed.
- fixed: IsVisibleToPlayer and optimized it a bit more.
- moved SourceLumpName to PClass, so that it can also be used for non-actors (there's a lot of non-Actor classes already.)
- separated the serializer for PClassPointer from PPointer. Even though not doable, a pointer to a class type is something entirely different than a class pointer with a restriction so each should handle its own case.
2017-04-12 09:55:27 +02:00
Christoph Oelckers
e4d2380775 - moved all remaining fields from PClassActor to FActorInfo.
- added a few access functions for FActorInfo variables.

With PClassActor now empty the class descriptors can finally be converted back to static data outside the class hierarchy, like they were before the scripting merge, and untangle the game data from VM internals.
2017-04-12 00:07:41 +02:00
Christoph Oelckers
854053a14f - use TArrays instead of TMaps to store damage factors and pain chances.
For these fields maps have no advantage. Linearly searching a small array with up to 10 entries is nearly always faster than generating a hash for finding the entry in the map.
2017-04-11 23:29:37 +02:00
Christoph Oelckers
05240ccbe5 - fixed redundant reallocation of constructable meta fields.
- some optimization of access to OwnedStates in old DECORATE.
- consolidate all places that print a state name into a subfunction.
- allocate states from the ClassDataAllocator memory arena. States do not need to be freed separately from the rest of the static class data.
2017-04-11 21:48:41 +02:00
Rachael Alexanderson
7040bc2156 Merge https://github.com/coelckers/gzdoom 2017-04-11 14:06:13 -04:00
Christoph Oelckers
ef77cbd295 - stop using the ATAGs for checking pointer types in asserts.
This is an incredibly costly way to do a debug check as it infests the entire VM design from top to bottom. These tags are basically useless for anything else but validating object pointers being passed to native functions (i.e. mismatches between definition and declaration) and that simply does not justify a feature that costs execution time in non-debug builds and added memory overhead everywhere.
Note that this commit does not remove the tags, it only discontinues their use.
2017-04-10 15:18:31 +02:00
Rachael Alexanderson
9da596cd9c Merge https://github.com/coelckers/gzdoom 2017-03-28 16:29:07 -04:00
Christoph Oelckers
a112b29c43 - implemented the inventory bar. This object is a bit special because it requires a lot of parameters, most of which are easily set to defaults. To make handling easier, most are passed through a container object which does some processing up front.
- finished work on the Doom status bar. I also took the opportunity to fix the layout of the inventory bar which is a bit broken in SBARINFO.
- tuned the selection rules for deciding what creates the status bar, so that the most recent definition that can be found is chosen.
2017-03-27 01:02:10 +02:00
Rachael Alexanderson
ff3d3f13c8 - Implement hostile coop for -FRIENDLY players. 2017-03-24 14:59:25 -04:00
Rachael Alexanderson
786c4f01c8 - Monsters no longer search for players who are unfriendly. 2017-03-24 14:59:25 -04:00
Christoph Oelckers
1423d5f42a - scriptified the SBARINFO wrapper.
This serves no purpose in itself but it removes a native side class from the status bar class hierarchy which allows for better editing options later.
2017-03-22 17:29:13 +01:00
Christoph Oelckers
9bffe4ee50 - scriptified the main statusbar interface and the Strife status bar.
Note that the Strife status bar does not draw the health bars yet. I tried to replace the hacky custom texture with a single fill operation but had to find out that all the coordinate mangling for the status bar is being done deep in the video code. This needs to be fixed before this can be made to work.

Currently this is not usable in mods because they cannot initialize custom status bars yet.
2017-03-22 00:32:52 +01:00