diff --git a/agent.cc b/agent.cc index 9ccc232..ac00c03 100644 --- a/agent.cc +++ b/agent.cc @@ -83,17 +83,7 @@ agent::on_senses_update(void) if (!conn) return; - char around[8] = { - tile->tile_in_dir(0, -1).symbol(), - tile->tile_in_dir(1, -1).symbol(), - tile->tile_in_dir(1, 0).symbol(), - tile->tile_in_dir(1, 1).symbol(), - tile->tile_in_dir(0, 1).symbol(), - tile->tile_in_dir(-1, 1).symbol(), - tile->tile_in_dir(-1, 0).symbol(), - tile->tile_in_dir(-1, -1).symbol(), - }; - conn->senses(tick_id, dead, energy, around); + conn->senses(tick_id, *this); } agent::~agent() diff --git a/connection.cc b/connection.cc index 1a79c48..bd81b0d 100644 --- a/connection.cc +++ b/connection.cc @@ -11,10 +11,27 @@ #include "connection.h" void -connection::senses(int tick_id, bool dead, int energy, char around[4]) +connection::senses(int tick_id, class agent &a) { char buf[1024]; - snprintf(buf, sizeof(buf), "tick %d\r\n%senergy %d\r\naround %.8s\r\n\r\n", tick_id, dead ? "DEAD\r\n" : "", energy, around); + snprintf(buf, sizeof(buf), + "tick %d\r\n" + "%s" + "energy %d\r\n" + "around %c%c%c%c%c%c%c%c\r\n" + "\r\n", + tick_id, + a.dead ? "DEAD\r\n" : "", + a.energy, + a.tile->tile_in_dir(0, -1).symbol(), + a.tile->tile_in_dir(1, -1).symbol(), + a.tile->tile_in_dir(1, 0).symbol(), + a.tile->tile_in_dir(1, 1).symbol(), + a.tile->tile_in_dir(0, 1).symbol(), + a.tile->tile_in_dir(-1, 1).symbol(), + a.tile->tile_in_dir(-1, 0).symbol(), + a.tile->tile_in_dir(-1, -1).symbol() + ); pthread_mutex_lock(&buf_lock); out_buf.append(buf); diff --git a/connection.h b/connection.h index 218c43e..ab7541d 100644 --- a/connection.h +++ b/connection.h @@ -26,7 +26,7 @@ public: close(fd); } - void senses(int tick_id, bool dead, int energy, char around[8]); + void senses(int tick_id, class agent &); void actions(class agent *); void cancel(void);