# HG changeset patch # User meillo@marmaro.de # Date 1216826078 -7200 # Node ID 5e6c9260913a2840df6f082d131dd3f7ffebc6c9 # Parent 3c104b5f51586a53318cc3d20f8cb42e152b1b4c lots of cleanups and small fixes diff -r 3c104b5f5158 -r 5e6c9260913a clock.c --- a/clock.c Wed Jul 23 16:49:10 2008 +0200 +++ b/clock.c Wed Jul 23 17:14:38 2008 +0200 @@ -1,29 +1,29 @@ #include #include - #include "db.h" #include "game.h" - - void inc_time() { /* get current time */ sprintf(query, "select time from game;"); - db_query(query); + stmt = db_query(query); if (sqlite3_step(stmt) == SQLITE_ROW) { gametime = sqlite3_column_int(stmt, 0); } else { - fprintf(stderr, "error: %s\n", sqlite3_errmsg(db)); + db_error("get current time"); } sqlite3_finalize(stmt); /* increment time */ - sprintf(query, " update game set time = '%d';", ++gametime); + sprintf(query, + "update game" + "set time = '%d';" + , ++gametime + ); if (!db_update(query)) { - printf("error: time update failed: %s\n", sqlite3_errmsg(db)); + db_error("time update"); } - sqlite3_finalize(stmt); } diff -r 3c104b5f5158 -r 5e6c9260913a db.c --- a/db.c Wed Jul 23 16:49:10 2008 +0200 +++ b/db.c Wed Jul 23 17:14:38 2008 +0200 @@ -45,6 +45,18 @@ } +int db_rows(sqlite3_stmt* stmt) { + int i = 0; + + sqlite3_reset(stmt); + while (sqlite3_step(stmt) == SQLITE_ROW) { + i++; + } + sqlite3_reset(stmt); + return i; +} + + int read_time() { sprintf(query, "select time from game;"); stmt = db_query(query); @@ -57,3 +69,7 @@ return gametime; } + +void db_error(char* info) { + fprintf(stderr, "%s%sSQL error: %s\n", (info) ? info : "", (info) ? ": " : "", sqlite3_errmsg(db)); +} diff -r 3c104b5f5158 -r 5e6c9260913a db.h --- a/db.h Wed Jul 23 16:49:10 2008 +0200 +++ b/db.h Wed Jul 23 17:14:38 2008 +0200 @@ -1,12 +1,16 @@ #include char* database; +int gametime; char query[1024]; sqlite3* db; sqlite3_stmt* stmt; +int read_time(); void db_connect(); void db_close(); sqlite3_stmt* db_query(char* query); int db_update(char* query); +int db_rows(sqlite3_stmt* stmt); +void db_error(char* info); diff -r 3c104b5f5158 -r 5e6c9260913a environment.c --- a/environment.c Wed Jul 23 16:49:10 2008 +0200 +++ b/environment.c Wed Jul 23 17:14:38 2008 +0200 @@ -24,12 +24,17 @@ /* set weather */ - sprintf(query, " insert into environment \ - (tick, groundwater, slugs, earthworms) \ - values ('%d', '%d', '%d', '%d') ", - gametime, groundwater, slugs, earthworms); + sprintf(query, + "insert into environment " + "(tick, groundwater, slugs, earthworms) " + "values ('%d', '%d', '%d', '%d') " + , gametime + , groundwater + , slugs + , earthworms + ); if (!db_update(query)) { - printf("error: environment insertion failed: %s\n", sqlite3_errmsg(db)); + db_error("environment insertion"); } } diff -r 3c104b5f5158 -r 5e6c9260913a game.h --- a/game.h Wed Jul 23 16:49:10 2008 +0200 +++ b/game.h Wed Jul 23 17:14:38 2008 +0200 @@ -1,9 +1,3 @@ -int gametime; - - -int read_time(); - - void worldclock(void); void environment(void); void weather(void); diff -r 3c104b5f5158 -r 5e6c9260913a growth.c --- a/growth.c Wed Jul 23 16:49:10 2008 +0200 +++ b/growth.c Wed Jul 23 17:14:38 2008 +0200 @@ -5,14 +5,13 @@ void grow_plants() { - /* get weather and last environments to calculate the next one */ - sprintf(query, "update field \ - set age = age+1, size = size+1 "); - stmt = db_query(query); + sprintf(query, + "update field " + "set age = age+1, size = size+1 " + ); if (!db_update(query)) { - printf("E: update failed ++ %s\n", sqlite3_errmsg(db)); + db_error("grow plants"); } - sqlite3_finalize(stmt); } diff -r 3c104b5f5158 -r 5e6c9260913a weather.c --- a/weather.c Wed Jul 23 16:49:10 2008 +0200 +++ b/weather.c Wed Jul 23 17:14:38 2008 +0200 @@ -26,8 +26,8 @@ float mean_hum[12] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}; +/* generates random number between -limit and +limit */ float rand_limit(float limit) { - /* generates random number between -limit and +limit */ int r; r = rand() / ( ((float) RAND_MAX + 1) / (2*limit) ); @@ -45,8 +45,9 @@ " select temp, sun, rain, wind, hum from weather " " order by tick desc " " limit %d " - , nlast); - db_query(query); + , nlast + ); + stmt = db_query(query); for (i = 0; i < nlast && sqlite3_step(stmt) == SQLITE_ROW; i++) { lastw[i].temp = sqlite3_column_double(stmt, 0); lastw[i].sun = sqlite3_column_double(stmt, 1); @@ -55,19 +56,6 @@ lastw[i].hum = sqlite3_column_double(stmt, 4); } sqlite3_finalize(stmt); - - /* - result = mysql_store_result(conn); - for (i = 0; i < nlast && (row = mysql_fetch_row(result)); i++) { - lastw[i].temp = atof(row[0]); - lastw[i].sun = atof(row[1]); - lastw[i].rain = atof(row[2]); - lastw[i].wind = atof(row[3]); - lastw[i].hum = atof(row[4]); - } - mysql_free_result(result); - */ - } @@ -86,10 +74,10 @@ " insert into weather " " (tick, temp, sun, rain, wind, hum) " " values ('%d', '%f', '%f', '%f', '%f', '%f') " - , gametime, w->temp, w->sun, w->rain, w->wind, w->hum); - /* puts(query); */ + , gametime, w->temp, w->sun, w->rain, w->wind, w->hum + ); if (!db_update(query)) { - printf("error: weather insertion failed: %s\n", sqlite3_errmsg(db)); + db_error("weather insertion"); } }