correct mirroring of players when spectating

This commit is contained in:
Max-Wilhelm Bruker 2010-05-29 17:31:16 +02:00
parent e1a728328e
commit f2092b89e9
18 changed files with 690 additions and 179 deletions

View file

@ -35,7 +35,7 @@ void GameScene::removePlayer(Player *player)
void GameScene::rearrange()
{
struct PlayerProcessor {
static void processPlayer(Player *p, qreal &w, qreal &h, QPointF &b)
static void processPlayer(Player *p, qreal &w, qreal &h, QPointF &b, bool singlePlayer)
{
const QRectF br = p->boundingRect();
if (br.width() > w)
@ -44,6 +44,7 @@ void GameScene::rearrange()
h += playerAreaSpacing;
h += br.height();
p->setPos(b);
p->setMirrored((b.y() < playerAreaSpacing) && !singlePlayer);
b += QPointF(0, br.height() + playerAreaSpacing);
}
};
@ -55,11 +56,11 @@ void GameScene::rearrange()
for (int i = 0; i < players.size(); ++i)
if (!players[i]->getLocal())
PlayerProcessor::processPlayer(players[i], sceneWidth, sceneHeight, base);
PlayerProcessor::processPlayer(players[i], sceneWidth, sceneHeight, base, players.size() == 1);
else
localPlayer = players[i];
if (localPlayer)
PlayerProcessor::processPlayer(localPlayer, sceneWidth, sceneHeight, base);
PlayerProcessor::processPlayer(localPlayer, sceneWidth, sceneHeight, base, players.size() == 1);
playersRect = QRectF(0, 0, sceneWidth, sceneHeight);