void Channel::SendToOne(Builder& builder, ObjectGuid const& who) const { Trinity::LocalizedPacketDo<Builder> localizer(builder); if (Player* player = ObjectAccessor::FindConnectedPlayer(who)) localizer(player); }
void Channel::SendToAll(Builder& builder, ObjectGuid const& guid) const { Trinity::LocalizedPacketDo<Builder> localizer(builder); for (PlayerContainer::value_type const& i : _playersStore) if (Player* player = ObjectAccessor::FindConnectedPlayer(i.first)) if (guid.IsEmpty() || !player->GetSocial()->HasIgnore(guid)) localizer(player); }
void Channel::SendToAllWithAddon(Builder& builder, std::string const& addonPrefix, ObjectGuid const& guid /*= ObjectGuid::Empty*/) const { Trinity::LocalizedPacketDo<Builder> localizer(builder); for (PlayerContainer::value_type const& i : _playersStore) if (Player* player = ObjectAccessor::FindConnectedPlayer(i.first)) if (player->GetSession()->IsAddonRegistered(addonPrefix) && (guid.IsEmpty() || !player->GetSocial()->HasIgnore(guid))) localizer(player); }
void Channel::SendToAllButOne(Builder& builder, ObjectGuid const& who) const { Trinity::LocalizedPacketDo<Builder> localizer(builder); for (PlayerContainer::value_type const& i : _playersStore) if (i.first != who) if (Player* player = ObjectAccessor::FindConnectedPlayer(i.first)) localizer(player); }
void visitCallImport(CallImport* curr) { // special asm.js imports can be optimized auto* import = getModule()->getImport(curr->target); if (import->module == GLOBAL_MATH) { if (import->base == POW) { if (auto* exponent = curr->operands[1]->dynCast<Const>()) { if (exponent->value == Literal(double(2.0))) { // This is just a square operation, do a multiply Localizer localizer(curr->operands[0], getFunction(), getModule()); Builder builder(*getModule()); replaceCurrent(builder.makeBinary(MulFloat64, localizer.expr, builder.makeGetLocal(localizer.index, localizer.expr->type))); } else if (exponent->value == Literal(double(0.5))) { // This is just a square root operation replaceCurrent(Builder(*getModule()).makeUnary(SqrtFloat64, curr->operands[0])); } } } } }
void OutdoorPvP::SendDefenseMessage(uint32 zoneId, uint32 id) { DefenseMessageBuilder builder(zoneId, id); Trinity::LocalizedPacketDo<DefenseMessageBuilder> localizer(builder); BroadcastWorker(localizer, zoneId); }