// BattalionInfo.hpp
// Defines the structure of the Battalion, allowing properties to be easily changed and updated
// This file is included in description.ext


// Define the callsigns for the Battalion
#define COMMAND_CALLSIGN ONI
//#define RRC_CALLSIGN TIGER
//#define MEDIC_CALLSIGN LIFELINE
#define ALPHA_CALLSIGN GLACIER
#define ECHO_CALLSIGN WARLORD
#define WPN_CALLSIGN BLACKFOOT

// Define the frequencies for the Battalion
#define FREQ_BATTALION 45
#define FREQ_BATTALION_MEDICAL_INTERCOM 91.1
#define FREQ_ALL_MEDICAL_SR 121.5

#define FREQ_ALPHA_COMPANY 40

#define FREQ_PLATOON1_SR 100
#define FREQ_PLATOON1_LR 41
#define FREQ_PLATOON1_RTO 101

#define FREQ_PLATOON2_SR 200
#define FREQ_PLATOON2_LR 42
#define FREQ_PLATOON2_RTO 201

#define FREQ_ECHO_FLIGHT_INTERCOM 30
#define FREQ_ECHO_FLIGHT_CAS 35
#define FREQ_ECHO_FLIGHT_LOGISTICS 35.1

#define FREQ_ECHO_GROUND 80
#define FREQ_ECHO_GROUND_LOGISTICS 81
#define FREQ_ECHO_ARTY 82
#define FREQ_ECHO_ARTY_INTERCOM 155

#define FREQ_CONVOY 50

// Define the text colors to appear in diary entries
#define LVL1_TEXT_COLOR "#7c887e"
#define LVL2_TEXT_COLOR "#bab79f"
#define LVL3_TEXT_COLOR "#91967f"
#define LVL4_TEXT_COLOR "#d3d2cd"


// All elements and subclasses should have the following properties:
// callsign: the callsign of the element
// textColor: the color of the text for the element
// frequencies: an array of frequencies for the element in the format:
// 		{roleWithinElement, {primarySR, additionalSR}, {primaryLR, additionalLR}}

// Battalion-level elements under Command should have the following additional properties:
// shortDescription: a short description of the element's place in the Battalion


// System macros
#define CALLSIGN_ELEMENT(callsign,element) callsign##element



class BattalionInfo {
	class Command {
		callsign = COMMAND_CALLSIGN;
		shortDescription = "Battalion Command";
		textColor = LVL1_TEXT_COLOR;
		// frequencies are in format:
		// {roleWithinElement, {primarySR, additionalSR}, {primaryLR, additionalLR}}
		frequencies[] = {
			{"Contact", {}, {FREQ_BATTALION}},
			{"Actual", {}, {FREQ_BATTALION}},
			{"Romeo", {}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_CAS}}
		};


//		class RRC { // WIP
//			callsign = RRC_CALLSIGN;
//			shortDescription = "RRC";
//			textColor = LVL2_TEXT_COLOR;
//			frequencies[] = {
//				{"Contact", {}, {FREQ_BATTALION}},
//				{"Actual", {}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_CAS}}
//			};
//		};

//		class BattalionMedical { // WIP
//			callsign = MEDIC_CALLSIGN;
//			shortDescription = "Battalion Medical";
//			textColor = LVL2_TEXT_COLOR;
//			frequencies[] = {
//				{"Contact", {FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION}},
//				{"Actual", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_LOGISTICS}},
//				{"General", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {}}
//			};
//		};

		class WeaponsSquad { // WIP
			callsign = WPN_CALLSIGN;
			shortDescription = "Special Weapons Squad";
			textColor = LVL2_TEXT_COLOR;
			frequencies[] = {
				{"Contact", {}, {FREQ_BATTALION}}
			};
		};

			
		class AlphaCompany {
			callsign = ALPHA_CALLSIGN;
			shortDescription = "Alpha Company";
			textColor = LVL2_TEXT_COLOR;
			frequencies[] = {
				{"Contact", {}, {FREQ_ALPHA_COMPANY, FREQ_BATTALION}}
			};

