MCPcopy Create free account
hub / github.com/RSDKModding/RSDKv3-Decompilation / ParseScriptFile

Function ParseScriptFile

RSDKv3/Script.cpp:1622–1867  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1620}
1621
1622void ParseScriptFile(char *scriptName, int scriptID)
1623{
1624
1625 jumpTableStackPos = 0;
1626 lineID = 0;
1627 aliasCount = COMMONALIAS_COUNT;
1628 for (int i = COMMONALIAS_COUNT; i < ALIAS_COUNT; ++i) {
1629 StrCopy(aliases[i].name, "");
1630 StrCopy(aliases[i].value, "");
1631 }
1632
1633 char scriptPath[0x40];
1634 StrCopy(scriptPath, "Data/Scripts/");
1635 StrAdd(scriptPath, scriptName);
1636 FileInfo info;
1637 if (LoadFile(scriptPath, &info)) {
1638 objectScriptList[scriptID].mobile = true; // all parsed scripts will use the updated format, old format support is purely for pc bytecode
1639 int readMode = READMODE_NORMAL;
1640 int parseMode = PARSEMODE_SCOPELESS;
1641 char prevChar = 0;
1642 char curChar = 0;
1643 int switchDeep = 0;
1644 while (readMode < READMODE_EOF) {
1645 int textPos = 0;
1646 readMode = READMODE_NORMAL;
1647 while (readMode < READMODE_ENDLINE) {
1648 prevChar = curChar;
1649 FileRead(&curChar, 1);
1650 if (readMode == READMODE_STRING) {
1651 if (curChar == '\t' || curChar == '\r' || curChar == '\n' || curChar == ';' || readMode >= READMODE_COMMENTLINE) {
1652 if ((curChar == '\n' && prevChar != '\r') || (curChar == '\n' && prevChar == '\r')) {
1653 readMode = READMODE_ENDLINE;
1654 scriptText[textPos] = 0;
1655 }
1656 }
1657 else if (curChar != '/' || textPos <= 0) {
1658 scriptText[textPos++] = curChar;
1659 if (curChar == '"')
1660 readMode = READMODE_NORMAL;
1661 }
1662 else if (curChar == '/' && prevChar == '/') {
1663 readMode = READMODE_COMMENTLINE;
1664 scriptText[--textPos] = 0;
1665 }
1666 else {
1667 scriptText[textPos++] = curChar;
1668 }
1669 }
1670 else if (curChar == ' ' || curChar == '\t' || curChar == '\r' || curChar == '\n' || curChar == ';'
1671 || readMode >= READMODE_COMMENTLINE) {
1672 if ((curChar == '\n' && prevChar != '\r') || (curChar == '\n' && prevChar == '\r')) {
1673 readMode = READMODE_ENDLINE;
1674 scriptText[textPos] = 0;
1675 }
1676 }
1677 else if (curChar != '/' || textPos <= 0) {
1678 scriptText[textPos++] = curChar;
1679 if (curChar == '"' && !readMode)

Callers 1

Scene.cppFile · 0.85

Calls 15

StrCopyFunction · 0.85
StrAddFunction · 0.85
LoadFileFunction · 0.85
FileReadFunction · 0.85
ReachedEndOfFileFunction · 0.85
CheckAliasTextFunction · 0.85
StrCompFunction · 0.85
FindStringTokenFunction · 0.85
ConvertIfWhileStatementFunction · 0.85
ConvertSwitchStatementFunction · 0.85
GetFilePositionFunction · 0.85
ConvertArithmaticSyntaxFunction · 0.85

Tested by

no test coverage detected