Changeset 53643ca in network-game for server/DataAccess.cpp
- Timestamp:
- Jul 19, 2014, 12:32:33 AM (10 years ago)
- Branches:
- master
- Children:
- 4c00935
- Parents:
- cdb0e98
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
server/DataAccess.cpp
rcdb0e98 r53643ca 6 6 #include <crypt.h> 7 7 8 #include "LuaLoader.h" 9 8 10 using namespace std; 9 11 10 12 DataAccess::DataAccess() 11 13 { 14 LuaLoader luaLoader; 15 16 string database, username, password; 17 18 if (luaLoader.runScript("db_settings.lua")) { 19 cout << "Loading settings" << endl; 20 21 database = luaLoader.getValue("database"); 22 username = luaLoader.getValue("username"); 23 password = luaLoader.getValue("password"); 24 25 cout << database << endl; 26 cout << username << endl; 27 cout << password << endl; 28 } else { 29 cout << "Failed to load settings from lua script" << endl; 30 } 31 12 32 mysql_init(&mysql); 13 33 connection = mysql_real_connect(&mysql, "localhost", "pythonAdmin", "pyMaster09*", "pythondb", 0, 0, 0); … … 52 72 } 53 73 74 // this is no longer used anywhere 54 75 int DataAccess::updatePlayer(string username, string password) 55 76 { … … 85 106 cout << "Creating a new player" << endl; 86 107 p = new Player(string(row[1]), string(row[2])); 108 p->setId(atoi(row[0])); 87 109 if (row[3] == NULL) { 88 110 p->setClass(Player::CLASS_NONE); … … 93 115 } 94 116 cout << "Player class: " << p->playerClass << endl; 95 cout << "Created new player" << endl; 117 if (row[7] == NULL) 118 cout << "wins: NULL" << endl; 119 else 120 cout << "wins: " << atoi(row[7]) << endl; 121 if (row[8] == NULL) 122 cout << "losses: NULL" << endl; 123 else 124 cout << "losses: " << atoi(row[8]) << endl; 125 cout << "Loaded player from db" << endl; 96 126 }else { 97 127 cout << "Returned no results for some reason" << endl; … … 112 142 MYSQL_RES *result; 113 143 MYSQL_ROW row; 114 ostringstream oss;115 144 116 145 result = select("users", ""); … … 139 168 } 140 169 170 int* DataAccess::getPlayerRecord(int playerId) { 171 MYSQL_RES *result; 172 MYSQL_ROW row; 173 ostringstream oss; 174 int* record = new int[5]; 175 176 oss << "id=" << playerId; 177 result = select("users", oss.str()); 178 179 if ( ( row = mysql_fetch_row(result)) != NULL ) { 180 cout << "Retrieved player record successfully" << endl; 181 record[0] = atoi(row[4]); // level 182 record[1] = atoi(row[5]); // experience 183 record[2] = atoi(row[6]); // honor 184 record[3] = atoi(row[7]); // wins 185 record[4] = atoi(row[8]); // losses 186 cout << "record[0]:" << record[0] << endl; 187 cout << "record[1]:" << record[1] << endl; 188 cout << "record[2]:" << record[2] << endl; 189 cout << "record[3]:" << record[3] << endl; 190 cout << "record[4]:" << record[4] << endl; 191 } 192 193 if (result == NULL) { 194 cout << mysql_error(connection) << endl; 195 return NULL; 196 } 197 198 mysql_free_result(result); 199 200 return record; 201 } 202 203 int** DataAccess::getPlayerGameHistory(int playerId, unsigned int& numGames) 204 { 205 // each array is the score for one game 206 // the columns are result, team, blue score, and red score 207 // for result 0 is defeat and 1 is victory 208 // for team, 0 is blue and 1 is red 209 210 MYSQL_RES *result; 211 MYSQL_ROW row; 212 ostringstream oss; 213 214 int** gameHistory; 215 216 oss << "user_id=" << playerId; 217 result = select("gameHistory", oss.str()); 218 219 numGames = mysql_num_rows(result); 220 gameHistory = (int**)malloc(sizeof(int*)*numGames); 221 cout << "Result has " << numGames << " rows" << endl; 222 223 int i=0; 224 while ( ( row = mysql_fetch_row(result)) != NULL ) { 225 gameHistory[i] = new int[4]; 226 227 int userTeam = atoi(row[2]); 228 int blueScore = atoi(row[4]); 229 int redScore = atoi(row[3]); 230 int gameResult = -1; 231 232 if (blueScore == 3) { 233 if (userTeam == 0) 234 gameResult = 1; 235 else 236 gameResult = 0; 237 }else if (redScore == 3) { 238 if (userTeam == 1) 239 gameResult = 1; 240 else 241 gameResult = 0; 242 }else { 243 cout << "Recorded game has no team with 3 points" << endl; 244 } 245 246 gameHistory[i][0] = gameResult; 247 gameHistory[i][1] = userTeam; 248 gameHistory[i][2] = blueScore; 249 gameHistory[i][3] = redScore; 250 251 i++; 252 } 253 254 if (result == NULL) { 255 cout << mysql_error(connection) << endl; 256 return NULL; 257 } 258 259 mysql_free_result(result); 260 261 return gameHistory; 262 } 263 264 int DataAccess::saveGameHistory(int playerId, int team, int blueScore, int redScore) 265 { 266 ostringstream oss; 267 268 cout << "Saving game to db" << endl; 269 oss << playerId << ", " << team << ", " << blueScore << ", " << redScore; 270 271 return insert("gameHistory", "user_id, user_team, blue_score, red_score", oss.str()); 272 } 273 141 274 int DataAccess::insert(string table, string columns, string values) 142 275 { … … 156 289 if (query_state != 0) { 157 290 cout << mysql_error(connection) << endl; 158 return 1;291 return -1; 159 292 } 160 293 … … 168 301 169 302 if (connection == NULL) { 170 cout << "Error: no ndatabase connection exists" << endl;303 cout << "Error: no database connection exists" << endl; 171 304 return -1; 172 305 } … … 179 312 if (query_state != 0) { 180 313 cout << mysql_error(connection) << endl; 181 return 1;314 return -1; 182 315 } 183 316 … … 198 331 if (!filter.empty()) 199 332 oss << " WHERE " << filter; 333 cout << "executing select query: " << oss.str() << endl; 200 334 201 335 query_state = mysql_query(connection, oss.str().c_str());
Note:
See TracChangeset
for help on using the changeset viewer.