src/Network/Server.cc
changeset 239 550397d9d479
parent 224 e6faefba2ec1
child 241 e95b1602d836
equal deleted inserted replaced
238:15193c2bbe2f 239:550397d9d479
    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