Add a blip sound QElapsedTimer so blipsounds don't play more frequently than 60ms to preserve all of our ears.

Adjust the message display speeds to feel more accurate to AA, with }}} speed displaying text instantly for that section
This commit is contained in:
Crystalwarrior 2019-09-14 00:46:46 +03:00
parent 1139bf5cd0
commit 4645d9dd08
4 changed files with 20 additions and 18 deletions

View File

@ -11,6 +11,7 @@
#include <QWidget>
#include <string.h>
#include <QElapsedTimer>
#include <QDebug>
@ -26,9 +27,12 @@ public:
int m_cycle = 0;
private:
const int max_blip_ms = 60;
QWidget *m_parent;
AOApplication *ao_app;
qreal m_volume;
QElapsedTimer delay;
void set_volume_internal(qreal p_volume);

View File

@ -259,7 +259,7 @@ private:
bool message_is_centered = false;
int current_display_speed = 3;
int message_display_speed[7] = {10, 20, 30, 40, 50, 60, 75};
int message_display_speed[7] = {0, 10, 25, 40, 50, 70, 90};
// This is for checking if the character should start talking again
// when an inline blue text ends.

View File

@ -23,6 +23,10 @@ void AOBlipPlayer::set_blips(QString p_sfx)
void AOBlipPlayer::blip_tick()
{
if (delay.isValid() && delay.elapsed() < max_blip_ms)
return;
delay.start();
int f_cycle = m_cycle++;
if (m_cycle == 5)

View File

@ -2386,23 +2386,6 @@ void Courtroom::chat_tick()
QScrollBar *scroll = ui_vp_message->verticalScrollBar();
scroll->setValue(scroll->maximum());
if(blank_blip)
qDebug() << "blank_blip found true";
if (f_character != ' ' || blank_blip)
{
if (blip_pos % blip_rate == 0 && !formatting_char)
{
blip_pos = 0;
blip_player->blip_tick();
}
++blip_pos;
}
tick_pos += f_char_length;
// Restart the timer, but according to the newly set speeds, if there were any.
// Keep the speed at bay.
if (current_display_speed < 0)
@ -2415,6 +2398,17 @@ void Courtroom::chat_tick()
current_display_speed = 6;
}
if (!formatting_char && (f_character != ' ' || blank_blip))
{
if (blip_pos % blip_rate == 0)
{
blip_player->blip_tick();
}
++blip_pos;
}
tick_pos += f_char_length;
// If we had a formatting char, we shouldn't wait so long again, as it won't appear!
if (formatting_char)
{