*Descriere:
Metin2 C++26 - Automatic Packet Registration cu Reflection
Aceasta implementare automatizeaza inregistrarea packet-urilor Metin2 folosind C++26 Reflection si annotations. Nu mai trebuie sa adaugi manual cate un Set in constructorul CPacketInfoCG pentru fiecare packet nou.
- packet-urile sunt gasite automat la compile-time;
- configurarea se face direct prin annotation;
- reduce sansele sa uiti inregistrarea unui packet;
- permite verificari suplimentare pentru packet-uri;
- necesita C++26 si GCC 16.
*Link download / Code:
Pentru aceasta implementare ai nevoie de C++26 si GCC 16.
Descarca fisierul refl.hpp:
Implementarea foloseste un metadata struct pentru informatiile packet-ului, precum header-ul, numele, sequence-ul si daca packet-ul este dynamic.
Pentru un packet nou, in loc sa adaugi manual Set in CPacketInfoCG, packet-ul primeste annotation direct pe structura sa.
Exemplu de annotation:
Packet-urile sunt tinute intr-un namespace comun, iar functia collect_packets foloseste C++26 Reflection pentru a cauta tipurile care contin metadata PacketMeta.
Lista este generata la compile-time si salvata in packet_list.
Functia register_one citeste metadata packet-ului si apeleaza automat CNetworkPacketHeaderMap::Set.
In final, functia de register parcurge lista generata la compile-time si inregistreaza toate packet-urile gasite.
Mock-ul complet oferit de autor poate fi gasit aici:
Astfel, cand adaugi un packet nou, nu mai trebuie sa modifici manual constructorul CPacketInfoCG. Este suficient ca structura packet-ului sa aiba annotation-ul necesar.
Metin2 C++26 - Automatic Packet Registration cu Reflection
Aceasta implementare automatizeaza inregistrarea packet-urilor Metin2 folosind C++26 Reflection si annotations. Nu mai trebuie sa adaugi manual cate un Set in constructorul CPacketInfoCG pentru fiecare packet nou.
- packet-urile sunt gasite automat la compile-time;
- configurarea se face direct prin annotation;
- reduce sansele sa uiti inregistrarea unui packet;
- permite verificari suplimentare pentru packet-uri;
- necesita C++26 si GCC 16.
*Link download / Code:
Pentru aceasta implementare ai nevoie de C++26 si GCC 16.
Descarca fisierul refl.hpp:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Implementarea foloseste un metadata struct pentru informatiile packet-ului, precum header-ul, numele, sequence-ul si daca packet-ul este dynamic.
Pentru un packet nou, in loc sa adaugi manual Set in CPacketInfoCG, packet-ul primeste annotation direct pe structura sa.
Exemplu de annotation:
Cod: Selectaţi tot
struct[[= PacketMeta{HEADER_CG_JOIN, "ArenaJoin"}]] CGArenaJoinPacket-urile sunt tinute intr-un namespace comun, iar functia collect_packets foloseste C++26 Reflection pentru a cauta tipurile care contin metadata PacketMeta.
Lista este generata la compile-time si salvata in packet_list.
Functia register_one citeste metadata packet-ului si apeleaza automat CNetworkPacketHeaderMap::Set.
In final, functia de register parcurge lista generata la compile-time si inregistreaza toate packet-urile gasite.
Mock-ul complet oferit de autor poate fi gasit aici:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Astfel, cand adaugi un packet nou, nu mai trebuie sa modifici manual constructorul CPacketInfoCG. Este suficient ca structura packet-ului sa aiba annotation-ul necesar.



