diff options
| author | manuel <manuel@mausz.at> | 2011-04-11 14:15:59 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2011-04-11 14:15:59 +0200 |
| commit | c68e77cac9558316ac16d58c0f6b888599ab021a (patch) | |
| tree | 556b4c36fb325a117dd2ff27c472689a82c1a156 /pacman-c++ | |
| parent | 3c2e420d3418f326e091c67673f9eec610e45fc2 (diff) | |
| download | foop-c68e77cac9558316ac16d58c0f6b888599ab021a.tar.gz foop-c68e77cac9558316ac16d58c0f6b888599ab021a.tar.bz2 foop-c68e77cac9558316ac16d58c0f6b888599ab021a.zip | |
- make moving animation a bit smoother (on my computer at least)
- make animation stop after getting blocked
Diffstat (limited to 'pacman-c++')
| -rw-r--r-- | pacman-c++/actor.cpp | 2 | ||||
| -rw-r--r-- | pacman-c++/sceneholder.cpp | 4 | ||||
| -rw-r--r-- | pacman-c++/server.cpp | 27 | ||||
| -rw-r--r-- | pacman-c++/util.cpp | 80 | ||||
| -rw-r--r-- | pacman-c++/util.h | 10 |
5 files changed, 64 insertions, 59 deletions
diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index a97232f..ab860bc 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp | |||
| @@ -89,7 +89,7 @@ QSequentialAnimationGroup *Actor::setupEatingAnimation(Actor::Movement direction | |||
| 89 | fadeout->setEndValue(false); | 89 | fadeout->setEndValue(false); |
| 90 | 90 | ||
| 91 | QPropertyAnimation *move = new QPropertyAnimation(img, "pos", m_moving); | 91 | QPropertyAnimation *move = new QPropertyAnimation(img, "pos", m_moving); |
| 92 | move->setDuration(Constants::tick - 50); //TODO | 92 | move->setDuration(Constants::tick - 30); //TODO |
| 93 | move->setEndValue(QPoint(0, 0)); | 93 | move->setEndValue(QPoint(0, 0)); |
| 94 | } | 94 | } |
| 95 | 95 | ||
diff --git a/pacman-c++/sceneholder.cpp b/pacman-c++/sceneholder.cpp index 49ce6e9..f13bf76 100644 --- a/pacman-c++/sceneholder.cpp +++ b/pacman-c++/sceneholder.cpp | |||
| @@ -89,7 +89,9 @@ void SceneHolder::updateMap(const Transmission::map_t& map) | |||
| 89 | m_actors[color] = actor; | 89 | m_actors[color] = actor; |
| 90 | m_scene->addItem(actor); | 90 | m_scene->addItem(actor); |
| 91 | actor->setPos(mapPositionToCoord(x, y)); | 91 | actor->setPos(mapPositionToCoord(x, y)); |
| 92 | } else { | 92 | } |
| 93 | else | ||
| 94 | { | ||
| 93 | Actor::Movement direction = | 95 | Actor::Movement direction = |
| 94 | Util::transmissionMovementToActor(cur & Transmission::direction_mask); | 96 | Util::transmissionMovementToActor(cur & Transmission::direction_mask); |
| 95 | actor->move(direction); | 97 | actor->move(direction); |
diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 965517e..8b07882 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp | |||
| @@ -35,10 +35,11 @@ Transmission::map_t Server::calculateUpdates() | |||
| 35 | { | 35 | { |
| 36 | Transmission::map_t map = Util::createEmptyMap(); | 36 | Transmission::map_t map = Util::createEmptyMap(); |
| 37 | 37 | ||
| 38 | m_actorMovements[Color::blue] = Actor::Movement( (qrand() % 4) + 1 ); | 38 | //TODO: ai |
| 39 | m_actorMovements[Color::green] = Actor::Movement( (qrand() % 4) + 1 ); | 39 | //m_actorMovements[Color::blue] = Actor::Movement((qrand() % 4) + 1); |
| 40 | //m_actorMovements[Color::green] = Actor::Movement((qrand() % 4) + 1); | ||
| 40 | 41 | ||
| 41 | QMapIterator<Color::Color, Actor::Movement> i(m_actorMovements); | 42 | QMutableMapIterator<Color::Color, Actor::Movement> i(m_actorMovements); |
| 42 | while (i.hasNext()) | 43 | while (i.hasNext()) |
| 43 | { | 44 | { |
| 44 | i.next(); | 45 | i.next(); |
| @@ -90,10 +91,11 @@ Transmission::map_t Server::calculateUpdates() | |||
| 90 | PixmapItem *item = visualMap[newMapPosition.x()][newMapPosition.y()]; | 91 | PixmapItem *item = visualMap[newMapPosition.x()][newMapPosition.y()]; |
| 91 | if (item != NULL && oldItem != item) | 92 | if (item != NULL && oldItem != item) |
| 92 | { | 93 | { |
| 93 | if (! item->checkEnter(actor)) | 94 | if (!item->checkEnter(actor)) |
| 94 | { | 95 | { |
| 95 | // movement invalid | 96 | /* movement invalid. e.g. move against wall */ |
| 96 | newMapPosition = mapPosition; | 97 | newMapPosition = mapPosition; |
| 98 | m_actorMovements[i.key()] = Actor::None; | ||
| 97 | } | 99 | } |
| 98 | else | 100 | else |
| 99 | { | 101 | { |
| @@ -107,12 +109,17 @@ Transmission::map_t Server::calculateUpdates() | |||
| 107 | } | 109 | } |
| 108 | // </t3h g4m2 10gic> | 110 | // </t3h g4m2 10gic> |
| 109 | 111 | ||
| 110 | if (mapPosition != newMapPosition) | 112 | |
| 111 | { | 113 | //map[mapPosition.x()][mapPosition.y()] = Transmission::empty; |
| 112 | //map[mapPosition.x()][mapPosition.y()] = Transmission::empty; | 114 | map[newMapPosition.x()][newMapPosition.y()] |= |
| 113 | map[newMapPosition.x()][newMapPosition.y()] |= | ||
| 114 | Transmission::pacman | i.key() | | 115 | Transmission::pacman | i.key() | |
| 115 | Util::actorMovementToTransmission(i.value()) ; | 116 | Util::actorMovementToTransmission(i.value()); |
| 117 | |||
| 118 | if (i.value() == Actor::None) | ||
| 119 | { | ||
| 120 | /* set actor to non-moving */ | ||
| 121 | m_actorMovements[i.key()] = Actor::None; | ||
| 122 | i.remove(); | ||
| 116 | } | 123 | } |
| 117 | } | 124 | } |
| 118 | return map; | 125 | return map; |
diff --git a/pacman-c++/util.cpp b/pacman-c++/util.cpp index 3d04d9f..e82c961 100644 --- a/pacman-c++/util.cpp +++ b/pacman-c++/util.cpp | |||
| @@ -93,56 +93,52 @@ namespace Util | |||
| 93 | { | 93 | { |
| 94 | switch (mov) | 94 | switch (mov) |
| 95 | { | 95 | { |
| 96 | case Actor::None: | 96 | case Actor::None: |
| 97 | return Transmission::direction_none; | 97 | return Transmission::direction_none; |
| 98 | break; | 98 | break; |
| 99 | case Actor::Left: | 99 | case Actor::Left: |
| 100 | return Transmission::direction_left; | 100 | return Transmission::direction_left; |
| 101 | break; | 101 | break; |
| 102 | case Actor::Right: | 102 | case Actor::Right: |
| 103 | return Transmission::direction_right; | 103 | return Transmission::direction_right; |
| 104 | break; | 104 | break; |
| 105 | case Actor::Up: | 105 | case Actor::Up: |
| 106 | return Transmission::direction_up; | 106 | return Transmission::direction_up; |
| 107 | break; | 107 | break; |
| 108 | case Actor::Down: | 108 | case Actor::Down: |
| 109 | return Transmission::direction_down; | 109 | return Transmission::direction_down; |
| 110 | break; | 110 | break; |
| 111 | default: | 111 | default: |
| 112 | if (def == static_cast<Transmission::field_t>(-1)) | 112 | return def; |
| 113 | Q_ASSERT(false); | 113 | break; |
| 114 | else | ||
| 115 | return def; | ||
| 116 | } | 114 | } |
| 117 | return 0; // for pleasing the compiler | 115 | return def; |
| 118 | } | 116 | } |
| 119 | 117 | ||
| 120 | Actor::Movement transmissionMovementToActor(Transmission::field_t field, Actor::Movement def) | 118 | Actor::Movement transmissionMovementToActor(Transmission::field_t field, Actor::Movement def) |
| 121 | { | 119 | { |
| 122 | switch (field) | 120 | switch (field) |
| 123 | { | 121 | { |
| 124 | case Transmission::direction_none: | 122 | case Transmission::direction_none: |
| 125 | return Actor::None; | 123 | return Actor::None; |
| 126 | break; | 124 | break; |
| 127 | case Transmission::direction_left: | 125 | case Transmission::direction_left: |
| 128 | return Actor::Left; | 126 | return Actor::Left; |
| 129 | break; | 127 | break; |
| 130 | case Transmission::direction_right: | 128 | case Transmission::direction_right: |
| 131 | return Actor::Right; | 129 | return Actor::Right; |
| 132 | break; | 130 | break; |
| 133 | case Transmission::direction_up: | 131 | case Transmission::direction_up: |
| 134 | return Actor::Up; | 132 | return Actor::Up; |
| 135 | break; | 133 | break; |
| 136 | case Transmission::direction_down: | 134 | case Transmission::direction_down: |
| 137 | return Actor::Down; | 135 | return Actor::Down; |
| 138 | break; | 136 | break; |
| 139 | default: | 137 | default: |
| 140 | if (def == Actor::Movement(-1)) | 138 | return def; |
| 141 | Q_ASSERT(false); | 139 | break; |
| 142 | else | ||
| 143 | return def; | ||
| 144 | } | 140 | } |
| 145 | return Actor::None; // for pleasing the compiler | 141 | return def; |
| 146 | } | 142 | } |
| 147 | 143 | ||
| 148 | void QByteArrayToStdString(const QByteArray& arr, std::string& str) | 144 | void QByteArrayToStdString(const QByteArray& arr, std::string& str) |
diff --git a/pacman-c++/util.h b/pacman-c++/util.h index 1422dee..f68af67 100644 --- a/pacman-c++/util.h +++ b/pacman-c++/util.h | |||
| @@ -13,11 +13,11 @@ namespace Util | |||
| 13 | Transmission::map_t createDemoMap(); | 13 | Transmission::map_t createDemoMap(); |
| 14 | Transmission::map_t createEmptyMap(); | 14 | Transmission::map_t createEmptyMap(); |
| 15 | 15 | ||
| 16 | // default is to assert false with -1 | 16 | // default is to assert false with -1 |
| 17 | Transmission::field_t actorMovementToTransmission(Actor::Movement mov, | 17 | Transmission::field_t actorMovementToTransmission(Actor::Movement mov, |
| 18 | Transmission::field_t def = -1); | 18 | Transmission::field_t def = Transmission::none); |
| 19 | Actor::Movement transmissionMovementToActor(Transmission::field_t field, | 19 | Actor::Movement transmissionMovementToActor(Transmission::field_t field, |
| 20 | Actor::Movement def = Actor::Movement(-1)); | 20 | Actor::Movement def = Actor::None); |
| 21 | 21 | ||
| 22 | void QByteArrayToStdString(const QByteArray& arr, std::string& str); | 22 | void QByteArrayToStdString(const QByteArray& arr, std::string& str); |
| 23 | 23 | ||
