From 1f08afc80c73087bf9bde639754670548b89fc9f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 26 Oct 2007 20:01:48 +0000 Subject: [ADD] DISCLAIMER [FIX] PokemonEvolution styles [ADD] Relative enumeration [DEL] pokemod/Status.{h, cpp} [DEL] pokemod/StatusEffect.{h, cpp} [FIX] Status effects will be added as needed instead of customized [FIX] Completed ItemEffects [FIX] Factored out Natures to be global [DEL] pokemod/PokemonNature.{h, cpp} [DEL] ai/Net.{h, cpp} [DEL] ai/Layer/{h, cpp} [ADD] battle/Arena.{h, cpp} [ADD] battle/Team.{h, cpp} [ADD] battle/Human.{h, cpp} [ADD] battle/Bot.{h, cpp} [ADD] battle/GhostBot.{h, cpp} [ADD] battle/Pokemon.{h, cpp} [ADD] battle/Ghost.{h, cpp} [FIX] Fixed some scope errors in pokemod [ADD] audio/audio.pro [ADD] audio/Audio.{h, cpp} [ADD] audio/AudioLibrary.{h, cpp} [ADD] audio/AudioSystem.{h, cpp} [ADD] audio/Music.{h, cpp} [ADD] audio/SoundEffect.{h, cpp} [DEL] old audio system (was in C) [FIX] Optimized some routines in pokemod [FIX] Moved global classes (Ini, Frac, Matrix, FracMatrix, Point, Flag) to general git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@25 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- general/Ini.cpp | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 general/Ini.cpp (limited to 'general/Ini.cpp') diff --git a/general/Ini.cpp b/general/Ini.cpp new file mode 100644 index 00000000..61de9836 --- /dev/null +++ b/general/Ini.cpp @@ -0,0 +1,220 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: general/Ini.cpp +// Purpose: Define sections for data files +// Author: Ben Boeckel +// Modified by: Ben Boeckel +// Created: Fri May 4 23:27:37 2007 +// Copyright: ©2007 Nerdy Productions +// Licence: +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program. If not, see . +///////////////////////////////////////////////////////////////////////////// + +#include "Ini.h" + +PokeGen::Ini::Ini(const QString& n) : + name(n) +{ +} + +PokeGen::Ini::Ini(QFile& f) +{ + Load(f); +} + +void PokeGen::Ini::Export(const QString& p) const +{ + QFile fout(p); + fout.open(QIODevice::WriteOnly); + Export(fout); + fout.close(); +} + +void PokeGen::Ini::Export(QFile& file) const +{ + QTextStream fout(&file); + fout << '[' << name << "]\n"; + for (QMap::ConstIterator i = fields.begin(); i != fields.end(); ++i) + fout << i.key() << '=' << i.value() << '\n'; + fout << '\n'; +} + +void PokeGen::Ini::AddField(const QString& n, const bool v) +{ + fields[n] = v ? "true" : "false"; +} + +void PokeGen::Ini::AddField(const QString& n, const unsigned char v) +{ + fields[n] = QString("%1").arg(v); +} + +void PokeGen::Ini::AddField(const QString& n, const int v) +{ + fields[n] = QString("%1").arg(v); +} + +void PokeGen::Ini::AddField(const QString& n, const unsigned v) +{ + fields[n] = QString("%1").arg(v); +} + +void PokeGen::Ini::AddField(const QString& n, const float v) +{ + fields[n] = QString("%1").arg(v); +} + +void PokeGen::Ini::AddField(const QString& n, const double v) +{ + fields[n] = QString("%1").arg(v); +} + +void PokeGen::Ini::AddField(const QString& n, const QString& v) +{ + fields[n] = v; +} + +QString PokeGen::Ini::GetName() const +{ + return name; +} + +void PokeGen::Ini::GetValue(const QString& field, bool& val, const bool def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + if (fields[field] == "true") + val = true; + else if (fields[field] == "false") + val = false; + else + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, unsigned char& val, const unsigned char def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + bool ok; + unsigned temp; + temp = fields[field].toUInt(&ok); + if (ok && (temp <= UCHAR_MAX)) + val = temp; + else + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, int& val, const int def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + bool ok; + val = fields[field].toInt(&ok); + if (!ok) + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, unsigned& val, const unsigned def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + bool ok; + val = fields[field].toUInt(&ok); + if (!ok) + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, float& val, const float def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + bool ok; + val = fields[field].toFloat(&ok); + if (!ok) + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, double& val, const double def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + bool ok; + val = fields[field].toDouble(&ok); + if (!ok) + val = def; +} + +void PokeGen::Ini::GetValue(const QString& field, QString& val, const QString& def) +{ + if (!fields.count(field)) + { + val = def; + return; + } + val = fields[field]; +} + +bool PokeGen::Ini::IsValid() const +{ + return isValid; +} + +bool PokeGen::Ini::Load(QFile& file) +{ + QTextStream fin(&file); + QString line = fin.readLine(); + QString field; + QString value; + fields.clear(); + int pos; + name = ""; + isValid = true; + if (line.at(0) != '[') + return (isValid = false); + if (line.at(line.length() - 1) != ']') + return (isValid = false); + name = line.mid(1, line.length() - 2); + line = fin.readLine(); + while (!fin.atEnd()) + { + if (line.at(0) == '[') + return (isValid = false); + pos = line.indexOf('='); + if (pos == -1) + return (isValid = false); + field = line.mid(0, pos - 1); + value = line.mid(pos + 1, line.length() - pos); + if (field.isEmpty()) + return (isValid = false); + line = fin.readLine(); + } + return true; +} -- cgit