Пример #1
0
void Channel::SendToOne(Builder& builder, ObjectGuid const& who) const
{
    Trinity::LocalizedPacketDo<Builder> localizer(builder);

    if (Player* player = ObjectAccessor::FindConnectedPlayer(who))
        localizer(player);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
 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]));
         }
       }
     }
   }
 }
Пример #6
0
void OutdoorPvP::SendDefenseMessage(uint32 zoneId, uint32 id)
{
    DefenseMessageBuilder builder(zoneId, id);
    Trinity::LocalizedPacketDo<DefenseMessageBuilder> localizer(builder);
    BroadcastWorker(localizer, zoneId);
}