Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ qt_add_executable(Attorney_Online
src/screenslidetimer.h src/screenslidetimer.cpp
src/moderation_functions.h src/moderation_functions.cpp
src/network/serverinfo.h src/network/serverinfo.cpp
src/packets/msdata.h src/packets/msdata.cpp
)

set_target_properties(Attorney_Online PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
Expand Down
51 changes: 21 additions & 30 deletions src/animationlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,42 +469,33 @@ void CharacterAnimationLayer::loadCharacterEmote(QString character, QString file
m_duration = durationLimit;
}

void CharacterAnimationLayer::setFrameEffects(QStringList data)
void CharacterAnimationLayer::setFrameEffects(const QList<ms2::FrameData> &f_screenshakes, const QList<ms2::FrameData> &f_realisations, const QList<ms2::FrameData> &f_sfxs)
{
m_effects.clear();

static const QList<EffectType> EFFECT_TYPE_LIST{ShakeEffect, FlashEffect, SfxEffect};
for (int i = 0; i < data.length(); ++i)
foreach (const auto &framedata, f_screenshakes)
{
const EffectType effect_type = EFFECT_TYPE_LIST.at(i);

QStringList emotes = data.at(i).split("^");
for (const QString &emote : std::as_const(emotes))
{
QStringList emote_effects = emote.split("|");

const QString emote_name = emote_effects.takeFirst();

for (const QString &raw_effect : std::as_const(emote_effects))
{
QStringList frame_data = raw_effect.split("=");
if (frame_data.size() < 2)
{
continue;
}
const int frame_number = frame_data.at(0).toInt();
FrameEffect effect;
effect.emote_name = framedata.m_emote;
effect.type = ShakeEffect;
m_effects[framedata.m_frame].append(effect);
}

FrameEffect effect;
effect.emote_name = emote_name;
effect.type = effect_type;
if (effect_type == EffectType::SfxEffect)
{
effect.file_name = frame_data.at(1);
}
foreach (const auto &framedata, f_realisations)
{
FrameEffect effect;
effect.emote_name = framedata.m_emote;
effect.type = FlashEffect;
m_effects[framedata.m_frame].append(effect);
}

m_effects[frame_number].append(effect);
}
}
foreach (const auto &framedata, f_realisations)
{
FrameEffect effect;
effect.emote_name = framedata.m_emote;
effect.type = SfxEffect;
effect.file_name = framedata.m_value;
m_effects[framedata.m_frame].append(effect);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/animationlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "animationloader.h"
#include "datatypes.h"
#include "packets/msdata.h"

#include <QBitmap>
#include <QDebug>
Expand Down Expand Up @@ -160,7 +161,7 @@ class CharacterAnimationLayer : public AnimationLayer

void loadCharacterEmote(QString character, QString fileName, EmoteType emoteType, int durationLimit = 0);

void setFrameEffects(QStringList data);
void setFrameEffects(const QList<ms2::FrameData> &f_screenshakes, const QList<ms2::FrameData> &f_realisations, const QList<ms2::FrameData> &f_sfxs);

Q_SIGNALS:
void finishedPreOrPostEmotePlayback();
Expand Down
5 changes: 3 additions & 2 deletions src/aoapplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "datatypes.h"
#include "demoserver.h"
#include "discord_rich_presence.h"
#include "packets/msdata.h"
#include "serverdata.h"
#include "widgets/aooptionsdialog.h"

Expand Down Expand Up @@ -292,10 +293,10 @@ class AOApplication : public QObject
int get_sfx_delay(QString p_char, int p_emote);

// Returns the modifier for p_char's p_emote
int get_emote_mod(QString p_char, int p_emote);
ms2::EmoteMod get_emote_mod(QString p_char, int p_emote);

// Returns the desk modifier for p_char's p_emote
int get_desk_mod(QString p_char, int p_emote);
ms2::DeskMod get_desk_mod(QString p_char, int p_emote);

// Returns p_char's blipname by reading char.ini for blips (previously called "gender")
QString get_blipname(QString p_char, int p_emote = -1);
Expand Down
Loading
Loading