void walk(Direction direction)
{
if (!eobot::is_attacking && !eobot::is_walking && !eobot::is_maging)
{
eobot::is_walking = true;
if (eobot::character->direction != direction)
{
face(direction);
eobot::character->direction = direction;
}
//Console::Out("eobot::character(Before Direction) X: %i, Y: %i", eobot::character->x, eobot::character->y);
switch (direction)
{
case DIRECTION_UP: --eobot::character->y; break;
case DIRECTION_RIGHT: ++eobot::character->x; break;
case DIRECTION_DOWN: ++eobot::character->y; break;
case DIRECTION_LEFT: --eobot::character->x; break;
}
//Console::Out("eobot::character(After Direction) X: %i, Y: %i", eobot::character->x, eobot::character->y);
if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairDown)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_UP)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_DOWN)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairUp)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_DOWN)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_UP)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairLeft)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_RIGHT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_LEFT)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairRight)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_LEFT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_RIGHT)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairDownRight)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_UP)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_DOWN)
{
stand_chair();
}
else if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_LEFT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_RIGHT)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairUpLeft)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_DOWN)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_UP)
{
stand_chair();
}
else if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_RIGHT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_LEFT)
{
stand_chair();
}
}
else if (eobot::map->GetSpec(eobot::character->x, eobot::character->y) == eobot::ChairAll)
{
if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_DOWN)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_UP)
{
stand_chair();
}
else if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_RIGHT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_LEFT)
{
stand_chair();
}
else if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_UP)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_DOWN)
{
stand_chair();
}
else if (eobot::character->sitting == SIT_STAND && eobot::character->direction == DIRECTION_LEFT)
{
sit_chair();
}
else if (eobot::character->sitting == SIT_CHAIR && eobot::character->direction == DIRECTION_RIGHT)
{
stand_chair();
}
}
switch (eobot::character->direction)
{
case DIRECTION_UP:
Console::Out("Walking Up");
break;
case DIRECTION_DOWN:
Console::Out("Walking Down");
break;
case DIRECTION_LEFT:
Console::Out("Walking Left");
break;
case DIRECTION_RIGHT:
Console::Out("Walking Right");
break;
}
timers::walk = true;
PacketBuilder packet(PACKET_WALK, PACKET_PLAYER); //PACKET_WALK, PACKET_SPEC
packet.AddChar(eobot::character->direction);
if (eobot::Normal)
{
eobot::Normal = false;
eobot::GetTimestamp();pa
packet.AddThree(eobot::speed_timestamp += eobot::config["WalkDelay"]);
}
else
{
packet.AddThree(eobot::speed_timestamp += eobot::config["WalkDelay"]); //eobot::GetTimestamp());// += eobot::config["WalkDelay"]);
}
packet.AddThree(eobot::GetTimestamp());
packet.AddChar(eobot::character->x);
packet.AddChar(eobot::character->y);
eobot::send(packet);
util::sleep(0.05);
timers::chase_timeout_tick = 0;
timers::doing_nothing_timeout_tick = 0;
eobot::is_walking = false;
}
}