aboutsummaryrefslogtreecommitdiff
path: root/text_file_functions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'text_file_functions.cpp')
-rw-r--r--text_file_functions.cpp429
1 files changed, 99 insertions, 330 deletions
diff --git a/text_file_functions.cpp b/text_file_functions.cpp
index 4b40c08..b2a3d93 100644
--- a/text_file_functions.cpp
+++ b/text_file_functions.cpp
@@ -139,7 +139,9 @@ pos_size_type AOApplication::get_pos_and_size(QString p_identifier, QString p_de
return return_value;
}
-QString AOApplication::get_char_side(QString p_char)
+//returns whatever is to the right of "search_line =" within target_tag and terminator_tag, trimmed
+//returns the empty string if the search line couldnt be found
+QString AOApplication::read_char_ini(QString p_char, QString p_search_line, QString target_tag, QString terminator_tag)
{
QString char_ini_path = get_character_path(p_char) + "char.ini";
@@ -148,419 +150,186 @@ QString AOApplication::get_char_side(QString p_char)
char_ini.setFileName(char_ini_path);
if (!char_ini.open(QIODevice::ReadOnly))
- {
- //default to wit and don't make a big deal about it
- return "wit";
- }
+ return "";
QTextStream in(&char_ini);
+ //because there are char inis that look like [eMoTIonS] for whatever reason
+ target_tag = target_tag.toLower();
+ terminator_tag = terminator_tag.toLower();
+ bool tag_found = false;
+
while(!in.atEnd())
{
QString line = in.readLine();
- if (!line.startsWith("side"))
- continue;
-
- QStringList line_elements = line.split("=");
+ if (line.toLower().startsWith(terminator_tag))
+ break;
- if (line_elements.size() < 2)
+ if (line.toLower().startsWith(target_tag))
+ {
+ tag_found = true;
continue;
+ }
- //note that we do not validate if this is a valid side or not. that's up to the caller
- return line_elements.at(1).trimmed().toLower();
- }
-
- return "wit";
-}
-
-QString AOApplication::get_showname(QString p_char)
-{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
-
- QFile char_ini;
-
- char_ini.setFileName(char_ini_path);
-
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- //default to empty string
- return "";
- }
-
- QTextStream in(&char_ini);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (!line.startsWith("showname"))
+ if (!line.startsWith(p_search_line))
continue;
QStringList line_elements = line.split("=");
- if (line_elements.size() < 2)
- continue;
-
- return line_elements.at(1).trimmed();
- }
-
- return "";
-}
-
-QString AOApplication::get_chat(QString p_char)
-{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
-
- QFile char_ini;
-
- char_ini.setFileName(char_ini_path);
-
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- return "";
- }
-
- QTextStream in(&char_ini);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (!line.startsWith("chat"))
+ if (line_elements.at(0).trimmed() != p_search_line)
continue;
- QStringList line_elements = line.split("=");
-
if (line_elements.size() < 2)
continue;
- return line_elements.at(1).trimmed().toLower() + ".png";
+ if (tag_found)
+ {
+ char_ini.close();
+ return line_elements.at(1).trimmed();
+ }
}
+ char_ini.close();
return "";
}
-int AOApplication::get_preanim_duration(QString p_char, QString p_emote)
+QString AOApplication::get_char_name(QString p_char)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
-
- QFile char_ini;
-
- char_ini.setFileName(char_ini_path);
-
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- //means preanim will finish instantly(i.e. not play)
- return 0;
- }
-
- QTextStream in(&char_ini);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (!line.startsWith(p_emote))
- continue;
+ QString f_result = read_char_ini(p_char, "name", "[Options]", "[Time]");
- QStringList line_elements = line.split("=");
-
- if (line_elements.size() < 2)
- continue;
-
- return line_elements.at(1).trimmed().toInt();
- }
-
- return 0;
+ if (f_result == "")
+ return p_char;
+ else return f_result;
}
-int AOApplication::get_text_delay(QString p_char, QString p_emote)
+QString AOApplication::get_showname(QString p_char)
{
- //T0D0: make a sane format for this and implement function
- p_char.toLower();
- p_emote.toLower();
- return -1;
+ QString f_result = read_char_ini(p_char, "showname", "[Options]", "[Time]");
+
+ if (f_result == "")
+ return p_char;
+ else return f_result;
}
-QString AOApplication::get_char_name(QString p_char)
+QString AOApplication::get_char_side(QString p_char)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
-
- QFile char_ini;
-
- char_ini.setFileName(char_ini_path);
+ QString f_result = read_char_ini(p_char, "side", "[Options]", "[Time]");
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- return "";
- }
-
- QTextStream in(&char_ini);
+ if (f_result == "")
+ return "wit";
+ else return f_result;
+}
- while(!in.atEnd())
- {
- QString line = in.readLine();
+QString AOApplication::get_gender(QString p_char)
+{
+ QString f_result = read_char_ini(p_char, "gender", "[Options]", "[Time]");
- if (!line.startsWith("name"))
- continue;
+ if (f_result == "")
+ return "male";
+ else return f_result;
+}
- QStringList line_elements = line.split("=");
+QString AOApplication::get_chat(QString p_char)
+{
+ QString f_result = read_char_ini(p_char, "chat", "[Options]", "[Time]");
- if (line_elements.size() < 2)
- continue;
+ //handling the correct order of chat is a bit complicated, we let the caller do it
+ return f_result;
+}
- return line_elements.at(1).trimmed();
- }
+int AOApplication::get_preanim_duration(QString p_char, QString p_emote)
+{
+ QString f_result = read_char_ini(p_char, p_emote, "[Time]", "[Emotions]");
- return "";
+ if (f_result == "")
+ return 0;
+ else return f_result.toInt();
}
int AOApplication::get_emote_number(QString p_char)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
+ QString f_result = read_char_ini(p_char, "number", "[Emotions]", "[SoundN]");
- if (!char_ini.open(QIODevice::ReadOnly))
- {
+ if (f_result == "")
return 0;
- }
-
- QTextStream in(&char_ini);
- bool emotions_found = false;
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (line.startsWith("[SoundN]"))
- return 0;
-
- if (line.startsWith("[Emotions]"))
- emotions_found = true;
-
- if (!line.startsWith("number"))
- continue;
-
- QStringList line_elements = line.split("=");
-
- if (line_elements.size() < 2)
- continue;
-
- if (emotions_found)
- return line_elements.at(1).trimmed().toInt();
- }
-
- return 0;
+ else return f_result.toInt();
}
QString AOApplication::get_pre_emote(QString p_char, int p_emote)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
+ QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "[Emotions]", "[SoundN]");
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- return "normal";
- }
+ qDebug() << "f_result" << f_result;
- QTextStream in(&char_ini);
- bool emotions_found = false;
- QString search_line = QString::number(p_emote + 1);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
+ QStringList result_contents = f_result.split("#");
- if (line.startsWith("[SoundN]"))
- return "normal";
- if (line.startsWith("[Emotions]"))
- emotions_found = true;
- if (!line.startsWith(search_line))
- continue;
-
- QStringList line_elements = line.split("#");
-
- if (line_elements.size() < 4)
- continue;
-
- if (emotions_found)
- return line_elements.at(1).trimmed();
+ if (result_contents.size() < 4)
+ {
+ qDebug() << "W: misformatted char.ini: " << p_char << ", " << p_emote;
+ return "normal";
}
-
- return "normal";
+ else return result_contents.at(1);
}
QString AOApplication::get_emote(QString p_char, int p_emote)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
+ QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "[Emotions]", "[SoundN]");
- if (!char_ini.open(QIODevice::ReadOnly))
+ QStringList result_contents = f_result.split("#");
+
+ if (result_contents.size() < 4)
{
+ qDebug() << "W: misformatted char.ini: " << p_char << ", " << p_emote;
return "normal";
}
+ else return result_contents.at(2);
+}
- QTextStream in(&char_ini);
- bool emotions_found = false;
- QString search_line = QString::number(p_emote + 1);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (line.startsWith("[SoundN]"))
- return "normal";
-
- if (line.startsWith("[Emotions]"))
- emotions_found = true;
-
- if (!line.startsWith(search_line))
- continue;
-
- QStringList line_elements = line.split("#");
+int AOApplication::get_emote_mod(QString p_char, int p_emote)
+{
+ QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "[Emotions]", "[SoundN]");
- if (line_elements.size() < 4)
- continue;
+ QStringList result_contents = f_result.split("#");
- if (emotions_found)
- return line_elements.at(2).trimmed();
+ if (result_contents.size() < 4)
+ {
+ qDebug() << "W: misformatted char.ini: " << p_char << ", " << QString::number(p_emote);
+ return 0;
}
-
- return "normal";
+ else return result_contents.at(3).toInt();
}
QString AOApplication::get_sfx_name(QString p_char, int p_emote)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
+ QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "[SoundN]", "[SoundT]");
- if (!char_ini.open(QIODevice::ReadOnly))
- {
+ if (f_result == "")
return "1";
- }
-
- QTextStream in(&char_ini);
- bool soundn_found = false;
- QString search_line = QString::number(p_emote + 1);
-
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (line.startsWith("[SoundT]"))
- return "1";
-
- if (line.startsWith("[SoundN]"))
- soundn_found = true;
-
- if (!soundn_found)
- continue;
-
- if (!line.startsWith(search_line))
- continue;
-
- QStringList line_elements = line.split("=");
-
- if (line_elements.size() < 2)
- continue;
-
-
- return line_elements.at(1).trimmed();
- }
-
- return "1";
+ else return f_result;
}
-
int AOApplication::get_sfx_delay(QString p_char, int p_emote)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
-
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- return 0;
- }
-
- QTextStream in(&char_ini);
- bool soundt_found = false;
- QString search_line = QString::number(p_emote + 1);
+ QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "[SoundT]", "[TextDelay]");
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (line.startsWith("[SoundT]"))
- soundt_found = true;
-
- if (!soundt_found)
- continue;
-
- if (!line.startsWith(search_line))
- continue;
-
- QStringList line_elements = line.split("=");
-
- if (line_elements.size() < 2)
- continue;
-
- return line_elements.at(1).trimmed().toInt();
- }
-
- return 0;
+ if (f_result == "")
+ return 1;
+ else return f_result.toInt();
}
-int AOApplication::get_emote_mod(QString p_char, int p_emote)
+int AOApplication::get_text_delay(QString p_char, QString p_emote)
{
- QString char_ini_path = get_character_path(p_char) + "char.ini";
- QFile char_ini;
- char_ini.setFileName(char_ini_path);
-
- if (!char_ini.open(QIODevice::ReadOnly))
- {
- return 0;
- qDebug() << "Could not find " << char_ini_path;
- }
-
- QTextStream in(&char_ini);
- bool emotions_found = false;
- QString search_line = QString::number(p_emote + 1);
+ QString f_result = read_char_ini(p_char, p_emote, "[TextDelay]", "END_OF_FILE");
- while(!in.atEnd())
- {
- QString line = in.readLine();
-
- if (line.startsWith("[SoundN]"))
- {
- qDebug() << "get_emote_mod returned early because soundN was found";
- return 0;
- }
-
- if (line.startsWith("[Emotions]"))
- emotions_found = true;
-
- if (!line.startsWith(search_line))
- continue;
-
- QStringList line_elements = line.split("#");
+ if (f_result == "")
+ return -1;
+ else return f_result.toInt();
+}
- if (line_elements.size() < 4)
- continue;
- if (emotions_found)
- return line_elements.at(3).trimmed().toInt();
- }
- qDebug() << "get_emote_mod returned because loop finished";
- return 0;
-}