Commit graph

145 commits

Author SHA1 Message Date
Ricardo Luís Vaz Silva
92761feee1 Add casts to F32 Map/MapIterator functions to get rid of double to float conversion warnings 2022-12-04 21:15:46 +01:00
Ricardo Luís Vaz Silva
8b6a714d41 Map<K,V> and MapIterator<K,V> for ZScript 2022-12-04 15:11:00 +01:00
Christoph Oelckers
1e5e65546d Revert "- add support for not localizing some text functions, and modify menu text fields to use this"
This reverts commit 91d3c4b606.

This completely breaks the menus, so it needs to go.
2022-12-04 08:13:04 +01:00
Gutawer
91d3c4b606 - add support for not localizing some text functions, and modify menu text fields to use this 2022-12-03 23:30:38 +01:00
Ricardo Luís Vaz Silva
1a7a56ce39 Fix GC ignoring DynArrays inside fixed Arrays 2022-11-27 08:19:41 +01:00
Marisa Heit
70df34674b AST debug cleanup
- Add ArrayIterationStmt printer.
- Mark ZCC_TreeNodes as const for the AST printers.
- Use static_assert to catch missing printers without needing to run with -dumpast.
2022-11-25 19:20:24 +01:00
Christoph Oelckers
ffdd0a11ea - fixed memory leak in ZScript backend.
This allocated some memory and never freed it again. A TArray would have been better - but since we know the maximum size is 4 we may just use a static array here to keep things as efficient as possible.
2022-11-24 23:52:53 +01:00
Christoph Oelckers
65a26d6779 - removed the string constructors from FSoundID.
Due to C++ conversion rules this was a bit too volatile. There's really not enough places where being able to pass a string directly into the sound API was beneficial - the two most frequent functions now got overloaded variants.
2022-11-24 23:52:52 +01:00
Christoph Oelckers
d173c0453c - handle all remaining places of sound ID conversions after removing the conversion operators. 2022-11-24 23:52:52 +01:00
Christoph Oelckers
160633a4a2 - migrate a large part of the sound code to FSoundIDs.
This has always been a wild mixture of IDs and ints.
2022-11-24 23:52:52 +01:00
Gutawer
63c2d93033 - quaternion improvements 2022-11-21 07:20:43 +01:00
Gutawer
9f0c518be9 - add remaining quaternion function implementations 2022-11-21 07:20:43 +01:00
RaveYard
540f778047 Quaternion structure and math ops 2022-11-21 07:20:43 +01:00
Ricardo Luís Vaz Silva
802f77ab19 Fix checking of wrong variable in String..Float concatenation 2022-11-19 23:55:17 +01:00
Christoph Oelckers
29b4418c3a - added 'foreach' loop to ZScript.
Syntax:

foreach(variable : array)
{
}

the variable's type is automatically deducted.
2022-11-15 21:34:45 +01:00
Christoph Oelckers
4994e114c8 - backported Vector*::Sum() from Raze. 2022-11-14 19:49:37 +01:00
RaveYard
31ac1bd414 Initial implementation of Quaternion type in ZScript 2022-11-13 22:48:19 +01:00
Christoph Oelckers
1047b766df - added PlusZ intrinsic to Vector3 and ToVector intrinsic to numeric values.
These just mirror features of the internal vector classes.
2022-11-13 08:07:20 +01:00
Christoph Oelckers
f3b33f7cf8 - added LengthSquared and Angle intrinsics for all vector types, also allow calling VectorAngle with a full vector as a single parameter. 2022-11-13 08:07:12 +01:00
RaveYard
31db5847cc Finish Vector4 implementation 2022-11-12 09:04:38 +01:00
Shiny Metagross
a525233914 Attempted to add Vector4 to ZScript 2022-11-12 09:04:38 +01:00
Christoph Oelckers
9c75a38ec3 - added [[noreturn]] to several functions that always throw exceptions. 2022-11-05 09:09:00 +01:00
Christoph Oelckers
453688ccc6 - reworked CVARs to not use a linked list and to be initialized manually.
This solves two problems:

