[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/magazynier
From: Niels Slot <nielsslot () gmail ! com>
Date: 2010-10-31 12:33:12
Message-ID: 20101031123312.8EAA2AC8A4 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1191563 by nielsslot:
Port Magazynier to KGameRenderer.
M +47 -4 item.cpp
M +4 -3 item.h
M +2 -1 levelModel.cpp
M +6 -115 renderer.cpp
M +3 -12 renderer.h
--- trunk/playground/games/magazynier/item.cpp #1191562:1191563
@@ -21,17 +21,60 @@
#include "renderer.h"
-MagazynierItem::MagazynierItem(QGraphicsItem *parent) :
- QGraphicsPixmapItem(parent),
- m_itemOrientation()
+MagazynierItem::MagazynierItem(KGameRenderer* renderer, const QString& spriteKey,
+ QGraphicsItem *parent) :
+ KGameRenderedItem(renderer, spriteKey, parent),
+ m_itemOrientation(*LevelModel::m_moveDirUp)
{
+ setRenderSize(QSize(Renderer::instance()->getItemSize(), \
Renderer::instance()->getItemSize())); }
void MagazynierItem::updatePixmap(void)
{
- setPixmap(Renderer::instance()->get(m_itemType, m_itemOrientation));
+ QString name;
+ switch (m_itemType) {
+ case Empty:
+ name = "Empty";
+ break;
+ case Box:
+ name = "Box";
+ break;
+ case Goal:
+ name = "Goal";
+ break;
+ case Goal|Box:
+ name = "Goal_Box";
+ break;
+ case Goal|Player:
+ if (m_itemOrientation == *LevelModel::m_moveDirUp) {
+ name = "Goal_Player_Up";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirRight) {
+ name = "Goal_Player_Right";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirDown) {
+ name = "Goal_Player_Down";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirLeft) {
+ name = "Goal_Player_Left";
}
+ break;
+ case Player:
+ if (m_itemOrientation == *LevelModel::m_moveDirUp) {
+ name = "Player_Up";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirRight) {
+ name = "Player_Right";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirDown) {
+ name = "Player_Down";
+ } else if (m_itemOrientation == *LevelModel::m_moveDirLeft) {
+ name = "Player_Left";
+ }
+ break;
+ case Wall:
+ name = "Wall";
+ break;
+ }
+ setSpriteKey(name);
+}
+
int MagazynierItem::itemType(void) const
{
return m_itemType;
--- trunk/playground/games/magazynier/item.h #1191562:1191563
@@ -17,16 +17,17 @@
#ifndef ITEM_H
#define ITEM_H
-#include <QGraphicsPixmapItem>
#include <QPoint>
+#include <KGameRenderedItem>
#include "levelModel.h"
-class MagazynierItem : public QGraphicsPixmapItem
+class MagazynierItem : public KGameRenderedItem
{
public:
- MagazynierItem(QGraphicsItem *parent = 0);
+ MagazynierItem(KGameRenderer* renderer, const QString& spriteKey = "Empty",
+ QGraphicsItem *parent = 0);
void setItemType(int itemType);
int itemType(void) const;
void updatePixmap(void);
--- trunk/playground/games/magazynier/levelModel.cpp #1191562:1191563
@@ -89,7 +89,7 @@
for (int col = 0; col < m_columnCount; ++col) {
m_levelItems->replace(col, new QVector<MagazynierItem *>(m_rowCount));
for (int row = 0; row < m_rowCount; ++row) {
- MagazynierItem *newItem = new MagazynierItem();
+ MagazynierItem *newItem = new \
MagazynierItem(Renderer::instance()->gameRenderer()); newItem->setItemType(Empty);
m_levelItems->at(col)->replace(row, newItem);
}
@@ -174,6 +174,7 @@
for (row = 0; row < getRowCount(); ++row) {
MagazynierItem *item = getItem(QPoint(col,row));
kDebug() << "Item at" << col << row << ":" << item->itemType();
+ item->setRenderSize(QSize(itemSize, itemSize));
item->updatePixmap();
item->setLevelPos(QPoint(col, row));
}
--- trunk/playground/games/magazynier/renderer.cpp #1191562:1191563
@@ -20,22 +20,17 @@
#include <math.h>
#include <KDebug>
-#include <KGameTheme>
-#include <KPixmapCache>
-#include <KSvgRenderer>
-#include <QPainter>
+#include <KGameRenderer>
#include <QPixmap>
#include "levelModel.h"
#include "settings.h"
-Renderer::Renderer(QObject *parent) //{{{
+Renderer::Renderer(QObject *parent) : QObject(parent) //{{{
{
m_itemSize = 0;
m_levelHeight = m_levelWidth = m_viewWidth = m_viewHeight = 0;
- m_theme = 0;
- m_pixmapCache = 0;
- m_svgRenderer = new KSvgRenderer(parent);
+ m_gameRenderer = new KGameRenderer(Settings::self()->theme());
loadTheme();
} //}}}
@@ -50,16 +45,8 @@
void Renderer::loadTheme(void) //{{{
{
- //Allow theme reloading, cleanup
- delete m_theme;
- delete m_pixmapCache;
-
- m_theme = new KGameTheme;
- QString themeFile = Settings::self()->theme();
- kDebug() << "loading graphics theme from" << themeFile;
- m_theme->load(themeFile);
- m_svgRenderer->load(m_theme->graphics());
- m_pixmapCache = new KPixmapCache("magazynier");
+ kDebug() << "loading graphics theme from" << Settings::self()->theme();
+ m_gameRenderer->setTheme(Settings::self()->theme());
return;
} //}}}
@@ -75,110 +62,14 @@
floor(m_viewHeight/m_levelHeight) :
floor(m_viewWidth/m_levelWidth);
kDebug() << "Renderer will render" << m_itemSize << "x" << m_itemSize << "pixmaps";
- m_pixmapCache->discard();
} //}}}
-QPixmap Renderer::get(int cellType, const QPoint& orientation) //{{{
-{
- Q_ASSERT(m_itemSize > 0);
- QString name;
- QPixmap pixmap;
- switch(cellType) {
- case Empty:
- name = "Empty";
- break;
- case Box:
- name = "Box";
- break;
- case Goal:
- name = "Goal";
- break;
- case Goal|Box:
- name = "Goal_Box";
- break;
- case Goal|Player:
- if (orientation == *LevelModel::m_moveDirUp) {
- name = "Goal_Player_Up";
- } else if (orientation == *LevelModel::m_moveDirRight) {
- name = "Goal_Player_Right";
- } else if (orientation == *LevelModel::m_moveDirDown) {
- name = "Goal_Player_Down";
- } else if (orientation == *LevelModel::m_moveDirLeft) {
- name = "Goal_Player_Left";
- } else {
- name = "Goal_Player";
- }
- pixmap = findPixmap(name, name, m_itemSize, m_itemSize);
- if (!pixmap) {
- return findPixmap("Goal_Player", name, m_itemSize, m_itemSize);
- } else {
- return pixmap;
- }
- break;
- case Player:
- if (orientation == *LevelModel::m_moveDirUp) {
- name = "Player_Up";
- } else if (orientation == *LevelModel::m_moveDirRight) {
- name = "Player_Right";
- } else if (orientation == *LevelModel::m_moveDirDown) {
- name = "Player_Down";
- } else if (orientation == *LevelModel::m_moveDirLeft) {
- name = "Player_Left";
- } else {
- name = "Player";
- }
- pixmap = findPixmap(name, name, m_itemSize, m_itemSize);
- if (!pixmap) {
- return findPixmap("Player", name, m_itemSize, m_itemSize);
- } else {
- return pixmap;
- }
- break;
- case Wall:
- name = "Wall";
- break;
- default:
- kDebug() << "Requested unknown cell pixmap" << cellType;
- break;
- }
-
- return findPixmap(name, name, m_itemSize, m_itemSize);
-} //}}}
-
QPixmap Renderer::getBackground() //{{{
{
- return findPixmap("Background", "Background", m_viewWidth, m_viewHeight);
+ return m_gameRenderer->spritePixmap("Background", QSize(m_viewWidth, \
m_viewHeight)); } //}}}
-QPixmap Renderer::findPixmap(const QString elementName, const QString cacheName, int \
width, int height)
-{
- QPixmap ret;
- if (m_pixmapCache->find(cacheName, ret)) {
- return ret;
- }
-
- return renderNewPixmap(elementName, cacheName, width, height);
-}
-
-QPixmap Renderer::renderNewPixmap(const QString elementName, const QString \
cacheName, int width, int height) //{{{
-{
- if (!m_svgRenderer->elementExists(elementName)) {
- return 0;
- }
-
- QPixmap ret(width, height);
- ret.fill(Qt::transparent);
-
- QPainter painter(&ret);
- m_svgRenderer->render(&painter, elementName);
-
- kDebug() << "Rendered" << cacheName;
- m_pixmapCache->insert(cacheName, ret);
-
- return ret;
-} //}}}
-
void Renderer::setViewSize(int height, int width) //{{{
{
m_viewHeight = height;
--- trunk/playground/games/magazynier/renderer.h #1191562:1191563
@@ -20,12 +20,8 @@
#include <QObject>
-class KGameTheme;
-class KPixmapCache;
-class KSvgRenderer;
+class KGameRenderer;
class QPixmap;
-class QPoint;
-class QString;
class Renderer : public QObject
{
@@ -34,11 +30,11 @@
public:
static Renderer *instance();
void loadTheme();
- QPixmap get(int cellType, const QPoint& orientation);
QPixmap getBackground();
int getItemSize(void);
void setLevelSize(int height, int width); //height x width items
void setViewSize(int height, int width); //height x width pixels
+ KGameRenderer* gameRenderer() const { return m_gameRenderer; }
protected:
Renderer(QObject *parent);
@@ -47,13 +43,8 @@
void setItemSize(void);
int m_itemSize;
int m_viewHeight, m_viewWidth, m_levelHeight, m_levelWidth;
- KPixmapCache *m_pixmapCache;
- KSvgRenderer *m_svgRenderer;
- KGameTheme *m_theme;
+ KGameRenderer *m_gameRenderer;
- QPixmap renderNewPixmap(const QString elementName, const QString cacheName, int \
width, int height);
- QPixmap findPixmap(const QString elementName, const QString cacheName, int width, \
int height);
-
public slots:
void sizeChanged();
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic