Markers - Add scale slider (#8059)

Co-authored-by: commy2 <commy-2@gmx.de>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: jonpas <jonpas33@gmail.com>
This commit is contained in:
frankplow 2021-04-21 21:36:08 +01:00 committed by GitHub
parent ae33943973
commit 6843a221ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 89 additions and 13 deletions

View File

@ -169,3 +169,4 @@ xrufix
Zakant <Zakant@gmx.de> Zakant <Zakant@gmx.de>
zGuba zGuba
Fyuran <dankemedic@hotmail.com> Fyuran <dankemedic@hotmail.com>
Frank <frankplow@protonmail.com>

View File

@ -35,5 +35,11 @@ class RscDisplayInsertMarker {
class MarkerAngleText: RscText { class MarkerAngleText: RscText {
idc = IDC_ACE_INSERT_MARKER_ANGLE_TEXT; idc = IDC_ACE_INSERT_MARKER_ANGLE_TEXT;
}; };
class MarkerScale: RscXSliderH {
idc = IDC_ACE_INSERT_MARKER_SCALE;
};
class MarkerScaleText: RscText {
idc = IDC_ACE_INSERT_MARKER_SCALE_TEXT;
};
}; };
}; };

View File

@ -6,6 +6,7 @@ PREP(onLBSelChangedChannel);
PREP(onLBSelChangedColor); PREP(onLBSelChangedColor);
PREP(onLBSelChangedShape); PREP(onLBSelChangedShape);
PREP(onSliderPosChangedAngle); PREP(onSliderPosChangedAngle);
PREP(onSliderPosChangedScale);
PREP(placeMarker); PREP(placeMarker);
PREP(sendMarkersJIP); PREP(sendMarkersJIP);
PREP(setMarkerJIP); PREP(setMarkerJIP);

View File