			class Platoon1 {
				callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 1-6);
				textColor = LVL3_TEXT_COLOR;
				frequencies[] = {
					{"Actual", {FREQ_PLATOON1_SR, FREQ_PLATOON1_RTO}, {FREQ_PLATOON1_LR, FREQ_ALPHA_COMPANY}},
					{"Romeo", {}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_CAS, FREQ_ECHO_FLIGHT_LOGISTICS}}
				};
				class Squad1 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 1-1);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {110, FREQ_PLATOON1_SR}, {FREQ_PLATOON1_LR}},
						{"Alpha Team", {111, 110}, {}},
						{"Bravo Team", {112, 110}, {}},
						{"Medic", {110, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
				class Squad2 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 1-2);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {120, FREQ_PLATOON1_SR}, {FREQ_PLATOON1_LR}},
						{"Alpha Team", {121, 120}, {}},
						{"Bravo Team", {122, 120}, {}},
						{"Medic", {120, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
				class Squad3 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 1-3);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {130, FREQ_PLATOON1_SR}, {FREQ_PLATOON1_LR}},
						{"Alpha Team", {131, 130}, {}},
						{"Bravo Team", {132, 130}, {}},
						{"Medic", {130, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
			};

			class Platoon2 {
				callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 2-6);
				textColor = LVL3_TEXT_COLOR;
				frequencies[] = {
					{"Actual", {FREQ_PLATOON2_SR, FREQ_PLATOON2_RTO}, {FREQ_PLATOON2_LR, FREQ_ALPHA_COMPANY}}
				};
				class Squad1 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 2-1);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {210, FREQ_PLATOON2_SR}, {FREQ_PLATOON2_LR}},
						{"Alpha Team", {211, 210}, {}},
						{"Bravo Team", {212, 210}, {}},
						{"Medic", {210, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
				class Squad2 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 2-2);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {220, FREQ_PLATOON2_SR}, {FREQ_PLATOON2_LR}},
						{"Alpha Team", {221, 220}, {}},
						{"Bravo Team", {222, 220}, {}},
						{"Medic", {220, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
				class Squad3 {
					callsign = CALLSIGN_ELEMENT(ALPHA_CALLSIGN, 2-3);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Actual", {230, FREQ_PLATOON2_SR}, {FREQ_PLATOON2_LR}},
						{"Alpha Team", {231, 230}, {}},
						{"Bravo Team", {232, 230}, {}},
						{"Medic", {230, FREQ_ALL_MEDICAL_SR}, {}}
					};
				};
			};
		};

		class EchoCompany {
			callsign = ECHO_CALLSIGN;
			shortDescription = "Echo Company";
			textColor = LVL2_TEXT_COLOR;
			frequencies[] = {
				{"Contact", {}, {FREQ_BATTALION}},
				{"Actual", {}, {FREQ_BATTALION}}
			};

			class Flight {
				callsign = CALLSIGN_ELEMENT(ECHO_CALLSIGN, FLIGHT);
				textColor = LVL3_TEXT_COLOR;
				frequencies[] = {
					{"Contact", {}, {FREQ_BATTALION}},
					{"Actual", {}, {FREQ_ECHO_FLIGHT_INTERCOM, FREQ_BATTALION}},
					{"CAS Support", {}, {FREQ_ECHO_FLIGHT_INTERCOM, FREQ_ECHO_FLIGHT_CAS}},
					{"Logistics", {}, {FREQ_ECHO_FLIGHT_INTERCOM, FREQ_ECHO_FLIGHT_LOGISTICS}}
				};
			};

			class Ground {
				callsign = CALLSIGN_ELEMENT(ECHO_CALLSIGN, GROUND);
				textColor = LVL3_TEXT_COLOR;
				frequencies[] = {
					{"Contact", {}, {FREQ_BATTALION}},
					{"Actual", {}, {FREQ_ECHO_GROUND, FREQ_BATTALION}}
				};

				class Logistics {
					callsign = CALLSIGN_ELEMENT(ECHO_CALLSIGN, LOGISTICS);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Contact", {}, {FREQ_ECHO_GROUND}},
						{"Actual", {}, {FREQ_ECHO_GROUND_LOGISTICS, FREQ_ECHO_GROUND}},
						{"General", {}, {FREQ_ECHO_GROUND_LOGISTICS}},
						{"Convoy", {}, {FREQ_CONVOY}}
					};
				};

				class Armor {
					callsign = CALLSIGN_ELEMENT(ECHO_CALLSIGN, ARMOR);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"Contact", {}, {FREQ_ECHO_GROUND, FREQ_ECHO_FLIGHT_CAS}},
						{"Actual", {}, {FREQ_ECHO_GROUND}},
						{"General", {}, {FREQ_ECHO_GROUND}},
						{"Convoy", {}, {FREQ_CONVOY}}
					};
				};

				class Artillery {
					callsign = CALLSIGN_ELEMENT(ECHO_CALLSIGN, ARTILLERY);
					textColor = LVL4_TEXT_COLOR;
					frequencies[] = {
						{"General", {FREQ_ECHO_ARTY_INTERCOM}, {FREQ_ECHO_GROUND, FREQ_ECHO_ARTY}}
					};
				};
			};
		};
	};
};