From 9b7e6bab7633d3ac2bb5a4c1c0bf53a5d845a875 Mon Sep 17 00:00:00 2001 From: XP-Cagey Date: Tue, 10 May 2005 15:18:45 +0000 Subject: [PATCH] Added playtest configurations to win32 build Added #define AVH_NO_NEXUS to compile NS without Nexus Temporarily #define'd AVH_PLAYTEST_BUILD to automatically #define AVH_NO_NEXUS Fixed Balance.h ordering issues that became apparent when BALANCE_ENABLED is #define'd. git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@106 67975925-1194-0748-b3d5-c16f83f1a3a1 --- main/source/cl_dll/cl_dll.vcproj | 2428 ++++++++++++++++++++++++++++ main/source/dlls/hl.vcproj | 2068 ++++++++++++++++++++++- main/source/mod/AvHNexusClient.cpp | 233 +-- main/source/mod/AvHNexusServer.cpp | 393 ++--- main/source/util/Balance.h | 72 +- 5 files changed, 4866 insertions(+), 328 deletions(-) diff --git a/main/source/cl_dll/cl_dll.vcproj b/main/source/cl_dll/cl_dll.vcproj index 9aafede..1af1434 100644 --- a/main/source/cl_dll/cl_dll.vcproj +++ b/main/source/cl_dll/cl_dll.vcproj @@ -170,6 +170,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -193,6 +339,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -210,6 +370,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -227,6 +401,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -244,6 +432,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -261,6 +463,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -278,6 +494,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -295,6 +525,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -312,6 +556,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -329,6 +587,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -346,6 +618,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -363,6 +649,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -380,6 +680,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -397,6 +711,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -414,6 +742,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -431,6 +773,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -448,6 +804,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -465,6 +835,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -482,6 +866,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -499,6 +897,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -516,6 +928,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -533,6 +959,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -550,6 +990,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -567,6 +1021,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -584,6 +1052,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -601,6 +1083,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -618,6 +1114,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -635,6 +1145,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -654,6 +1178,22 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -671,6 +1211,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -688,6 +1242,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -705,6 +1273,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -722,6 +1304,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -739,6 +1335,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -756,6 +1366,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -773,6 +1397,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -790,6 +1428,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -807,6 +1459,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -824,6 +1490,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -841,6 +1521,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -858,6 +1552,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -875,6 +1583,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -892,6 +1614,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -909,6 +1645,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -926,6 +1676,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -943,6 +1707,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -960,6 +1738,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -977,6 +1769,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -994,6 +1800,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1011,6 +1831,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1028,6 +1862,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1045,6 +1893,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1062,6 +1924,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1079,6 +1955,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1096,6 +1986,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1113,6 +2017,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1130,6 +2048,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1147,6 +2079,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1164,6 +2110,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1181,6 +2141,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1198,6 +2172,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1215,6 +2203,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1232,6 +2234,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1249,6 +2265,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1266,6 +2296,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + + + + + + + @@ -1303,6 +2361,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1320,6 +2392,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1337,6 +2423,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1354,6 +2454,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1378,6 +2492,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1395,6 +2523,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1421,6 +2563,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1441,6 +2597,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1458,6 +2628,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1475,6 +2659,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1492,6 +2690,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1509,6 +2721,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1526,6 +2752,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1543,6 +2783,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1560,6 +2814,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1577,6 +2845,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1594,6 +2876,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1611,6 +2907,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1628,6 +2938,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1645,6 +2969,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1662,6 +3000,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1679,6 +3031,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1705,6 +3071,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1722,6 +3102,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1739,6 +3133,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1756,6 +3164,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1773,6 +3195,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1790,6 +3226,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1807,6 +3257,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1824,6 +3288,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1841,6 +3319,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1858,6 +3350,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1875,6 +3381,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1892,6 +3412,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1909,6 +3443,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -1926,6 +3474,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2124,6 +3686,18 @@ Name="VCCLCompilerTool" ObjectFile="$(IntDir)/$(InputName)1.obj"/> + + + + + + @@ -2145,6 +3719,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2166,6 +3754,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2184,6 +3786,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2211,6 +3827,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2238,6 +3868,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2259,6 +3903,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2289,6 +3947,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2310,6 +3982,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2334,6 +4020,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2355,6 +4055,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2376,6 +4090,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2397,6 +4125,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2418,6 +4160,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2439,6 +4195,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2460,6 +4230,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2484,6 +4268,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2504,6 +4302,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2524,6 +4336,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2544,6 +4370,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2564,6 +4404,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2581,6 +4435,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2601,6 +4469,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2621,6 +4503,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2647,6 +4543,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2667,6 +4577,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2684,6 +4608,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2704,6 +4642,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2721,6 +4673,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2744,6 +4710,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2761,6 +4741,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2781,6 +4775,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2801,6 +4809,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2821,6 +4843,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2859,6 +4895,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2879,6 +4929,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2899,6 +4963,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2919,6 +4997,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2939,6 +5031,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2959,6 +5065,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2979,6 +5099,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -2996,6 +5130,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3016,6 +5164,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3033,6 +5195,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3053,6 +5229,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3070,6 +5260,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3090,6 +5294,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3110,6 +5328,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3130,6 +5362,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3150,6 +5396,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3170,6 +5430,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3196,6 +5470,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3222,6 +5510,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3242,6 +5544,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3262,6 +5578,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3288,6 +5618,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3308,6 +5652,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3331,6 +5689,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3351,6 +5723,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3371,6 +5757,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3391,6 +5791,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + @@ -3411,6 +5825,20 @@ Optimization="2" AdditionalIncludeDirectories=""/> + + + + + + diff --git a/main/source/dlls/hl.vcproj b/main/source/dlls/hl.vcproj index 267a827..ef09227 100644 --- a/main/source/dlls/hl.vcproj +++ b/main/source/dlls/hl.vcproj @@ -47,7 +47,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -186,6 +334,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -203,6 +365,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -220,6 +396,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -237,6 +427,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -254,6 +458,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -271,6 +489,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -288,6 +520,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -305,6 +551,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -322,6 +582,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -339,6 +613,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -356,6 +644,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -373,6 +675,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -390,6 +706,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -407,6 +737,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -424,6 +768,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -441,6 +799,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -458,6 +830,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -475,6 +861,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -492,6 +892,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -509,6 +923,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -526,6 +954,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -543,6 +985,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -560,6 +1016,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -577,6 +1047,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -594,6 +1078,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -611,6 +1109,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -628,6 +1140,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -645,6 +1171,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -662,6 +1202,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -679,6 +1233,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -696,6 +1264,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -713,6 +1295,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -730,6 +1326,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -747,6 +1357,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -764,6 +1388,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -781,6 +1419,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -798,6 +1450,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -815,6 +1481,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -832,6 +1512,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -849,6 +1543,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -866,6 +1574,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -883,6 +1605,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -900,6 +1636,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -917,6 +1667,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -934,6 +1698,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -951,6 +1729,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -968,6 +1760,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -985,6 +1791,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1002,6 +1822,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1019,6 +1853,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1036,6 +1884,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1053,6 +1915,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + + + + + + + @@ -1233,6 +2123,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1256,6 +2160,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1276,6 +2194,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1296,6 +2228,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1313,6 +2259,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1333,6 +2293,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1353,6 +2327,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1373,6 +2361,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1393,6 +2395,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1422,6 +2438,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1442,6 +2472,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1462,6 +2506,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1482,6 +2540,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1502,6 +2574,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1522,6 +2608,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1542,6 +2642,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1562,6 +2676,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1582,6 +2710,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1602,6 +2744,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1640,6 +2796,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1660,6 +2830,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1680,6 +2864,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1700,6 +2898,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1720,6 +2932,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1740,6 +2966,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1760,6 +3000,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1780,6 +3034,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1797,6 +3065,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1814,6 +3096,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1834,6 +3130,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1854,6 +3164,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1877,6 +3201,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1900,6 +3238,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1920,6 +3272,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1940,6 +3306,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1960,6 +3340,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -1980,6 +3374,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2000,6 +3408,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2026,6 +3448,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2052,6 +3488,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2072,6 +3522,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2092,6 +3556,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2112,6 +3590,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2132,6 +3624,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2158,6 +3664,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2178,6 +3698,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2201,6 +3735,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2218,6 +3766,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2244,6 +3806,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2264,6 +3840,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2281,6 +3871,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2298,6 +3902,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2315,6 +3933,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2332,6 +3964,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2349,6 +3995,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2366,6 +4026,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2383,6 +4057,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2400,6 +4088,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2417,6 +4119,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2434,6 +4150,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2451,6 +4181,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2468,6 +4212,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2485,6 +4243,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2502,6 +4274,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2528,6 +4314,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2545,6 +4345,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2562,6 +4376,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2579,6 +4407,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2596,6 +4438,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2613,6 +4469,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2630,6 +4500,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2647,6 +4531,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2664,6 +4562,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2681,6 +4593,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2698,6 +4624,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2715,6 +4655,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2732,6 +4686,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2749,6 +4717,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2766,6 +4748,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + + + + + + + @@ -2810,6 +4820,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2830,6 +4854,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2850,6 +4888,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + @@ -2870,6 +4922,20 @@ Optimization="0" AdditionalIncludeDirectories=""/> + + + + + + diff --git a/main/source/mod/AvHNexusClient.cpp b/main/source/mod/AvHNexusClient.cpp index ccbbd8b..dc64b9e 100644 --- a/main/source/mod/AvHNexusClient.cpp +++ b/main/source/mod/AvHNexusClient.cpp @@ -1,119 +1,138 @@ -#include -#include "AvHNexusClient.h" -#include "AvHNexusTunnelToServer.h" -#include "cl_dll/hud.h" -#include "cl_dll/cl_util.h" +#ifdef AVH_PLAYTEST_BUILD + #define AVH_NO_NEXUS +#endif -string BASE64Encode(const byte_string& input); -int __MsgFunc_NexusData(const char *pszName, int iSize, void *pbuf); +#ifdef AVH_NO_NEXUS + #include + using std::string; + #include "AvHNexusClient.h" -bool AvHNexus::send(const unsigned char* data, const size_t length) -{ - byte_string raw_data(data,length); + bool AvHNexus::send(const unsigned char* data, const size_t length) { return false; } + bool AvHNexus::recv(const unsigned char* data, const size_t length) { return false; } - string cmdline("NexusData "); - cmdline += BASE64Encode(raw_data); - cmdline += "\n"; + void AvHNexus::startup(void) {} + void AvHNexus::shutdown(void) {} - //ugliness due to pfnClientCmd wanting a non-const ptr - char* ptr = new char[cmdline.length()+1]; - strncpy(ptr,cmdline.c_str(),cmdline.length()); - ptr[cmdline.length()] = '\0'; - gEngfuncs.pfnClientCmd(ptr); - delete[] ptr; + bool AvHNexus::login(const string& name, const string& password) { return true; } + bool AvHNexus::logout(void) { return true; } +#else + #include + #include "AvHNexusClient.h" + #include "AvHNexusTunnelToServer.h" + #include "cl_dll/hud.h" + #include "cl_dll/cl_util.h" - return true; -} + string BASE64Encode(const byte_string& input); + int __MsgFunc_NexusData(const char *pszName, int iSize, void *pbuf); -bool AvHNexus::recv(const unsigned char* data, const size_t length) -{ - byte_string raw_data(data,length); - AvHNexus::TunnelToServer::getInstance()->insertMessage(raw_data); - return true; -} - -void AvHNexus::startup(void) -{ - gEngfuncs.pfnHookUserMsg("NexusBytes", __MsgFunc_NexusData); -// Nexus::setTunnelToServer(AvHNexus::TunnelToServer::getInstance()); -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Incominng message handler -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -int __MsgFunc_NexusData(const char *pszName, int iSize, void *pbuf) -{ - AvHNexus::recv((unsigned char*)pbuf, iSize); - return iSize; -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Base 64 encoder -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -char Base64EncodeTable[65] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0- 7 - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 8-15 - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', //16-23 - 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', //24-31 - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', //32-39 - 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', //40-47 - 'w', 'x', 'y', 'z', '0', '1', '2', '3', //48-55 - '4', '5', '6', '7', '8', '9', '+', '/', //56-63 - '=' }; //64 = padding - -//debugged and working properly... do not disturb. -string BASE64Encode(const byte_string& input) -{ - string output; - const byte* data = input.c_str(); - size_t length = input.length(); - int value, value2; - - //handle input in 3 byte blocks - while( length > 2 ) + bool AvHNexus::send(const unsigned char* data, const size_t length) { - value = data[0]; value >>= 2; - output.push_back(Base64EncodeTable[value]); - value = data[0]; value2 = data[1]; - value &= 0x03; value <<= 4; - value2 &= 0xF0; value2 >>= 4; value |= value2; - output.push_back(Base64EncodeTable[value]); - value = data[1]; value2 = data[2]; - value &= 0x0F; value <<= 2; - value2 &= 0xC0; value2 >>= 6; value |= value2; - output.push_back(Base64EncodeTable[value]); - value = data[2]; value &= 0x3F; - output.push_back(Base64EncodeTable[value]); - data += 3; length -= 3; + byte_string raw_data(data,length); + + string cmdline("NexusData "); + cmdline += BASE64Encode(raw_data); + cmdline += "\n"; + + //ugliness due to pfnClientCmd wanting a non-const ptr + char* ptr = new char[cmdline.length()+1]; + strncpy(ptr,cmdline.c_str(),cmdline.length()); + ptr[cmdline.length()] = '\0'; + gEngfuncs.pfnClientCmd(ptr); + delete[] ptr; + + return true; } - //handle remainder - switch(length) + bool AvHNexus::recv(const unsigned char* data, const size_t length) { - case 0: //no remainder to process - break; - case 1: //process and pad with two = - value = data[0]; value >>= 2; - output.push_back(Base64EncodeTable[value]); - value = data[0]; value &= 0x03; value <<= 4; - output.push_back(Base64EncodeTable[value]); - output.push_back(Base64EncodeTable[64]); - output.push_back(Base64EncodeTable[64]); - break; - case 2: //process and pad with one = - value = data[0]; value >>= 2; - output.push_back(Base64EncodeTable[value]); - value = data[0]; value2 = data[1]; - value &= 0x03; value <<= 4; - value2 &= 0xF0; value2 >>= 4; value |= value2; - output.push_back(Base64EncodeTable[value]); - value = data[1]; value &= 0x0F; value <<= 2; - output.push_back(Base64EncodeTable[value]); - output.push_back(Base64EncodeTable[64]); - break; + byte_string raw_data(data,length); + AvHNexus::TunnelToServer::getInstance()->insertMessage(raw_data); + return true; + } + + void AvHNexus::startup(void) + { + gEngfuncs.pfnHookUserMsg("NexusBytes", __MsgFunc_NexusData); + // Nexus::setTunnelToServer(AvHNexus::TunnelToServer::getInstance()); } - return output; -} \ No newline at end of file + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Incominng message handler + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + int __MsgFunc_NexusData(const char *pszName, int iSize, void *pbuf) + { + AvHNexus::recv((unsigned char*)pbuf, iSize); + return iSize; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Base 64 encoder + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + char Base64EncodeTable[65] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0- 7 + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 8-15 + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', //16-23 + 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', //24-31 + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', //32-39 + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', //40-47 + 'w', 'x', 'y', 'z', '0', '1', '2', '3', //48-55 + '4', '5', '6', '7', '8', '9', '+', '/', //56-63 + '=' }; //64 = padding + + //debugged and working properly... do not disturb. + string BASE64Encode(const byte_string& input) + { + string output; + const byte* data = input.c_str(); + size_t length = input.length(); + int value, value2; + + //handle input in 3 byte blocks + while( length > 2 ) + { + value = data[0]; value >>= 2; + output.push_back(Base64EncodeTable[value]); + value = data[0]; value2 = data[1]; + value &= 0x03; value <<= 4; + value2 &= 0xF0; value2 >>= 4; value |= value2; + output.push_back(Base64EncodeTable[value]); + value = data[1]; value2 = data[2]; + value &= 0x0F; value <<= 2; + value2 &= 0xC0; value2 >>= 6; value |= value2; + output.push_back(Base64EncodeTable[value]); + value = data[2]; value &= 0x3F; + output.push_back(Base64EncodeTable[value]); + data += 3; length -= 3; + } + + //handle remainder + switch(length) + { + case 0: //no remainder to process + break; + case 1: //process and pad with two = + value = data[0]; value >>= 2; + output.push_back(Base64EncodeTable[value]); + value = data[0]; value &= 0x03; value <<= 4; + output.push_back(Base64EncodeTable[value]); + output.push_back(Base64EncodeTable[64]); + output.push_back(Base64EncodeTable[64]); + break; + case 2: //process and pad with one = + value = data[0]; value >>= 2; + output.push_back(Base64EncodeTable[value]); + value = data[0]; value2 = data[1]; + value &= 0x03; value <<= 4; + value2 &= 0xF0; value2 >>= 4; value |= value2; + output.push_back(Base64EncodeTable[value]); + value = data[1]; value &= 0x0F; value <<= 2; + output.push_back(Base64EncodeTable[value]); + output.push_back(Base64EncodeTable[64]); + break; + } + + return output; + } +#endif \ No newline at end of file diff --git a/main/source/mod/AvHNexusServer.cpp b/main/source/mod/AvHNexusServer.cpp index f3468a9..dde7460 100644 --- a/main/source/mod/AvHNexusServer.cpp +++ b/main/source/mod/AvHNexusServer.cpp @@ -1,209 +1,234 @@ -#include -#include "AvHNexusServer.h" -#include "AvHNexusTunnelToClient.h" +#ifdef AVH_PLAYTEST_BUILD + #define AVH_NO_NEXUS +#endif -#include "NetworkMeter.h" -extern int g_msgNexusBytes; +#ifdef AVH_NO_NEXUS + #include + using std::string; + #include "AvHNexusServer.h" -byte_string BASE64Decode(const string& input); -Nexus::ServerInfo createServerInfo(void); + bool AvHNexus::send(entvars_t* const pev, const unsigned char* data, const unsigned int length) { return false; } + bool AvHNexus::recv(entvars_t* const pev, const char* data, const unsigned int length) { return false; } + string AvHNexus::getNetworkID(const edict_t* edict) { return ""; } + void AvHNexus::handleUnauthorizedJoinTeamAttempt(const edict_t* edict, const unsigned char team_index) {} + void AvHNexus::performSpeedTest(void) {} + void AvHNexus::processResponses(void) {} + void AvHNexus::setGeneratePerformanceData(const edict_t* edict, const bool generate) {} + bool AvHNexus::getGeneratePerformanceData(void) { return false; } + bool AvHNexus::isRecordingGame(void) { return false; } + void AvHNexus::cancelGame(void) {} + void AvHNexus::finishGame(void) {} + void AvHNexus::startGame(void) {} + void AvHNexus::startup(void) {} + void AvHNexus::shutdown(void) {} +#else + #include + #include "AvHNexusServer.h" + #include "AvHNexusTunnelToClient.h" -//note: we place this here so that we have the possibility of giving out AvHNetworkMessages.cpp -bool AvHNexus::send(entvars_t* const pev, const unsigned char* data, const unsigned int length) -{ - if( !pev ) { return false; } - MESSAGE_BEGIN( MSG_ONE, g_msgNexusBytes, NULL, pev ); - for( int counter = 0; counter < length; counter++ ) - { WRITE_BYTE(data[counter]); } - MESSAGE_END(); - return true; -} + #include "NetworkMeter.h" + extern int g_msgNexusBytes; -bool AvHNexus::recv(entvars_t* const pev, const char* data, const unsigned int length) -{ - string base64_message(data,length); - byte_string message = BASE64Decode(base64_message); - Nexus::ClientID client = OFFSET(pev); - TunnelToClient::getInstance()->insertMessage(client,message); - return true; -} + byte_string BASE64Decode(const string& input); + Nexus::ServerInfo createServerInfo(void); -inline CBaseEntity* getEntity(const edict_t* edict) -{ - return edict == NULL ? NULL : (CBaseEntity*)edict->pvPrivateData; -} - -string AvHNexus::getNetworkID(const edict_t* edict) -{ - //TODO: resolve this! - return ""; -} - -void AvHNexus::handleUnauthorizedJoinTeamAttempt(const edict_t* edict, const unsigned char team_index) -{ - //TODO: teleport ready room player to spawn to prevent blocked doorway -} - -void AvHNexus::performSpeedTest(void) -{ - //TODO: check permission to do this before allowing it - Nexus::testConnectionSpeed(); -} - -void AvHNexus::processResponses(void) -{ - //TODO: do something with the responses as we consume them! - Nexus::ClientID id; - while((id = Nexus::hasHandleInfo()) != 0) + //note: we place this here so that we have the possibility of giving out AvHNetworkMessages.cpp + bool AvHNexus::send(entvars_t* const pev, const unsigned char* data, const unsigned int length) { - Nexus::getHandleInfo(id); + if( !pev ) { return false; } + MESSAGE_BEGIN( MSG_ONE, g_msgNexusBytes, NULL, pev ); + for( int counter = 0; counter < length; counter++ ) + { WRITE_BYTE(data[counter]); } + MESSAGE_END(); + return true; } - while((id = Nexus::hasHistoryInfo()) != 0) + + bool AvHNexus::recv(entvars_t* const pev, const char* data, const unsigned int length) { - Nexus::getHistoryInfo(id); + string base64_message(data,length); + byte_string message = BASE64Decode(base64_message); + Nexus::ClientID client = OFFSET(pev); + TunnelToClient::getInstance()->insertMessage(client,message); + return true; } - while(Nexus::hasErrorReport()) + + inline CBaseEntity* getEntity(const edict_t* edict) { - Nexus::getErrorReport(); + return edict == NULL ? NULL : (CBaseEntity*)edict->pvPrivateData; } - while(Nexus::hasPerformanceData()) + + string AvHNexus::getNetworkID(const edict_t* edict) { - Nexus::getPerformanceData(); + //TODO: resolve this! + return ""; } -} -void AvHNexus::setGeneratePerformanceData(const edict_t* edict, const bool generate) -{ - //TODO: check permission to do this before allowing it - Nexus::setGeneratePerformanceData(generate); - CBaseEntity* player = getEntity(edict); - if(player && AvHNexus::getGeneratePerformanceData()) + void AvHNexus::handleUnauthorizedJoinTeamAttempt(const edict_t* edict, const unsigned char team_index) { - UTIL_SayText("Nexus Profiling is now ON", player); + //TODO: teleport ready room player to spawn to prevent blocked doorway } - else + + void AvHNexus::performSpeedTest(void) { - UTIL_SayText("Nexus Profiling is now OFF", player); + //TODO: check permission to do this before allowing it + Nexus::testConnectionSpeed(); } -} -bool AvHNexus::getGeneratePerformanceData(void) -{ - return Nexus::getGeneratePerformanceData(); -} - -bool AvHNexus::isRecordingGame(void) -{ - return Nexus::isRecordingEvent(); -} - -void AvHNexus::cancelGame(void) -{ - Nexus::reportEventCancelled(); -} - -void AvHNexus::finishGame(void) -{ - Nexus::EventResultInfo info; - Nexus::reportEventFinished(info); -} - -void AvHNexus::startGame(void) -{ - Nexus::EventInfo info; - Nexus::reportEventStarted(info); -} - -void AvHNexus::startup(void) -{ - Nexus::setTunnelToClient(TunnelToClient::getInstance()); - Nexus::setProductName("Natural Selection-temp product"); - Nexus::connect(createServerInfo()); -} - -void AvHNexus::shutdown(void) -{ - Nexus::disconnect(); -} - -Nexus::ServerInfo(createServerInfo()) -{ - Nexus::ServerInfo info; - info.setName( string( CVAR_GET_STRING( "hostname" ) ) ); - info.setProduct( Nexus::getProductName() ); - return info; -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Base 64 decoder -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -byte Base64DecodeTable[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, // 0- 7 - 0, 0, 0, 0, 0, 0, 0, 0, // 8- 15 - 0, 0, 0, 0, 0, 0, 0, 0, // 16- 23 - 0, 0, 0, 0, 0, 0, 0, 0, // 24- 31 - 0, 0, 0, 0, 0, 0, 0, 0, // 32- 39 - 0, 0, 0, 62, 0, 0, 0, 63, // 40- 47 ( 43 = '+', 47 = '/') - 52, 53, 54, 55, 56, 57, 58, 59, // 48- 55 ( 48- 55 = 0-7) - 60, 61, 0, 0, 0, 0, 0, 0, // 56- 63 ( 56- 57 = 8-9) - 0, 0, 1, 2, 3, 4, 5, 6, // 64- 71 ( 65- 71 = A-G) - 7, 8, 9, 10, 11, 12, 13, 14, // 72- 79 ( 72- 79 = H-O) - 15, 16, 17, 18, 19, 20, 21, 22, // 80- 87 ( 80- 87 = P-W) - 23, 24, 25, 0, 0, 0, 0, 0, // 88- 95 ( 88- 90 = X-Z) - 0, 26, 27, 28, 29, 30, 31, 32, // 96 003 ( 97 003 = a-g) - 33, 34, 35, 36, 37, 38, 39, 40, //104 011 (104-111 = h-o) - 41, 42, 43, 44, 45, 46, 47, 48, //112 019 (112-119 = p-w) - 49, 50, 51, 0, 0, 0, 0, 0, //120 027 (120-122 = x-z) - 0, 0, 0, 0, 0, 0, 0, 0, //128 035 - 0, 0, 0, 0, 0, 0, 0, 0, //136 043 - 0, 0, 0, 0, 0, 0, 0, 0, //144 051 - 0, 0, 0, 0, 0, 0, 0, 0, //152 059 - 0, 0, 0, 0, 0, 0, 0, 0, //160 067 - 0, 0, 0, 0, 0, 0, 0, 0, //168 075 - 0, 0, 0, 0, 0, 0, 0, 0, //176 083 - 0, 0, 0, 0, 0, 0, 0, 0, //184 091 - 0, 0, 0, 0, 0, 0, 0, 0, //192 099 - 0, 0, 0, 0, 0, 0, 0, 0, //200-207 - 0, 0, 0, 0, 0, 0, 0, 0, //208-215 - 0, 0, 0, 0, 0, 0, 0, 0, //216-223 - 0, 0, 0, 0, 0, 0, 0, 0, //224-231 - 0, 0, 0, 0, 0, 0, 0, 0, //232-239 - 0, 0, 0, 0, 0, 0, 0, 0, //240-247 - 0, 0, 0, 0, 0, 0, 0, 0 //248-255 -}; - -//debugged and working properly... do not disturb. -byte_string BASE64Decode(const string& input) -{ - byte_string output; - const byte* data = (const byte*)input.c_str(); - size_t length = input.length(); - byte value, value2; - - while( length > 0 ) + void AvHNexus::processResponses(void) { - value = Base64DecodeTable[data[0]]; - value2 = Base64DecodeTable[data[1]]; - value <<= 2; - value2 &= 0x30; value2 >>= 4; value |= value2; - output.push_back(value); - if( data[2] != '=' ) + //TODO: do something with the responses as we consume them! + Nexus::ClientID id; + while((id = Nexus::hasHandleInfo()) != 0) { - value = Base64DecodeTable[data[1]]; - value2 = Base64DecodeTable[data[2]]; - value &= 0x0F; value <<= 4; - value2 &= 0x3C; value2 >>= 2; value |= value2; - output.push_back(value); + Nexus::getHandleInfo(id); } - if( data[3] != '=' ) + while((id = Nexus::hasHistoryInfo()) != 0) { - value = Base64DecodeTable[data[2]]; - value &= 0x03; value <<= 6; - value |= Base64DecodeTable[data[3]]; - output.push_back(value); + Nexus::getHistoryInfo(id); + } + while(Nexus::hasErrorReport()) + { + Nexus::getErrorReport(); + } + while(Nexus::hasPerformanceData()) + { + Nexus::getPerformanceData(); } - data += 4; length -= 4; } - return output; -} \ No newline at end of file + + void AvHNexus::setGeneratePerformanceData(const edict_t* edict, const bool generate) + { + //TODO: check permission to do this before allowing it + Nexus::setGeneratePerformanceData(generate); + CBaseEntity* player = getEntity(edict); + if(player && AvHNexus::getGeneratePerformanceData()) + { + UTIL_SayText("Nexus Profiling is now ON", player); + } + else + { + UTIL_SayText("Nexus Profiling is now OFF", player); + } + } + + bool AvHNexus::getGeneratePerformanceData(void) + { + return Nexus::getGeneratePerformanceData(); + } + + bool AvHNexus::isRecordingGame(void) + { + return Nexus::isRecordingEvent(); + } + + void AvHNexus::cancelGame(void) + { + Nexus::reportEventCancelled(); + } + + void AvHNexus::finishGame(void) + { + Nexus::EventResultInfo info; + Nexus::reportEventFinished(info); + } + + void AvHNexus::startGame(void) + { + Nexus::EventInfo info; + Nexus::reportEventStarted(info); + } + + void AvHNexus::startup(void) + { + Nexus::setTunnelToClient(TunnelToClient::getInstance()); + Nexus::setProductName("Natural Selection-temp product"); + Nexus::connect(createServerInfo()); + } + + void AvHNexus::shutdown(void) + { + Nexus::disconnect(); + } + + Nexus::ServerInfo(createServerInfo()) + { + Nexus::ServerInfo info; + info.setName( string( CVAR_GET_STRING( "hostname" ) ) ); + info.setProduct( Nexus::getProductName() ); + return info; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Base 64 decoder + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + byte Base64DecodeTable[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, // 0- 7 + 0, 0, 0, 0, 0, 0, 0, 0, // 8- 15 + 0, 0, 0, 0, 0, 0, 0, 0, // 16- 23 + 0, 0, 0, 0, 0, 0, 0, 0, // 24- 31 + 0, 0, 0, 0, 0, 0, 0, 0, // 32- 39 + 0, 0, 0, 62, 0, 0, 0, 63, // 40- 47 ( 43 = '+', 47 = '/') + 52, 53, 54, 55, 56, 57, 58, 59, // 48- 55 ( 48- 55 = 0-7) + 60, 61, 0, 0, 0, 0, 0, 0, // 56- 63 ( 56- 57 = 8-9) + 0, 0, 1, 2, 3, 4, 5, 6, // 64- 71 ( 65- 71 = A-G) + 7, 8, 9, 10, 11, 12, 13, 14, // 72- 79 ( 72- 79 = H-O) + 15, 16, 17, 18, 19, 20, 21, 22, // 80- 87 ( 80- 87 = P-W) + 23, 24, 25, 0, 0, 0, 0, 0, // 88- 95 ( 88- 90 = X-Z) + 0, 26, 27, 28, 29, 30, 31, 32, // 96 003 ( 97 003 = a-g) + 33, 34, 35, 36, 37, 38, 39, 40, //104 011 (104-111 = h-o) + 41, 42, 43, 44, 45, 46, 47, 48, //112 019 (112-119 = p-w) + 49, 50, 51, 0, 0, 0, 0, 0, //120 027 (120-122 = x-z) + 0, 0, 0, 0, 0, 0, 0, 0, //128 035 + 0, 0, 0, 0, 0, 0, 0, 0, //136 043 + 0, 0, 0, 0, 0, 0, 0, 0, //144 051 + 0, 0, 0, 0, 0, 0, 0, 0, //152 059 + 0, 0, 0, 0, 0, 0, 0, 0, //160 067 + 0, 0, 0, 0, 0, 0, 0, 0, //168 075 + 0, 0, 0, 0, 0, 0, 0, 0, //176 083 + 0, 0, 0, 0, 0, 0, 0, 0, //184 091 + 0, 0, 0, 0, 0, 0, 0, 0, //192 099 + 0, 0, 0, 0, 0, 0, 0, 0, //200-207 + 0, 0, 0, 0, 0, 0, 0, 0, //208-215 + 0, 0, 0, 0, 0, 0, 0, 0, //216-223 + 0, 0, 0, 0, 0, 0, 0, 0, //224-231 + 0, 0, 0, 0, 0, 0, 0, 0, //232-239 + 0, 0, 0, 0, 0, 0, 0, 0, //240-247 + 0, 0, 0, 0, 0, 0, 0, 0 //248-255 + }; + + //debugged and working properly... do not disturb. + byte_string BASE64Decode(const string& input) + { + byte_string output; + const byte* data = (const byte*)input.c_str(); + size_t length = input.length(); + byte value, value2; + + while( length > 0 ) + { + value = Base64DecodeTable[data[0]]; + value2 = Base64DecodeTable[data[1]]; + value <<= 2; + value2 &= 0x30; value2 >>= 4; value |= value2; + output.push_back(value); + if( data[2] != '=' ) + { + value = Base64DecodeTable[data[1]]; + value2 = Base64DecodeTable[data[2]]; + value &= 0x0F; value <<= 4; + value2 &= 0x3C; value2 >>= 2; value |= value2; + output.push_back(value); + } + if( data[3] != '=' ) + { + value = Base64DecodeTable[data[2]]; + value &= 0x03; value <<= 6; + value |= Base64DecodeTable[data[3]]; + output.push_back(value); + } + data += 4; length -= 4; + } + return output; + } +#endif diff --git a/main/source/util/Balance.h b/main/source/util/Balance.h index e28ab08..288e73a 100644 --- a/main/source/util/Balance.h +++ b/main/source/util/Balance.h @@ -14,42 +14,6 @@ #include #include "../Balance.txt" //default balancing source - this used to be ../Balance.txt -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// BALANCE_VAR(x) macro - the heart of the balance system, ties value -// to default balance source if PLAYTEST_BUILD is enabled, uses -// hardcoded value otherwise. Place the name of the varaible #define -// in Balance.txt as the value in the macro. -// -// BALANCE_LISTENER(x) macro - for registering global -// BalanceChangeListeners (see below), reverts to no operation -// if AVH_PLAYTEST_BUILD isn't enabled. -// -// BALANCE_FIELD_LISTENER(x,y) macro - for registering field-specific -// BalanceChangeListeners, reverts to no operation if -// BALANCE_ENABLED isn't defined -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -#ifdef BALANCE_ENABLED //use Balance.txt values on server, no-source/explicitly set values for client - #ifdef SERVER - #define BALANCE_DEFNAME BalanceVarContainerFactory::getDefaultFilename() - #else - #define BALANCE_DEFNAME "" - #endif - - inline void BALANCE_LISTENER(const BalanceChangeListener* object) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->addListener(object); } - inline void BALANCE_FIELD_LISTENER(const BalanceChangeListener* object, const char* field) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->addListener(object,field); } - - #define BALANCE_VAR(name) GetBalanceVar(#name,name) //requires macro for string-izing of name - inline int GetBalanceVar(const char* name, const int value) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } - inline float GetBalanceVar(const char* name, const float value) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } - inline float GetBalanceVar(const char* name, const double value) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,(float)value); } - inline std::string GetBalanceVar(const char* name, const char* value) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } -#else - #define BALANCE_VAR(name) name //hardcodes the value at compile time - #define BALANCE_LISTENER(object) - #define BALANCE_FIELD_LISTENER(object,name) -#endif //BALANCE_ENABLED - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // BalanceValueContainerFactory -- facade that creates, stores, and // maintains BalanceValueContainer objects. Multiple calls with the @@ -209,4 +173,40 @@ protected: BalanceValueContainer(void); }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// BALANCE_VAR(x) macro - the heart of the balance system, ties value +// to default balance source if PLAYTEST_BUILD is enabled, uses +// hardcoded value otherwise. Place the name of the varaible #define +// in Balance.txt as the value in the macro. +// +// BALANCE_LISTENER(x) macro - for registering global +// BalanceChangeListeners (see below), reverts to no operation +// if AVH_PLAYTEST_BUILD isn't enabled. +// +// BALANCE_FIELD_LISTENER(x,y) macro - for registering field-specific +// BalanceChangeListeners, reverts to no operation if +// BALANCE_ENABLED isn't defined +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#ifdef BALANCE_ENABLED //use Balance.txt values on server, no-source/explicitly set values for client + #ifdef SERVER + #define BALANCE_DEFNAME BalanceValueContainerFactory::getDefaultFilename() + #else + #define BALANCE_DEFNAME "" + #endif + + inline void BALANCE_LISTENER(const BalanceChangeListener* object) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->addListener(object); } + inline void BALANCE_FIELD_LISTENER(const BalanceChangeListener* object, const char* field) { BalanceValueContainerFactory::get(BALANCE_DEFNAME)->addListener(field,object); } + + #define BALANCE_VAR(name) GetBalanceVar(#name,name) //requires macro for string-izing of name + inline int GetBalanceVar(const char* name, const int value) { return BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } + inline float GetBalanceVar(const char* name, const float value) { return BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } + inline float GetBalanceVar(const char* name, const double value) { return BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,(float)value); } + inline std::string GetBalanceVar(const char* name, const char* value) { return BalanceValueContainerFactory::get(BALANCE_DEFNAME)->get(name,value); } +#else + #define BALANCE_VAR(name) name //hardcodes the value at compile time + #define BALANCE_LISTENER(object) + #define BALANCE_FIELD_LISTENER(object,name) +#endif //BALANCE_ENABLED + #endif //BALANCE_H \ No newline at end of file