1#include "protocolglue.h"
2
3#include <base/system.h>
4
5#include <engine/shared/network.h>
6
7#include <generated/protocol.h>
8#include <generated/protocol7.h>
9#include <generated/protocolglue.h>
10
11namespace protocol7
12{
13 enum
14 {
15 NET_PACKETFLAG_CONTROL = 1 << 0,
16 NET_PACKETFLAG_RESEND = 1 << 1,
17 NET_PACKETFLAG_COMPRESSION = 1 << 2,
18 };
19
20}
21
22int PacketFlags_SixToSeven(int Flags)
23{
24 int Seven = 0;
25 if(Flags & ::NET_PACKETFLAG_CONTROL)
26 Seven |= protocol7::NET_PACKETFLAG_CONTROL;
27 if(Flags & ::NET_PACKETFLAG_RESEND)
28 Seven |= protocol7::NET_PACKETFLAG_RESEND;
29 if(Flags & ::NET_PACKETFLAG_COMPRESSION)
30 Seven |= protocol7::NET_PACKETFLAG_COMPRESSION;
31 return Seven;
32}
33
34int PacketFlags_SevenToSix(int Flags)
35{
36 int Six = 0;
37 if(Flags & protocol7::NET_PACKETFLAG_CONTROL)
38 Six |= ::NET_PACKETFLAG_CONTROL;
39 if(Flags & protocol7::NET_PACKETFLAG_RESEND)
40 Six |= ::NET_PACKETFLAG_RESEND;
41 if(Flags & protocol7::NET_PACKETFLAG_COMPRESSION)
42 Six |= ::NET_PACKETFLAG_COMPRESSION;
43 return Six;
44}
45
46int GameFlags_ClampToSix(int Flags)
47{
48 int Six = 0;
49 if(Flags & GAMEFLAG_TEAMS)
50 Six |= GAMEFLAG_TEAMS;
51 if(Flags & GAMEFLAG_FLAGS)
52 Six |= GAMEFLAG_FLAGS;
53 return Six;
54}
55
56int PlayerFlags_SevenToSix(int Flags)
57{
58 int Six = 0;
59 if(Flags & protocol7::PLAYERFLAG_CHATTING)
60 Six |= PLAYERFLAG_CHATTING;
61 if(Flags & protocol7::PLAYERFLAG_SCOREBOARD)
62 Six |= PLAYERFLAG_SCOREBOARD;
63 if(Flags & protocol7::PLAYERFLAG_AIM)
64 Six |= PLAYERFLAG_AIM;
65 return Six;
66}
67
68int PlayerFlags_SixToSeven(int Flags)
69{
70 int Seven = 0;
71 if(Flags & PLAYERFLAG_CHATTING)
72 Seven |= protocol7::PLAYERFLAG_CHATTING;
73 if(Flags & PLAYERFLAG_SCOREBOARD)
74 Seven |= protocol7::PLAYERFLAG_SCOREBOARD;
75 if(Flags & PLAYERFLAG_AIM)
76 Seven |= protocol7::PLAYERFLAG_AIM;
77 return Seven;
78}
79
80void PickupType_SevenToSix(int Type7, int &Type6, int &SubType6)
81{
82 SubType6 = 0;
83 Type6 = POWERUP_WEAPON;
84 switch(Type7)
85 {
86 case protocol7::PICKUP_HEALTH:
87 case protocol7::PICKUP_ARMOR:
88 Type6 = Type7;
89 break;
90 case protocol7::PICKUP_GRENADE:
91 SubType6 = WEAPON_GRENADE;
92 break;
93 case protocol7::PICKUP_SHOTGUN:
94 SubType6 = WEAPON_SHOTGUN;
95 break;
96 case protocol7::PICKUP_LASER:
97 SubType6 = WEAPON_LASER;
98 break;
99 case protocol7::PICKUP_GUN:
100 SubType6 = WEAPON_GUN;
101 break;
102 case protocol7::PICKUP_HAMMER:
103 SubType6 = WEAPON_HAMMER;
104 break;
105 case protocol7::PICKUP_NINJA:
106 SubType6 = WEAPON_NINJA;
107 Type6 = POWERUP_NINJA;
108 break;
109 default:
110 // dbg_msg("sixup", "ERROR: failed to translate weapon=%d to 0.6", Type7);
111 break;
112 }
113}
114
115int PickupType_SixToSeven(int Type6, int SubType6)
116{
117 switch(Type6)
118 {
119 case POWERUP_WEAPON:
120 switch(SubType6)
121 {
122 case WEAPON_HAMMER: return protocol7::PICKUP_HAMMER;
123 case WEAPON_GUN: return protocol7::PICKUP_GUN;
124 case WEAPON_SHOTGUN: return protocol7::PICKUP_SHOTGUN;
125 case WEAPON_GRENADE: return protocol7::PICKUP_GRENADE;
126 case WEAPON_LASER: return protocol7::PICKUP_LASER;
127 case WEAPON_NINJA: return protocol7::PICKUP_NINJA;
128 default:
129 dbg_assert_failed("invalid subtype %d", SubType6);
130 }
131 case POWERUP_NINJA: return protocol7::PICKUP_NINJA;
132 case POWERUP_HEALTH: return protocol7::PICKUP_HEALTH;
133 case POWERUP_ARMOR:
134 case POWERUP_ARMOR_SHOTGUN:
135 case POWERUP_ARMOR_GRENADE:
136 case POWERUP_ARMOR_NINJA:
137 case POWERUP_ARMOR_LASER:
138 return protocol7::PICKUP_ARMOR;
139 default:
140 dbg_assert_failed("invalid type %d", Type6);
141 }
142}
143