[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/magazynier
From: Tadeusz Andrzej Kadłubowski <yess () hell ! org ! pl>
Date: 2009-12-26 11:54:09
Message-ID: 1261828449.507620.4466.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1066203 by tkadlubo:
Items know (optionally) about orientation. LevelModel has a new method
updatePlayerOrientation, moveFromXToY methods are updated to use this method
for player items.
The only thing left to support viewing player from different angles is rendering appropriate pixmaps.
M +10 -2 item.cpp
M +2 -0 item.h
M +18 -6 levelModel.cpp
M +7 -2 levelModel.h
--- trunk/playground/games/magazynier/item.cpp #1066202:1066203
@@ -21,13 +21,15 @@
#include "renderer.h"
-MagazynierItem::MagazynierItem(QGraphicsItem *parent) : QGraphicsPixmapItem(parent)
+MagazynierItem::MagazynierItem(QGraphicsItem *parent) :
+ QGraphicsPixmapItem(parent),
+ m_itemOrientation()
{
}
void MagazynierItem::updatePixmap(void)
{
- setPixmap(Renderer::instance()->get(m_itemType));
+ setPixmap(Renderer::instance()->get(m_itemType, &m_itemOrientation));
}
int MagazynierItem::itemType(void) const
@@ -49,3 +51,9 @@
setPos(pos.x() * cellSize, pos.y() * cellSize);
return;
}
+
+void MagazynierItem::setOrientation(QPoint orientation)
+{
+ m_itemOrientation = orientation;
+ updatePixmap();
+}
--- trunk/playground/games/magazynier/item.h #1066202:1066203
@@ -31,7 +31,9 @@
int itemType(void) const;
void updatePixmap(void);
void setLevelPos(QPoint pos);
+ void setOrientation(QPoint orientation);
private:
+ QPoint m_itemOrientation;
int m_itemType;
};
--- trunk/playground/games/magazynier/levelModel.cpp #1066202:1066203
@@ -32,9 +32,9 @@
LevelModel::LevelModel(QObject *parent) : //{{{
QGraphicsScene(parent),
m_goalsLeft(0),
- m_moveCount(0),
m_shiftCount(0),
- m_levelCompleted(false)
+ m_levelCompleted(false),
+ m_moveCount(0)
{
//Fixme those should be statis. How can I make static QPoint in C++?
@@ -192,7 +192,7 @@
if (sourceItem->itemType() == Player) {
*m_playerPos += delta;
- m_playerOrientation = δ
+ updatePlayerOrientation(delta);
kDebug() << "player position updated to" << *m_playerPos;
}
@@ -213,7 +213,7 @@
if (movingItemType == Player) {
*m_playerPos += delta;
- m_playerOrientation = δ
+ updatePlayerOrientation(delta);
kDebug() << "player position updated to" << *m_playerPos;
} else if (movingItemType == Box) {
--m_goalsLeft;
@@ -237,7 +237,7 @@
if (movingItemType == Player) {
*m_playerPos += delta;
- m_playerOrientation = δ
+ updatePlayerOrientation(delta);
kDebug() << "player position updated to" << *m_playerPos;
} else if (movingItemType == Box) {
++m_goalsLeft;
@@ -258,13 +258,25 @@
if (sourceItem->itemType() == (Player | Goal)) {
*m_playerPos += delta;
- m_playerOrientation = δ
+ updatePlayerOrientation(delta);
kDebug() << "player position updated to" << *m_playerPos;
}
return;
} //}}}
+void LevelModel::updatePlayerOrientation(QPoint orientation)
+{
+ if (orientation == *m_playerOrientation) {
+ return;
+ }
+
+ m_playerOrientation = &orientation;
+
+ MagazynierItem *playerItem = getItem(*m_playerPos);
+ playerItem->setOrientation(orientation);
+}
+
bool LevelModel::canMove(QPoint pos, QPoint delta) //{{{
{
MagazynierItem *target = getItem(pos + delta);
--- trunk/playground/games/magazynier/levelModel.h #1066202:1066203
@@ -78,14 +78,19 @@
private:
QVector<QVector<MagazynierItem *>*> *m_levelItems;
int m_goalsLeft;
+ int m_shiftCount;
+ bool m_levelCompleted;
int m_moveCount;
- int m_shiftCount;
+
void setItem(QPoint pos, MagazynierItem *item);
+
QPoint *m_playerPos;
QPoint *m_playerOrientation;
+ void updatePlayerOrientation(QPoint orientation);
+
int m_columnCount, m_rowCount;
- bool m_levelCompleted;
+
bool canMove(QPoint pos, QPoint delta);
public slots:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic