#include "mainwidget.h" #include "actor.h" #include "block.h" #include "bonuspoint.h" #include "constants.h" MainWidget::MainWidget() { QVBoxLayout *layout = new QVBoxLayout(this); QLabel *lbl = new QLabel("da kommt da spielstand hin", this); layout->addWidget(lbl); m_scene = new QGraphicsScene(0, 0, 500, 500, this); m_scene->setBackgroundBrush(Qt::black); QGraphicsView *window = new QGraphicsView(m_scene, this); window->setFrameStyle(0); window->setAlignment(Qt::AlignLeft | Qt::AlignTop); window->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); window->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); layout->addWidget(window); setLayout(layout); setWindowTitle("pacman client"); loadDummyMap(); } // temporary transmission::map_t createDummyMap() { transmission::map_t map; map = new transmission::field_t*[map_size[0]]; for (unsigned int i = 0; i < map_size[0]; ++i) map[i] = new transmission::field_t[map_size[1]]; for (unsigned int x = 0; x < map_size[0]; ++x) { for (unsigned int y = 0; y < map_size[1]; ++y) { transmission::field_t &cur = map[x][y]; cur = 0; } } map[4][3] |= green; map[4][3] |= transmission::block; map[5][3] |= noColor; map[5][3] |= transmission::block; map[6][3] |= noColor; map[6][3] |= transmission::block; map[7][3] |= red; map[7][3] |= transmission::block; map[7][5] |= transmission::bonuspoint; map[5][5] |= blue; map[5][5] |= transmission::pacman; map[5][5] |= transmission::direction_left; return map; } void MainWidget::loadDummyMap() { transmission::map_t map = createDummyMap(); for (unsigned int x = 0; x < map_size[0]; ++x) { for (unsigned int y = 0; y < map_size[1]; ++y) { const transmission::field_t &cur = map[x][y]; if (cur == 0) continue; qDebug() << "not 0 at x=" << x << ", y=" << y << ", val=" << cur; Color color = static_cast(cur & transmission::color_mask); qDebug() << "col=" << color; PixmapItem *item = 0; if (cur & transmission::block) item = new Block(color); else if (cur & transmission::bonuspoint) item = new BonusPoint(); else if (cur & transmission::pacman) { Actor *actor = 0; ActorMap::iterator it = m_actors.find(color); if (it != m_actors.end()) actor = it->second; else { qDebug() << "new actor of col" << color; actor = new Actor(color); m_actors[color] = actor; m_scene->addItem(actor); actor->setPos(mapPositionToCoord(x, y)); } Actor::Movement direction; switch (cur & transmission::direction_mask) { case 0: 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 != 0) { m_scene->addItem(item); item->setPos(mapPositionToCoord(x, y)); } } } } QPoint MainWidget::mapPositionToCoord(unsigned int x, unsigned int y) { return QPoint(x * field_size[0], y * field_size[1]); }