Commit graph

56 commits

Author SHA1 Message Date
Randy Heit
2ab3974752 Add a PSymbolConstString class
- Constants can be strings, but the existing PSymbolConst couldn't handle
  them. The old PSymbolConst is now PSymbolConstNumeric, and the new
  PSymbolConst is a now a baseclass for it and PSymbolConstString.
2013-09-10 22:01:00 -05:00
Randy Heit
6584819d01 Use PType for typing things in PSymbolConst. 2013-09-07 20:35:46 -05:00
Randy Heit
2f7183b937 Use PField instead of PSymbolVariable for DECORATE expressions
- The type systems used by PField and FxExpression are completely
  incompatible, but I think I got the differences taken care of as far
  as ParseNativeVariable(), ParseUserVariable(), and FxClassMember are
  concerned.
- Support for declaring native bool variables has been removed for the time
  being. It wasn't used anyway.
- Removed PSymbolVariable.
2013-08-23 22:02:51 -05:00
Randy Heit
0d1973a659 Make PStruct::AddField() check for duplicates
- PStruct::AddField() now checks the symbol table for a symbol of the same
  name before adding a new field. If the name is in use, it returns NULL.
2013-08-23 21:56:18 -05:00
Randy Heit
263b160905 Add PFixed and PArray types
- These are types that are stored as integers but otherwise handled as floating point values.
2013-08-23 21:53:54 -05:00
Randy Heit
b5d37348f6 Add code generation simplification methods to PType
- To assist with using PType with DECORATE expression code generation,
  added GetStoreOp(), GetLoadOp(), and GetRegType() to PType.
2013-08-23 21:52:04 -05:00
Randy Heit
2ec3cbddb9 Mark PType's GetValueInt method as const 2013-08-23 21:50:33 -05:00
Randy Heit
5aff8156ba Use PField and not PSymbolVariable for ACS's Get/SetUserVariable 2013-08-21 22:39:28 -05:00
Randy Heit
4cf0ef7e3f Minor PField changes.
- Rename FieldOffset and FieldType so they no longer have the "Field" prefix
- Add a Flags field.
2013-08-21 22:38:05 -05:00
Randy Heit
e50c00c856 Add generic integer setters and getters for PInt and PFloat types 2013-08-21 22:36:46 -05:00
Randy Heit
cf87d0f1e9 Use PFunction instead of PSymbolActionFunction in DECORATE parser 2013-08-14 22:00:16 -05:00
Randy Heit
8fbb4b90fb Add some flags for PFunction 2013-08-14 21:56:21 -05:00
Randy Heit
ed1c22186f Add PStatePointer type 2013-08-14 21:53:03 -05:00
Randy Heit
55bec365e8 Added a way to specify paramater flags for PFunction
- And right now, the only flag is "Optional".
2013-08-10 20:24:12 -05:00
Randy Heit
973b0f5c56 Change PFunction's superclass from PNamedType to PSymbol 2013-08-10 20:17:55 -05:00
Randy Heit
6575499f37 Added basic implementation for PField.
- I don't know why this didn't give me trouble before, but I needed to add IMPLEMENT_CLASS for PField.
2013-08-10 20:17:29 -05:00
Randy Heit
3e46e6376c Added NewPrototype() function 2013-08-10 20:06:54 -05:00
Randy Heit
f18c7b8959 Make FType::Hash work for PPrototype
- For Prototypes, Hash is passed the address of two TArrays. If we blindly
  hash those without checking their contents, then we can forget about
  ever finding any matching prototypes in the type table. (Not that I
  remember why I wanted them to be unique, but I'm sure I must have had my
  reasons.)
2013-08-10 20:05:42 -05:00
Randy Heit
93cbdd37a5 PArray's size should take alignment into account. 2013-08-08 22:27:40 -05:00
Randy Heit
6c1f3a1396 Added PStruct::AddField() 2013-08-08 22:27:40 -05:00
Randy Heit
476a98652c Remove extraneous PField class
- Remove the existing PField class, rename PMemberField to PField, and
  derive it from PSymbol instead of the old PField.
2013-08-08 22:27:39 -05:00
Randy Heit
7e24f6b00c - Added NewStruct() function. 2013-08-08 22:27:39 -05:00
Randy Heit
0ec33191aa - Added NewEnum() function. 2013-08-08 22:27:39 -05:00
Randy Heit
dbaf72772b Move the symbol table from PClass to PStruct. 2013-08-08 22:27:38 -05:00
Randy Heit
4a1fbdb32a Remove all state expression/param stuff
- This all became vestigial code after the relevant information was all
  moved into FStateTempCall. Now that the MBF code pointer code has been
  converted, I can be sure it wasn't still used anywhere.
