12 #include "../stdafx.h" 15 #include "../string_func.h" 16 #include "../strings_func.h" 18 #include "../safeguards.h" 32 char dummy_script[4096];
33 char *dp = dummy_script;
34 dp +=
seprintf(dp,
lastof(dummy_script),
"class Dummy%s extends %sInfo {\n", type, type);
35 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetAuthor() { return \"OpenTTD Developers Team\"; }\n");
36 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetName() { return \"Dummy%s\"; }\n", type);
37 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetShortName() { return \"DUMM\"; }\n");
38 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetDescription() { return \"A Dummy %s that is loaded when your %s/ dir is empty\"; }\n", type, dir);
39 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetVersion() { return 1; }\n");
40 dp +=
seprintf(dp,
lastof(dummy_script),
"function GetDate() { return \"2008-07-26\"; }\n");
41 dp +=
seprintf(dp,
lastof(dummy_script),
"function CreateInstance() { return \"Dummy%s\"; }\n", type);
42 dp +=
seprintf(dp,
lastof(dummy_script),
"} RegisterDummy%s(Dummy%s());\n", type, type);
44 const SQChar *sq_dummy_script = dummy_script;
49 if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, strlen(sq_dummy_script),
"dummy", SQTrue))) {
51 if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
66 char error_message[1024];
67 GetString(error_message,
string,
lastof(error_message));
70 char safe_error_message[1024];
71 char *q = safe_error_message;
72 for (
const char *p = error_message; *p !=
'\0' && q <
lastof(safe_error_message) - 2; p++, q++) {
73 if (*p ==
'"' || *p ==
'\\') *q++ =
'\\';
79 char dummy_script[4096];
80 char *dp = dummy_script;
81 dp +=
seprintf(dp,
lastof(dummy_script),
"class Dummy%s extends %sController {\n function Start()\n {\n", type, type);
86 char *p = safe_error_message;
88 newline = strchr(p,
'\n');
89 if (newline != NULL) *newline =
'\0';
91 dp +=
seprintf(dp,
lastof(dummy_script),
" %sLog.Error(\"%s\");\n", type, p);
93 }
while (newline != NULL);
100 const SQChar *sq_dummy_script = dummy_script;
103 sq_pushroottable(vm);
104 if (SQ_SUCCEEDED(sq_compilebuffer(vm, sq_dummy_script, strlen(sq_dummy_script),
"dummy", SQTrue))) {
106 if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
int CDECL seprintf(char *str, const char *last, const char *format,...)
Safer implementation of snprintf; same as snprintf except:
#define lastof(x)
Get the last element of an fixed size array.
void Script_CreateDummy(HSQUIRRELVM vm, StringID string, const char *type)
Run the dummy AI and let it generate an error message.
uint32 StringID
Numeric value that represents a string, independent of the selected language.
void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir)
Run the dummy info.nut.
char * strecpy(char *dst, const char *src, const char *last)
Copies characters from one buffer to another.