87 |
87 |
88 // and carry out the actual dig on the server as well |
88 // and carry out the actual dig on the server as well |
89 Player::handleDig(position, radius); |
89 Player::handleDig(position, radius); |
90 } |
90 } |
91 |
91 |
92 void NetworkServerPlayer::handleCreateProjectile (Weapon &weapon, Vector position, Vector velocity) { |
92 void NetworkServerPlayer::handleCreateProjectile (Weapon *weapon, Vector position, Vector velocity) { |
93 Engine::log(INFO, "server_player.create_projectile") << /* "weapon=" << weapon << ", */ "position=" << position << ", velocity=" << velocity; |
93 Engine::log(INFO, "server_player.create_projectile") << "weapon='" << weapon->getName() << "', position=" << position << ", velocity=" << velocity; |
94 |
94 |
95 // create new NetworkServerProjectile object |
95 // create new NetworkServerProjectile object |
96 new NetworkServerProjectile(server, position, velocity, weapon.getExplosionRadius(), weapon.getExpireTicks()); |
96 new NetworkServerProjectile(server, position, velocity, weapon->getExplosionRadius(), weapon->getExpireTicks()); |
|
97 } |
|
98 |
|
99 void NetworkServerPlayer::handleChangeWeapon (unsigned int weaponIndex) { |
|
100 NetworkPacket pkt; |
|
101 |
|
102 Engine::log(INFO, "server_player.change_weapon") << "weaponIndex=" << weaponIndex; |
|
103 |
|
104 // write packet |
|
105 pkt.write_uint8(weaponIndex); |
|
106 |
|
107 // XXX: only tell the client itself? |
|
108 obj.send_all(NETMSG_PLAYER_WEAPON_CHANGE, pkt, true); |
|
109 |
|
110 // pass through |
|
111 Player::handleChangeWeapon(weaponIndex); |
97 } |
112 } |
98 |
113 |
99 void NetworkServerPlayer::on_disconnected (void) { |
114 void NetworkServerPlayer::on_disconnected (void) { |
100 NetworkPacket pkt; |
115 NetworkPacket pkt; |
101 |
116 |
116 if (src != node) { |
131 if (src != node) { |
117 Engine::log(WARN, "server_player.on_input") << "packet from wrong src=" << src << ", node=" << node; |
132 Engine::log(WARN, "server_player.on_input") << "packet from wrong src=" << src << ", node=" << node; |
118 return; |
133 return; |
119 } |
134 } |
120 |
135 |
|
136 // read packet |
121 PlayerInput input = pkt.read_uint16(); |
137 PlayerInput input = pkt.read_uint16(); |
122 |
138 |
123 Engine::log(INFO, "server_player.on_input") << "player=" << obj << ", old_pos=" << position << ", input=" << input; |
139 Engine::log(INFO, "server_player.on_input") << "player=" << obj << ", old_pos=" << position << ", input=" << input; |
124 |
140 |
125 // apply input |
141 // apply input |