summaryrefslogtreecommitdiffstats
path: root/pacman-c++
diff options
context:
space:
mode:
Diffstat (limited to 'pacman-c++')
-rw-r--r--pacman-c++/actor.cpp2
-rw-r--r--pacman-c++/sceneholder.cpp4
-rw-r--r--pacman-c++/server.cpp27
-rw-r--r--pacman-c++/util.cpp80
-rw-r--r--pacman-c++/util.h10
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