File indexing completed on 2024-04-28 04:04:39
0001 /* 0002 This file is part of the game 'KTron' 0003 0004 SPDX-FileCopyrightText: 1998-2000 Matthias Kiefer <matthias.kiefer@gmx.de> 0005 SPDX-FileCopyrightText: 2005 Benjamin C. Meyer <ben at meyerhome dot net> 0006 SPDX-FileCopyrightText: 2008-2009 Stas Verberkt <legolas at legolasweb dot nl> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 0010 */ 0011 0012 #include "snakepart.h" 0013 0014 #include "ksnakeduel_debug.h" 0015 0016 SnakePart::SnakePart(int playerNumber) : Object(ObjectType::SnakePart) 0017 { 0018 initialize(); 0019 0020 this->m_playerNumber = playerNumber; 0021 } 0022 0023 // 0024 // Init 0025 // 0026 0027 void SnakePart::initialize() 0028 { 0029 setPartType(SnakePartType::Empty); 0030 setPartTop(false); 0031 setPartBottom(false); 0032 setPartLeft(false); 0033 setPartRight(false); 0034 } 0035 0036 // 0037 // Getters / Setters 0038 // 0039 0040 int SnakePart::getPlayerNumber() 0041 { 0042 return this->m_playerNumber; 0043 } 0044 0045 SnakePartType::Types SnakePart::getPartType() const 0046 { 0047 return m_partType; 0048 } 0049 0050 void SnakePart::setPartType(SnakePartType::Types type) 0051 { 0052 m_partType = type; 0053 } 0054 0055 bool SnakePart::getPartTop() const 0056 { 0057 return m_partTop; 0058 } 0059 0060 void SnakePart::setPartTop(bool value) 0061 { 0062 m_partTop = value; 0063 } 0064 0065 bool SnakePart::getPartBottom() const 0066 { 0067 return m_partBottom; 0068 } 0069 0070 void SnakePart::setPartBottom(bool value) 0071 { 0072 m_partBottom = value; 0073 } 0074 0075 bool SnakePart::getPartLeft() const 0076 { 0077 return m_partLeft; 0078 } 0079 0080 void SnakePart::setPartLeft(bool value) 0081 { 0082 m_partLeft = value; 0083 } 0084 0085 bool SnakePart::getPartRight() const 0086 { 0087 return m_partRight; 0088 } 0089 0090 void SnakePart::setPartRight(bool value) 0091 { 0092 m_partRight = value; 0093 } 0094 0095 // 0096 // Decode type 0097 // 0098 0099 void SnakePart::generateSVGName() 0100 { 0101 setSVGName(decodePart()); 0102 } 0103 0104 QString SnakePart::decodePart() 0105 { 0106 QString name; 0107 0108 // Player 0109 if (getPlayerNumber() == 0) 0110 { 0111 name = QStringLiteral( "tron1-" ); 0112 } 0113 else if (getPlayerNumber() == 1) 0114 { 0115 name = QStringLiteral( "tron2-" ); 0116 } 0117 0118 // Heads (or tails) 0119 if (getPartType() == SnakePartType::Head) 0120 { 0121 if (getPartTop() && getPartLeft() && getPartRight()) 0122 { 0123 name += QLatin1String( "head-north" ); 0124 } 0125 else if (getPartBottom() && getPartLeft() && getPartRight()) 0126 { 0127 name += QLatin1String( "head-south" ); 0128 } 0129 else if (getPartTop() && getPartBottom() && getPartLeft()) 0130 { 0131 name += QLatin1String( "head-west" ); 0132 } 0133 else if (getPartTop() && getPartBottom() && getPartRight()) 0134 { 0135 name += QLatin1String( "head-east" ); 0136 } 0137 } 0138 else if (getPartType() == SnakePartType::Hole) 0139 { 0140 if (getPartTop() && getPartLeft() && getPartRight()) 0141 { 0142 name += QLatin1String( "tail-south" ); 0143 } 0144 else if (getPartBottom() && getPartLeft() && getPartRight()) 0145 { 0146 name += QLatin1String( "tail-north" ); 0147 } 0148 else if (getPartTop() && getPartBottom() && getPartLeft()) 0149 { 0150 name += QLatin1String( "tail-east" ); 0151 } 0152 else if (getPartTop() && getPartBottom() && getPartRight()) 0153 { 0154 name += QLatin1String( "tail-west" ); 0155 } 0156 } 0157 else if (getPartType() == SnakePartType::Tail) 0158 { 0159 if (getPartTop() && getPartLeft() && getPartRight()) 0160 { 0161 name += QLatin1String( "tail-south2" ); 0162 } 0163 else if (getPartBottom() && getPartLeft() && getPartRight()) 0164 { 0165 name += QLatin1String( "tail-north2" ); 0166 } 0167 else if (getPartTop() && getPartBottom() && getPartLeft()) 0168 { 0169 name += QLatin1String( "tail-east2" ); 0170 } 0171 else if (getPartTop() && getPartBottom() && getPartRight()) 0172 { 0173 name += QLatin1String( "tail-west2" ); 0174 } 0175 } 0176 else if (getPartType() == SnakePartType::Body) 0177 { 0178 // Bodys 0179 if (getPartTop() && getPartBottom()) 0180 { 0181 name += QLatin1String( "body-h" ); 0182 } 0183 else if (getPartLeft() && getPartRight()) 0184 { 0185 name += QLatin1String( "body-v" ); 0186 } 0187 else if (getPartLeft() && getPartTop()) 0188 { 0189 name += QLatin1String( "body-nw" ); 0190 } 0191 else if (getPartTop() && getPartRight()) 0192 { 0193 name += QLatin1String( "body-ne" ); 0194 } 0195 else if (getPartLeft() && getPartBottom()) 0196 { 0197 name += QLatin1String( "body-sw" ); 0198 } 0199 else if (getPartBottom() && getPartRight()) 0200 { 0201 name += QLatin1String( "body-se" ); 0202 } 0203 } 0204 0205 return name; 0206 }