Skip to content

Commit

Permalink
feat: finish 'subscreenwidget' datatype implementation for type vars
Browse files Browse the repository at this point in the history
  • Loading branch information
EmilyV99 committed Sep 9, 2023
1 parent 5c0c1a9 commit 252033a
Show file tree
Hide file tree
Showing 10 changed files with 1,101 additions and 64 deletions.
77 changes: 64 additions & 13 deletions resources/docs/ZScript_Additions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8934,17 +8934,18 @@ int PageTransArgs[];
// some widget types, as listed.
//

int Tile;
* The widget's main tile.
int Tile[];
* The widget's tile(s).
* For SUBWIDG_MINITILE, can use the 'SUB_SPTILE_' constant values.
* VALID WIDGETS:
* SUBWIDG_FRAME, SUBWIDG_MCGUFF, SUBWIDG_TILEBLOCK, SUBWIDG_MINITILE
* SUBWIDG_FRAME[1], SUBWIDG_MCGUFF[1], SUBWIDG_TILEBLOCK[1], SUBWIDG_MINITILE[1]

int CSet;
* The widget's main cset. Normal csets, as well as the 'SUB_CS_' constants,
* can be used for its' value.
int CSet[];
* The widget's cset(s).
* For SUBWIDG_FRAME,SUBWIDG_MCGUFF,SUBWIDG_TILEBLOCK,SUBWIDG_MINITILE,
* can use the 'SUB_CS_' constants.
* VALID WIDGETS:
* SUBWIDG_FRAME, SUBWIDG_MCGUFF, SUBWIDG_TILEBLOCK, SUBWIDG_MINITILE
* SUBWIDG_FRAME[1], SUBWIDG_MCGUFF[1], SUBWIDG_TILEBLOCK[1], SUBWIDG_MINITILE[1]

int Flip;
* The widget's flip value.
Expand Down Expand Up @@ -9031,11 +9032,11 @@ int Button;
* VALID WIDGETS:
* SUBWIDG_BTNITM, SUBWIDG_BTNCOUNTER

int Counters[];
int Counter[];
* The counter(s) associated with the widget.
* Use the 'CR_' constants for the values.
* VALID WIDGETS:
* SUBWIDG_COUNTER[3]
* SUBWIDG_COUNTER[3], SUBWIDG_MISCGAUGE[1]

int MinDigits;
* The minimum digits of the widget.
Expand All @@ -9050,7 +9051,8 @@ int MaxDigits;
int InfiniteItem;
* The infinite item of the widget.
* VALID WIDGETS:
* SUBWIDG_COUNTER, SUBWIDG_OLDCTR
* SUBWIDG_COUNTER, SUBWIDG_OLDCTR, SUBWIDG_LGAUGE,
* SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

char32 InfiniteChar;
* The infinite character of the widget.
Expand Down Expand Up @@ -9085,10 +9087,59 @@ int Number;
* VALID WIDGETS:
* SUBWIDG_MCGUFF

int Corner;
* The corner associated with the widget.
int Corner[];
* The corner(s) associated with the widget.
* VALID WIDGETS:
* SUBWIDG_MINITILE[1], SUBWIDG_LGAUGE[4], SUBWIDG_MGAUGE[4],
* SUBWIDG_MISCGAUGE[4]

int Frames;
* The widget's frames
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int Speed;
* The widget's speed
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int Delay;
* The widget's delay
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int Container;
* The widget's container number
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int GaugeWid;
int GaugeHei;
* The widget's gauge width/height
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int Units;
* The widgets unit value
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int HSpace;
int VSpace;
* The widget's hspace/vspace
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int GridX;
int GridY;
* The widget's grid x/y
* VALID WIDGETS:
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

int AnimVal;
* The widget's animation value
* VALID WIDGETS:
* SUBWIDG_MINITILE
* SUBWIDG_LGAUGE, SUBWIDG_MGAUGE, SUBWIDG_MISCGAUGE

////////////////////////////////////
////////////////////////////////////
Expand Down
5 changes: 3 additions & 2 deletions resources/include/std_zh/std_constants.zh
Original file line number Diff line number Diff line change
Expand Up @@ -4113,8 +4113,9 @@ enum //Special Subscreen Color Values
};
enum //Special Subscreen Tile Values
{
SUB_SPTILE_
SUB_SPTILE_MIN = -1
SUB_SPTILE_SSVINE = -1,
SUB_SPTILE_MAGICMETER = -2,
SUB_SPTILE_MIN = -3
};
//{ Subscreen type-specific flag constants

