void UDPPusher::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatPush: { if (!onPush() && !(ntohs(mRemoteAddr.sin_port) & 1)) { ALOGI("emulating BYE packet"); sp<ABuffer> buffer = new ABuffer(8); uint8_t *data = buffer->data(); *data++ = (2 << 6) | 1; *data++ = 203; *data++ = 0; *data++ = 1; *data++ = 0x8f; *data++ = 0x49; *data++ = 0xc0; *data++ = 0xd0; buffer->setRange(0, 8); struct sockaddr_in tmp = mRemoteAddr; tmp.sin_port = htons(ntohs(mRemoteAddr.sin_port) | 1); ssize_t n = sendto( mSocket, buffer->data(), buffer->size(), 0, (const struct sockaddr *)&tmp, sizeof(tmp)); CHECK_EQ(n, (ssize_t)buffer->size()); } break; } default: TRESPASS(); break; } }
void Demon::move(const Vector2D& force, float addictionalRotation) { onPush(force, nullptr); onSwing(minimalAngleDiffirence(getRotC().position + addictionalRotation, Vector2D(force.x, force.y).angle()) * 0.05, nullptr); }
void Character::movementScript(float movementSpeed) { float power = getDrag().x; if (isPressed("s2")) power *= 0.5; else if (isPressed("s1")) power *= 0.25; onSwing(power); if (isPressed("s1")) { if (isPressed("up")) { Vector2D v(0, -movementSpeed); v.rotate(getRotC().position); onPush(v); }else if (isPressed("down")) { Vector2D v(0, -movementSpeed * 0.125f); v.rotate(getRotC().position + 180); onPush(v); } return; } if (!(isPressed("up") && isPressed("down"))) { if (isPressed("up")) { Vector2D v(0, -movementSpeed); v.rotate(getRotC().position); if (!(isPressed("left") && isPressed("right"))) { if (isPressed("left")) { v.rotate(-45); } else if (isPressed("right")) { v.rotate(45); } } onPush(v); } if (isPressed("down")) { Vector2D v(0, movementSpeed); v.rotate(getRotC().position); if (!(isPressed("left") && isPressed("right"))) { if (isPressed("left")) { v.rotate(45); } else if (isPressed("right")) { v.rotate(-45); } } onPush(v); } } if (!(isPressed("left") && isPressed("right")) && !isPressed("up") && !isPressed("down")) { if (isPressed("left")) { Vector2D v(-movementSpeed, 0); v.rotate(getRotC().position); onPush(v); } else if (isPressed("right")) { Vector2D v(movementSpeed, 0); v.rotate(getRotC().position); onPush(v); } } }