* The linked list is too slow, a map is better. A map cannot be used with statically allocated CVARs because order of initialization is undefined.
* The current CVAR system is an unordered mishmash of static variables and dynamically allocated ones and the means of identification are unsafe. With this everything is allocated on the heap so it can all be handled the same by the cleanup code.
2022-10-21 18:56:43 +02:00
Christoph Oelckers
ef887403cf - marked a few Printf calls in critical error paths as PRINT_NONOTIFY. 2022-10-20 23:55:29 +02:00
Christoph Oelckers
ba8a334862 - removed two bogus asserts from the script compiler. 2022-10-20 18:39:51 +02:00
Christoph Oelckers
e6615629b3 - move two more backend->frontend calls to the interface 2022-10-02 18:29:57 +02:00
Player701
78360c1888 - Exported GetDisplayTopOffset for font characters to ZScript 2022-09-30 10:07:41 +02:00
Alison Watson
18a67cfdb2 use constexpr constructor for PARAM_COLOR_AT 2022-09-16 20:50:33 +02:00
Chronos Ouroboros
12995b84c7 - fixed FDynArray_Obj not performing write barriers properly. 2022-09-16 20:45:39 +02:00
Christoph Oelckers
c87e87365d - fixed: all script methods adding an object to a dynamic array must perform a write barrier. 2022-09-08 13:30:00 +02:00
Christoph Oelckers
4032576519 - blocked off direct access to TAngle’s internal storage. 2022-08-26 18:09:29 +02:00
Christoph Oelckers
3d2578820b - block direct comparisons of TAngle with floats 2022-08-26 18:01:52 +02:00
Christoph Oelckers
f0fbdba593 - disable implicit conversions from float to TAngle 2022-08-26 18:01:26 +02:00
Christoph Oelckers
c89ae6358e - Backend update from Raze, mostly maintenance changes without new functionality. 2022-08-11 22:51:19 +02:00
931211b9db Export FindLumpFullName to ZScript. 2022-08-05 20:25:02 +02:00
Marisa Heit
4c6d0e4209 Better error message for unknown nested types 2022-08-04 07:42:46 +02:00
Marisa Heit
66460bfeb8 Add support for nested user types
The grammar already understood these constructs. Now the compiler does too.
2022-08-04 07:42:46 +02:00
Christoph Oelckers
ef0e9c025e - fixed comparison checks. 2022-08-03 10:58:37 +02:00
Christoph Oelckers
3563c99ead - made adjustments for proper int type promotion to allow internal ZScript to compile with it on.
* Emit a warning when relational comparisons are made between signed and unsigned ints.
* Handle shift operators so that they do not fail for constant definitions.
* changed return type of Array::Size() to signed int as most code out there is using it this way and would otherwise drown in warnings.
* fixed a few deprecation warnings.
2022-08-03 10:26:29 +02:00
Christoph Oelckers
388a5cb481 - ZScript: fixed integer type promotion for shift operator
* the first operand must never be sign-changed.
* the second operand should always be made unsigned. Shift by negative values is undefined and may produce undefined behavior on some systems.
2022-08-03 09:03:03 +02:00
Christoph Oelckers
8eabaf61c9 - version-restrict int to uint promotion.
Some mods depend on this not happening.
2022-08-03 08:45:37 +02:00
Christoph Oelckers
5cee2b5803 - fixed: The compile context for constant evaluation did not initialize its Version member. 2022-08-03 08:44:38 +02:00
Marisa Heit
f7f9746a0f Don't throw away unsignedness when passing unsigned constants to the codegen 2022-08-02 07:48:21 +02:00
Marisa Heit
7ce29fe855 Add signed->unsigned promotion for binary operators
The C-style rules for integer promotion are that when you have a signed int and an unsigned int, if you can't promote to a wider type, then the signed type is promoted to an unsigned type.
2022-08-02 07:48:21 +02:00
Christoph Oelckers
4422f9079c - fix menu commands with semicolon separated commands
C_DoCommand only executes one command, to do full processing AddCommandString is needed.
2022-07-29 08:38:34 +02:00
Marisa Heit
b9501a7291 Fix definition order of ZScript structs
Do a first pass over the Structs array in CompileAllFields() to reorder them such that if a struct uses other structs, those structs will be resolved first.
2022-07-29 08:17:33 +02:00
Magnus Norddahl
e2778ba442 Move TexMan.GetCanvas and GetTextureCanvas to common 2022-07-25 18:50:16 +02:00
Ricardo Luís Vaz Silva
12660b0015 Add special case for relative includes from top-level files 2022-07-24 09:05:16 +02:00
Ricardo Luís Vaz Silva
365131e1e3 rename PrintString to PrintfEx and make it a vararg function 2022-07-11 19:35:51 +02:00
Ricardo Luís Vaz Silva
03c8da8a44 Expose Print Flags to ZScript 2022-07-11 19:35:51 +02:00