diff --git a/src/Makefile b/src/Makefile index 91f53ba..4cf59e0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,7 +6,7 @@ USESTDOUT=0 BASE_LIBS=-lgcrypt BASE_CFLAGS=-c -g -O_FILES=build/oastat.o build/oastatstruct.o build/kill2db.o build/init2db.o build/shutdown2db.o build/userinfo2db.o build/disconnect2db.o build/award2db.o build/ctf2db.o build/point2db.o build/ctf1f2db.o build/elimination2db.o +O_FILES=build/oastat.o build/oastatstruct.o build/kill2db.o build/init2db.o build/shutdown2db.o build/userinfo2db.o build/disconnect2db.o build/award2db.o build/ctf2db.o build/point2db.o build/ctf1f2db.o build/elimination2db.o build/ctfelim2db.o ifeq ($(USESTDOUT),1) O_FILES+= build/db2stdout.o @@ -25,6 +25,11 @@ ifeq ($(USEDBIXX),1) BASE_CFLAGS+= -DUSEDBIXX=1 endif +total: build/oastat + +clean: + rm -f build/*.o + build/oastat: $(O_FILES) g++ -O -o build/oastat $(O_FILES) $(BASE_LIBS) @@ -76,6 +81,9 @@ build/ctf1f2db.o: oss2db/Ctf1f2Db.cpp build/elimination2db.o: oss2db/Elimination2Db.cpp g++ $(BASE_CFLAGS) oss2db/Elimination2Db.cpp -o build/elimination2db.o +build/ctfelim2db.o: oss2db/CtfElimination2Db.cpp + g++ $(BASE_CFLAGS) oss2db/CtfElimination2Db.cpp -o build/ctfelim2db.o + build/point2db.o: oss2db/Point2Db.cpp oss2db/Point2Db.hpp g++ $(BASE_CFLAGS) oss2db/Point2Db.cpp -o build/point2db.o diff --git a/src/db/Db2DbiXX.cpp b/src/db/Db2DbiXX.cpp index 118cf89..105afa5 100644 --- a/src/db/Db2DbiXX.cpp +++ b/src/db/Db2DbiXX.cpp @@ -183,6 +183,11 @@ void Db2DbiXX::addElimination(int second, int roundnumber, int team, int event) DebugMessage("addElimination"); } +void Db2DbiXX::addCtfElimination(int second, int roundnumber, string player, int team, int event) { + *sql << S_CTF_ELIM,gamenumber,second,team,player,event,roundnumber,exec(); + DebugMessage("addCtfElimination"); +} + int Db2DbiXX::getNextGameNumber() { int result = -1; row r; diff --git a/src/db/Db2DbiXX.hpp b/src/db/Db2DbiXX.hpp index 159262e..9a07b39 100644 --- a/src/db/Db2DbiXX.hpp +++ b/src/db/Db2DbiXX.hpp @@ -35,6 +35,7 @@ public: void addCtf(int second, string player, int team, int event); void addCtf1f(int second, string player, int team, int event); void addElimination(int second, int roundnumber, int team, int event); + void addCtfElimination(int second, int roundnumber, string player, int team, int event); private: session *sql; transaction *commitlock; diff --git a/src/db/database.hpp b/src/db/database.hpp index 9f46b1d..d4cda6b 100644 --- a/src/db/database.hpp +++ b/src/db/database.hpp @@ -144,6 +144,17 @@ class Database { virtual void addCtf1f(int second, string player, int team, int event) = 0; virtual void addElimination(int second, int roundnumber, int team, int event) = 0; + + /** + * Events for the CTF Elimination gametype + * + * @param second second from game start + * @param roundnumber the round number + * @param player the player the event is about. Possible blank + * @param team the team the event is about + * @param event the event type + */ + virtual void addCtfElimination(int second, int roundnumber, string player, int team, int event) = 0; }; #endif //_DATABASE_H diff --git a/src/oss2db/Ctf1f2Db.cpp b/src/oss2db/Ctf1f2Db.cpp index 0b5c100..1c0539f 100644 --- a/src/oss2db/Ctf1f2Db.cpp +++ b/src/oss2db/Ctf1f2Db.cpp @@ -13,7 +13,7 @@ string Ctf1f2Db::getCommand() { } bool Ctf1f2Db::canProcess(OaStatStruct oss) { - if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0) + if(oss.command != getCommand() || oss.parameters.size()<3) return false; return true; } diff --git a/src/oss2db/Ctf2Db.cpp b/src/oss2db/Ctf2Db.cpp index 01e907f..eb54108 100644 --- a/src/oss2db/Ctf2Db.cpp +++ b/src/oss2db/Ctf2Db.cpp @@ -13,7 +13,7 @@ string Ctf2Db::getCommand() { } bool Ctf2Db::canProcess(OaStatStruct oss) { - if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0) + if(oss.command != getCommand() || oss.parameters.size()<3) return false; return true; } diff --git a/src/oss2db/CtfElimination2Db.cpp b/src/oss2db/CtfElimination2Db.cpp new file mode 100644 index 0000000..db0fac1 --- /dev/null +++ b/src/oss2db/CtfElimination2Db.cpp @@ -0,0 +1,30 @@ +/* + * File: CtfElimination2Db.cpp + * Author: poul + * + * Created on 21. januar 2011, 21:12 + */ + +#include "CtfElimination2Db.hpp" + +string CtfElimination2Db::getCommand() { + return "ELIMINATION"; +} + +bool CtfElimination2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<3 ) + return false; + return true; +} + +void CtfElimination2Db::process(OaStatStruct oss) { + if(!canProcess(oss)) + return; //Invalid oss + + string player = ""; + if(oss.parameters.at(1)!=-1) + player= clientIdMap[oss.parameters.at(1)]; + + dp->addCtfElimination(oss.second,oss.parameters.at(0) /*roundnumber*/, + player,oss.parameters.at(2) /*team*/, oss.parameters.at(3) /*event*/); +} diff --git a/src/oss2db/CtfElimination2Db.hpp b/src/oss2db/CtfElimination2Db.hpp new file mode 100644 index 0000000..4587fa2 --- /dev/null +++ b/src/oss2db/CtfElimination2Db.hpp @@ -0,0 +1,27 @@ +/* + * File: CtfElimination2Db.hpp + * Author: poul + * + * Created on 21. januar 2011, 21:12 + */ + +#ifndef _CTFELIMINATION2DB_HPP +#define _CTFELIMINATION2DB_HPP + + +#include "struct2db.h" +#include "../local.h" + +class CtfElimination2Db : Struct2Db { +public: + string getCommand(); + bool canProcess(OaStatStruct oss); + + void process(OaStatStruct oss); + +private: + +}; + +#endif /* _CTFELIMINATION2DB_HPP */ + diff --git a/src/oss2db/Elimination2Db.cpp b/src/oss2db/Elimination2Db.cpp index 1439fba..0aaa73e 100644 --- a/src/oss2db/Elimination2Db.cpp +++ b/src/oss2db/Elimination2Db.cpp @@ -13,7 +13,7 @@ string Elimination2Db::getCommand() { } bool Elimination2Db::canProcess(OaStatStruct oss) { - if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0 ) + if(oss.command != getCommand() || oss.parameters.size()<3 ) return false; return true; } diff --git a/src/oss2db/Point2Db.cpp b/src/oss2db/Point2Db.cpp index 48c6f4d..7f2b97d 100644 --- a/src/oss2db/Point2Db.cpp +++ b/src/oss2db/Point2Db.cpp @@ -25,4 +25,4 @@ void Point2Db::process(OaStatStruct oss) { string player = clientIdMap[oss.parameters.at(0)]; dp->addScoreInfo(oss.second,player,oss.parameters.at(1)); -} \ No newline at end of file +}