Logging some codebase changes here. These apply mostly to 2.xx, but they may also be used in the present (ZScript-enabled) builds of ZC3.x.
script_drawing.cpp
Added routines to do_drawbitmapr() that allow using Allegro sprites for effects:
The present 'rotation' argument is now used for the following: Enable transparency, rotation.
Works as follows:
- if rot is 0, it draws opaque, but does not rotate.
- if rot is between -360 and 360, it draws opaque, and rotates normally.
- if rot is either between 361 and 720, or between -361 and -720 it rotates, but is transparent
- if rot is outside these limits, it draws a transparent bitmap with no rotation.
Did initial work on do_drawquadr() to allow mapping a bitmap as a texture, in addition to tiles/combos.
Works as follows: A value above MAX_TILES (65519) will use a bitmap as a texture. At present, how this is to work is undefined, however I plan to use the normal RT_* in addition to a constant TEX_BITMAP = 65520 to point to the bitmap in question.
Xor mode drawing, with extremely limited support, using OP_XOR to all drawing prims. This works with bitmaps perfectly well, but not with direct screen drawing. I do not have a personal desire to muck with the colour table to fix it, but perhaps Dimentio does. Either way, with the changes to do_drawbitmapr(), it should be feasible to use Xor drawing reliably.
I plan to further expand do_drawbitmapr(), but I need to determine what other sprite effects to use. Until i test the latest modifications, I'll hold off on any further changes.
Initial work on Polygon() / POLYGON*, but not Polygon3d() / POLYGON3D*
These need ZASM side instructions in the bytecode, and other things, to be enabled. I believe that I know how to do this, but at present this is not a certainty.
I initially did this before the release of 2.50.2, but Saffith did not want to add a new function, so it'll go into 2.
Parser/Lexer:
Initial modifications to allow some global symbols.
Char ? will be added to symbols for IDENTIFIER, to allow var, and function names such as ?Walking()
Char ? also needs to be added to lexical errors if it is a single char, to prevent accidental use where char / is desired.
Char ^^ added as symbol LOGICALXOR
The LOGICALXOR component is not implemented, but I added it to the .lpp file as a valid symbol (placeholder)
Symbol COMMENTBLOCK using /* and */, but again, not implemented.
Token #include added. I intend to add the token type DIRECTIVE and various strings as directive types. I may simply add # as the token for DIRECTIVE, and any legal INDENTIFIER chars as the string.
At present #include is set to function as import "" and is only partially implemented.
...