Christoph Oelckers
17a2666bd4
- moved DisplayName, the last remaining PlayerPawn meta property, to PClassActor so that PClassPlayerPawn could be removed.
...
Now all actors have the same metaclass and therefore it will always be the same size which will finally allow some needed changes to the type system which couldn't be done because it was occasionally necessary to replace tentatively created classes due to size mismatches.
2017-02-08 19:42:24 +01:00
ZZYZX
39355cf45d
Implemented player scripts.
2017-02-02 21:25:07 +02:00
Christoph Oelckers
f15b051327
- use std::unique_ptr to manage the resource file for loading a savegame because the try/catch handler to ensure its deletion was causing some problems.
2017-01-22 20:06:11 +01:00
Christoph Oelckers
2fcffd1fc1
- removed the remaining native parts of ABasicArmor.
...
- simplified some FindInventory calls using PClass::FindActor to call the variant taking a name directly.
2017-01-18 22:57:47 +01:00
Christoph Oelckers
cfdd580044
- deleted a_artifacts files.
2017-01-18 10:44:51 +01:00
Christoph Oelckers
232b64d332
- eliminated the native PowerupGiver class.
...
- scriptified the respawn invulnerability code into a virtual OnRespawn function for PlayerPawn so that custom effects can be implemented.
2017-01-18 00:11:04 +01:00
Christoph Oelckers
e621b43dd3
- removed the upper limit of 20 for autosaves.
2017-01-13 11:59:55 +01:00
Christoph Oelckers
cd7986b1b1
- refactored global sides array to be more VM friendly.
...
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Christoph Oelckers
71d1138376
- refactored the global lines array into a more VM friendly form, moved it to FLevelLocals and exported it to ZScript.
...
- disabled the Build map loader after finding out that it has been completely broken and nonfunctional for a long time. Since this has no real value it will probably removed entirely in an upcoming commit.
2017-01-08 14:39:16 +01:00
Christoph Oelckers
c02281a439
- refactored the global sectors array into a more VM friendly type and moved it into FLevelLocals.
2017-01-07 19:32:24 +01:00
Christoph Oelckers
d4427e696d
- scriptified Hexen's Banishment Device.
2016-11-28 01:30:36 +01:00
Christoph Oelckers
096c51d546
- changed AInventory::HandlePickup to work iteratively instead of recursively.
...
Two reasons for this:
1. if this has to be routed through the VM each recursion will cost 1000 bytes of stack space which simply is not good.
2. having the virtual function only care about the item itself but not the entire inventory chain is a lot less error prone for scripting.
Since the scripting interface needs a separate caller function anyway this seemed like a good time to change it. The same will be done for the other chained inventory handlers as well.
2016-11-27 16:24:31 +01:00
Christoph Oelckers
6e1c6c4b33
- scriptified ArtiTeleport.
...
- shortened ArtiEgg and ArtiPork's use state to a single function.
2016-11-25 19:52:35 +01:00
Christoph Oelckers
faea61cf01
- fixed: Turbo messages were printed, even when no turbo mode was active.
2016-11-04 12:43:23 +01:00
Rachael Alexanderson
6755373f46
- fixed: map commands will now take capslock DM/COOP as arguments
2016-11-01 15:09:09 +01:00
Rachael Alexanderson
f72ebe6768
- Extended map, recordmap, and open commands to accept "dm/coop" as an extra parameter - to open maps in multiplayer mode with the requested ruleset.
2016-11-01 15:09:08 +01:00
Rachael Alexanderson
043e761eec
- Implemented sv_singleplayerrespawn
2016-10-25 09:25:56 +02:00
Christoph Oelckers
59d5b42abf
- fixed: G_UnsnapshotLevel should abort with an error if it cannot read the savegame.
...
- fixed: The exception handler in G_DoLoadGame needs to rethrow the exception it receives.
2016-10-05 19:02:53 +02:00
Edoardo Prezioso
7e4d0ecdbf
- Fixed GCC/Clang regression post serialization.
2016-09-24 09:00:31 +02:00
Christoph Oelckers
86e9282193
- removed the sequential processing of JSON objects because the benefit is too small.
...
After testing with a savegame on ZDCMP2 which is probably the largest map in existence, timing both methods resulted in a speed difference of less than 40 ms (70 vs 110 ms for reading all sectory, linedefs, sidedefs and objects).
This compares to an overall restoration time, including reloading the level, precaching all textures and setting everything up, of approx. 1.2 s, meaning an increase of 3% of the entire reloading time.
That's simply not worth all the negative side effects that may happen with a method that highly depends on proper code construction.
On the other hand, using random access means that a savegame version change is only needed now when the semantics of a field change, but not if some get added or deleted.
- do not I_Error out in the serializer unless caused by a programming error.
It is better to let the serializer finish, collect all the errors and I_Error out when the game is known to be in a stable enough state to allow unwinding.
2016-09-23 14:04:05 +02:00
Christoph Oelckers
c17da32dbd
- added object deserialization. It seems to work, at least the stuff I sampled looked like it was properly reatored and it triggers no error condition.
...
- always make the top level object randomaccess when opening a JSON file for reading. Some things won't work right if this is opened for sequential access.
2016-09-23 00:45:41 +02:00
Christoph Oelckers
c22e8c50af
- fixed some errors with parsing globals.json. It looks like this file is being processed correctly now.
2016-09-22 19:36:23 +02:00
Christoph Oelckers
5dfc396bb9
- read snapshots from zip.
2016-09-22 01:28:05 +02:00
Christoph Oelckers
f93e4813d1
- removed farchive.cpp and .h
2016-09-22 00:48:22 +02:00
Christoph Oelckers
1c9dbc3c36
- converted the basic savegame loader so that all remnant of FArchive have been removed now.
2016-09-22 00:18:31 +02:00
Christoph Oelckers
88c27e2cc0
- allow the compact and pretty writers for JSON to coexist by wrapping the whole stuff into another class that calls the proper one as needed. Due to the implementation it is not possible to decide at run time how this should behave so there have to be two different objects for either mode.
...
- savegame code handles new format.
2016-09-21 21:57:24 +02:00
Christoph Oelckers
ac3c00883d
- implemented saving of new format savegames as zips. The code for that was adapted from zipdir.c.
2016-09-21 17:37:56 +02:00
Christoph Oelckers
810ef8f775
- save global savegame data to JSON as well.
...
This is incomplete and untested, just a safety commit before going on.
2016-09-21 12:19:13 +02:00
Christoph Oelckers
67239cd623
- added a FileWriter class (taken from another project of mine) and changed m_png.cpp to use it.
...
This is so that PNGs can be written to memory, not just to an external file. stdio's FILE cannot be easily redirected but a C++ class can.
The writer is very simple and primitive right now, allowing no seeking, but for the job at hand it is sufficient.
Note that large parts of savegame creation have been disabled, because they are about to be rewritten and it makes no sense to adjust them all before.
2016-09-21 09:01:12 +02:00
Christoph Oelckers
075e98c967
- use FCompressedBuffer to store level snapshots. FCompressedMemFile has been removed.
2016-09-21 01:48:23 +02:00
Leonard2
1966b61b8f
Generalized the psprites implementation
2016-05-20 17:04:44 +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
30b57fd7b0
- floatification of G_CheckSpot and a few other things.
2016-03-26 09:28:00 +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
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
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
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
MaxED
81a5273b58
Added "Miscellaneous Options" -> "Save/Load confirmation" option (defaults to true). When disabled, confirmation dialog won't be shown when performing quicksave/quickload.
2016-03-03 09:59:26 +01:00
Randy Heit
55142078d8
Normalize line endings
2016-03-01 09:47:10 -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
Randy Heit
b3b0886b64
Merge branch 'scripting'
...
Conflicts:
src/actor.h
src/g_doom/a_doomweaps.cpp
src/g_hexen/a_blastradius.cpp
src/p_enemy.cpp
src/p_enemy.h
src/thingdef/thingdef.h
src/thingdef/thingdef_codeptr.cpp
wadsrc/static/actors/constants.txt
2016-02-04 15:17:22 -06:00
alexey.lysiuk
6bce5ddc4b
Scale of player's skin is now preserved on corpses after reborn
2016-01-30 18:30:20 +02:00
Christoph Oelckers
36911bac4b
- fixed memory allocation type mismatch in demo code.
2016-01-30 15:17:46 +01:00
Edward Richardson
40d90ba325
Game still needs to abort if no starts exist at all
2016-01-30 22:26:47 +13:00
Edward Richardson
c1e362ee83
Added level transition spawning for missing starts
...
- Additional player bodies are spawned for any absent starts in co-op.
- Removed now-redundant bot start limitation
2016-01-30 22:02:27 +13:00
Randy Heit
87dee5c611
Fixed: Co-op players could spawn at (0,0) if no start spots for them
...
- Check if a co-op start exists. If not, pick one at random.
- Don't telefrag other players when spawning in co-op games, since
you're allowed to move out of other players now.
2016-01-28 20:08:09 -06:00
Christoph Oelckers
4b9647e539
Merge branch 'master' into scripting
...
Conflicts:
src/actor.h
src/g_hexen/a_hexenspecialdecs.cpp
src/g_strife/a_thingstoblowup.cpp
src/thingdef/thingdef_codeptr.cpp
2016-01-20 11:45:57 +01:00
Edward Richardson
5c8ebf487d
Fixed load order for saves
...
- Make sure the PRNG tables are restored after the base level is loaded,
otherwise the tables will restore in a modified state.
2016-01-20 19:14:43 +13:00
Christoph Oelckers
bf747075e8
Merge branch 'master' into scripting
...
Conflicts:
src/actor.h
src/g_hexen/a_clericstaff.cpp
src/p_enemy.cpp
src/p_interaction.cpp
src/p_local.h
src/p_mobj.cpp
src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:57:55 +01:00
Christoph Oelckers
c611456397
- more refactoring of AActor coordinate access.
2016-01-17 18:36:14 +01:00
Christoph Oelckers
3e446ea04d
- replaced access to AActor's coordinate members with access functions
...
(first 200 compile errors down...)
2016-01-17 13:48:16 +01:00
Christoph Oelckers
1e2ce9a622
- some refactoring of P_AproxDistance calls into newly defined AActor method AproxDistance.
...
The main reason here is to reduce the number of instances where AActor::x and AActor::y are being referenced.
2016-01-10 17:52:41 +01:00
Randy Heit
786caaf36b
Execute disconnect scripts immediately before the player is destroyed.
...
- Disconnect scripts were previously run at some point after the player
left. Now they are run immediately before destroying the player. Since
the player hasn't actually been destroyed yet, the player also gets to
be the script's activator. This gives you a chance to scrape whatever data
you want from the player before they're history. Note that if you do
anything to make the script wait, the script's activator will become the
world, as it was before.
2016-01-08 22:41:23 -06:00
Christoph Oelckers
b613db4ae5
Revert "Merge pull request #359 from Leonard2/master"
...
This reverts commit 364ca11b43
, reversing
changes made to dae0e217d1
.
Conflicts:
src/r_data/r_interpolate.cpp
2015-09-18 17:41:16 +02:00
Leonard
86e9504d04
Added weapon interpolation.
2015-08-19 15:59:54 +02:00
Christoph Oelckers
8447990889
Merge commit '2719ce86dc07c9f7b1ad6d61a9a49c974896abf2' into scripting
...
Conflicts:
src/info.h
src/thingdef/thingdef_codeptr.cpp
(until right before the main work for multiple tags.)
2015-04-28 13:32:50 +02:00
Christoph Oelckers
792cad89b3
Merge commit '3849cb86231ce24131a86e9c29795a8cf3706a3d' into scripting
...
Conflicts:
src/g_hexen/a_clericstaff.cpp
src/g_hexen/a_hexenspecialdecs.cpp
src/p_acs.cpp
src/p_enemy.cpp
src/p_interaction.cpp
src/thingdef/thingdef_codeptr.cpp
src/thingdef/thingdef_expression.cpp
(Scripting branch update part 4)
2015-04-28 11:59:33 +02:00
Christoph Oelckers
d6e3fc0567
Merge commit 'fb9231a38db2025eb77bfd246f36d985cbbccd2e' into scripting
...
Conflicts:
src/info.cpp
src/thingdef/thingdef_expression.cpp
wadsrc/static/actors/constants.txt
(Scripting branch update part 2)
2015-04-28 09:57:01 +02:00
Edoardo Prezioso
0c5d55d0a3
- More GAMENAME replacements in strings.
...
These changes will change only some displayed messages.
2015-04-09 21:16:59 +02:00
Randy Heit
d84c85d40f
Remove warnings warned by Clang
2015-03-08 17:21:15 -05:00
Randy Heit
5d65b10aec
Better bad save checking
...
- Move invalid save condition checks from save CCMD into G_SaveGame().
- Add a gamestate != GS_LEVEL check to G_DoSaveGame().
2015-02-24 20:18:41 -06:00
ZzZombo
322742d4b1
- Fixed various instances of unused variables, accessing arrays out of bounds, initialization of non-primitive members in constructor's body, dead code, passing parameters by value instead of reference, usage of uninitialized variables, as reported by cppcheck.
2015-02-07 23:35:23 +08:00
Randy Heit
b5e4153c78
Merge branch 'master' into gonesolong
...
Conflicts:
src/CMakeLists.txt
src/b_think.cpp
src/g_doom/a_doomweaps.cpp
src/g_hexen/a_clericstaff.cpp
src/g_hexen/a_fighterplayer.cpp
src/namedef.h
src/p_enemy.cpp
src/p_local.h
src/p_mobj.cpp
src/p_teleport.cpp
src/sc_man_tokens.h
src/thingdef/thingdef_codeptr.cpp
src/thingdef/thingdef_function.cpp
src/thingdef/thingdef_parse.cpp
wadsrc/static/actors/actor.txt
wadsrc/static/actors/constants.txt
wadsrc/static/actors/shared/inventory.txt
- Added register reuse to VMFunctionBuilder for FxPick's code emitter.
- Note to self: Need to reimplement IsPointerEqual and CheckClass, which
were added to thingdef_function.cpp over the past year, as this file no
longer exists in this branch.
2014-12-21 21:15:11 -06:00
Randy Heit
2d87eb0ba2
Merge branch 'master' into gonesolong
...
Conflicts:
src/CMakeLists.txt
src/actor.h
src/g_heretic/a_hereticmisc.cpp
src/g_heretic/a_hereticweaps.cpp
src/g_heretic/a_ironlich.cpp
src/info.h
src/namedef.h
src/p_buildmap.cpp
src/p_enemy.cpp
src/p_map.cpp
src/p_mobj.cpp
src/thingdef/thingdef_codeptr.cpp
zdoom.vcproj
2014-12-20 19:13:14 -06:00
Edward Richardson
c339bb33cf
Added cl_waitforsave
...
- cl_waitforsave (default true) pauses the game timer when a save
starts, preventing the network buffer from trying to compensate for slow
saves.
2014-12-10 20:55:00 +13:00
Christoph Oelckers
29ecbac963
- fixed: The demo buffer was allocated with conflicting methods, because M_ReadFile used new whereas the rest of the demo code assumed malloc. Added a new M_ReadFileMalloc function to handle this case without rewriting other things.
2014-11-25 17:00:17 +01:00
Christoph Oelckers
ad5c5af6f2
Merge branch 'BotThinker' of https://github.com/ChillyDoom/zdoom
2014-11-25 16:13:10 +01:00
ChillyDoom
ee977f94d7
- Moved bot thinking logic into DBot.
2014-11-14 16:54:56 +00:00
Edward Richardson
16e0f79fd7
Fix alt-tabbed desync with demos
...
- Fixed: Stop the game timer if the window looses focus
2014-11-11 02:18:52 +13:00
ChillyDoom
a613da43dd
- Bot movement is now calculated locally.
2014-11-08 17:38:09 +00:00
Edward Richardson
eceb37aa64
Added recordmap for recording demos from console
...
recordmap <filename> <map name>
Starts a new game from the specified map recording to the specified
filename
2014-11-01 17:47:29 +13:00
Christoph Oelckers
fc40e9723a
- fixed: CHANGELEVEL_RESETINVENTORY may not change the player's health.
...
APlayerPawn::GiveDefaultInventory altered the player_t's health value which was ok as long as this function was only called from G_PlayerReborn. For all other cases this initialization was wrong and G_PlayerReborn should do this itself.
2014-10-25 11:51:29 +02:00
ChillyDoom
c400dcf736
- Made DBot inherit from DObject.
2014-10-15 17:54:12 +01:00
ChillyDoom
db323643f8
- Renamed FBot to DBot and made it inherit from DThinker.
...
- Fixed: Bots added by players other than the net arbitrator did not have their skill set.
2014-10-14 19:57:11 +01:00
ChillyDoom
83d84eaae9
- Moved bot related variables from player_t into a new FBot class.
2014-10-13 18:40:25 +01:00
Edward Richardson
3e4446e46b
Moved prediction lerp reset to cover all cases.
2014-10-13 16:49:53 +13:00
Edward Richardson
3e6ad8c1a8
Further work on prediction lerping
2014-10-13 00:29:15 +13:00
Edward Richardson
ae71f94ed2
Remove disconnecting players safely
...
Players who were disconnecting would be removed outside of the playsims
control, causing problems with sector lists.
2014-10-05 18:04:11 +13:00
Christoph Oelckers
a21f01bc5f
- added jpalomo's submission to make freelook a 3-state setting, like crouch and jump. This required moving around the flags a bit so demo compatibility had to be bumped. It may also require adjustment for launchers that can set the dmflags.
2014-07-26 10:15:07 +02:00
Edward Richardson
842ef86e73
Don't reset the inventory of dead players
2014-06-09 19:54:40 +12:00
Christoph Oelckers
4acc04ce68
- don't truncate map names stored in demos.
2014-05-18 10:05:35 +02:00
Christoph Oelckers
24886b6734
- removed the last static character arrays from FLevelLocals.
2014-05-13 23:16:13 +02:00
Christoph Oelckers
e126c3ec2f
Merge branch 'maint'
2014-01-17 20:45:20 +01:00
Edoardo Prezioso
884928687d
- Fixed overflow checking in some viewpitch code
2014-01-17 19:27:12 +01:00
Randy Heit
fe67ae5e54
Merge branch 'maint'
2013-11-19 21:01:15 -06:00
Randy Heit
d4304c3bde
Change tspeed += 2 to *= 2
...
- Fixed: The initial keyboard turn rate used the running initial rate whether
+speed was down or not.
2013-11-19 19:49:17 -06: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
bba092cc0b
Merge branch 'master' into scripting
...
Conflicts:
src/d_player.h
src/g_doom/a_archvile.cpp
src/thingdef/thingdef.h
src/thingdef/thingdef_properties.cpp
2013-08-09 13:03:28 +02:00
Edoardo Prezioso
4ce0574b3f
- Use a more conformant C++ preprocessor macro identifier for Unix systems.
...
The 'unix' identifier isn't defined when '-std' is passed to the compiler (tested with gcc and clang), so use '__unix__' which is well enough documented.
2013-07-30 11:46:14 +02:00
Christoph Oelckers
805de60aa4
- fixed: ChangeSpy didn't check if a player's camera's player pointer was valid before using it to get an index into the players table.
2013-07-30 09:16:27 +02:00
Randy Heit
4deeb8d8ae
Merge branch 'master' into scripting
...
Conflicts:
src/actor.h
src/g_doom/a_doomweaps.cpp
src/p_local.h
src/p_map.cpp
src/sdl/i_main.cpp
src/thingdef/thingdef_codeptr.cpp
2013-06-25 19:28:25 -05:00
Christoph Oelckers
4189092db8
- spycancel improvement by Edward-san.
2013-06-24 22:50:24 +02:00
Christoph Oelckers
4286bd68cd
- added Edward-san's spycancel submission.
2013-06-23 20:04:06 +02:00
Randy Heit
98ac224e53
- Use gitinfo.h instead of svnrevision.h for versioning.
...
- Use functions in gitinfo.cpp to retrieve the strings from gitinfo.h so
that changes to gitinfo.h only require recompiling one file instead of
several.
2013-06-22 21:49:51 -05:00
Randy Heit
459ad5abff
- Updated scripting branch to latest version in trunk.
...
SVN r4337 (scripting)
2013-06-07 03:31:30 +00:00
Randy Heit
2668988870
- Switched to a genericly extensible representation for userinfo.
...
- Fixed: The playerinfo CCMD did not range check the player number.
SVN r4253 (trunk)
2013-05-12 18:27:03 +00:00
Randy Heit
98ea4d3d51
- Added C_GetMassCVarString(), which C_WriteCVars() is now a wrapper around. (And the latter
...
should probably be factored away eventually.)
SVN r4185 (trunk)
2013-03-17 03:04:17 +00:00
Braden Obrzut
88a0d22f23
- Fixed: Playing strife forced the inventory to be used immediately instead of being determined by the presence of an inventory overlay.
...
SVN r4173 (trunk)
2013-03-03 19:12:21 +00:00
Randy Heit
6e3d784c50
- Fixed: G_CheckSpot() should not use the player start's z position unless LEVEL_USEPLAYERSTARTZ is set.
...
SVN r4070 (trunk)
2013-02-07 21:09:55 +00:00