@@ -38,8 +38,8 @@ void CLuaEngineDefs::LoadFunctions()
38
38
{" engineGetModelIDFromName" , EngineGetModelIDFromName},
39
39
{" engineGetModelTextureNames" , EngineGetModelTextureNames},
40
40
{" engineGetVisibleTextureNames" , EngineGetVisibleTextureNames},
41
- {" engineSetModelVisibleTime" , EngineSetModelVisibleTime},
42
- {" engineGetModelVisibleTime" , EngineGetModelVisibleTime},
41
+ {" engineSetModelVisibleTime" , ArgumentParser< EngineSetModelVisibleTime> },
42
+ {" engineGetModelVisibleTime" , ArgumentParser< EngineGetModelVisibleTime> },
43
43
{" engineGetModelTextures" , EngineGetModelTextures},
44
44
{" engineGetSurfaceProperties" , EngineGetSurfaceProperties},
45
45
{" engineSetSurfaceProperties" , EngineSetSurfaceProperties},
@@ -778,6 +778,7 @@ int CLuaEngineDefs::EngineResetModelLODDistance(lua_State* luaVM)
778
778
779
779
if (argStream.HasErrors ())
780
780
return luaL_error (luaVM, argStream.GetFullErrorMessage ());
781
+
781
782
unsigned short usModelID = CModelNames::ResolveModelID (strModel);
782
783
CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
783
784
if (pModelInfo)
@@ -1101,72 +1102,39 @@ int CLuaEngineDefs::EngineGetVisibleTextureNames(lua_State* luaVM)
1101
1102
return 1 ;
1102
1103
}
1103
1104
1104
- int CLuaEngineDefs::EngineSetModelVisibleTime (lua_State* luaVM )
1105
+ bool CLuaEngineDefs::EngineSetModelVisibleTime (std::string strModelId, char cHourOn, char cHourOff )
1105
1106
{
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)
1115
1110
{
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 )
1119
1112
{
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);
1125
1114
}
1126
1115
}
1127
- else
1128
- luaL_error (luaVM, argStream.GetFullErrorMessage ());
1129
1116
1130
- // Failed
1131
- lua_pushboolean (luaVM, false );
1132
- return 1 ;
1117
+ return false ;
1133
1118
}
1134
1119
1135
- int CLuaEngineDefs::EngineGetModelVisibleTime (lua_State* luaVM )
1120
+ std::variant< bool , std::tuple< char , char >> CLuaEngineDefs::EngineGetModelVisibleTime (std::string strModelId )
1136
1121
{
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)
1144
1125
{
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))
1148
1128
{
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 );
1162
1134
}
1163
1135
}
1164
- else
1165
- luaL_error (luaVM, argStream.GetFullErrorMessage ());
1166
1136
1167
- // Failed
1168
- lua_pushboolean (luaVM, false );
1169
- return 1 ;
1137
+ return false ;
1170
1138
}
1171
1139
1172
1140
int CLuaEngineDefs::EngineGetModelTextures (lua_State* luaVM)
0 commit comments