+#if ENABLE_EFFECTINFO
+
+#include "effectinfo.qh"
#define EFFECTINFO_PARSER(on, MY) \
on(type, MY(type) \
,{ demand(n == 1 && "type"); MY(type) = strzone(argv(1)); \
/**/
CLASS(EffectInfo, Object)
- ATTRIB(EffectInfo, effectinfo_name, string, string_null)
+ ATTRIB(EffectInfo, effectinfo_name, string);
CONSTRUCTOR(EffectInfo, string s) {
CONSTRUCT(EffectInfo);
this.effectinfo_name = s;
MY(velocityoffset, vector, '0 0 0') \
/**/
- #define MY(f, type, val) ATTRIB(EffectInfo, effectinfo_##f, type, val)
+ #define MY(f, type, val) ATTRIB(EffectInfo, effectinfo_##f, type, val);
FIELDS(MY)
#undef MY
ENDCLASS(EffectInfo)
CLASS(EffectInfoGroup, Object)
- ATTRIBARRAY(EffectInfoGroup, children, EffectInfo, 16)
- ATTRIB(EffectInfoGroup, children_count, int, 0)
+ ATTRIBARRAY(EffectInfoGroup, children, EffectInfo, 16);
+ ATTRIB(EffectInfoGroup, children_count, int, 0);
ENDCLASS(EffectInfoGroup)
void effectinfo_read()
#undef p
#undef MY
default:
- LOG_WARNF("Unknown property '%s'\n", k);
+ LOG_WARNF("Unknown property '%s'", k);
break;
}
}
void effectinfo_dump(int fh, bool alsoprint)
{
- #define WRITE(s) MACRO_BEGIN { \
- fputs(fh, s); \
- if (alsoprint) LOG_INFO(s); \
- } MACRO_END
- WRITE("// ********************************************** //\n");
- WRITE("// ** WARNING - DO NOT MANUALLY EDIT THIS FILE ** //\n");
- WRITE("// ** ** //\n");
- WRITE("// ** This file is automatically generated by ** //\n");
- WRITE("// ** code with the command 'dumpeffectinfo'. ** //\n");
- WRITE("// ** ** //\n");
- WRITE("// ** If you modify an effect, please ** //\n");
- WRITE("// ** regenerate this file with that command. ** //\n");
- WRITE("// ** ** //\n");
- WRITE("// ********************************************** //\n");
- WRITE("\n");
+ #define WRITE(str) write_String_To_File(fh, str, alsoprint)
+ WRITE(
+ "// ********************************************** //\n"
+ "// ** WARNING - DO NOT MANUALLY EDIT THIS FILE ** //\n"
+ "// ** ** //\n"
+ "// ** This file is automatically generated by ** //\n"
+ "// ** code with the command 'dumpeffectinfo'. ** //\n"
+ "// ** ** //\n"
+ "// ** If you modify an effect, please ** //\n"
+ "// ** regenerate this file with that command. ** //\n"
+ "// ** ** //\n"
+ "// ********************************************** //\n"
+ "\n");
for (EffectInfo it = NULL; (it = findfloat(it, instanceOfEffectInfo, true)); ) {
if (it.classname == "vtbl") continue;
#undef WRITE
}
-GENERIC_COMMAND(dumpeffectinfo, "Dump all effectinfo to effectinfo_dump.txt")
+GENERIC_COMMAND(dumpeffectinfo, "Dump all effectinfo to effectinfo_dump.txt", false)
{
switch (request) {
case CMD_REQUEST_COMMAND: {
int fh = fopen(filename, FILE_WRITE);
if (fh >= 0) {
effectinfo_dump(fh, alsoprint);
- LOG_INFOF("Dumping effectinfo... File located at ^2data/data/%s^7.\n", filename);
- LOG_INFOF("Reload with ^2cl_particles_reloadeffects data/%s^7.\n", filename);
+ LOG_INFOF("Dumping effectinfo... File located at ^2data/data/%s^7.", filename);
+ LOG_INFOF("Reload with ^2cl_particles_reloadeffects data/%s^7.", filename);
fclose(fh);
} else {
- LOG_WARNF("Could not open file '%s'!\n", filename);
+ LOG_WARNF("Could not open file '%s'!", filename);
}
return;
}
default:
case CMD_REQUEST_USAGE: {
- LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpeffectinfo [filename]"));
- LOG_INFO(" Where 'filename' is the file to write (default is effectinfo_dump.txt),\n");
- LOG_INFO(" if supplied with '-' output to console as well as default,\n");
- LOG_INFO(" if left blank, it will only write to default.\n");
+ LOG_INFO("Usage:^3 ", GetProgramCommandPrefix(), " dumpeffectinfo [filename]");
+ LOG_INFO(" Where 'filename' is the file to write (default is effectinfo_dump.txt),");
+ LOG_INFO(" if supplied with '-' output to console as well as default,");
+ LOG_INFO(" if left blank, it will only write to default.");
return;
}
}
REGISTRY(EffectInfos, BITS(9))
-#define EffectInfos_from(i) _EffectInfos_from(i, NULL)
REGISTER_REGISTRY(EffectInfos)
+
+REGISTRY_DEFINE_GET(EffectInfos, NULL)
#define EFFECTINFO(name) \
- [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { } \
+ ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { } \
REGISTER(EffectInfos, EFFECTINFO, name, m_id, NEW(EffectInfoGroup)) { \
effectinfo_##name(this, NULL); \
}
#define MY(f) this.effectinfo_##f
#define DEF(name) EFFECTINFO(name)
#define SUB(name) \
- [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { parent = EFFECTINFO_##name; parent.children[parent.children_count++] = this = NEW(EffectInfo, #name); } \
- [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this)
+ ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { parent = EFFECTINFO_##name; parent.children[parent.children_count++] = this = NEW(EffectInfo, #name); } \
+ ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this)
#include "effectinfo.inc"
#undef MY
#undef DEF
#undef SUB
+
+#endif