X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fall.qh;h=1a77e989121b0cade1ab49e584f93e6e575b29d4;hb=add3116cfe9c5d1bfaec0e88b135e11c979b5edf;hp=1a464c1268bf435c7bfe1dbf3dc151866d845612;hpb=3da2597f3c6edc7a99855778400b265074c6142d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/all.qh b/qcsrc/common/turrets/all.qh index 1a464c126..1a77e9891 100644 --- a/qcsrc/common/turrets/all.qh +++ b/qcsrc/common/turrets/all.qh @@ -1,62 +1,76 @@ -#ifndef TURRETS_ALL_H -#define TURRETS_ALL_H +#pragma once -#include "turret.qh" +#include +#include "config.qh" -void register_turret(Turret e, bool(Turret, int) func, float turretflags, vector min_s, vector max_s, string modelname, string headmodelname, string shortname, string mname); +#include "turret.qh" -const int TUR_MAXCOUNT = 24; -entity turret_info[TUR_MAXCOUNT], turret_info_first, turret_info_last; -float TUR_COUNT; +REGISTRY(Turrets, BITS(5)) +#define Turrets_from(i) _Turrets_from(i, TUR_Null) +#define get_turretinfo(i) Turrets_from(i) +REGISTER_REGISTRY(Turrets) +REGISTRY_CHECK(Turrets) -#define _REGISTER_TURRET(id, func, turretflags, min_s, max_s, modelname, headmodelname, shortname, mname) \ - bool func(Turret, int); \ - REGISTER(RegisterTurrets, TUR, turret_info, TUR_COUNT, id, m_id, NEW(Turret)) { \ - register_turret(this, func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname); \ - } -void RegisterTurrets(); -REGISTER_REGISTRY(RegisterTurrets) -#define REGISTER_TURRET(...) EVAL(OVERLOAD(REGISTER_TURRET, __VA_ARGS__)) +GENERIC_COMMAND(dumpturrets, "Dump all turrets into turrets_dump.txt") +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { + #ifdef SVQC + tur_config_file = -1; + tur_config_alsoprint = -1; + string filename = argv(1); -#define REGISTER_TURRET_2(id, inst) REGISTER(RegisterTurrets, TUR, turret_info, TUR_COUNT, id, m_id, inst) + if(filename == "") + { + filename = "turrets_dump.cfg"; + tur_config_alsoprint = false; + } + else if(filename == "-") + { + filename = "turrets_dump.cfg"; + tur_config_alsoprint = true; + } + tur_config_file = fopen(filename, FILE_WRITE); -#ifdef MENUQC -#define REGISTER_TURRET_9(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) \ - _REGISTER_TURRET(id,t_new,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) -#else -#define REGISTER_TURRET_9(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) \ - _REGISTER_TURRET(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) -#endif + if(tur_config_file >= 0) + { + Dump_Turret_Settings(); + LOG_INFO(sprintf("Dumping turrets... File located in ^2data/data/%s^7.\n", filename)); + fclose(tur_config_file); + tur_config_file = -1; + tur_config_alsoprint = -1; + } + else + { + LOG_INFO(sprintf("^1Error: ^7Could not open file '%s'!\n", filename)); + } + #else + LOG_INFO(_("Turrets dump command only works with sv_cmd.\n")); + #endif + return; + } -void register_turret(Turret e, bool(Turret, int) func, float turretflags, vector min_s, vector max_s, string modelname, string headmodelname, string shortname, string mname) -{ - e.classname = "turret_info"; - - e.turret_func = func; - e.spawnflags = turretflags; - e.mins = min_s; - e.maxs = max_s; - e.mdl = modelname; - e.model = strzone(strcat("models/turrets/", modelname)); - e.head_model = strzone(strcat("models/turrets/", headmodelname)); - e.netname = shortname; - e.turret_name = mname; + default: + case CMD_REQUEST_USAGE: + { + LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpturrets [filename]")); + LOG_INFO(" Where 'filename' is the file to write (default is turrets_dump.cfg),\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"); + return; + } + } } -entity get_turretinfo(int id); -REGISTER_TURRET(Null, - t_new, - 0, - '-0 -0 -0', - '0 0 0', - "", - "", - "", - "Turret" -); +const int TUR_FIRST = 1; +#define TUR_LAST (Turrets_COUNT - 1) + +#define REGISTER_TURRET(id, inst) REGISTER(Turrets, TUR, id, m_id, inst) -#include "all.inc" +REGISTER_TURRET(Null, NEW(Turret)); -#endif +#include "turret/_mod.inc"