From 328a5ea2fe490edc39d7aa6471e75f0967c9be1c Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 15 Feb 2019 23:58:09 +0100 Subject: [PATCH 1/2] add custom mission filter --- addons/ui/fnc_initDisplayRemoteMissions.sqf | 46 +++++++++++++++++-- addons/ui/stringtable.xml | 8 ++++ optionals/no_stock_missions/$PBOPREFIX$ | 1 - optionals/no_stock_missions/config.cpp | 19 -------- .../no_stock_missions_prep/config.cpp | 18 -------- .../script_component.hpp | 3 -- .../no_stock_missions/script_component.hpp | 3 -- 7 files changed, 51 insertions(+), 47 deletions(-) delete mode 100644 optionals/no_stock_missions/$PBOPREFIX$ delete mode 100644 optionals/no_stock_missions/config.cpp delete mode 100644 optionals/no_stock_missions/no_stock_missions_prep/config.cpp delete mode 100644 optionals/no_stock_missions/no_stock_missions_prep/script_component.hpp delete mode 100644 optionals/no_stock_missions/script_component.hpp diff --git a/addons/ui/fnc_initDisplayRemoteMissions.sqf b/addons/ui/fnc_initDisplayRemoteMissions.sqf index b7b3ad58a..111515fed 100644 --- a/addons/ui/fnc_initDisplayRemoteMissions.sqf +++ b/addons/ui/fnc_initDisplayRemoteMissions.sqf @@ -5,6 +5,20 @@ params ["_display"]; private _ctrlMaps = _display displayCtrl IDC_SERVER_ISLAND; private _ctrlMissions = _display displayCtrl IDC_SERVER_MISSION; +// find all stock missions +private _stockMissions = []; + +private _fnc_findMissions = { + { + _stockMissions pushBack configName _x; + _x call _fnc_findMissions; + } forEach configProperties [_this, "isClass _x"]; +}; + +(configFile >> "CfgMissions" >> "MPMissions") call _fnc_findMissions; + +_display setVariable [QGVAR(stockMissions), _stockMissions]; + lbSort _ctrlMaps; ctrlPosition _ctrlMissions params ["_left", "_top", "_width", "_height"]; @@ -12,20 +26,43 @@ private _ctrlSearch = _display ctrlCreate ["RscEdit", IDC_SEARCH]; _ctrlSearch ctrlSetPosition [ _left + 0.1 * GUI_GRID_W, _top, - _width - 1.2 * GUI_GRID_W, + _width - 21.2 * GUI_GRID_W, GUI_GRID_H ]; _ctrlSearch ctrlCommit 0; private _ctrlSearchButton = _display ctrlCreate ["RscButtonSearch", IDC_SEARCH_BUTTON]; _ctrlSearchButton ctrlSetPosition [ - _left + _width - GUI_GRID_W, + _left + _width - 21 * GUI_GRID_W, _top, GUI_GRID_W, GUI_GRID_H ]; _ctrlSearchButton ctrlCommit 0; +private _ctrlShowStockMissions = _display ctrlCreate ["RscButton", -1]; +_ctrlShowStockMissions ctrlSetPosition [ + _left + _width - 10 * GUI_GRID_W, + _top, + 10 * GUI_GRID_W, + GUI_GRID_H +]; +_ctrlShowStockMissions ctrlCommit 0; +_ctrlShowStockMissions ctrlSetFont "PuristaLight"; + +_ctrlShowStockMissions ctrlAddEventHandler ["ButtonClick", { + params ["_ctrlShowStockMissions"]; + + private _showStockMissions = !(profileNamespace getVariable [QGVAR(ShowStockMissions), true]); + profileNamespace setVariable [QGVAR(ShowStockMissions), _showStockMissions]; + saveProfileNamespace; + + _ctrlShowStockMissions ctrlSetText toUpper localize (["STR_CBA_Ui_CustomMissions", "STR_CBA_Ui_AllMissions"] select _showStockMissions); +}]; + +private _showStockMissions = profileNamespace getVariable [QGVAR(ShowStockMissions), true]; +_ctrlShowStockMissions ctrlSetText toUpper localize (["STR_CBA_Ui_CustomMissions", "STR_CBA_Ui_AllMissions"] select _showStockMissions); + _ctrlMissions ctrlSetPosition [ _left, _top + 1.1 * GUI_GRID_H, @@ -65,13 +102,15 @@ _display setVariable [QFUNC(filter), { private _filter = toLower ctrlText _ctrlSearch; private _missions = _ctrlMissions getVariable QGVAR(missions); + private _stockMissions = _display getVariable QGVAR(stockMissions); + private _showStockMissions = profileNamespace getVariable [QGVAR(ShowStockMissions), true]; lbClear _ctrlMissions; { _x params ["_name", "_value", "_data", "_color"]; - if (toLower _name find _filter != -1) then { + if (toLower _name find _filter != -1 && {_showStockMissions || {!(_data in _stockMissions)}}) then { private _index = _ctrlMissions lbAdd _name; _ctrlMissions lbSetValue [_index, _value]; _ctrlMissions lbSetData [_index, _data]; @@ -92,3 +131,4 @@ private _fnc_update = {_this spawn {isNil { // delay a frame _ctrlSearch ctrlAddEventHandler ["KeyDown", _fnc_update]; _ctrlSearch ctrlAddEventHandler ["KeyUp", _fnc_update]; _ctrlSearchButton ctrlAddEventHandler ["ButtonClick", _fnc_update]; +_ctrlShowStockMissions ctrlAddEventHandler ["ButtonClick", _fnc_update]; diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 0d72577bd..31d14ec96 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -106,5 +106,13 @@ Textrückmeldung an den Spieler. Tekstowa informacja dla gracza. + + Show all missions + Alle Missionen anzeigen + + + Show custom missions + Eigene Missionen anzeigen + diff --git a/optionals/no_stock_missions/$PBOPREFIX$ b/optionals/no_stock_missions/$PBOPREFIX$ deleted file mode 100644 index 6547fbc42..000000000 --- a/optionals/no_stock_missions/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -x\cba\addons\no_stock_missions diff --git a/optionals/no_stock_missions/config.cpp b/optionals/no_stock_missions/config.cpp deleted file mode 100644 index abcb08829..000000000 --- a/optionals/no_stock_missions/config.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - author = "$STR_CBA_Author"; - name = CSTRING(component); - url = "$STR_CBA_URL"; - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"cba_no_stock_missions_prep"}; - version = VERSION; - authors[] = {"commy2"}; - }; -}; - -class CfgMissions { - class MPMissions {}; -}; diff --git a/optionals/no_stock_missions/no_stock_missions_prep/config.cpp b/optionals/no_stock_missions/no_stock_missions_prep/config.cpp deleted file mode 100644 index 53793d096..000000000 --- a/optionals/no_stock_missions/no_stock_missions_prep/config.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - author = "$STR_CBA_Author"; - name = ECSTRING(no_stock_missions,component); - url = "$STR_CBA_URL"; - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"cba_common"}; - version = VERSION; - }; -}; - -class CfgMissions { - delete MPMissions; -}; diff --git a/optionals/no_stock_missions/no_stock_missions_prep/script_component.hpp b/optionals/no_stock_missions/no_stock_missions_prep/script_component.hpp deleted file mode 100644 index 64d9a090e..000000000 --- a/optionals/no_stock_missions/no_stock_missions_prep/script_component.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#define COMPONENT no_stock_missions_prep -#include "\x\cba\addons\main\script_mod.hpp" -#include "\x\cba\addons\main\script_macros.hpp" diff --git a/optionals/no_stock_missions/script_component.hpp b/optionals/no_stock_missions/script_component.hpp deleted file mode 100644 index a162c10e3..000000000 --- a/optionals/no_stock_missions/script_component.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#define COMPONENT no_stock_missions -#include "\x\cba\addons\main\script_mod.hpp" -#include "\x\cba\addons\main\script_macros.hpp" From 28b591a26bd1227dc8c79da293320318324595cf Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 16 Feb 2019 13:44:17 +0100 Subject: [PATCH 2/2] check if class is a mission or a 'folder' --- addons/ui/fnc_initDisplayRemoteMissions.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/ui/fnc_initDisplayRemoteMissions.sqf b/addons/ui/fnc_initDisplayRemoteMissions.sqf index 111515fed..8c0546882 100644 --- a/addons/ui/fnc_initDisplayRemoteMissions.sqf +++ b/addons/ui/fnc_initDisplayRemoteMissions.sqf @@ -10,7 +10,10 @@ private _stockMissions = []; private _fnc_findMissions = { { - _stockMissions pushBack configName _x; + if (isText (_x >> "directory")) then { + _stockMissions pushBack configName _x; + }; + _x call _fnc_findMissions; } forEach configProperties [_this, "isClass _x"]; };