mirror of
https://github.com/brmlab/brmlife.git
synced 2025-08-03 02:13:35 +02:00
Connection: Add negotiation phase
This commit is contained in:
parent
85e143fd11
commit
9cf99e0bcd
3 changed files with 12 additions and 3 deletions
|
@ -16,6 +16,8 @@
|
|||
void
|
||||
connection::senses(int tick_id, class agent &a)
|
||||
{
|
||||
assert(!negotiation);
|
||||
|
||||
char buf[1024];
|
||||
snprintf(buf, sizeof(buf),
|
||||
"tick %d\r\n"
|
||||
|
@ -74,19 +76,26 @@ connection::actions(class agent &agent)
|
|||
if (y < -1) y = -1; if (y > 1) y = 1;
|
||||
if (!agent.move_dir(x, y))
|
||||
bump();
|
||||
} else if (!cmd.compare("attack_dir")) {
|
||||
|
||||
} else if (!negotiation && !cmd.compare("attack_dir")) {
|
||||
int x = 0, y = 0;
|
||||
sscanf(line.c_str(), "%d %d", &x, &y);
|
||||
if (x < -1) x = -1; if (x > 1) x = 1;
|
||||
if (y < -1) y = -1; if (y > 1) y = 1;
|
||||
if (!agent.attack_dir(x, y))
|
||||
bump();
|
||||
|
||||
} else {
|
||||
std::cout << "unknown line " << cmd << " " << line << " ...\n";
|
||||
}
|
||||
}
|
||||
in_buf.erase(0, 2);
|
||||
|
||||
if (negotiation) {
|
||||
negotiation = false;
|
||||
agent.spawn();
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&buf_lock);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,10 +13,11 @@ class agent;
|
|||
class connection {
|
||||
public:
|
||||
int fd;
|
||||
bool negotiation;
|
||||
bool error;
|
||||
|
||||
connection(int fd_)
|
||||
: fd(fd_), error(false)
|
||||
: fd(fd_), negotiation(true), error(false)
|
||||
{
|
||||
spawn_thread();
|
||||
}
|
||||
|
|
1
main.cc
1
main.cc
|
@ -69,7 +69,6 @@ next_agent:
|
|||
class connection *conn = new class connection(cfd);
|
||||
class agent *a = new class agent(aid++, conn, map);
|
||||
agents.push_back(a);
|
||||
a->spawn();
|
||||
}
|
||||
|
||||
/* Collect and take actions. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue