File indexing completed on 2024-05-05 05:40:37
0001 /*************************************************************************** 0002 * Copyright (C) 2022 by Renaud Guezennec * 0003 * http://www.rolisteam.org/contact * 0004 * * 0005 * This software is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 #include "worker/characterfinder.h" 0021 0022 #include "model/charactermodel.h" 0023 #include "model/nonplayablecharactermodel.h" 0024 #include "model/playermodel.h" 0025 0026 QPointer<campaign::NonPlayableCharacterModel> CharacterFinder::m_npcModel 0027 = QPointer<campaign::NonPlayableCharacterModel>(nullptr); 0028 QPointer<CharacterModel> CharacterFinder::m_pcModel= QPointer<CharacterModel>(nullptr); 0029 QPointer<PlayerModel> CharacterFinder::m_playerModel= QPointer<PlayerModel>(nullptr); 0030 0031 bool CharacterFinder::setUpConnect() 0032 { 0033 if(!isReady()) 0034 return false; 0035 0036 connect(m_playerModel, &PlayerModel::playerJoin, this, &CharacterFinder::dataChanged); 0037 return true; 0038 } 0039 bool CharacterFinder::isReady() 0040 { 0041 return (m_pcModel && m_npcModel && m_playerModel); 0042 } 0043 void CharacterFinder::setNpcModel(campaign::NonPlayableCharacterModel* model) 0044 { 0045 m_npcModel= model; 0046 } 0047 void CharacterFinder::setPcModel(CharacterModel* model) 0048 { 0049 m_pcModel= model; 0050 } 0051 0052 void CharacterFinder::setPlayerModel(PlayerModel* model) 0053 { 0054 m_playerModel= model; 0055 } 0056 0057 Character* CharacterFinder::find(const QString& id) 0058 { 0059 qDebug() << "character finder" << id; 0060 if(!isReady()) 0061 return nullptr; 0062 0063 auto res= m_pcModel->character(id); 0064 0065 if(res == nullptr) 0066 res= m_npcModel->characterFromUuid(id); 0067 qDebug() << "character found:" << res; 0068 return res; 0069 }