major updates to fbcb2 diary stuff

This commit is contained in:
2024-02-01 15:19:30 -08:00
parent 2d6fbcfcef
commit a7550d374e
11 changed files with 261 additions and 166 deletions

View File

@@ -1,108 +1,53 @@
// updated 2024-02-01 by IndigoFox
// now reads from the battalion config structure
private _formatElementForDiary = {
params ["_cfg", "_indentCount"];
private _leadingSpace = [
format["<font size='%1'>| ", _ELEMENT_NAME_SIZE]
];
for "_i" from 1 to _indentCount do {
_leadingSpace pushBack "-";
};
_leadingSpace pushBack " | </font>";
// make header line
private _lines = [
format[
"<font size='%1' face='EtelkaMonospaceProBold' color='%2'>%3%4</font>",
_ELEMENT_NAME_SIZE,
getText(_cfg >> "textColor"),
_leadingSpace joinString "",
getText (_cfg >> "callsign")
]
];
// make frequency lines
private _freqLeadingSpace = [
format["<font size='%1'>| ", _ELEMENT_NAME_SIZE]
];
for "_i" from 1 to _indentCount + 4 do {
_freqLeadingSpace pushBack " ";
};
_freqLeadingSpace pushBack "</font>";
_freqLeadingSpace = _freqLeadingSpace joinString "";
{
_x params ["_role", "_sr", "_lr"];
private ["_srStr", "_lrStr"];
if (count _sr > 0) then {
_srStr = format["SR [%1]", _sr joinString "/"];
} else {
_srStr = "----";
};
if (count _lr > 0) then {
_lrStr = format["LR [%1]", _lr joinString "/"];
} else {
_lrStr = "----";
};
_lines pushBack format[
"%1<font size='%2' color='%3'>- %4%5%6 -</font>",
_freqLeadingSpace,
_ELEMENT_FREQ_SIZE,
_FREQ_TEXT_COLOR,
[_role, "right", " ", _FREQ_PAD_LENGTH] call milsim_fnc_padString,
[_srStr, "right", " ", _FREQ_PAD_LENGTH] call milsim_fnc_padString,
[_lrStr, "right", " ", 8] call milsim_fnc_padString
];
} forEach (getArray (_cfg >> "frequencies"));
_lines;
};
private _addToAllText = {
params [["_lines", []]];
_allText = format[
"%1%2<br/>",
_allText,
_lines joinString "<br/>"
];
};
private _recurseAddElements = {
params ["_cfg", ["_indentCount", 1]];
// add config
private _lines = [_cfg, _indentCount] call _formatElementForDiary;
[_lines] call _addToAllText;
// get children and recurse
_childCfgs = _cfg call BIS_fnc_returnChildren;
{
[_x, _indentCount+1] call _recurseAddElements;
} forEach _childCfgs;
_allText pushBack (_lines joinString "<br/>");
};
////////////////////////////////////////
_allText = "
<font size='16' color='#ff0000'>=======------ Mission Data Set ------=======</font>
<font face='EtelkaMonospacePro'><br/><br/>";
private _battalionInfoCfgs = [call milsim_fnc_getBattalionCfg] call BIS_fnc_returnChildren;
private _battalionInfoCfg = call milsim_fnc_getBattalionCfg;
private _battalionElementCfgs = [_battalionInfoCfg >> "Command"] call BIS_fnc_returnChildren;
private _ELEMENT_NAME_SIZE = 10;
private _ELEMENT_FREQ_SIZE = 8;
private _FREQ_PAD_LENGTH = 14;
private _ELEMENT_NAME_FONT = "EtelkaMonospaceProBold";
private _ELEMENT_FREQ_SIZE = 9;
private _ELEMENT_FREQ_FONT = "EtelkaMonospacePro";
private _FREQ_INDENT_CONSTANT = 6;
private _FREQ_PAD_LENGTH = 17;
private _FREQ_TEXT_COLOR = "#CCCCCC";
private _freqLeadingSpace = [
format["<font size='%1' face='%2'>| ", _ELEMENT_NAME_SIZE, _ELEMENT_NAME_FONT]
];
for "_i" from 1 to _FREQ_INDENT_CONSTANT do {
_freqLeadingSpace pushBack " ";
};
_freqLeadingSpace pushBack "</font>";
_freqLeadingSpace = _freqLeadingSpace joinString "";
// reverse the list so diary records are filed in the correct order
reverse _battalionElementCfgs;
{
_x call _recurseAddElements;
} forEach _battalionInfoCfgs;
// recursively generate diary text for all child elements of battalion-level elements
private _diaryTitleText = [_x, true] call milsim_fnc_generateElementFrequencyRecordText;
[
milsim_fbcb2_subjectFrequenciesID,
_diaryTitleText#0,
_diaryTitleText#1
] call milsim_fnc_createOrUpdateDiaryRecord;
} forEach _battalionElementCfgs;
_allText = format["%1</font>", _allText];
player createDiaryRecord ["Status", ["MDS - INTEL - RADIO FREQS", _allText]];
// add the battalion command to the top of the list
// don't process child elements
private _diaryTitleText = [_battalionInfoCfg >> "Command", false] call milsim_fnc_generateElementFrequencyRecordText;
[
milsim_fbcb2_subjectFrequenciesID,
_diaryTitleText#0,
_diaryTitleText#1
] call milsim_fnc_createOrUpdateDiaryRecord;