X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fplayerdemo.qc;h=34c886fa10ebc67029ab433831117ccecb1e2fcb;hb=cf1512beec5b1ebac151fdcf9f44ff4830b37187;hp=69ad7d0c65144deddf03134a68f83704b9861935;hpb=9f70bdba9a6fb2c06324be13504341da967f7028;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/playerdemo.qc b/qcsrc/server/playerdemo.qc index 69ad7d0c6..34c886fa1 100644 --- a/qcsrc/server/playerdemo.qc +++ b/qcsrc/server/playerdemo.qc @@ -1,3 +1,4 @@ +#include "playerdemo.qh" #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) @@ -16,122 +17,122 @@ void playerdemo_init(entity this) { this.playerdemo_mode = PLAYERDEMO_MODE_OFF; } -void playerdemo_shutdown() -{SELFPARAM(); - if(self.playerdemo_mode != PLAYERDEMO_MODE_OFF) +void playerdemo_shutdown(entity this) +{ + if(this.playerdemo_mode != PLAYERDEMO_MODE_OFF) { - LOG_INFO("playerdemo: ", self.netname, " closed\n"); - fclose(self.playerdemo_fh); + LOG_INFO("playerdemo: ", this.netname, " closed\n"); + fclose(this.playerdemo_fh); } - self.playerdemo_mode = 0; -} -void playerdemo_open_read(string f) -{SELFPARAM(); - playerdemo_shutdown(); - self.playerdemo_mode = PLAYERDEMO_MODE_READING; - self.playerdemo_fh = fopen(f, FILE_READ); - self.playerdemo_starttime = time - 1; - self.playerdemo_time = stof(fgets(self.playerdemo_fh)); - self.playerdemo_time += self.playerdemo_starttime; - self.movetype = MOVETYPE_NONE; - LOG_INFO("playerdemo: ", self.netname, " reading from ", f, "\n"); -} -void playerdemo_open_write(string f) -{SELFPARAM(); - playerdemo_shutdown(); - self.playerdemo_mode = PLAYERDEMO_MODE_WRITING; - self.playerdemo_fh = fopen(f, FILE_WRITE); - self.playerdemo_starttime = time - 1; - LOG_INFO("playerdemo: ", self.netname, " writing to ", f, "\n"); + this.playerdemo_mode = 0; +} +void playerdemo_open_read(entity this, string f) +{ + playerdemo_shutdown(this); + this.playerdemo_mode = PLAYERDEMO_MODE_READING; + this.playerdemo_fh = fopen(f, FILE_READ); + this.playerdemo_starttime = time - 1; + this.playerdemo_time = stof(fgets(this.playerdemo_fh)); + this.playerdemo_time += this.playerdemo_starttime; + set_movetype(this, MOVETYPE_NONE); + LOG_INFO("playerdemo: ", this.netname, " reading from ", f, "\n"); +} +void playerdemo_open_write(entity this, string f) +{ + playerdemo_shutdown(this); + this.playerdemo_mode = PLAYERDEMO_MODE_WRITING; + this.playerdemo_fh = fopen(f, FILE_WRITE); + this.playerdemo_starttime = time - 1; + LOG_INFO("playerdemo: ", this.netname, " writing to ", f, "\n"); LOG_INFO("WARNING: playerdemo file format is incomplete and not stable yet. DO NOT RELY ON IT!\n"); } -#define PLAYERDEMO_FIELD(func,t,f) func##t(f,#f); -#define PLAYERDEMO_FIELDS(func) \ - PLAYERDEMO_FIELD(func,originvector,origin) \ - PLAYERDEMO_FIELD(func,vector,angles) \ - PLAYERDEMO_FIELD(func,sizevector,mins) \ - PLAYERDEMO_FIELD(func,sizevector,maxs) \ - PLAYERDEMO_FIELD(func,vector,v_angle) \ - PLAYERDEMO_FIELD(func,modelstring,model) \ - PLAYERDEMO_FIELD(func,string,playermodel) \ - PLAYERDEMO_FIELD(func,float,skin) \ - PLAYERDEMO_FIELD(func,string,playerskin) \ - PLAYERDEMO_FIELD(func,float,frame) \ - PLAYERDEMO_FIELD(func,float,effects) \ - /* PLAYERDEMO_FIELD(func,float,switchweapon) */ \ - PLAYERDEMO_FIELD(func,float,button0) /* TODO: PHYS_INPUT_BUTTON_ATCK */ \ - PLAYERDEMO_FIELD(func,float,button3) /* TODO: PHYS_INPUT_BUTTON_ATCK2 */ \ - PLAYERDEMO_FIELD(func,float,button5) /* TODO: PHYS_INPUT_BUTTON_CROUCH */ \ - PLAYERDEMO_FIELD(func,float,button6) /* TODO: PHYS_INPUT_BUTTON_HOOK */ \ - PLAYERDEMO_FIELD(func,float,buttonuse) /* TODO: PHYS_INPUT_BUTTON_USE */ \ - PLAYERDEMO_FIELD(func,float,flags) \ +#define PLAYERDEMO_FIELD(ent,func,t,f) func##t(ent,f,#f); +#define PLAYERDEMO_FIELDS(ent,func) \ + PLAYERDEMO_FIELD(ent,func,originvector,origin) \ + PLAYERDEMO_FIELD(ent,func,vector,angles) \ + PLAYERDEMO_FIELD(ent,func,sizevector,mins) \ + PLAYERDEMO_FIELD(ent,func,sizevector,maxs) \ + PLAYERDEMO_FIELD(ent,func,vector,v_angle) \ + PLAYERDEMO_FIELD(ent,func,modelstring,model) \ + PLAYERDEMO_FIELD(ent,func,string,playermodel) \ + PLAYERDEMO_FIELD(ent,func,float,skin) \ + PLAYERDEMO_FIELD(ent,func,string,playerskin) \ + PLAYERDEMO_FIELD(ent,func,float,frame) \ + PLAYERDEMO_FIELD(ent,func,float,effects) \ + /* PLAYERDEMO_FIELD(ent,func,float,switchweapon) */ \ + PLAYERDEMO_FIELD(ent,func,float,button0) /* TODO: PHYS_INPUT_BUTTON_ATCK */ \ + PLAYERDEMO_FIELD(ent,func,float,button3) /* TODO: PHYS_INPUT_BUTTON_ATCK2 */ \ + PLAYERDEMO_FIELD(ent,func,float,button5) /* TODO: PHYS_INPUT_BUTTON_CROUCH */ \ + PLAYERDEMO_FIELD(ent,func,float,button6) /* TODO: PHYS_INPUT_BUTTON_HOOK */ \ + PLAYERDEMO_FIELD(ent,func,float,buttonuse) /* TODO: PHYS_INPUT_BUTTON_USE */ \ + PLAYERDEMO_FIELD(ent,func,float,flags) \ // end of list -void playerdemo_write_originvector(.vector f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(vtos(self.(f)), "\n")); +void playerdemo_write_originvector(entity this, .vector f, string name) +{ + fputs(this.playerdemo_fh, strcat(vtos(this.(f)), "\n")); } -void playerdemo_write_sizevector(.vector f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(vtos(self.(f)), "\n")); +void playerdemo_write_sizevector(entity this, .vector f, string name) +{ + fputs(this.playerdemo_fh, strcat(vtos(this.(f)), "\n")); } -void playerdemo_write_vector(.vector f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(vtos(self.(f)), "\n")); +void playerdemo_write_vector(entity this, .vector f, string name) +{ + fputs(this.playerdemo_fh, strcat(vtos(this.(f)), "\n")); } -void playerdemo_write_string(.string f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(self.(f), "\n")); +void playerdemo_write_string(entity this, .string f, string name) +{ + fputs(this.playerdemo_fh, strcat(this.(f), "\n")); } -void playerdemo_write_modelstring(.string f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(self.(f), "\n")); +void playerdemo_write_modelstring(entity this, .string f, string name) +{ + fputs(this.playerdemo_fh, strcat(this.(f), "\n")); } -void playerdemo_write_float(.float f, string name) -{SELFPARAM(); - fputs(self.playerdemo_fh, strcat(ftos(self.(f)), "\n")); +void playerdemo_write_float(entity this, .float f, string name) +{ + fputs(this.playerdemo_fh, strcat(ftos(this.(f)), "\n")); } -void playerdemo_write() -{SELFPARAM(); - if(self.playerdemo_mode != PLAYERDEMO_MODE_WRITING) +void playerdemo_write(entity this) +{ + if(this.playerdemo_mode != PLAYERDEMO_MODE_WRITING) return; - fputs(self.playerdemo_fh, strcat(ftos(time - self.playerdemo_starttime), "\n")); - PLAYERDEMO_FIELDS(playerdemo_write_) -} -void playerdemo_read_originvector(.vector f, string name) -{SELFPARAM(); - setorigin(self, stov(fgets(self.playerdemo_fh))); -} -void playerdemo_read_sizevector(.vector f, string name) -{SELFPARAM(); - self.(f) = stov(fgets(self.playerdemo_fh)); - setsize(self, self.mins, self.maxs); -} -void playerdemo_read_vector(.vector f, string name) -{SELFPARAM(); - self.(f) = stov(fgets(self.playerdemo_fh)); -} -void playerdemo_read_string(.string f, string name) -{SELFPARAM(); - string s = fgets(self.playerdemo_fh); - if (s != self.(f)) + fputs(this.playerdemo_fh, strcat(ftos(time - this.playerdemo_starttime), "\n")); + PLAYERDEMO_FIELDS(this, playerdemo_write_) +} +void playerdemo_read_originvector(entity this, .vector f, string name) +{ + setorigin(this, stov(fgets(this.playerdemo_fh))); +} +void playerdemo_read_sizevector(entity this, .vector f, string name) +{ + this.(f) = stov(fgets(this.playerdemo_fh)); + setsize(this, this.mins, this.maxs); +} +void playerdemo_read_vector(entity this, .vector f, string name) +{ + this.(f) = stov(fgets(this.playerdemo_fh)); +} +void playerdemo_read_string(entity this, .string f, string name) +{ + string s = fgets(this.playerdemo_fh); + if (s != this.(f)) { /* - if(self.f) - strunzone(self.f); + if(this.f) + strunzone(this.f); */ - self.(f) = strzone(s); + this.(f) = strzone(s); } } -void playerdemo_read_modelstring(.string f, string name) -{SELFPARAM(); - string s = fgets(self.playerdemo_fh); - if (s != self.(f)) - _setmodel(self, s); +void playerdemo_read_modelstring(entity this, .string f, string name) +{ + string s = fgets(this.playerdemo_fh); + if (s != this.(f)) + _setmodel(this, s); } -void playerdemo_read_float(.float f, string name) -{SELFPARAM(); - self.(f) = stof(fgets(self.playerdemo_fh)); +void playerdemo_read_float(entity this, .float f, string name) +{ + this.(f) = stof(fgets(this.playerdemo_fh)); } float playerdemo_read(entity this) { @@ -143,12 +144,12 @@ float playerdemo_read(entity this) t = time; while(time >= this.playerdemo_time) { - PLAYERDEMO_FIELDS(playerdemo_read_) + PLAYERDEMO_FIELDS(this, playerdemo_read_) { time = this.playerdemo_time; - WITH(entity, self, this, PlayerPreThink()); + PlayerPreThink(this); // not running physics though... this is just so we can run weapon stuff - WITH(entity, self, this, PlayerPostThink()); + PlayerPostThink(this); } this.playerdemo_time = stof(fgets(this.playerdemo_fh)); if(this.playerdemo_time == 0)