Expand Down
10 changes: 9 additions & 1 deletion src/new_subscr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -749,12 +749,20 @@ int32_t SubscrMTInfo::tile() const
}
byte SubscrMTInfo::crn() const
{
return tilecrn%2;
return tilecrn%4;
}
void SubscrMTInfo::setTileCrn(int32_t tile, byte crn)
{
tilecrn = (tile<<2)|(crn%4);
}
void SubscrMTInfo::setTile(int32_t tile)
{
tilecrn = (tile<<2)|(crn()%4);
}
void SubscrMTInfo::setCrn(byte crn)
{
tilecrn = (tile()<<2)|(crn%4);
}
int32_t SubscrMTInfo::read(PACKFILE *f, word s_version)
{
if(!p_igetl(&tilecrn,f))
Expand Down
4 changes: 3 additions & 1 deletion src/new_subscr.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ struct SubscrMTInfo
int32_t tile() const;
byte crn() const;
void setTileCrn(int32_t tile, byte crn);
void setTile(int32_t tile);
void setCrn(byte crn);

int32_t read(PACKFILE *f, word s_version);
int32_t write(PACKFILE *f) const;
Expand Down Expand Up @@ -986,7 +988,7 @@ struct SW_TextBox : public SubscrWidget
int32_t fontid;
std::string text;
byte align, shadtype, tabsize = 4;
SubscrColorInfo c_text, c_shadow, c_bg;
SubscrColorInfo c_text = {ssctMISC,ssctTEXT}, c_shadow, c_bg;

SW_TextBox() = default;
SW_TextBox(subscreen_object const& old);
Expand Down
16 changes: 16 additions & 0 deletions src/parser/ByteCode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2406,6 +2406,22 @@ string ZScript::VarToString(int32_t ID)
case SUBWIDGTY_NUMBER: return "SUBWIDGTY_NUMBER";
case SUBWIDGTY_CORNER: return "SUBWIDGTY_CORNER";

case SUBWIDGTY_FRAMES: return "SUBWIDGTY_FRAMES";
case SUBWIDGTY_SPEED: return "SUBWIDGTY_SPEED";
case SUBWIDGTY_DELAY: return "SUBWIDGTY_DELAY";
case SUBWIDGTY_CONTAINER: return "SUBWIDGTY_CONTAINER";
case SUBWIDGTY_GAUGE_WID: return "SUBWIDGTY_GAUGE_WID";
case SUBWIDGTY_GAUGE_HEI: return "SUBWIDGTY_GAUGE_HEI";
case SUBWIDGTY_UNITS: return "SUBWIDGTY_UNITS";
case SUBWIDGTY_HSPACE: return "SUBWIDGTY_HSPACE";
case SUBWIDGTY_VSPACE: return "SUBWIDGTY_VSPACE";
case SUBWIDGTY_GRIDX: return "SUBWIDGTY_GRIDX";
case SUBWIDGTY_GRIDY: return "SUBWIDGTY_GRIDY";
case SUBWIDGTY_ANIMVAL: return "SUBWIDGTY_ANIMVAL";
case SUBWIDGTY_SHOWDRAIN: return "SUBWIDGTY_SHOWDRAIN";
case SUBWIDGTY_PERCONTAINER: return "SUBWIDGTY_PERCONTAINER";
case SUBWIDGTY_TABSIZE: return "SUBWIDGTY_TABSIZE";

default:
{
sprintf(temp, "d%d", ID);
Expand Down
18 changes: 17 additions & 1 deletion src/parser/ByteCode.h
Original file line number Diff line number Diff line change
Expand Up @@ -1696,7 +1696,23 @@
#define SUBWIDGTY_NUMBER 1602
#define SUBWIDGTY_CORNER 1603

#define LAST_BYTECODE 1604
#define SUBWIDGTY_FRAMES 1604
#define SUBWIDGTY_SPEED 1605
#define SUBWIDGTY_DELAY 1606
#define SUBWIDGTY_CONTAINER 1607
#define SUBWIDGTY_GAUGE_WID 1608
#define SUBWIDGTY_GAUGE_HEI 1609
#define SUBWIDGTY_UNITS 1610
#define SUBWIDGTY_HSPACE 1611
#define SUBWIDGTY_VSPACE 1612
#define SUBWIDGTY_GRIDX 1613
#define SUBWIDGTY_GRIDY 1614
#define SUBWIDGTY_ANIMVAL 1615
#define SUBWIDGTY_SHOWDRAIN 1616
#define SUBWIDGTY_PERCONTAINER 1617
#define SUBWIDGTY_TABSIZE 1618

#define LAST_BYTECODE 1619

//} END OF BYTECODE

Expand Down
46 changes: 38 additions & 8 deletions src/parser/symbols/SubscreenDataSymbols.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -326,10 +326,10 @@ static AccessorTable SubscreenWidgetTable[] =
{ "setPageTransArgs[]", 0, ZTID_VOID, SUBWIDGTRANSPGARGS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },

//Type Specific
{ "getCSet", 0, ZTID_FLOAT, SUBWIDGTY_CSET, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setCSet", 0, ZTID_VOID, SUBWIDGTY_CSET, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getTile", 0, ZTID_FLOAT, SUBWIDGTY_TILE, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setTile", 0, ZTID_VOID, SUBWIDGTY_TILE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getCSet[]", 0, ZTID_FLOAT, SUBWIDGTY_CSET, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "setCSet[]", 0, ZTID_VOID, SUBWIDGTY_CSET, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },
{ "getTile[]", 0, ZTID_FLOAT, SUBWIDGTY_TILE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "setTile[]", 0, ZTID_VOID, SUBWIDGTY_TILE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },

{ "getFont", 0, ZTID_FLOAT, SUBWIDGTY_FONT, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setFont", 0, ZTID_VOID, SUBWIDGTY_FONT, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
Expand All @@ -351,8 +351,8 @@ static AccessorTable SubscreenWidgetTable[] =
{ "setColorFill", 0, ZTID_VOID, SUBWIDGTY_COLOR_FILL, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getButton", 0, ZTID_FLOAT, SUBWIDGTY_BUTTON, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setButton", 0, ZTID_VOID, SUBWIDGTY_BUTTON, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getCounters[]", 0, ZTID_FLOAT, SUBWIDGTY_COUNTERS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "setCounters[]", 0, ZTID_VOID, SUBWIDGTY_COUNTERS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },
{ "getCounter[]", 0, ZTID_FLOAT, SUBWIDGTY_COUNTERS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "setCounter[]", 0, ZTID_VOID, SUBWIDGTY_COUNTERS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },
{ "getMinDigits", 0, ZTID_FLOAT, SUBWIDGTY_MINDIG, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setMinDigits", 0, ZTID_VOID, SUBWIDGTY_MINDIG, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getMaxDigits", 0, ZTID_FLOAT, SUBWIDGTY_MAXDIG, 0, { ZTID_SUBSCREENWIDGET },{} },
Expand Down Expand Up @@ -387,8 +387,38 @@ static AccessorTable SubscreenWidgetTable[] =
{ "setFlip", 0, ZTID_VOID, SUBWIDGTY_FLIP, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getNumber", 0, ZTID_FLOAT, SUBWIDGTY_NUMBER, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setNumber", 0, ZTID_VOID, SUBWIDGTY_NUMBER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getCorner", 0, ZTID_FLOAT, SUBWIDGTY_CORNER, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setCorner", 0, ZTID_VOID, SUBWIDGTY_CORNER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getCorner[]", 0, ZTID_FLOAT, SUBWIDGTY_CORNER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "setCorner[]", 0, ZTID_VOID, SUBWIDGTY_CORNER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT, ZTID_FLOAT },{} },
{ "getFrames", 0, ZTID_FLOAT, SUBWIDGTY_FRAMES, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setFrames", 0, ZTID_VOID, SUBWIDGTY_FRAMES, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getSpeed", 0, ZTID_FLOAT, SUBWIDGTY_SPEED, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setSpeed", 0, ZTID_VOID, SUBWIDGTY_SPEED, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getDelay", 0, ZTID_FLOAT, SUBWIDGTY_DELAY, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setDelay", 0, ZTID_VOID, SUBWIDGTY_DELAY, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getContainer", 0, ZTID_FLOAT, SUBWIDGTY_CONTAINER, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setContainer", 0, ZTID_VOID, SUBWIDGTY_CONTAINER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getGaugeWid", 0, ZTID_FLOAT, SUBWIDGTY_GAUGE_WID, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setGaugeWid", 0, ZTID_VOID, SUBWIDGTY_GAUGE_WID, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getGaugeHei", 0, ZTID_FLOAT, SUBWIDGTY_GAUGE_HEI, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setGaugeHei", 0, ZTID_VOID, SUBWIDGTY_GAUGE_HEI, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getUnits", 0, ZTID_FLOAT, SUBWIDGTY_UNITS, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setUnits", 0, ZTID_VOID, SUBWIDGTY_UNITS, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getHSpace", 0, ZTID_FLOAT, SUBWIDGTY_HSPACE, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setHSpace", 0, ZTID_VOID, SUBWIDGTY_HSPACE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getVSpace", 0, ZTID_FLOAT, SUBWIDGTY_VSPACE, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setVSpace", 0, ZTID_VOID, SUBWIDGTY_VSPACE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getGridX", 0, ZTID_FLOAT, SUBWIDGTY_GRIDX, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setGridX", 0, ZTID_VOID, SUBWIDGTY_GRIDX, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getGridY", 0, ZTID_FLOAT, SUBWIDGTY_GRIDY, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setGridY", 0, ZTID_VOID, SUBWIDGTY_GRIDY, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getAnimVal", 0, ZTID_FLOAT, SUBWIDGTY_ANIMVAL, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setAnimVal", 0, ZTID_VOID, SUBWIDGTY_ANIMVAL, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getShowDrain", 0, ZTID_FLOAT, SUBWIDGTY_SHOWDRAIN, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setShowDrain", 0, ZTID_VOID, SUBWIDGTY_SHOWDRAIN, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getPerContainer", 0, ZTID_FLOAT, SUBWIDGTY_PERCONTAINER, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setPerContainer", 0, ZTID_VOID, SUBWIDGTY_PERCONTAINER, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },
{ "getTabSize", 0, ZTID_FLOAT, SUBWIDGTY_TABSIZE, 0, { ZTID_SUBSCREENWIDGET },{} },
{ "setTabSize", 0, ZTID_VOID, SUBWIDGTY_TABSIZE, 0, { ZTID_SUBSCREENWIDGET, ZTID_FLOAT },{} },

{ "", 0, ZTID_VOID, -1, 0, {},{} }
};
Expand Down

0 comments on commit 252033a

Please sign in to comment.