MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / do_file

Method do_file

ogsr_engine/COMMON_AI/script_engine.cpp:600–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

598}
599
600bool CScriptEngine::do_file(
601 const char* caScriptName,
602 const char* caNameSpaceName) // KRodin: эта функция открывает скрипт с диска и оправляет его содержимое в функцию load_buffer, после этого походу запускает скрипт.
603{
604 auto l_tpFileReader = FS.r_open(caScriptName);
605 if (!l_tpFileReader)
606 {
607 // заменить на ассерт?
608 Msg("!![CScriptStorage::do_file] Cannot open file [%s]", caScriptName);
609 return false;
610 }
611
612 l_tpFileReader->skip_bom(caScriptName);
613
614 string_path l_caLuaFileName;
615 strconcat(sizeof(l_caLuaFileName), l_caLuaFileName, "@", caScriptName); // KRodin: приводит путь к виду @f:\games\s.t.a.l.k.e.r\gamedata\scripts\***.script
616
617 bool loaded = load_buffer(lua(), reinterpret_cast<const char*>(l_tpFileReader->pointer()), (size_t)l_tpFileReader->elapsed(), l_caLuaFileName, caNameSpaceName);
618
619 FS.r_close(l_tpFileReader);
620 if (!loaded)
621 return false;
622
623 int l_iErrorCode = lua_pcall(lua(), 0, 0, 0); // KRodin: без этого скрипты не работают!
624 if (l_iErrorCode)
625 {
626 print_output(lua(), caScriptName, l_iErrorCode);
627 R_ASSERT(false); // НЕ ЗАКОММЕНТИРОВАТЬ!
628 return false;
629 }
630 return true;
631}
632
633bool CScriptEngine::namespace_loaded(const char* name, bool remove_from_stack) // KRodin: видимо, функция проверяет, загружен ли скрипт.
634{

Callers

nothing calls this directly

Calls 10

MsgFunction · 0.85
luaFunction · 0.85
r_openMethod · 0.80
skip_bomMethod · 0.80
pointerMethod · 0.80
r_closeMethod · 0.80
load_bufferFunction · 0.50
lua_pcallFunction · 0.50
print_outputFunction · 0.50
elapsedMethod · 0.45

Tested by

no test coverage detected