Commit Graph

150 Commits

Author SHA1 Message Date
Christoph Oelckers 6d0b172762 - added MF8_DONTFACETALKER flag which prevents NPCs from facing the player in conversations. 2018-07-22 11:32:45 +02:00
alexey.lysiuk 4e2385e912 - load common conversation lumps regardless of map naming scheme
https://forum.zdoom.org/viewtopic.php?t=61313
2018-07-17 12:56:23 +03:00
alexey.lysiuk f17f8c9359 - added end line to various messages
so they don't screw up further output anymore
2018-05-11 18:03:57 +03: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 cb3650ed9e Added message for absent explicitly referenced dialog file 2018-04-07 12:52:38 +03:00
alexey.lysiuk 3239a9eaa6 Added loading of ZSDF lumps by full paths
https://forum.zdoom.org/viewtopic.php?t=60139
2018-04-07 12:43:10 +03:00
Christoph Oelckers da74b9df95 - serialize the temporary music volume that can be set through ACS. 2018-03-24 13:07:18 +01:00
Christoph Oelckers b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers 247785bca2 - converted map loader to FileRdr and took the opportunity to clean up its interface. 2018-03-10 21:48:33 +01:00
alexey.lysiuk df0cddb35d Do not output empty conversation replies to console
https://forum.zdoom.org/viewtopic.php?t=58992
2018-01-05 16:26:31 +02: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
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 fc9e304189 - separated class descriptors from VM types.
Combining these two groups of data has been the cause of many hard to detect errors because it allowed liberal casting between types that are used for completely different things.
2017-04-12 22:46:49 +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 921abc404d - fixed GCC warnings and errors
(Is there anyway to tone down GCC's warning level? It outputs too many false positives for potentially uninitialized variables in which the genuine errors get drowned.)
2017-03-11 19:02:35 +01:00
Christoph Oelckers ad41b23506 - replaced the homegrown integer types in all p* sources and headers. 2017-03-08 18:55:52 +01:00
Christoph Oelckers c630b07011 - replaced SDWORD with int32_t globally.
This type wasn't used in the software rendering code so it could be removed already. The other homegrown types will have to be dealt with later.
2017-03-03 19:35:08 +01:00
Christoph Oelckers 3f5ef48dac - allow setting a global dialogue lump through gameinfo. 2017-02-26 17:22:02 +01:00
alexey.lysiuk bdd20d3887 Fixed initialization of Strife dialogs internal structures
Explicit assignment to members, no more memset() on non-PoD types
https://mantis.zdoom.org/view.php?id=317
2017-02-21 22:36:20 +02:00
Christoph Oelckers e05242e44d - scriptified the remaining parts of the conversationmenu.
- do not resolve the backdrop texture to a texture ID at load time. This will allow custom menu classes to use this info differently.
- added a new ZSDF userstring property to dialog pages to give mods more means for customization.
- allow overriding the conversation menu class both globally through MAPINFO and per conversation in ZSDF.
2017-02-19 14:21:49 +01:00
Christoph Oelckers d85b9cdd71 - scriptified the input methods of DConversationMenu.
- fixed handling of DimAllowed.
2017-02-19 13:07:49 +01:00
Christoph Oelckers 3c8a5fdbe7 - scriptified the drawer functions of the conversation menu. 2017-02-19 12:28:05 +01:00
Christoph Oelckers c4a90f39af - split up DConversationMenu::Drawer for future flexibility.
- fixed: The in-conversation gold display did not work because it relied on an unused global variable.
2017-02-19 11:49:59 +01:00
Christoph Oelckers 129787546d - transitioned the Conversation menu from FBrokenLines to DBrokenLines so that the internal representation matches scriptable types. 2017-02-19 10:46:53 +01:00
Christoph Oelckers 8db1646056 - fixed: Strife dialogues remembered the last menu's selection index, but with the possibility of changing sets of replies between calls of the same dialogue it should be the reply's index in the list of replies that gets remembered. 2017-02-19 10:34:47 +01:00
Christoph Oelckers b1a7941414 - some preparations of the Strife dialogue data to make it usable for ZScript, most importantly this means to replace all const char * with FString. 2017-02-19 01:11:52 +01:00
Christoph Oelckers 06141338f1 - made DMenu's static variables regular global variables because that class is going to go completely scripted soon. 2017-02-18 19:19:14 +01:00
Christoph Oelckers c77f6636f8 - moved the three remaining variables from PClassInventory to PClassActor so that PClassInventory can be removed. 2017-02-08 18:11:23 +01:00
Christoph Oelckers a6785afddb - optimized the FName versions of IsDescendantOf and IsKindOf. These can be done without first looking up the class type itself. 2017-02-08 15:47:22 +01:00
Christoph Oelckers d3ed83942f - did some preparations to ParseDrawTextureTags to allow using the same code for parsing tag lists generated by the VM.
- removed the fixed point alpha tag from DrawTexture and replaced all uses with the floating point version.
2017-02-04 13:11:12 +01:00
Christoph Oelckers d8acf774a6 - scriptified the remains of AKey.
- replaced Key.KeyNumber with special1. This is only for internal bookkeeping purposes so there's really no need to complicate this with a new variable when this one works just as well.
2017-01-18 15:17:12 +01:00
Christoph Oelckers 7b7623d2c4 - split DObject::Destroy into the main method, a native OnDestroy and a scripted OnDestroy method and made the main method non-virtual
This was done to ensure it can be properly overridden in scripts without causing problems when called during engine shutdown for the type and symbol objects the VM needs to work and to have the scripted version always run first.
Since the scripted OnDestroy method never calls the native version - the native one is run after the scripted one - this can be simply skipped over during shutdown.
2017-01-12 22:49:18 +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 3af9232fca - scriptified a_strifeitems.cpp and a_debris.cpp.
- Changed the glass shards so that they do not have to override FloorBounceMissile. It was the only place where this was virtually overridden and provided little usefulness.
- made 'out' variables work.
- fixed virtual call handling for HandlePickup.
2016-11-29 12:17:05 +01:00
Christoph Oelckers 9064a5b0ac - scriptified Strife's coins.
- added a String class to allow attaching methods to the builtin string type. This works by checking if the left side of the member accessor is a string and just replacing the tyoe in this one place, all the rest is automatic.
2016-11-28 18:15:18 +01:00
Christoph Oelckers 8551a4f6e1 - scriptified the Sigil. This isn't fully tested yet. 2016-11-28 14:39:25 +01:00
Christoph Oelckers 66d28a24b8 - disabled the scripted virtual function module after finding out that it only works if each single class that may serve as a parent for scripting is explicitly declared.
Needless to say, this is simply too volatile and would require constant active maintenance, not to mention a huge amount of work up front to get going.
It also hid a nasty problem with the Destroy method. Due to the way the garbage collector works, Destroy cannot be exposed to scripts as-is. It may be called from scripts but it may not be overridden from scripts because the garbage collector can call this function after all data needed for calling a scripted override has already been destroyed because if that data is also being collected there is no guarantee that proper order of destruction is observed. So for now Destroy is just a normal native method to scripted classes
2016-11-25 00:25:26 +01:00
Christoph Oelckers d1f5d916c2 Merge branch 'master' into zscript 2016-11-23 14:39:14 +01:00
Edoardo Prezioso 0489b6e7c5 - Fixed missing newlines to the conversation error message. 2016-11-23 10:19:52 +01:00
Christoph Oelckers 649c96261a - clarified error messages for bogus conversation scripts. 2016-11-23 10:13:50 +01:00
Leonard2 7dbc4710f1 Add the new argument to all uses of the implement macro 2016-11-09 17:45:55 +01:00
Leonard2 bb2d61de50 Replaced the many implement macros with a single one that takes arguments instead 2016-11-09 17:45:53 +01:00
FishyClockwork b1880964fa Added two new sub-blocks for Choice blocks
Added two new sub-blocks for Choice blocks: Require and Exclude.
The syntax for both is the same as Cost blocks.

Require defines what item must be present in your inventory in order to show this choice/reply.
Exclude defines what item must not be present in your inventory in order to show this choice/reply.

If any Require/Exclude blocks are defined then this choice/reply will be hidden until all blocks of both types are satisfied.
2016-10-30 19:30:53 +01:00
Christoph Oelckers 2e882a41a3 - removed some redundancy. 2016-10-14 23:13:08 +02:00
FishyClockwork 08504dcbe2 Added a small check just in case... 2016-10-14 23:11:58 +02:00
FishyClockwork ecffd0bea6 Done the code changes.
This time only nulls I've added are nullptrs
2016-10-14 23:11:57 +02:00
Christoph Oelckers af6404f763 - all DObjects converted.
- cleaned out some old cruft that's no longer needed.
2016-09-20 10:27:53 +02:00
Christoph Oelckers e04055dbb2 - added multiple message levels for 'developer' CVAR so that the important stuff won't get drowned in pointless notification spam that's of no use to anyone.
- made 'developer' CVAR persist across launches and added some menu entries for it.
- added checks for 'developer' to ACS's CheckInventory function.
2016-08-28 09:55:04 +02:00
Edoardo Prezioso 6aca7604eb - Clean the code by using AActor::GiveInventory.
This fixes also a bug in FraggleScript GiveInventory, which tried to access the 'SaveAmount' member of 'ABasicArmorBonus' with the wrong cast.
2016-04-21 16:02:43 +02: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