2013-07-27 22:34:44 -05:00
Randy Heit
7171281507 - Compatibility fix: Classes redefined in DECORATE should cause the newer one to replace the
older one in the type table.

SVN r3913 (scripting)
2012-10-27 02:04:35 +00:00
Randy Heit
c043627cc1 - Some abstract syntax tree creation stuff. (Plus some tentative type creation stuff that made
me realize I would be better off creating a type-agnostic AST for the entire input instead
  of trying to tentatively create types before they're seen.)

SVN r2354 (scripting)
2010-06-06 04:15:28 +00:00
Randy Heit
50d126e78b - Clear the TypeTable on shutdown so that the objects in it can be collected.
SVN r2301 (scripting)
2010-04-24 03:10:58 +00:00
Randy Heit
dde5e1928f - Make TypeTable a GC root.
- Instantiate some basic types.

SVN r2298 (scripting)
2010-04-22 04:12:42 +00:00
Randy Heit
ee55e0319f - Standardized use of PClassActor::AllActorClasses for iterating over all classes of actors
instead of PClass::m_Types (now PClass::AllClasses).
- Removed ClassIndex from PClass. It was only needed by FArchive, and maps take care of the
  problem just as well.
- Moved PClass into a larger type system (which is likely to change some/lots once I try and actually use it and have a better feel for what I need from it).

SVN r2281 (scripting)
2010-04-16 02:57:51 +00:00
Randy Heit
549ddf8035 - Use the standard DObject type system for the PSymbol hierarchy.
SVN r2264 (scripting)
2010-04-03 02:06:51 +00:00
Randy Heit
d87d2c731f - Use a map for symbol tables instead of an array.
SVN r2258 (scripting)
2010-03-30 04:11:16 +00:00
Randy Heit
604b5ef673 - Removed the old meta data system. All meta data is now stored in subclasses of PClass. This
should simplify scripting, since it means that meta fields can be treated (mostly) the same as
  normal fields.

SVN r2242 (scripting)
2010-03-25 20:38:00 +00:00
Randy Heit
f88f601230 - Removed the third parameter from dumpclasses when it was restricted it to Actors, because
I have no idea what that was all about.
- Got rid of FActorInfo and merged it into a new PClassActor.

SVN r2240 (scripting)
2010-03-24 02:49:37 +00:00
Randy Heit
913555aa4e - Synced the scripting branch with trunk.
SVN r2166 (scripting)
2010-02-17 04:46:11 +00:00
Randy Heit
739e684549 - Converted all action functions be directly callable by the VM (though they are not yet
usable).

SVN r2154 (scripting)
2010-02-12 06:04:57 +00:00
Randy Heit
19b23f2cf3 - Removed the Actor uservar array and replaced it with user-defined variables.
A_SetUserVar/SetUserVariable/GetUserVariable now take a variable name
  instead of an array index. A_SetUserArray/SetUserArray/GetUserArray
  have been added to access elements in user-defined arrays.


SVN r1933 (trunk)
2009-10-25 02:19:51 +00:00
Randy Heit
1a442742f7 - Sync with trunk.
SVN r1872 (scripting)
2009-09-23 00:24:47 +00:00
Randy Heit
1eb7912bd8 - Make the autosegs read-only.
- Derive PClass from dobject.cpp. This has one major ramification: Since the PClass
  is not allocated until runtime, you cannot initialize any static/global data
  structures with pointers to PClasses using RUNTIME_CLASS. Attempting to do so
  will just initialize with a NULL pointer. Instead, you can initialize using
  the address of the pointer returned by RUNTIME_CLASS and dereference that. By
  the time you have an opportunity to dereference it, it will no longer be NULL.
- Sync CmakeLists.txt.
- Random fixes for problems GCC spotted.

SVN r1852 (scripting)
2009-09-17 01:36:14 +00:00
Randy Heit
fefc306a54 - Make PClass derive from DObject so that it can participate in garbage collection.
- Import VM.

SVN r1841 (scripting)
2009-09-16 01:39:44 +00:00
Christoph Oelckers
bf63041585 - fixed: Parsing of color strings with 6 characters and spaces did not work.
- fixed: State labels must be evaluated for the state's owner, not the calling actor.



SVN r1354 (trunk)
2009-01-06 00:03:18 +00:00
Christoph Oelckers
f8c38e5f54 - Made several DECORATE errors which do not involve parsing non-fatal.
- Added a static error counter to FScriptPosition class.
- Changed initialization of actor class type properties: fuglyname is gone as
  is the postprocessing in FinishThingdef. Instead an empty placeholder class
  is now created when a class is first referenced and this placeholder is later
  filled in. 
- Added option to replace backslash with '^' in state frame definitions because
  the backslash is just causing too many problems because it's also an escape
  character.


SVN r1334 (trunk)
2008-12-29 23:03:38 +00:00
Christoph Oelckers
b9afb78523 - Added native variables to expression evaluator and replaced the previous
handling of actor variables in expressions with it.
- Added support for floating point constants to DECORATE expression evaluator.

SVN r1271 (trunk)
2008-10-19 21:43:36 +00:00
Christoph Oelckers
f3922ec6a1 - Added a few more macros so that the action function code doesn't have
to reference its arguments directly, except 'self'. This may be helpful if it 
  becomes necessary to restructure this code once DoomScript becomes real.
- Removed the last remaining global variable related to action functions:
  pStateCall. Everything is passed properly as function arguments now.
- fixed: PlayerChunk was missing the NOSKIN flag.


SVN r1169 (trunk)
2008-08-14 08:52:55 +00:00
Christoph Oelckers
1957659b1b - Restructured the action function interface to remove the dependence on
the global CallingState variable.


SVN r1163 (trunk)
2008-08-12 14:30:07 +00:00
Christoph Oelckers
b1d36182c4 - Changed handling of AUTOPAGE texture so that it is properly inserted into
the texture manager even if it is from Raven's IWADs.
- Removed code related to internal ActorInfo definitions from dobjtype.cpp.
- removed unneeded file dehackedactions.h


SVN r1162 (trunk)
2008-08-12 09:57:59 +00:00
Christoph Oelckers
535f209560 - Converted Strife's Programmer, Loremaster and Thingstoblowup to DECORATE.
- Fixed: Attacking a merchant in Strife didn't alert the enemies.


SVN r1121 (trunk)
2008-08-06 22:59:24 +00:00
Christoph Oelckers
a8c283dacd - fixed: Morphing to a class without a face definition crashed.
- Converted all of Heretic's actors except the weapons to DECORATE.
- Added the option to define the ActorInfos for native classes in DECORATE.


SVN r1078 (trunk)
2008-07-21 17:03:30 +00:00
Randy Heit
2e28b0c9ce - Repositioned the declaration of the file string in D_DoomMain() so that it
won't be left on the stack at exit.
- Fixed: PSymbol needs a virtual destructor so that PSymbolActionFunction can
  free its Arguments.
- Symbols for native classes are now freed on exit.


SVN r1022 (trunk)
2008-06-06 02:17:28 +00:00
Randy Heit
8d0c48bf81 - The garbage collector is now run one last time just before exiting the game.
- Removed movie volume from the sound menu and renamed some of the other
  options to give the MIDI device name more room to display itself.
- Moved the midi device selection into the main sound menu.
- Added FMOD as MIDI device -1, to replace the MIDI mapper. This is still the
  default device. By default, it uses exactly the same DLS instruments as the
  Microsoft GS Wavetable Synth. If you have another set DLS level 1 patch set
  you want to use, set the snd_midipatchfile cvar to specify where it should
  load the instruments from.
- Changed the ProduceMIDI function to store its output into a TArray<BYTE>.
  An overloaded version wraps around it to continue to supply file-writing
  support for external Timidity++ usage.
- Added an FMOD credits banner to comply with their non-commercial license.
- Reimplemented the snd_buffersize cvar for the FMOD Ex sound system. Rather
  than a time in ms, this is now the length in samples of the DSP buffer.
  Also added the snd_buffercount cvar to offer complete control over the
  call to FMOD::System::setDSPBufferSize(). Note that with any snd_samplerate
  below about 44kHz, you will need to set snd_buffersize to avoid long
  latencies.
- Reimplemented the snd_output cvar for the FMOD Ex sound system.
- Changed snd_samplerate default to 0. This now means to use the default
  sample rate.
- Made snd_output, snd_output_format, snd_speakermode, snd_resampler, and
  snd_hrtf available through the menu.
- Split the HRTF effect selection into its own cvar: snd_hrtf.
- Removed 96000 Hz option from the menu. It's still available through the
  cvar, if desired.
- Fixed: If Windows sound init failed, retry with DirectSound. (Apparently,
  WASAPI doesn't work with more than two speakers and PCM-Float output at the
  same time.)
- Fixed: Area sounds only played from the front speakers once you got within
  the 2D panning area.


SVN r854 (trunk)
2008-03-26 04:27:07 +00:00