summaryrefslogtreecommitdiff
path: root/common/ValveCDKeyGameAndTerritoryCodes.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/ValveCDKeyGameAndTerritoryCodes.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/ValveCDKeyGameAndTerritoryCodes.h')
-rw-r--r--common/ValveCDKeyGameAndTerritoryCodes.h173
1 files changed, 173 insertions, 0 deletions
diff --git a/common/ValveCDKeyGameAndTerritoryCodes.h b/common/ValveCDKeyGameAndTerritoryCodes.h
new file mode 100644
index 0000000..1a409af
--- /dev/null
+++ b/common/ValveCDKeyGameAndTerritoryCodes.h
@@ -0,0 +1,173 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef VALVECDKEYGAMEANDTERRITORYCODES_H
+#define VALVECDKEYGAMEANDTERRITORYCODES_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+// imported from MainIntegration/Deliverables/Production/Client/Inc/NewValveCDKeyGenerator.h
+// if the enums there change, this needs to change
+//!! these need to be moved out into a seperate file in steam, so that src can use the directly published version
+
+//
+// GameCode
+//
+
+enum EGameCode
+{
+ // DoD uses SteamInstanceId = 1
+ // DoD CD-key Steam IDs are displayed as VALVE_1:xxxxxxxx where xxxx is the SteamLocalUserId mentioned above.
+ // DoD CD-keys uses an odd scheme (invented in a rush) whereby the SteamLocalUserID is generated by hashing
+ // (MD5) the CD key parameters (Territory,GameCode,UniqueSerialNumber) and truncating the resulting hash for
+ // a reasonable display length (26 bits, i.e. eMaskLargestAcceptableLocalUserId above, which is about 8 decimal digits).
+ // **The generator must therefore discard any UniqueSerialNumbers that cause hashes to collide.**
+ // This means that when generating a new batch from a non-zero StartUniqueSerialNumber, the generator has
+ // to generate them all from 0 anyway to populate an array of 'hash has been used' flags -- it then only
+ // prints out new keys higher than the requested StartUniqueSerialNumber.
+ // IMPORTANT: this means that each match of N keys generated consumes MORE THAN N UniqueSerialNumbers --
+ // so each new batch MUST be started with the correct "Next StartUniqueSerialNumber" that was output
+ // at the end of the previous batch, or the new batch will overlap with the previous batch.
+ eDayOfDefeat = 0,
+
+ // CZ uses SteamInstanceId = 2 (**as will all future games using this system**)
+ // CZ CD-key SteamLocalUserIds have
+ // high32bits = ( GameCode << sc_uNumBitsSalesTerritory) | SalesTerritory
+ // low32bits = UniqueSerialNumber
+ // CZ CD-key Steam IDs will be displayed as VALVE_2:GameCode:UniqueSerialNumber
+ // (i.e. the DoD hashing scheme is *NOT* used).
+ eConditionZero = 1,
+
+ // CyberCafes receive all legacy and future products, under this one code.
+ // They have their own SalesTerritory codes too.
+ // If a CDKey has this game code OR a CyberCafe SalesTerritory then it is a 'cybercafe CDkey'.
+ eCyberCafeBundle = 2,
+
+ eHalfLife2 = 3,
+
+ eHalfLife2RetailCE = 4,
+
+ eHalfLife2Retail = 5,
+};
+
+
+//
+// SalesTerritory
+//
+
+enum ESalesTerritory
+{
+ // DoD first batch 80,000 keys **Next free 'StartUniqueSerialNumber' = 80032
+ // DoD second batch 30,000 keys **Next free 'StartUniqueSerialNumber' = 110081
+ // OLD KEY ... NOTE: this CZ first batch for USA (code 0) of 275,000 may also be distributed in Canada
+ // OLD KEY ... i.e. they should ideally have had code 11, but we didn't want to re-issue them.
+ // OLD KEY ConditionZero first batch 275,000 keys **Next free 'StartUniqueSerialNumber' = 275000
+ // NEW KEY These were moved to region 11 as suggested above (part of first batch of 379,000)
+ eUSA = 0,
+
+ // DoD first batch 7,500 keys **Next free 'StartUniqueSerialNumber' = 7500
+ eAustralia = 1,
+
+ // DoD first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eKorea = 2,
+
+ // DoD first batch 10,000 keys **Next free 'StartUniqueSerialNumber' = 10000
+ eTaiwan = 3,
+
+ // DoD first batch 5,000 keys **Next free 'StartUniqueSerialNumber' = 5000
+ eJapan = 4,
+
+ // DoD first batch 25,000 keys **Next free 'StartUniqueSerialNumber' = 25003
+ // ConditionZero first batch 99,000 keys **Next free 'StartUniqueSerialNumber' = 99000
+ eUK = 5,
+
+ // DoD first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15002
+ // ConditionZero first batch 77,000 keys **Next free 'StartUniqueSerialNumber' = 77000
+ eFrance = 6,
+
+ // DoD first batch 3,000 keys **Next free 'StartUniqueSerialNumber' = 3000
+ // DoD second batch 5,000 keys **Next free 'StartUniqueSerialNumber' = 8002
+ // ConditionZero first batch 132,000 keys **Next free 'StartUniqueSerialNumber' = 132000
+ eGermany = 7,
+
+ // DoD first batch 3,000 keys **Next free 'StartUniqueSerialNumber' = 3000
+ // ConditionZero first batch 27,500 keys **Next free 'StartUniqueSerialNumber' = 27500
+ eSpain = 8,
+
+ // DoD first batch 3,000 keys **Next free 'StartUniqueSerialNumber' = 3000
+ // ConditionZero first batch 44,000 keys **Next free 'StartUniqueSerialNumber' = 44000
+ eItaly = 9,
+
+ // DoD first batch 65,000 keys **Next free 'StartUniqueSerialNumber' = 65039
+ // DoD second batch 20,000 keys **Next free 'StartUniqueSerialNumber' = 85058
+ eChina = 10,
+
+ // This is ALL 'American' ENGLISH-SPEAKING TERRITORIES (e.g. USA, Austrailia, Canada, NZ, but *NOT* UK).
+ // Vivendi track sales by language, rather that geographically.
+ // OLD KEY ... NOTE: CZ first batch for USA (code 0) of 275,000 will also be distributed in these territories
+ // OLD KEY ... i.e. they should ideally have had this code, but we didn't want to re-issue them.
+ // OLD KEY ConditionZero first batch 25,000 keys **Next free 'StartUniqueSerialNumber' = 25000
+ // OLD KEY ConditionZero second batch 79,000 keys **Next free 'StartUniqueSerialNumber' = 104000
+ // NEW KEY ConditionZero first batch 379,000 keys **Next free 'StartUniqueSerialNumber' =
+ eEnglish = 11,
+
+ // CyberCafe specific territories. If a CDKey has this game code OR a CyberCafe SalesTerritory then it is a 'cybercafe CDkey'.
+ // CyberCafeBundle first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eCyberCafeEurope = 12,
+ // CyberCafeBundle first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eCyberCafeNorthAndSouthAmerica = 13,
+ // CyberCafeBundle first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eCyberCafeKorea = 14,
+ // CyberCafeBundle first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eCyberCafeChinaTaiwan = 15,
+ // CyberCafeBundle first batch 15,000 keys **Next free 'StartUniqueSerialNumber' = 15000
+ eCyberCafeRestOfAsia = 16,
+
+ // ATI OEM
+ // *** After intranet security breach, only the first 40,000 of these keys are valid:
+ // OLD KEY HL2 first batch 250,000 keys
+ // *** After intranet security breach, these keys use a new MAC key:
+ // NEW KEY HL2 first batch start=40,000 210,000 keys
+ eATI_OEM = 17,
+
+ // ConditionZero first batch 5,500 keys **Next free 'StartUniqueSerialNumber' = 5500
+ eLatinAmerica = 18,
+
+ // ConditionZero first batch 16,500 keys **Next free 'StartUniqueSerialNumber' = 16500
+ eBrazil = 19,
+
+ // ConditionZero first batch 66,000 keys **Next free 'StartUniqueSerialNumber' = 66000
+ eNordic = 20,
+
+ // This a Vivendi code meaning "Belgium, Luxembourg, French speaking territories of Africa, French overseas departments, Netherlands, Quebec"
+ // ConditionZero first batch 40,700 keys **Next free 'StartUniqueSerialNumber' = 40700
+ eExportFrance = 21,
+
+ // This a Vivendi code meaning "Austria, Switzerland, Bulgaria, Czech Republic, Hungary, Lithuania, Poland, Romania, Russian Federation, Slovenia, Slovakia"
+ // ConditionZero first batch 16,500 keys **Next free 'StartUniqueSerialNumber' = 16500
+ eExportNorth = 22,
+
+ // This a Vivendi code meaning "Cyprus, Egypt, Greece, Israel, Lebanon, Malta, Turkey"
+ // ConditionZero first batch 40,700 keys **Next free 'StartUniqueSerialNumber' = 40700
+ eExportSouth = 23,
+
+ // MISSING ONES ARE ON MI (24..29)
+
+ // ATI Rebate
+ // HL2 first batch 100,000 keys
+ eATI_Rebate = 30,
+
+ // Used for internal and pre-release testing keys.
+ // DoD first batch 20 keys **Next free 'StartUniqueSerialNumber' = 20
+ // DoD second batch 150 keys **Next free 'StartUniqueSerialNumber' = 170
+ // DoD second batch 500 keys **Next free 'StartUniqueSerialNumber' = 670
+ // ConditionZero first batch 200 keys **Next free 'StartUniqueSerialNumber' = 200
+ // CyberCafeBundle first batch 100 keys **Next free 'StartUniqueSerialNumber' = 100
+ eInternal = 255
+};
+
+#endif // VALVECDKEYGAMEANDTERRITORYCODES_H