MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / LoadObjects

Method LoadObjects

src/script/script_instance.cpp:600–649  ·  view source on GitHub ↗

static */

Source from the content-addressed store, hash-verified

598}
599
600/* static */ bool ScriptInstance::LoadObjects(ScriptData *data)
601{
602 SlObject(nullptr, _script_byte);
603 switch (_script_sl_byte) {
604 case SQSL_INT: {
605 int64_t value;
606 SlCopy(&value, 1, IsSavegameVersionBefore(SLV_SCRIPT_INT64) ? SLE_FILE_I32 | SLE_VAR_I64 : SLE_INT64);
607 if (data != nullptr) data->push_back(static_cast<SQInteger>(value));
608 return true;
609 }
610
611 case SQSL_STRING: {
612 SlObject(nullptr, _script_byte);
613 static char buf[std::numeric_limits<decltype(_script_sl_byte)>::max()];
614 SlCopy(buf, _script_sl_byte, SLE_CHAR);
615 if (data != nullptr) data->push_back(StrMakeValid(std::string_view(buf, _script_sl_byte)));
616 return true;
617 }
618
619 case SQSL_ARRAY:
620 case SQSL_TABLE: {
621 if (data != nullptr) data->push_back(static_cast<SQSaveLoadType>(_script_sl_byte));
622 while (LoadObjects(data));
623 return true;
624 }
625
626 case SQSL_BOOL: {
627 SlObject(nullptr, _script_byte);
628 if (data != nullptr) data->push_back(static_cast<SQBool>(_script_sl_byte != 0));
629 return true;
630 }
631
632 case SQSL_NULL: {
633 if (data != nullptr) data->push_back(static_cast<SQSaveLoadType>(_script_sl_byte));
634 return true;
635 }
636
637 case SQSL_INSTANCE: {
638 if (data != nullptr) data->push_back(static_cast<SQSaveLoadType>(_script_sl_byte));
639 return true;
640 }
641
642 case SQSL_ARRAY_TABLE_END: {
643 if (data != nullptr) data->push_back(static_cast<SQSaveLoadType>(_script_sl_byte));
644 return false;
645 }
646
647 default: SlErrorCorrupt("Invalid script data type");
648 }
649}
650
651/* static */ bool ScriptInstance::LoadObjects(HSQUIRRELVM vm, ScriptData *data)
652{

Callers

nothing calls this directly

Calls 6

SlObjectFunction · 0.85
SlCopyFunction · 0.85
IsSavegameVersionBeforeFunction · 0.85
SlErrorCorruptFunction · 0.85
push_backMethod · 0.80
StrMakeValidFunction · 0.50

Tested by

no test coverage detected