@ -15,6 +15,7 @@ if (isMultiplayer && {!isServer} && {hasInterface}) then {
GVAR(mapDisplaysWithDrawEHs) = []; GVAR(mapDisplaysWithDrawEHs) = [];
GVAR(currentMarkerPosition) = []; GVAR(currentMarkerPosition) = [];
GVAR(currentMarkerAngle) = 0; GVAR(currentMarkerAngle) = 0;
GVAR(currentMarkerScale) = 1;
GVAR(currentMarkerColorConfigName) = ""; GVAR(currentMarkerColorConfigName) = "";
GVAR(currentMarkerConfigName) = ""; GVAR(currentMarkerConfigName) = "";

View File

@ -45,6 +45,8 @@
private _aceColorLB = _display displayctrl IDC_ACE_INSERT_MARKER_COLOR; private _aceColorLB = _display displayctrl IDC_ACE_INSERT_MARKER_COLOR;
private _aceAngleSlider = _display displayctrl IDC_ACE_INSERT_MARKER_ANGLE; private _aceAngleSlider = _display displayctrl IDC_ACE_INSERT_MARKER_ANGLE;
private _aceAngleSliderText = _display displayctrl IDC_ACE_INSERT_MARKER_ANGLE_TEXT; private _aceAngleSliderText = _display displayctrl IDC_ACE_INSERT_MARKER_ANGLE_TEXT;
private _aceScaleSlider = _display displayctrl IDC_ACE_INSERT_MARKER_SCALE;
private _aceScaleSliderText = _display displayctrl IDC_ACE_INSERT_MARKER_SCALE_TEXT;
private _mapDisplay = displayParent _display; private _mapDisplay = displayParent _display;
if (isNull _mapDisplay) exitWith {ERROR("No Map");}; if (isNull _mapDisplay) exitWith {ERROR("No Map");};
@ -103,7 +105,8 @@
private _pos = ctrlposition _text; private _pos = ctrlposition _text;
_pos params ["_posX", "_posY", "_posW", "_posH"]; _pos params ["_posX", "_posY", "_posW", "_posH"];
_posX = _posX + 0.01; _posX = _posX + 0.01;
_posY = _posY min ((safeZoneH + safeZoneY) - (8 * _posH + 8 * BORDER)); //prevent buttons being placed below bottom edge of screen _posY = _posY min ((safeZoneH + safeZoneY) - (11 * _posH + 11 * BORDER)); //prevent buttons being placed below bottom edge of screen
_pos set [0, _posX]; _pos set [0, _posX];
_pos set [1, _posY]; _pos set [1, _posY];
_text ctrlSetPosition _pos; _text ctrlSetPosition _pos;
@ -118,9 +121,9 @@
//--- Description //--- Description
_pos set [1, _posY - 1 * _posH]; _pos set [1, _posY - 1 * _posH];
if (GVAR(timestampEnabled)) then { if (GVAR(timestampEnabled)) then {
_pos set [3,7 * _posH + 7 * BORDER]; _pos set [3,9 * _posH + 9 * BORDER];
} else { } else {
_pos set [3,6 * _posH + 6 * BORDER]; _pos set [3,10 * _posH + 10 * BORDER];
}; };
_description ctrlEnable false; _description ctrlEnable false;
_description ctrlSetPosition _pos; _description ctrlSetPosition _pos;
@ -187,16 +190,28 @@
_aceAngleSliderText ctrlSetPosition _pos; _aceAngleSliderText ctrlSetPosition _pos;
_aceAngleSliderText ctrlCommit 0; _aceAngleSliderText ctrlCommit 0;
//--- Scale
_pos set [1, _posY + 5 * _posH + 6 * BORDER + _timestampOffset];
_pos set [2, _posW];
_aceScaleSlider ctrlSetPosition _pos;
_aceScaleSlider ctrlCommit 0;
//--- Scale Text
_pos set [1, _posY + 6 * _posH + 7 * BORDER + _timestampOffset];
_pos set [2, _posW];
_aceScaleSliderText ctrlSetPosition _pos;
_aceScaleSliderText ctrlCommit 0;
private _offsetButtons = 0; private _offsetButtons = 0;
if (isMultiplayer) then { if (isMultiplayer) then {
_pos set [1,_posY + 5 * _posH + 7 * BORDER + _timestampOffset]; _pos set [1,_posY + 7 * _posH + 9 * BORDER + _timestampOffset];
_pos set [3,_posH]; _pos set [3,_posH];
_descriptionChannel ctrlSetStructuredText parseText format ["<t size='0.8'>%1:</t>", localize "str_a3_cfgvehicles_modulerespawnposition_f_arguments_marker_0"]; _descriptionChannel ctrlSetStructuredText parseText format ["<t size='0.8'>%1:</t>", localize "str_a3_cfgvehicles_modulerespawnposition_f_arguments_marker_0"];
_descriptionChannel ctrlSetPosition _pos; _descriptionChannel ctrlSetPosition _pos;
_descriptionChannel ctrlCommit 0; _descriptionChannel ctrlCommit 0;
_pos set [1,_posY + 6 * _posH + 7 * BORDER + _timestampOffset]; _pos set [1,_posY + 8 * _posH + 9 * BORDER + _timestampOffset];
_pos set [3,_posH]; _pos set [3,_posH];
_channel ctrlSetPosition _pos; _channel ctrlSetPosition _pos;
_channel ctrlCommit 0; _channel ctrlCommit 0;
@ -235,11 +250,11 @@
_channel ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedChannel)}]; _channel ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedChannel)}];
_offsetButtons = 7 * _posH + 8 * BORDER; _offsetButtons = 9 * _posH + 10 * BORDER;
} else { } else {
_descriptionChannel ctrlShow false; _descriptionChannel ctrlShow false;
_channel ctrlShow false; _channel ctrlShow false;
_offsetButtons = 5 * _posH + 7 * BORDER; _offsetButtons = 7 * _posH + 9 * BORDER;
}; };
//--- ButtonOK //--- ButtonOK
@ -321,4 +336,20 @@
//Update now and add eventHandler: //Update now and add eventHandler:
[_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle); [_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle);
_aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}]; _aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}];
////////////////////
// init marker scale slider
_aceScaleSlider sliderSetRange [0.5, 2.0];
if !(GVAR(editingMarker) isEqualTo "") then {
//get the original scale
GVAR(currentMarkerScale) = markerSize GVAR(editingMarker);
};
private _curSelScale = GETGVAR(currentMarkerScale,1);
_aceScaleSlider sliderSetPosition _curSelScale;
//Update now and add eventHandler:
[_aceScaleSlider, _curSelScale] call FUNC(onSliderPosChangedScale);
_aceScaleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedScale)}];
}, _this] call CBA_fnc_execNextFrame; }, _this] call CBA_fnc_execNextFrame;

View File

