nonfunctional initial commit

This commit is contained in:
in1tiate 2021-03-05 23:53:36 -06:00
parent 7f9fa1d38c
commit 49bad39ec1
5 changed files with 113 additions and 1 deletions

View File

@ -64,6 +64,7 @@ class AOClient : public QObject {
{"BGLOCK", 1ULL << 2},
{"MODIFY_USERS", 1ULL << 3},
{"CM", 1ULL << 4},
{"GLOBAL_TIMER", 1ULL << 5},
{"SUPER", ~0ULL}
};
@ -198,11 +199,13 @@ class AOClient : public QObject {
void cmdRollP(int argc, QStringList argv);
void cmdDoc(int argc, QStringList argv);
void cmdClearDoc(int argc, QStringList argv);
void cmdTimer(int argc, QStringList argv);
// Messaging/Client
void cmdPos(int argc, QStringList argv);
void cmdG(int argc, QStringList argv);
// Command helper functions
QString getAreaTimer(int area_idx, QTimer* timer);
QStringList buildAreaList(int area_idx);
int genRand(int min, int max);
void diceThrower(int argc, QStringList argv, RollType Type);
@ -249,6 +252,7 @@ class AOClient : public QObject {
{"lock", {ACLFlags.value("CM"), 0, &AOClient::cmdLock}},
{"spectatable", {ACLFlags.value("CM"), 0, &AOClient::cmdSpectatable}},
{"unlock", {ACLFlags.value("CM"), 0, &AOClient::cmdUnLock}},
{"timer", {ACLFlags.value("NONE"), 0, &AOClient::cmdTimer}},
};
QString partial_packet;

View File

@ -24,6 +24,8 @@
#include <QString>
#include <QSettings>
#include <QDebug>
#include <QTimer>
#include <QElapsedTimer>
class Logger;
class AreaData {
@ -35,7 +37,7 @@ class AreaData {
QString description;
QString image;
};
QList<QTimer*> timers;
QString name;
int index;
QMap<QString, bool> characters_taken;

View File

@ -32,6 +32,7 @@
#include <QString>
#include <QTcpServer>
#include <QTcpSocket>
#include <QTimer>
class AOClient;
class DBManager;
@ -64,6 +65,8 @@ class Server : public QObject {
DBManager* db_manager;
QString server_name;
QTimer* timer;
signals:
public slots:

View File

@ -43,4 +43,12 @@ AreaData::AreaData(QStringList characters, QString p_name, int p_index)
if (log_size == 0)
log_size = 500;
logger = new Logger(log_size, this);
QTimer* timer1;
timers.append(timer1);
QTimer* timer2;
timers.append(timer2);
QTimer* timer3;
timers.append(timer3);
QTimer* timer4;
timers.append(timer4);
}

View File

@ -554,6 +554,88 @@ void AOClient::cmdUnLock(int argc, QStringList argv)
arup(ARUPType::LOCKED, true);
}
void AOClient::cmdTimer(int argc, QStringList argv)
{
AreaData* area = server->areas[current_area];
if (argc == 0) {
QStringList timers;
timers.append("Currently active timers:");
QTimer* global_timer = server->timer;
if (global_timer->isActive()) {
QTime current_time(0, 0, 0, global_timer->remainingTime());
timers.append("Global timer is at " + current_time.toString("hh:mm:ss.zzz"));
}
for (AreaData* area : server->areas) {
for (QTimer* timer : area->timers) {
timers.append(getAreaTimer(area->index, timer));
}
}
sendServerMessage(timers.join("\n"));
return;
}
bool ok;
int timer_id = argv[0].toInt(&ok);
if (!ok || timer_id < 0 || timer_id > 4) {
sendServerMessage("Invalid timer ID. Timer ID must be a whole number between 0 and 4.");
return;
}
if (argc == 1) {
if (timer_id == 0) {
QTimer* global_timer = server->timer;
if (global_timer->isActive()) {
QTime current_time(0, 0, 0, global_timer->remainingTime());
sendServerMessage("Global timer is at " + current_time.toString("hh:mm:ss.zzz"));
return;
}
}
else {
QTimer* timer = area->timers[timer_id - 1];
sendServerMessage(getAreaTimer(area->index, timer));
return;
}
}
QTimer* requested_timer;
if (timer_id == 0) {
if (!checkAuth(ACLFlags.value("GLOBAL_TIMER"))) {
sendServerMessage("You are not authorized to alter the global timer.");
return;
}
requested_timer = server->timer;
}
else
requested_timer = area->timers[timer_id - 1];
QTime requested_time = QTime::fromString(argv[1], "hh:mm:ss");
if (requested_time.isValid()) {
requested_timer->setInterval(QTime(0,0).msecsTo(requested_time));
requested_timer->start();
sendServerMessage("Set timer " + QString::number(timer_id) + " to " + argv[1] + ".");
sendPacket("TI", {QString::number(timer_id), QString::number(0), QString::number(QTime(0,0).msecsTo(requested_time))});
return;
}
else {
if (argv[1] == "start") {
requested_timer->start();
sendServerMessage("Started timer " + QString::number(timer_id) + ".");
sendPacket("TI", {QString::number(timer_id), QString::number(0), QString::number(requested_timer->remainingTime())});
}
else if (argv[1] == "pause" || argv[1] == "stop") {
requested_timer->setInterval(requested_timer->remainingTime());
requested_timer->stop();
sendServerMessage("Stopped timer " + QString::number(timer_id) + ".");
sendPacket("TI", {QString::number(timer_id), QString::number(1), QString::number(requested_timer->remainingTime())});
}
else if (argv[1] == "hide" || argv[1] == "unset") {
requested_timer->setInterval(0);
requested_timer->stop();
sendServerMessage("Hid timer " + QString::number(timer_id) + ".");
sendPacket("TI", {QString::number(timer_id), QString::number(3)});
}
}
}
QStringList AOClient::buildAreaList(int area_idx)
{
QStringList entries;
@ -657,3 +739,16 @@ void AOClient::diceThrower(int argc, QStringList argv, RollType type)
default : break;
}
}
QString AOClient::getAreaTimer(int area_idx, QTimer* timer)
{
AreaData* area = server->areas[area_idx];
if (timer->isActive()) {
QTime current_time (0,0,0,timer->remainingTime());
return "Timer " + QString::number(area->timers.indexOf(timer) + 1) + " is at " + current_time.toString("hh:mm:ss.zzz");
}
else {
return "Timer " + QString::number(area->timers.indexOf(timer) + 1) + "is inactive.";
}
}