File indexing completed on 2024-04-21 07:51:59

0001 /***************************************************************************
0002  *    copyright            : (C) 2004-2007 by Gael de Chalendar
0003  *    email                : kleag@free.fr
0004  ***************************************************************************/
0005 
0006 /***************************************************************************
0007  *                                                                         *
0008  *   This program is free software; you can redistribute it and/or modify  *
0009  *   it under the terms of the GNU General Public License as published by  *
0010  *   the Free Software Foundation; either either version 2
0011    of the License, or (at your option) any later version.of the License, or     *
0012  *   (at your option) any later version.                                   *
0013  *                                                                         *
0014  *   You should have received a copy of the GNU General Public License
0015  *   along with this program; if not, write to the Free Software
0016  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
0017  *   02110-1301, USA
0018  ***************************************************************************/
0019 
0020 #include "skinSpritesData.h"
0021 
0022 #include <QTextStream>
0023 
0024 #include <KLocalizedString>
0025 #include <KMessageBox>
0026 
0027 namespace Ksirk{
0028 namespace Sprites {
0029 
0030 
0031 
0032 SkinSpritesData* SkinSpritesData::m_singleton = nullptr;
0033 
0034 SkinSpritesData::SkinSpritesData()
0035 {
0036 }
0037 
0038 SkinSpritesData::~SkinSpritesData()
0039 {
0040   delete m_singleton;
0041   m_singleton = nullptr;
0042 }
0043 
0044 const SkinSpritesData& SkinSpritesData::single()
0045 {
0046   if (m_singleton == nullptr)
0047   {
0048     m_singleton = new SkinSpritesData();
0049     m_singleton->init();
0050   }
0051   return *m_singleton;
0052 }
0053 
0054 SkinSpritesData& SkinSpritesData::changeable()
0055 {
0056   if (m_singleton == nullptr)
0057   {
0058     m_singleton = new SkinSpritesData();
0059     m_singleton->init();
0060   }
0061   return *m_singleton;
0062 }
0063 
0064 /** setup default values for default skin sprites */
0065 void SkinSpritesData::init()
0066 {
0067   m_intDatas.clear();
0068   m_strDatas.clear();
0069 }
0070 
0071 
0072 const QString& SkinSpritesData::skin() const
0073 {
0074   return m_skin;
0075 }
0076 
0077 void SkinSpritesData::skin(const QString& newSkin)
0078 {
0079   m_skin = newSkin;
0080 }
0081 
0082 int SkinSpritesData::intData(const QString& name) const
0083 {
0084   QMap<QString, int>::const_iterator it = m_intDatas.find(name);
0085   if (it == m_intDatas.end())
0086   {
0087     QString msg;
0088     QTextStream(&msg) << i18n("Error - Unknown skin int data: ") << name;
0089     KMessageBox::error(nullptr, msg, i18n("Fatal Error"));
0090     exit(1);    
0091   }
0092   else
0093   {
0094     return *it;
0095   }
0096 }
0097 
0098 const QString& SkinSpritesData::strData(const QString& name) const
0099 {
0100   QMap<QString, QString>::const_iterator it = m_strDatas.find(name);
0101   if (it == m_strDatas.end())
0102   {
0103     QString msg;
0104     QTextStream(&msg) << i18n("Error - Unknown skin string data: ") << name;
0105     KMessageBox::error(nullptr, msg, i18n("Fatal Error"));
0106     exit(1);    
0107   }
0108   else
0109   {
0110     return *it;
0111   }
0112 }
0113     
0114 void SkinSpritesData::strData(const QString& name, const QString& data)
0115 {
0116   m_strDatas[name] = data;
0117 }
0118 
0119 void SkinSpritesData::intData(const QString& name, int data)
0120 {
0121   m_intDatas[name] = data;
0122 }
0123     
0124 
0125 } // closing namespace GameLogic
0126 } // closing namespace Ksirk