@@ -407,15 +407,7 @@ void Client::step(float dtime)
407
407
snprintf (pName, PLAYERNAME_SIZE, " %s" , myplayer->getName ());
408
408
snprintf (pPassword, PASSWORD_SIZE, " %s" , m_password.c_str ());
409
409
410
- NetworkPacket pkt (TOSERVER_INIT_LEGACY,
411
- 1 + PLAYERNAME_SIZE + PASSWORD_SIZE + 2 + 2 );
412
-
413
- pkt << (u8) SER_FMT_VER_HIGHEST_READ;
414
- pkt.putRawString (pName,PLAYERNAME_SIZE);
415
- pkt.putRawString (pPassword, PASSWORD_SIZE);
416
- pkt << (u16) CLIENT_PROTOCOL_VERSION_MIN << (u16) CLIENT_PROTOCOL_VERSION_MAX;
417
-
418
- Send (&pkt);
410
+ sendLegacyInit (pName, pPassword);
419
411
}
420
412
421
413
// Not connected, return
@@ -455,19 +447,8 @@ void Client::step(float dtime)
455
447
[3+6] v3s16 pos_1
456
448
...
457
449
*/
458
- NetworkPacket pkt (TOSERVER_DELETEDBLOCKS, 1 + sizeof (v3s16) * sendlist.size ());
459
-
460
- pkt << (u8) sendlist.size ();
461
-
462
- u32 k = 0 ;
463
- for (std::vector<v3s16>::iterator
464
- j = sendlist.begin ();
465
- j != sendlist.end (); ++j) {
466
- pkt << *j;
467
- k++;
468
- }
469
450
470
- Send (&pkt );
451
+ sendDeletedBlocks (sendlist );
471
452
472
453
if (i == deleted_blocks.end ())
473
454
break ;
@@ -575,9 +556,7 @@ void Client::step(float dtime)
575
556
[0] u8 count
576
557
[1] v3s16 pos_0
577
558
*/
578
- NetworkPacket pkt (TOSERVER_GOTBLOCKS, 1 + 6 );
579
- pkt << (u8) 1 << r.p ;
580
- Send (&pkt);
559
+ sendGotBlocks (r.p );
581
560
}
582
561
}
583
562
@@ -646,7 +625,7 @@ void Client::step(float dtime)
646
625
if (m_removed_sounds_check_timer >= 2.32 ) {
647
626
m_removed_sounds_check_timer = 0 ;
648
627
// Find removed sounds and clear references to them
649
- std::set <s32> removed_server_ids;
628
+ std::vector <s32> removed_server_ids;
650
629
for (std::map<s32, int >::iterator
651
630
i = m_sounds_server_to_client.begin ();
652
631
i != m_sounds_server_to_client.end ();) {
@@ -657,24 +636,13 @@ void Client::step(float dtime)
657
636
m_sounds_server_to_client.erase (server_id);
658
637
m_sounds_client_to_server.erase (client_id);
659
638
m_sounds_to_objects.erase (client_id);
660
- removed_server_ids.insert (server_id);
639
+ removed_server_ids.push_back (server_id);
661
640
}
662
641
}
663
642
664
643
// Sync to server
665
644
if (!removed_server_ids.empty ()) {
666
- size_t server_ids = removed_server_ids.size ();
667
- assert (server_ids <= 0xFFFF );
668
-
669
- NetworkPacket pkt (TOSERVER_REMOVED_SOUNDS, 2 + server_ids * 4 );
670
-
671
- pkt << (u16) (server_ids & 0xFFFF );
672
-
673
- for (std::set<s32>::iterator i = removed_server_ids.begin ();
674
- i != removed_server_ids.end (); i++)
675
- pkt << *i;
676
-
677
- Send (&pkt);
645
+ sendRemovedSounds (removed_server_ids);
678
646
}
679
647
}
680
648
@@ -983,6 +951,59 @@ void Client::interact(u8 action, const PointedThing& pointed)
983
951
Send (&pkt);
984
952
}
985
953
954
+ void Client::sendLegacyInit (const char * playerName, const char * playerPassword)
955
+ {
956
+ NetworkPacket pkt (TOSERVER_INIT_LEGACY,
957
+ 1 + PLAYERNAME_SIZE + PASSWORD_SIZE + 2 + 2 );
958
+
959
+ pkt << (u8) SER_FMT_VER_HIGHEST_READ;
960
+ pkt.putRawString (playerName,PLAYERNAME_SIZE);
961
+ pkt.putRawString (playerPassword, PASSWORD_SIZE);
962
+ pkt << (u16) CLIENT_PROTOCOL_VERSION_MIN << (u16) CLIENT_PROTOCOL_VERSION_MAX;
963
+
964
+ Send (&pkt);
965
+ }
966
+
967
+ void Client::sendDeletedBlocks (std::vector<v3s16> &blocks)
968
+ {
969
+ NetworkPacket pkt (TOSERVER_DELETEDBLOCKS, 1 + sizeof (v3s16) * blocks.size ());
970
+
971
+ pkt << (u8) blocks.size ();
972
+
973
+ u32 k = 0 ;
974
+ for (std::vector<v3s16>::iterator
975
+ j = blocks.begin ();
976
+ j != blocks.end (); ++j) {
977
+ pkt << *j;
978
+ k++;
979
+ }
980
+
981
+ Send (&pkt);
982
+ }
983
+
984
+ void Client::sendGotBlocks (v3s16 block)
985
+ {
986
+ NetworkPacket pkt (TOSERVER_GOTBLOCKS, 1 + 6 );
987
+ pkt << (u8) 1 << block;
988
+ Send (&pkt);
989
+ }
990
+
991
+ void Client::sendRemovedSounds (std::vector<s32> &soundList)
992
+ {
993
+ size_t server_ids = soundList.size ();
994
+ assert (server_ids <= 0xFFFF );
995
+
996
+ NetworkPacket pkt (TOSERVER_REMOVED_SOUNDS, 2 + server_ids * 4 );
997
+
998
+ pkt << (u16) (server_ids & 0xFFFF );
999
+
1000
+ for (std::vector<s32>::iterator i = soundList.begin ();
1001
+ i != soundList.end (); i++)
1002
+ pkt << *i;
1003
+
1004
+ Send (&pkt);
1005
+ }
1006
+
986
1007
void Client::sendNodemetaFields (v3s16 p, const std::string &formname,
987
1008
const std::map<std::string, std::string> &fields)
988
1009
{
0 commit comments