agent::conn: Change to pointer, delete in ~agent()

This commit is contained in:
Petr Baudis 2011-11-26 23:52:31 +01:00
parent 1d15adac48
commit a645ba5758
3 changed files with 11 additions and 8 deletions

View file

@ -37,5 +37,11 @@ agent::on_tick(void)
tile->tile_in_dir(0, 1).symbol(), tile->tile_in_dir(0, 1).symbol(),
tile->tile_in_dir(-1, 0).symbol(), tile->tile_in_dir(-1, 0).symbol(),
}; };
conn.senses(tick_id, around); conn->senses(tick_id, around);
} }
agent::~agent()
{
tile->on_agent_leave(*this);
delete conn;
};

View file

@ -9,9 +9,9 @@ class agent {
public: public:
int id; int id;
class tile *tile; class tile *tile;
class connection &conn; class connection *conn;
agent(int id_, class tile &tile_, class connection &conn_) : id (id_), tile (&tile_), conn (conn_) agent(int id_, class tile &tile_, class connection *conn_) : id (id_), tile (&tile_), conn (conn_)
{ {
put_at(tile_); put_at(tile_);
}; };
@ -20,10 +20,7 @@ public:
void on_tick(void); void on_tick(void);
~agent() ~agent();
{
tile->on_agent_leave(*this);
};
private: private:
/* Just for initial placement. */ /* Just for initial placement. */

View file

@ -52,7 +52,7 @@ main(int argc, char *argv[])
if (cfd >= 0) { if (cfd >= 0) {
class connection *conn = new class connection(cfd); class connection *conn = new class connection(cfd);
class tile &agentpos = map.tile_at(random() % map.w, random() % map.h); class tile &agentpos = map.tile_at(random() % map.w, random() % map.h);
agent = new class agent(0, agentpos, *conn); agent = new class agent(0, agentpos, conn);
} }
} }