diff options
| author | manuel <manuel@mausz.at> | 2011-04-10 21:34:29 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2011-04-10 21:34:29 +0200 |
| commit | 817dcc4e4493fb89c6d52b5e5ce1548b6a047d08 (patch) | |
| tree | 81f0eea0617d05604e6636cb020509f9ec504e6e /pacman-c++/server.cpp | |
| parent | d0eafb0124a39eeda6c00595a943ce9811d589c4 (diff) | |
| download | foop-817dcc4e4493fb89c6d52b5e5ce1548b6a047d08.tar.gz foop-817dcc4e4493fb89c6d52b5e5ce1548b6a047d08.tar.bz2 foop-817dcc4e4493fb89c6d52b5e5ce1548b6a047d08.zip | |
- first round of coding cleanup
- small sound fix
Diffstat (limited to 'pacman-c++/server.cpp')
| -rw-r--r-- | pacman-c++/server.cpp | 77 |
1 files changed, 49 insertions, 28 deletions
diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index c83c70d..144043b 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp | |||
| @@ -13,7 +13,7 @@ Server::Server(QWidget *parent) | |||
| 13 | waitForClientConnections(); | 13 | waitForClientConnections(); |
| 14 | qDebug() << "clients connected"; | 14 | qDebug() << "clients connected"; |
| 15 | 15 | ||
| 16 | updateMap(Util::createDummyMap()); | 16 | updateMap(Util::createDemoMap()); |
| 17 | 17 | ||
| 18 | QTimer *timer = new QTimer(this); | 18 | QTimer *timer = new QTimer(this); |
| 19 | connect(timer, SIGNAL(timeout()), this, SLOT(tick())); | 19 | connect(timer, SIGNAL(timeout()), this, SLOT(tick())); |
| @@ -35,33 +35,51 @@ Transmission::map_t Server::calculateUpdates() | |||
| 35 | Transmission::map_t map = Util::createEmptyMap(); | 35 | Transmission::map_t map = Util::createEmptyMap(); |
| 36 | 36 | ||
| 37 | QMapIterator<Color::Color, Actor::Movement> i(m_actorMovements); | 37 | QMapIterator<Color::Color, Actor::Movement> i(m_actorMovements); |
| 38 | while (i.hasNext()) { | 38 | while (i.hasNext()) |
| 39 | { | ||
| 39 | i.next(); | 40 | i.next(); |
| 40 | Actor *actor = m_actors.value( i.key() ); | 41 | Actor *actor = m_actors.value(i.key()); |
| 41 | QPoint mapPosition = CoordToMapPosition(actor->x(), actor->y()); | 42 | QPoint mapPosition = actor->pos().toPoint(); |
| 43 | mapPosition = CoordToMapPosition(actor->pos().toPoint()); | ||
| 42 | qDebug() << "actor " << i.key() << " is at " << mapPosition; | 44 | qDebug() << "actor " << i.key() << " is at " << mapPosition; |
| 43 | 45 | ||
| 44 | QPoint newMapPosition = mapPosition; | 46 | QPoint newMapPosition = mapPosition; |
| 45 | switch (i.value()) { | 47 | switch (i.value()) |
| 46 | case Actor::Up: newMapPosition += QPoint(0, -1); break; | 48 | { |
| 47 | case Actor::Down: newMapPosition += QPoint(0, 1); break; | 49 | case Actor::Up: |
| 48 | case Actor::Left: newMapPosition += QPoint(-1, 0); break; | 50 | newMapPosition += QPoint(0, -1); |
| 49 | case Actor::Right: newMapPosition += QPoint(1, 0); break; | 51 | break; |
| 50 | case Actor::None: break; | 52 | case Actor::Down: |
| 51 | default: Q_ASSERT(false); | 53 | newMapPosition += QPoint(0, 1); |
| 54 | break; | ||
| 55 | case Actor::Left: | ||
| 56 | newMapPosition += QPoint(-1, 0); | ||
| 57 | break; | ||
| 58 | case Actor::Right: | ||
| 59 | newMapPosition += QPoint(1, 0); | ||
| 60 | break; | ||
| 61 | case Actor::None: | ||
| 62 | break; | ||
| 63 | default: | ||
| 64 | Q_ASSERT(false); | ||
| 52 | } | 65 | } |
| 53 | if (newMapPosition.x() < 0) newMapPosition.setX(0); | 66 | |
| 54 | if (newMapPosition.x() >= visualMap.size()) newMapPosition.setX(visualMap.size()-1); | 67 | if (newMapPosition.x() < 0) |
| 55 | if (newMapPosition.y() < 0) newMapPosition.setY(0); | 68 | newMapPosition.setX(0); |
| 56 | if (newMapPosition.y() >= visualMap[newMapPosition.x()].size()) newMapPosition.setY(visualMap[newMapPosition.x()].size()-1); | 69 | if (newMapPosition.x() >= visualMap.size()) |
| 70 | newMapPosition.setX(visualMap.size() - 1); | ||
| 71 | if (newMapPosition.y() < 0) | ||
| 72 | newMapPosition.setY(0); | ||
| 73 | if (newMapPosition.y() >= visualMap[newMapPosition.x()].size()) | ||
| 74 | newMapPosition.setY(visualMap[newMapPosition.x()].size() - 1); | ||
| 57 | 75 | ||
| 58 | // <t3h g4m3 10gic> | 76 | // <t3h g4m3 10gic> |
| 59 | if(dynamic_cast<Block*>(visualMap[newMapPosition.x()][newMapPosition.y()]) != 0) { | 77 | if(dynamic_cast<Block*>(visualMap[newMapPosition.x()][newMapPosition.y()]) != 0) |
| 60 | continue; | 78 | continue; |
| 61 | } | ||
| 62 | // </t3h g4m2 10gic> | 79 | // </t3h g4m2 10gic> |
| 63 | 80 | ||
| 64 | if (mapPosition != newMapPosition) { | 81 | if (mapPosition != newMapPosition) |
| 82 | { | ||
| 65 | map[mapPosition.x()][mapPosition.y()] = Transmission::empty; | 83 | map[mapPosition.x()][mapPosition.y()] = Transmission::empty; |
| 66 | map[newMapPosition.x()][newMapPosition.y()] = | 84 | map[newMapPosition.x()][newMapPosition.y()] = |
| 67 | Transmission::pacman | i.key() | | 85 | Transmission::pacman | i.key() | |
| @@ -76,10 +94,10 @@ QSharedPointer< ProtoBuf::MapUpdate > Server::createUpdatePacket(Transmission::m | |||
| 76 | QSharedPointer<ProtoBuf::MapUpdate> updatePacket = | 94 | QSharedPointer<ProtoBuf::MapUpdate> updatePacket = |
| 77 | QSharedPointer<ProtoBuf::MapUpdate>(new ProtoBuf::MapUpdate); | 95 | QSharedPointer<ProtoBuf::MapUpdate>(new ProtoBuf::MapUpdate); |
| 78 | 96 | ||
| 79 | for (unsigned int x = 0; x < Constants::map_size.width; ++x) { | 97 | for (unsigned int x = 0; x < Constants::map_size.width; ++x) |
| 80 | for (unsigned int y = 0; y < Constants::map_size.height; ++y) { | 98 | { |
| 99 | for (unsigned int y = 0; y < Constants::map_size.height; ++y) | ||
| 81 | updatePacket->add_field(map[x][y]); | 100 | updatePacket->add_field(map[x][y]); |
| 82 | } | ||
| 83 | } | 101 | } |
| 84 | updatePacket->set_round_points_red(m_actors.value(Color::red)->getRoundPoints()); | 102 | updatePacket->set_round_points_red(m_actors.value(Color::red)->getRoundPoints()); |
| 85 | updatePacket->set_game_points_red(m_actors.value(Color::red)->getGamePoints()); | 103 | updatePacket->set_game_points_red(m_actors.value(Color::red)->getGamePoints()); |
| @@ -101,9 +119,11 @@ void Server::waitForClientConnections() | |||
| 101 | 119 | ||
| 102 | Color::Color playerColors[3] = { Color::red, Color::blue, Color::green }; | 120 | Color::Color playerColors[3] = { Color::red, Color::blue, Color::green }; |
| 103 | #ifdef SINGLE | 121 | #ifdef SINGLE |
| 104 | for (unsigned int i=0; i<1; ++i) { | 122 | for (unsigned int i=0; i < 1; ++i) |
| 123 | { | ||
| 105 | #else | 124 | #else |
| 106 | for (unsigned int i=0; i<Color::max; ++i) { | 125 | for (unsigned int i=0; i < Color::max; ++i) |
| 126 | { | ||
| 107 | #endif | 127 | #endif |
| 108 | bool connectionAvailable = tcpSrv->waitForNewConnection(-1); | 128 | bool connectionAvailable = tcpSrv->waitForNewConnection(-1); |
| 109 | Q_ASSERT(connectionAvailable); | 129 | Q_ASSERT(connectionAvailable); |
| @@ -124,21 +144,22 @@ void Server::sendUpdate(QSharedPointer< ProtoBuf::MapUpdate > packet) | |||
| 124 | { | 144 | { |
| 125 | std::string dataStr = packet->SerializeAsString(); | 145 | std::string dataStr = packet->SerializeAsString(); |
| 126 | const char *data = dataStr.c_str(); | 146 | const char *data = dataStr.c_str(); |
| 127 | foreach(QTcpSocket *socket, m_clientConnections) { | 147 | foreach(QTcpSocket *socket, m_clientConnections) |
| 128 | Util::sendPacket(data, dataStr.length(), socket); | 148 | Util::sendPacket(data, dataStr.length(), socket); |
| 129 | } | ||
| 130 | } | 149 | } |
| 131 | 150 | ||
| 132 | void Server::keyPressUpdate() | 151 | void Server::keyPressUpdate() |
| 133 | { | 152 | { |
| 134 | qDebug() << "kpress"; | 153 | qDebug() << "kpress"; |
| 135 | QMapIterator<Color::Color, QTcpSocket*> i(m_clientConnections); | 154 | QMapIterator<Color::Color, QTcpSocket*> i(m_clientConnections); |
| 136 | while (i.hasNext()) { | 155 | while (i.hasNext()) |
| 156 | { | ||
| 137 | i.next(); | 157 | i.next(); |
| 138 | Color::Color color = i.key(); | 158 | Color::Color color = i.key(); |
| 139 | QTcpSocket *socket = i.value(); | 159 | QTcpSocket *socket = i.value(); |
| 140 | qDebug() << "data?"; | 160 | qDebug() << "data?"; |
| 141 | if (socket->bytesAvailable() > 0) { | 161 | if (socket->bytesAvailable() > 0) |
| 162 | { | ||
| 142 | qDebug() << "data!"; | 163 | qDebug() << "data!"; |
| 143 | std::string dataStr; | 164 | std::string dataStr; |
| 144 | Util::QByteArrayToStdString(socket->readAll(), dataStr); | 165 | Util::QByteArrayToStdString(socket->readAll(), dataStr); |
| @@ -146,7 +167,7 @@ void Server::keyPressUpdate() | |||
| 146 | packet.ParseFromString(dataStr); | 167 | packet.ParseFromString(dataStr); |
| 147 | Transmission::field_t direction = packet.newkey(); | 168 | Transmission::field_t direction = packet.newkey(); |
| 148 | qDebug() << "data:" << direction; | 169 | qDebug() << "data:" << direction; |
| 149 | m_actorMovements[ color ] = Util::transmissionMovementToActor(direction); | 170 | m_actorMovements[color] = Util::transmissionMovementToActor(direction); |
| 150 | } | 171 | } |
| 151 | } | 172 | } |
| 152 | } | 173 | } |
