From d547dec802f76c346538144f4eacf6d8ca6310c4 Mon Sep 17 00:00:00 2001 From: totycro Date: Sat, 9 Apr 2011 13:54:18 +0200 Subject: Pull up methods from mainwidget to sceneholder for sharing in both client and server --- pacman-c++/sceneholder.cpp | 115 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 pacman-c++/sceneholder.cpp (limited to 'pacman-c++/sceneholder.cpp') diff --git a/pacman-c++/sceneholder.cpp b/pacman-c++/sceneholder.cpp new file mode 100644 index 0000000..83025d5 --- /dev/null +++ b/pacman-c++/sceneholder.cpp @@ -0,0 +1,115 @@ +#include "sceneholder.h" + +#include "constants.h" +#include "pixmapitem.h" +#include "block.h" +#include "actor.h" +#include "bonuspoint.h" +#include "point.h" + +SceneHolder::SceneHolder(QWidget* parent): QWidget(parent) +{ + m_scene = new QGraphicsScene(0, 0, Constants::map_size_pixel.width, Constants::map_size_pixel.height, this); + m_scene->setBackgroundBrush(Qt::black); + + visualMap.resize(Constants::map_size.width); + for (int i=0; iaddItem(actor); + actor->setPos(mapPositionToCoord(x, y)); + } + + Actor::Movement direction = Actor::None; + switch (cur & Transmission::direction_mask) + { + case Transmission::direction_none: + direction = Actor::None; + break; + case Transmission::direction_left: + direction = Actor::Left; + break; + case Transmission::direction_right: + direction = Actor::Right; + break; + case Transmission::direction_up: + direction = Actor::Up; + break; + case Transmission::direction_down: + direction = Actor::Down; + break; + default: + Q_ASSERT(false); + } + //actor->move(direction, mapPositionToCoord(x, y)); + } + else + Q_ASSERT(false); + + if (item != NULL) + { + m_scene->addItem(item); + item->setPos(mapPositionToCoord(x, y)); + PixmapItem* oldItem = visualMap[x][y]; + visualMap[x][y] = item; + if (oldItem != NULL) + { + m_scene->removeItem(item); + delete oldItem; + } + } + } + } + +} + +QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y) +{ + return QPoint(x * Constants::field_size.width, y * Constants::field_size.height); +} \ No newline at end of file -- cgit v1.2.3