diff options
Diffstat (limited to 'include/aoapplication.h')
| -rw-r--r-- | include/aoapplication.h | 402 |
1 files changed, 0 insertions, 402 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h deleted file mode 100644 index 72c3457d..00000000 --- a/include/aoapplication.h +++ /dev/null @@ -1,402 +0,0 @@ -#ifndef AOAPPLICATION_H -#define AOAPPLICATION_H - -#include "widgets/aooptionsdialog.h" -#include "aopacket.h" -#include "datatypes.h" -#include "demoserver.h" -#include "discord_rich_presence.h" - -#include "bass.h" - -#include <QApplication> -#include <QFile> -#include <QSettings> -#include <QVector> - -#include <QDebug> -#include <QRect> - -#include <QCryptographicHash> - -#include <QDir> -#include <QStandardPaths> - -#include <QColor> -#include <QScreen> -#include <QStringList> -#include <QTextStream> -#include <QTime> - -#include <QElapsedTimer> - -class NetworkManager; -class Lobby; -class Courtroom; -class Options; - -class VPath : QString { - using QString::QString; - -public: - explicit VPath(const QString &str) : QString(str) {} - inline QString const &toQString() const { return *this; } - inline bool operator==(const VPath &str) const { - return this->toQString() == str.toQString(); - } - inline VPath operator+(const VPath &str) const { - return VPath(this->toQString() + str.toQString()); - } -}; - -inline uint qHash(const VPath &key, uint seed = qGlobalQHashSeed()) -{ - return qHash(key.toQString(), seed); -} - -class AOApplication : public QApplication { - Q_OBJECT - -public: - AOApplication(int &argc, char **argv); - ~AOApplication(); - - NetworkManager *net_manager; - Lobby *w_lobby; - Courtroom *w_courtroom; - AttorneyOnline::Discord *discord; - - QFont default_font; - - bool lobby_constructed = false; - bool courtroom_constructed = false; - - void construct_lobby(); - void destruct_lobby(); - - void construct_courtroom(); - void destruct_courtroom(); - - void server_packet_received(AOPacket *p_packet); - - void send_server_packet(AOPacket *p_packet); - - void call_settings_menu(); - void call_announce_menu(Courtroom *court); - - qint64 latency = 0; - QString window_title; - - /////////////////server metadata////////////////// - - bool yellow_text_supported = false; - bool prezoom_supported = false; - bool flipping_supported = false; - bool custom_objection_supported = false; - bool desk_mod_supported = false; - bool evidence_supported = false; - bool cccc_ic_supported = false; - bool arup_supported = false; - bool casing_alerts_supported = false; - bool modcall_reason_supported = false; - bool looping_sfx_supported = false; - bool additive_text_supported = false; - bool effects_supported = false; - bool y_offset_supported = false; - bool expanded_desk_mods_supported = false; - bool auth_packet_supported = false; - - ///////////////loading info/////////////////// - - // client ID. Not useful, to be removed eventually - int client_id = 0; - - QString server_software = ""; - - int char_list_size = 0; - int loaded_chars = 0; - int generated_chars = 0; - int evidence_list_size = 0; - int loaded_evidence = 0; - int music_list_size = 0; - int loaded_music = 0; - - bool courtroom_loaded = false; - - //////////////////versioning/////////////// - - int get_release() const { return RELEASE; } - int get_major_version() const { return MAJOR_VERSION; } - int get_minor_version() const { return MINOR_VERSION; } - QString get_version_string(); - - /////////////////////////////////////////// - - // Adds the server to favorite_servers.ini - void add_favorite_server(int p_server); - void remove_favorite_server(int p_server); - - void set_server_list(QVector<server_type> &servers) { server_list = servers; } - QVector<server_type> &get_server_list() { return server_list; } - - // Returns the character the player has currently selected - QString get_current_char(); - - // implementation in path_functions.cpp - VPath get_theme_path(QString p_file, QString p_theme=""); - VPath get_character_path(QString p_char, QString p_file); - VPath get_misc_path(QString p_misc, QString p_file); - VPath get_sounds_path(QString p_file); - VPath get_music_path(QString p_song); - VPath get_background_path(QString p_file); - VPath get_default_background_path(QString p_file); - VPath get_evidence_path(QString p_file); - QVector<VPath> get_asset_paths(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder=""); - QString get_asset_path(QVector<VPath> pathlist); - QString get_image_path(QVector<VPath> pathlist, bool static_image=false); - QString get_sfx_path(QVector<VPath> pathlist); - QString get_config_value(QString p_identifier, QString p_config, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc=""); - QString get_asset(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder=""); - QString get_image(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder="", bool static_image=false); - QString get_sfx(QString p_sfx, QString p_misc="", QString p_character=""); - QString get_pos_path(const QString& pos, bool desk = false); - QString get_case_sensitive_path(QString p_file); - QString get_real_path(const VPath &vpath, const QStringList &suffixes={""}); - void invalidate_lookup_cache(); - - ////// Functions for reading and writing files ////// - // Implementations file_functions.cpp - - // returns all of the file's lines in a QStringList - QStringList get_list_file(VPath path); - QStringList get_list_file(QString p_file); - - // Process a file and return its text as a QString - QString read_file(QString filename); - - // Write text to file. make_dir would auto-create the directory if it doesn't - // exist. - bool write_to_file(QString p_text, QString p_file, bool make_dir = false); - - // Append text to the end of the file. make_dir would auto-create the - // directory if it doesn't exist. - bool append_to_file(QString p_text, QString p_file, bool make_dir = false); - - // Append to the currently open demo file if there is one - void append_to_demofile(QString packet_string); - - /** - * @brief Reads the clients log folder and locates potential demo files to populate the demoserver list. - * - * @return A seperated list of servernames and demo logfile filenames. - * - * @details This is to remove the need of delimiters or deal with potential - * harmfully encoding or plattform differences. We always get a combo of servername and filename. - * - * Do note this function assumes all demo files have the .demo extension. - * - */ - QMultiMap<QString, QString> load_demo_logs_list() const; - - // Returns the value of p_identifier in the design.ini file in p_design_path - QString read_design_ini(QString p_identifier, VPath p_design_path); - QString read_design_ini(QString p_identifier, QString p_design_path); - - // Returns the coordinates of widget with p_identifier from p_file - QPoint get_button_spacing(QString p_identifier, QString p_file); - - // Returns the dimensions of widget with specified identifier from p_file - pos_size_type get_element_dimensions(QString p_identifier, QString p_file, - QString p_misc = ""); - - // Returns the value to you - QString get_design_element(QString p_identifier, QString p_file, - QString p_misc = ""); - - // Returns the value of font_size with p_identifier from p_file - int get_font_size(QString p_identifier, QString p_file); - - // Returns the color with p_identifier from p_file - QColor get_color(QString p_identifier, QString p_file); - - // Returns the markup symbol used for specified p_identifier such as colors - QString get_chat_markup(QString p_identifier, QString p_file); - - // Returns the color from the misc folder. - QColor get_chat_color(QString p_identifier, QString p_chat); - - // Returns the value with p_identifier from penalty/penalty.ini in the current - // theme path - QString get_penalty_value(QString p_identifier); - - // Returns the sfx with p_identifier from courtroom_sounds.ini in the current theme path - QString get_court_sfx(QString p_identifier, QString p_misc=""); - - // Figure out if we can opus this or if we should fall back to wav - QString get_sfx_suffix(VPath sound_to_check); - - // Can we use APNG for this? If not, WEBP? If not, GIF? If not, fall back to - // PNG. - QString get_image_suffix(VPath path_to_check, bool static_image=false); - - // Returns the value of p_search_line within target_tag and terminator_tag - QString read_char_ini(QString p_char, QString p_search_line, - QString target_tag); - - // Returns a QStringList of all key=value definitions on a given tag. - QStringList read_ini_tags(VPath p_file, QString target_tag = ""); - - // Sets the char.ini p_search_line key under tag target_tag to value. - void set_char_ini(QString p_char, QString value, QString p_search_line, - QString target_tag); - - // Returns the text between target_tag and terminator_tag in p_file - QString get_stylesheet(QString p_file); - - // Returns the text between target_tag and terminator_tag in p_file - QString get_tagged_stylesheet(QString target_tag, QString p_file); - - // Returns the side of the p_char character from that characters ini file - QString get_char_side(QString p_char); - - // Returns the showname from the ini of p_char - QString get_showname(QString p_char); - - // Returns the category of this character - QString get_category(QString p_char); - - // Returns the value of chat image from the specific p_char's ini file - QString get_chat(QString p_char); - - // Returns the value of chat font from the specific p_char's ini file - QString get_chat_font(QString p_char); - - // Returns the value of chat font size from the specific p_char's ini file - int get_chat_size(QString p_char); - - // Returns the preanim duration of p_char's p_emote - int get_preanim_duration(QString p_char, QString p_emote); - - // Not in use - int get_text_delay(QString p_char, QString p_emote); - - // Get the theme's effects folder, read it and return the list of filenames in - // a string - QStringList get_effects(QString p_char); - - // Get the correct effect image - QString get_effect(QString effect, QString p_char, QString p_folder); - - // Return p_property of fx_name. If p_property is "sound", return - // the value associated with fx_name, otherwise use fx_name + '_' + p_property. - QString get_effect_property(QString fx_name, QString p_char, QString p_folder, QString p_property); - - // Returns the custom realisation used by the character. - QString get_custom_realization(QString p_char); - - // Returns whether the given pos is a judge position - bool get_pos_is_judge(const QString &p_pos); - - // Returns the total amount of emotes of p_char - int get_emote_number(QString p_char); - - // Returns the emote comment of p_char's p_emote - QString get_emote_comment(QString p_char, int p_emote); - - // Returns the base name of p_char's p_emote - QString get_emote(QString p_char, int p_emote); - - // Returns the preanimation name of p_char's p_emote - QString get_pre_emote(QString p_char, int p_emote); - - // Returns the sfx of p_char's p_emote - QString get_sfx_name(QString p_char, int p_emote); - - // Returns the blipsound of p_char's p_emote - QString get_emote_blip(QString p_char, int p_emote); - - // Returns if the sfx is defined as looping in char.ini - QString get_sfx_looping(QString p_char, int p_emote); - - // Returns if an emote has a frame specific SFX for it - QString get_sfx_frame(QString p_char, QString p_emote, int n_frame); - - // Returns if an emote has a frame specific SFX for it - QString get_flash_frame(QString p_char, QString p_emote, int n_frame); - - // Returns if an emote has a frame specific SFX for it - QString get_screenshake_frame(QString p_char, QString p_emote, int n_frame); - - // Not in use - 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); - - // Returns the desk modifier for p_char's p_emote - int get_desk_mod(QString p_char, int p_emote); - - // Returns p_char's blips (previously called their "gender") - QString get_blips(QString p_char); - - // Get a property of a given emote, or get it from "options" if emote doesn't have it - QString get_emote_property(QString p_char, QString p_emote, QString p_property); - - // Return a transformation mode from a string ("smooth" for smooth, anything else for fast) - Qt::TransformationMode get_scaling(QString p_scaling); - - // Returns the scaling type for p_miscname - Qt::TransformationMode get_misc_scaling(QString p_miscname); - - // ====== - // These are all casing-related settings. - // ====== - - // Currently defined subtheme - QString subtheme; - - //Default is always default. - const QString default_theme = "default"; - - // The file name of the log file in base/logs. - QString log_filename; - - /** - * @brief A QString of an URL that defines the content repository - * send by the server. - * - * @details Introduced in Version 2.9.2. - * Addresses the issue of contenturl devlivery for WebAO - * without relying on someone adding the link manually. - */ - QString asset_url; - - void initBASS(); - static void load_bass_plugins(); - static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, - void *user); - static void doBASSreset(); - - QElapsedTimer demo_timer; - DemoServer* demo_server = nullptr; - -private: - const int RELEASE = 2; - const int MAJOR_VERSION = 10; - const int MINOR_VERSION = 1; - - QVector<server_type> server_list; - QHash<uint, QString> asset_lookup_cache; - QHash<uint, QString> dir_listing_cache; - QSet<uint> dir_listing_exist_cache; - -public slots: - void server_disconnected(); - void loading_cancelled(); - -signals: - void qt_log_message(QtMsgType type, const QMessageLogContext &context, - const QString &msg); -}; - -#endif // AOAPPLICATION_H |