@ -1,7 +1,7 @@
#include "script_component.hpp" #include "script_component.hpp"
/* /*
* Author: PabstMirror * Author: PabstMirror
* Draws the current temp marker. Allows rotation. * Draws the current temp marker. Allows rotation and scale.
* *
* Arguments: * Arguments:
* 0: TheMap <Control> * 0: TheMap <Control>
@ -25,8 +25,8 @@ if (GVAR(currentMarkerConfigName) == "" || {GVAR(currentMarkerColorConfigName) =
ERROR("Bad Data"); ERROR("Bad Data");
}; };
private _sizeX = 1; private _sizeX = GVAR(currentMarkerScale);
private _sizeY = 1; private _sizeY = GVAR(currentMarkerScale);
private _textureConfig = configFile >> "CfgMarkers" >> GVAR(currentMarkerConfigName); private _textureConfig = configFile >> "CfgMarkers" >> GVAR(currentMarkerConfigName);
private _texture = getText (_textureConfig >> "icon"); private _texture = getText (_textureConfig >> "icon");

View File

@ -0,0 +1,28 @@
#include "script_component.hpp"
/*
* Author: frankplow
* Applies scale from on slider position change.
*
* Arguments:
* 0: Slider (idc 1420) <CONTROL>
* 1: Slider Data (scale: 0.5...2.0) <NUMBER>
*
* Return Value:
* None
*
* Example:
* [slider, 1.5] call ace_markers_fnc_onSliderPosChangedScale
*
* Public: No
*/
params ["_ctrl", "_data"];
TRACE_2("params",_ctrl,_data);
private _scale = _data * 100;
_scale = round _scale;
_scale = _scale / 100;
((ctrlParent _ctrl) displayCtrl IDC_ACE_INSERT_MARKER_SCALE_TEXT) ctrlSetText format [localize LSTRING(MarkerScale), _scale];
GVAR(currentMarkerScale) = _data;

View File

@ -58,7 +58,8 @@ if (_closeNum isEqualTo 1) then {
GETGVAR(currentMarkerConfigName,""), GETGVAR(currentMarkerConfigName,""),
GETGVAR(currentMarkerColorConfigName,""), GETGVAR(currentMarkerColorConfigName,""),
GETGVAR(currentMarkerPosition,[]), GETGVAR(currentMarkerPosition,[]),
GETGVAR(currentMarkerAngle,0) GETGVAR(currentMarkerAngle,0),
GETGVAR(currentMarkerScale,1)
] ]
]] call CBA_fnc_globalEvent; ]] call CBA_fnc_globalEvent;

View File

@ -25,7 +25,7 @@ TRACE_2("params",_allMapMarkers,_allMapMarkersProperties);
if (_index != -1) then { if (_index != -1) then {
private _data = _allMapMarkersProperties select _index; private _data = _allMapMarkersProperties select _index;
_data params ["_markerClassname", "_colorClassname", "_pos", "_dir"]; _data params ["_markerClassname", "_colorClassname", "_pos", "_dir", "_scale"];
private _config = (configfile >> "CfgMarkers") >> _markerClassname; private _config = (configfile >> "CfgMarkers") >> _markerClassname;
@ -47,6 +47,7 @@ TRACE_2("params",_allMapMarkers,_allMapMarkersProperties);
_x setMarkerPosLocal _pos; _x setMarkerPosLocal _pos;
_x setMarkerDirLocal _dir; _x setMarkerDirLocal _dir;
_x setMarkerSizeLocal _scale;
}; };
false false
} count allMapMarkers; } count allMapMarkers;

View File

@ -19,7 +19,7 @@
params ["_marker", "_data"]; params ["_marker", "_data"];
TRACE_2("params",_marker,_data); TRACE_2("params",_marker,_data);
_data params ["_markerClassname", "_colorClassname", "_pos", "_dir"]; _data params ["_markerClassname", "_colorClassname", "_pos", "_dir", "_scale"];
private _config = configfile >> "CfgMarkers" >> _markerClassname; private _config = configfile >> "CfgMarkers" >> _markerClassname;
@ -41,6 +41,7 @@ _marker setMarkerColorLocal configName _config;
_marker setMarkerPosLocal _pos; _marker setMarkerPosLocal _pos;
_marker setMarkerDirLocal _dir; _marker setMarkerDirLocal _dir;
_marker setMarkerSizeLocal [_scale, _scale];
// save properties on server machine for JIP, marker editing ready // save properties on server machine for JIP, marker editing ready
if (isMultiplayer && {isServer}) then { if (isMultiplayer && {isServer}) then {

View File

@ -38,3 +38,5 @@
#define IDC_ACE_INSERT_MARKER_COLOR 1221 #define IDC_ACE_INSERT_MARKER_COLOR 1221
#define IDC_ACE_INSERT_MARKER_ANGLE 1230 #define IDC_ACE_INSERT_MARKER_ANGLE 1230
#define IDC_ACE_INSERT_MARKER_ANGLE_TEXT 1231 #define IDC_ACE_INSERT_MARKER_ANGLE_TEXT 1231
#define IDC_ACE_INSERT_MARKER_SCALE 1240
#define IDC_ACE_INSERT_MARKER_SCALE_TEXT 1241

View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Markers"> <Package name="Markers">
<Key ID="STR_ACE_Markers_MarkerScale">
<English>Scale: %1</English>
</Key>
<Key ID="STR_ACE_Markers_MarkerDirection"> <Key ID="STR_ACE_Markers_MarkerDirection">
<English>Direction: %1°</English> <English>Direction: %1°</English>
<German>Drehung: %1°</German> <German>Drehung: %1°</German>