/* * Author: Jonpas, DaC * Prepares necessary variables and default image. * * Arguments: * 0: Objects * 1: Controller Objects * 2: Image Paths * 3: Action Names * 4: Slide Duration (0 disables automatic transitions) * * Return Value: * None * * Example: * [[object1, object2, object3], [controller1], ["images\image1.paa", "images\image2.paa"], ["Action1", "Action2"], 5] call ace_slideshow_fnc_createSlideshow * * Public: Yes */ #include "script_component.hpp" private ["_currentSlideshow", "_slidesAction", "_varString"]; params [ ["_objects", [], [[]] ], ["_controllers", [], [[]] ], ["_images", [], [[]] ], ["_names", [], [[]] ], ["_duration", 0, [0]] ]; // Verify data if (_objects isEqualTo []) exitWith { ACE_LOGERROR("Slideshow Objects field must NOT be empty!"); }; if (count _images != count _names || {_images isEqualTo []} || {_names isEqualTo []}) exitWith { ACE_LOGERROR("Slideshow Images or Names fields must NOT be empty and must have equal number of items!"); }; // If no controllers use objects as controllers if (_controllers isEqualTo []) then { _controllers = _objects; }; TRACE_4("Information",_objects,_controllers,_images,_names); if (isServer) then { // Default images on whiteboards (first image) { _x setObjectTextureGlobal [0, _images select 0]; } count _objects; // Number of slideshows (multiple modules support) GVAR(slideshows) = GVAR(slideshows) + 1; }; _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code // If interaction menu module is not present, set default duration value if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { _duration = NOINTERACTMENU_DURATION; ACE_LOGINFO_1("Interaction Menu module not present, defaulting duration value to %1",_duration); }; // Add interactions if automatic transitions are disabled, else setup automatic transitions if (_duration == 0) then { { // Add Slides sub-action and populate with images _slidesAction = [QGVAR(Slides), localize LSTRING(Interaction), "", {}, {true}, {(_this select 2) call FUNC(addSlideActions)}, [_objects, _images, _names, _x, _currentSlideshow], [0, 0, 0], 2] call EFUNC(interact_menu,createAction); [_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject); nil } count _controllers; } else { if !(isServer) exitWith {}; // Formatted GVAR string (multiple modules support) _varString = format [QGVAR(slideshow%1), _currentSlideshow]; TRACE_1("Current Slide",_varString); // Set formatted GVAR to first slide missionNamespace setVariable [_varString, 0]; // Automatic transitions handler [FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call EFUNC(common,waitAndExecute); };