@@ -38,8 +38,8 @@ void CLuaEngineDefs::LoadFunctions()
3838 {" engineGetModelIDFromName" , EngineGetModelIDFromName},
3939 {" engineGetModelTextureNames" , EngineGetModelTextureNames},
4040 {" engineGetVisibleTextureNames" , EngineGetVisibleTextureNames},
41- {" engineSetModelVisibleTime" , EngineSetModelVisibleTime},
42- {" engineGetModelVisibleTime" , EngineGetModelVisibleTime},
41+ {" engineSetModelVisibleTime" , ArgumentParser< EngineSetModelVisibleTime> },
42+ {" engineGetModelVisibleTime" , ArgumentParser< EngineGetModelVisibleTime> },
4343 {" engineGetModelTextures" , EngineGetModelTextures},
4444 {" engineGetSurfaceProperties" , EngineGetSurfaceProperties},
4545 {" engineSetSurfaceProperties" , EngineSetSurfaceProperties},
@@ -778,6 +778,7 @@ int CLuaEngineDefs::EngineResetModelLODDistance(lua_State* luaVM)
778778
779779 if (argStream.HasErrors ())
780780 return luaL_error (luaVM, argStream.GetFullErrorMessage ());
781+
781782 unsigned short usModelID = CModelNames::ResolveModelID (strModel);
782783 CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
783784 if (pModelInfo)
@@ -1101,72 +1102,39 @@ int CLuaEngineDefs::EngineGetVisibleTextureNames(lua_State* luaVM)
11011102 return 1 ;
11021103}
11031104
1104- int CLuaEngineDefs::EngineSetModelVisibleTime (lua_State* luaVM )
1105+ bool CLuaEngineDefs::EngineSetModelVisibleTime (std::string strModelId, char cHourOn, char cHourOff )
11051106{
1106- // bool engineSetModelVisibleTime ( int/string modelID, int hourOn, int hourOff )
1107- SString strModelId;
1108- char cHourOn,cHourOff;
1109- CScriptArgReader argStream (luaVM);
1110- argStream.ReadString (strModelId);
1111- argStream.ReadNumber (cHourOn);
1112- argStream.ReadNumber (cHourOff);
1113-
1114- if (!argStream.HasErrors ())
1107+ ushort usModelID = CModelNames::ResolveModelID (strModelId);
1108+ CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1109+ if (pModelInfo)
11151110 {
1116- ushort usModelID = CModelNames::ResolveModelID (strModelId);
1117- CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1118- if (pModelInfo)
1111+ if (cHourOn >= 0 && cHourOn <= 24 && cHourOff >= 0 && cHourOff <= 24 )
11191112 {
1120- if (cHourOn >= 0 && cHourOn <= 24 && cHourOff >= 0 && cHourOff <= 24 )
1121- {
1122- lua_pushboolean (luaVM, pModelInfo->SetTime (cHourOn, cHourOff));
1123- return 1 ;
1124- }
1113+ return pModelInfo->SetTime (cHourOn, cHourOff);
11251114 }
11261115 }
1127- else
1128- luaL_error (luaVM, argStream.GetFullErrorMessage ());
11291116
1130- // Failed
1131- lua_pushboolean (luaVM, false );
1132- return 1 ;
1117+ return false ;
11331118}
11341119
1135- int CLuaEngineDefs::EngineGetModelVisibleTime (lua_State* luaVM )
1120+ std::variant< bool , std::tuple< char , char >> CLuaEngineDefs::EngineGetModelVisibleTime (std::string strModelId )
11361121{
1137- // int, int engineGetModelVisibleTime ( int/string modelID )
1138- SString strModelId;
1139-
1140- CScriptArgReader argStream (luaVM);
1141- argStream.ReadString (strModelId);
1142-
1143- if (!argStream.HasErrors ())
1122+ ushort usModelID = CModelNames::ResolveModelID (strModelId);
1123+ CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1124+ if (pModelInfo)
11441125 {
1145- ushort usModelID = CModelNames::ResolveModelID (strModelId);
1146- CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1147- if (pModelInfo)
1126+ char cHourOn, cHourOff;
1127+ if (pModelInfo->GetTime (cHourOn, cHourOff))
11481128 {
1149- char cHourOn, cHourOff;
1150- if (pModelInfo->GetTime (cHourOn, cHourOff))
1151- {
1152- lua_pushnumber (luaVM, cHourOn);
1153- lua_pushnumber (luaVM, cHourOff);
1154- return 2 ;
1155- }
1156- else // Model is incompatible, don't let confuse user.
1157- {
1158- lua_pushnumber (luaVM, 0 );
1159- lua_pushnumber (luaVM, 24 );
1160- return 2 ;
1161- }
1129+ return std::tuple (cHourOn, cHourOff);
1130+ }
1131+ else // Model is incompatible, don't let confuse user.
1132+ {
1133+ return std::tuple (0 , 24 );
11621134 }
11631135 }
1164- else
1165- luaL_error (luaVM, argStream.GetFullErrorMessage ());
11661136
1167- // Failed
1168- lua_pushboolean (luaVM, false );
1169- return 1 ;
1137+ return false ;
11701138}
11711139
11721140int CLuaEngineDefs::EngineGetModelTextures (lua_State* luaVM)
0 commit comments