File indexing completed on 2023-11-26 07:40:43
0001 /* 0002 SPDX-FileCopyrightText: 2009 Mathias Kraus <k.hias@gmx.de> 0003 SPDX-FileCopyrightText: 2007-2008 Thomas Gallinari <tg8187@yahoo.fr> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "cell.h" 0009 0010 Cell::Cell() : m_type(Granatier::Cell::WALL) 0011 { 0012 m_elements.clear(); 0013 } 0014 0015 Cell::~Cell() 0016 = default; 0017 0018 bool Cell::isWalkable(Element* p_element) const 0019 { 0020 0021 if(m_type == Granatier::Cell::WALL) 0022 { 0023 return false; 0024 } 0025 else if(!m_elements.isEmpty()) 0026 { 0027 for(const auto& element: m_elements) 0028 { 0029 if(element->getType() == Granatier::Element::BLOCK || 0030 (element->getType() == Granatier::Element::BOMB && (p_element == nullptr || p_element != element)) || 0031 (element->getType() == Granatier::Element::PLAYER && (p_element == nullptr || p_element->getType() != Granatier::Element::PLAYER))) 0032 { 0033 return false; 0034 } 0035 } 0036 } 0037 return true; 0038 } 0039 0040 Granatier::Cell::Type Cell::getType() const 0041 { 0042 return m_type; 0043 } 0044 0045 void Cell::setType(Granatier::Cell::Type p_type) 0046 { 0047 m_type = p_type; 0048 } 0049 0050 QList <Element*> Cell::getElements() const 0051 { 0052 return m_elements; 0053 } 0054 0055 QList <Element*> Cell::getElements(Granatier::Element::Type type) const 0056 { 0057 QList<Element*> elementsFound; 0058 for(const auto& element: m_elements) 0059 { 0060 if(element->getType() == type) 0061 { 0062 elementsFound.append(element); 0063 } 0064 } 0065 return elementsFound; 0066 } 0067 0068 void Cell::setElement(Element* p_element) 0069 { 0070 if(!m_elements.contains(p_element)) 0071 { 0072 m_elements.append(p_element); 0073 } 0074 } 0075 0076 void Cell::removeElement(Element* p_element) 0077 { 0078 int index = m_elements.indexOf(p_element); 0079 if(index >= 0) 0080 { 0081 m_elements.removeAt(index); 0082 } 0083 }