mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Dynamic HUD feature - http://pastebin.com/XPLwqRgd
This commit is contained in:
parent
e04f4d2e69
commit
a21ca947f2
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
Author: Raimonds Virtoss - EpochMod.com
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Creates special dialog that allows players to reposition (move) all HUD groups on the screen and save to profile
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||||
|
|
||||||
|
Github:
|
||||||
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/dynamicHUD/Epoch_dynamicHUD_adjust.sqf
|
||||||
|
*/
|
||||||
|
_this spawn {
|
||||||
|
disableSerialization;
|
||||||
|
(findDisplay 49) closeDisplay 0;
|
||||||
|
|
||||||
|
waitUntil {isNull (findDisplay 49)};
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
findDisplay 46 createDisplay "rmx_moveDynamicHUD";
|
||||||
|
_dsp = findDisplay 66666;
|
||||||
|
rmx_var_dynamicHUD_groupsAdjust = [];
|
||||||
|
rmx_var_drag_MouseDown = false;
|
||||||
|
{
|
||||||
|
_c = _dsp ctrlCreate ["rmx_drag_RscActivePicture", call epoch_getIDC];
|
||||||
|
_c ctrlSetText "#(rgb,8,8,3)color(1,1,1,1)";
|
||||||
|
_c ctrlSetPosition (ctrlPosition _x);
|
||||||
|
_c ctrlCommit 0;
|
||||||
|
rmx_var_dynamicHUD_groupsAdjust set [_forEachIndex, _c];
|
||||||
|
} forEach rmx_var_dynamicHUD_groups;
|
||||||
|
|
||||||
|
waitUntil {!isNull (findDisplay 66666)};
|
||||||
|
while {!isNull (findDisplay 66666)} do {
|
||||||
|
if !(rmx_var_drag_MouseDown) then {
|
||||||
|
{
|
||||||
|
_c = (rmx_var_dynamicHUD_groups select _forEachIndex);
|
||||||
|
_c ctrlSetPosition (ctrlPosition _x);
|
||||||
|
_c ctrlCommit 0;
|
||||||
|
} forEach rmx_var_dynamicHUD_groupsAdjust;
|
||||||
|
};
|
||||||
|
uiSleep 0.1;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
//reset hud positions
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
true
|
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
Author: Raimonds Virtoss - EpochMod.com
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
|
||||||
|
Description:
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||||
|
|
||||||
|
Github:
|
||||||
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/dynamicHUD/Epoch_loadSave.sqf
|
||||||
|
*/
|
@ -0,0 +1,126 @@
|
|||||||
|
/*
|
||||||
|
Author: Raimonds Virtoss - EpochMod.com
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Creates special HUD Groups defined in CfgDynamicHUD.hpp at the start of the game.
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||||
|
|
||||||
|
Github:
|
||||||
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/dynamicHUD/Epoch_dynamicHUD_start.sqf
|
||||||
|
*/
|
||||||
|
#include "\A3\ui_f\hpp\defineCommonGrids.inc"
|
||||||
|
|
||||||
|
_cfg = "rmx_dynamicHUD" call EPOCH_returnConfig;
|
||||||
|
_configs = "true" configClasses _cfg;
|
||||||
|
|
||||||
|
setMousePosition [0.5,0.5];
|
||||||
|
|
||||||
|
disableSerialization;
|
||||||
|
_dsp = findDisplay 46;
|
||||||
|
|
||||||
|
rmx_var_dynamicHUD_groups = [];
|
||||||
|
rmx_var_dynamicHUD_groupCTRL = [];
|
||||||
|
|
||||||
|
{
|
||||||
|
_group = _dsp ctrlCreate ["rscControlsGroup", call Epoch_getIDC];
|
||||||
|
rmx_var_dynamicHUD_groups set [_forEachIndex, _group];
|
||||||
|
|
||||||
|
_defaultPopulate = getNumber (_x >> "defaultPopulate");
|
||||||
|
_defaultPos = getNumber (_x >> "defaultPos");
|
||||||
|
_arraySize = getNumber (_x >> "arraySize");
|
||||||
|
_classname = getText (_x >> "classname");
|
||||||
|
_offsetX = getNumber (_x >> "offSetX");
|
||||||
|
_offsetY = getNumber (_x >> "offSetY");
|
||||||
|
_height = getNumber (_x >> "height");
|
||||||
|
_width = getNumber (_x >> "width");
|
||||||
|
|
||||||
|
_wCtrl = _width * GUI_GRID_W;
|
||||||
|
_hCtrl = _height * GUI_GRID_H;
|
||||||
|
_oX = _offsetX * _wCtrl;
|
||||||
|
_oY = _offsetY * _hCtrl;
|
||||||
|
|
||||||
|
_w = 0; _h = 0;
|
||||||
|
if (_defaultPopulate in [0,1,4]) then {
|
||||||
|
_w = _arraySize * _width * GUI_GRID_W;
|
||||||
|
_h = _height * GUI_GRID_H;
|
||||||
|
} else {
|
||||||
|
_w = _width * GUI_GRID_W;
|
||||||
|
_h = _arraySize * _height * GUI_GRID_H;
|
||||||
|
};
|
||||||
|
|
||||||
|
_groupPos = switch _defaultPos do {
|
||||||
|
case 0: {[SafezoneX, safezoneY, _w, _h]};
|
||||||
|
case 1: {[0.5 - _w/2, safezoneY, _w, _h]};
|
||||||
|
case 2: {[(safezoneW + safezoneX) - _w, safezoneY, _w, _h]};
|
||||||
|
case 3: {[SafezoneX, 0.5 - _h/2, _w, _h]};
|
||||||
|
case 4: {[0.5 - _w/2, 0.5 - _h/2, _w, _h]};
|
||||||
|
case 5: {[(safezoneW + safezoneX) - _w, 0.5 - _h/2, _w, _h]};
|
||||||
|
case 6: {[SafezoneX, (safezoneH + safezoneY) - _h, _w, _h]};
|
||||||
|
case 7: {[0.5 - _w/2, (safezoneH + safezoneY) - _h, _w, _h]};
|
||||||
|
case 8: {[(safezoneW + safezoneX) - _w, (safezoneH + safezoneY) - _h, _w, _h]};
|
||||||
|
default {[0,0,0,0]};
|
||||||
|
};
|
||||||
|
|
||||||
|
_groupPos set [0, (_groupPos select 0)+_oX];
|
||||||
|
_groupPos set [1, (_groupPos select 1)+_oY];
|
||||||
|
_group ctrlSetPosition _groupPos;
|
||||||
|
_group ctrlCommit 0;
|
||||||
|
|
||||||
|
_evenOdd = true;
|
||||||
|
rmx_var_dynamicHUD_groupCTRL set [_forEachIndex, [(configName _x)]];
|
||||||
|
|
||||||
|
for "_i" from 0 to (_arraySize - 1) do {
|
||||||
|
_c = _dsp ctrlCreate [_classname, call Epoch_getIDC, _group];
|
||||||
|
(rmx_var_dynamicHUD_groupCTRL select _forEachIndex) pushBack _c;
|
||||||
|
|
||||||
|
_cPos = switch _defaultPopulate do {
|
||||||
|
case 0: {[_i * _wCtrl,0,_wCtrl, _hCtrl]};
|
||||||
|
case 1: {[(_arraySize - 1 - _i) * _wCtrl,0,_wCtrl, _hCtrl]};
|
||||||
|
case 2: {[0,_i * _hCtrl,_wCtrl, _hCtrl]};
|
||||||
|
case 3: {[0,(_arraySize - 1 - _i) * _hCtrl,_wCtrl, _hCtrl]};
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
_center = _w/2 - _wCtrl/2;
|
||||||
|
|
||||||
|
_result = if (_i == 0) then {
|
||||||
|
[_center, 0, _wCtrl, _hCtrl]
|
||||||
|
} else {
|
||||||
|
if _evenOdd then {
|
||||||
|
[_wCtrl * _i/2 + _center, 0, _wCtrl, _hCtrl]
|
||||||
|
} else {
|
||||||
|
[(_center - _wCtrl/2) - (_wCtrl * _i/2), 0, _wCtrl, _hCtrl]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_evenOdd = !_evenOdd;
|
||||||
|
_result
|
||||||
|
};
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
_center = _h/2 - _hCtrl/2;
|
||||||
|
|
||||||
|
_result = if (_i == 0) then {
|
||||||
|
[0, _center, _wCtrl, _hCtrl]
|
||||||
|
} else {
|
||||||
|
if _evenOdd then {
|
||||||
|
[0, _hCtrl * _i/2 + _center, _wCtrl, _hCtrl]
|
||||||
|
} else {
|
||||||
|
[0, (_center - _hCtrl/2) - (_hCtrl * _i/2), _wCtrl, _hCtrl]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_evenOdd = !_evenOdd;
|
||||||
|
_result
|
||||||
|
};
|
||||||
|
default {[0,0,0,0]};
|
||||||
|
};
|
||||||
|
_c ctrlSetPosition _cPos;
|
||||||
|
_c ctrlCommit 0;
|
||||||
|
};
|
||||||
|
} forEach _configs;
|
||||||
|
|
||||||
|
//dump default positions into an array
|
||||||
|
|
||||||
|
true
|
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Author: Raimonds Virtoss - EpochMod.com
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Returns Control from Dynamic HUD to be manipulated externally. See CfgDynamicHUD.hpp on how to create your own HUD groups.
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||||
|
|
||||||
|
Github:
|
||||||
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/dynamicHUD/Epoch_getHUDCtrl.sqf
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
[_configName, _index] call epoch_getHUDCtrl;
|
||||||
|
["myHudName", 2] call epoch_getHUDCtrl;
|
||||||
|
*/
|
||||||
|
|
||||||
|
if !(_this isEqualTypeArray ["",0]) exitWith {controlNull};
|
||||||
|
|
||||||
|
params ["_gName","_cIdx"];
|
||||||
|
|
||||||
|
_gIdx = -1;
|
||||||
|
|
||||||
|
{
|
||||||
|
if ((_x select 0) isEqualTo _gName) exitWith {_gIdx = _forEachIndex};
|
||||||
|
} forEach rmx_var_dynamicHUD_groupCTRL;
|
||||||
|
|
||||||
|
if (_gIdx == -1) exitWith {controlNull};
|
||||||
|
|
||||||
|
(rmx_var_dynamicHUD_groupCTRL select _gIdx) select _cIdx
|
26
Sources/epoch_code/gui/scripts/epoch_dragControl.sqf
Normal file
26
Sources/epoch_code/gui/scripts/epoch_dragControl.sqf
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
Author: Raimonds Virtoss - EpochMod.com
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Gives ability to move active controls like RscActivePicture (see Epoch_GUI_rmx.hpp for an example).
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||||
|
|
||||||
|
Github:
|
||||||
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/Epoch_dragControl.sqf
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
No direct usage, simply create your control in configs following example in HPP mentioned in description
|
||||||
|
*/
|
||||||
|
private ["_ctrl","_curr","_mpos"];
|
||||||
|
_ctrl = param [0];
|
||||||
|
_curr = ctrlPosition _Ctrl;
|
||||||
|
_mpos = getmousePosition;
|
||||||
|
|
||||||
|
if (rmx_var_drag_MouseDown) then {
|
||||||
|
_ctrl ctrlSetPosition [(_mpos select 0) - (_curr select 2) / 2, (_mpos select 1) - (_curr select 3) / 2 ];
|
||||||
|
_ctrl ctrlCommit 0;
|
||||||
|
};
|
@ -55,6 +55,7 @@ EPOCH_arr_interactedObjs = [];
|
|||||||
EPOCH_buildOption = 0;
|
EPOCH_buildOption = 0;
|
||||||
EPOCH_nearestLocations = [];
|
EPOCH_nearestLocations = [];
|
||||||
EPOCH_lastFiredLocation = [];
|
EPOCH_lastFiredLocation = [];
|
||||||
|
rmx_var_drag_MouseDown = false;
|
||||||
|
|
||||||
["EPOCH_onEachFrame", "onEachFrame", EPOCH_onEachFrame] call BIS_fnc_addStackedEventHandler;
|
["EPOCH_onEachFrame", "onEachFrame", EPOCH_onEachFrame] call BIS_fnc_addStackedEventHandler;
|
||||||
|
|
||||||
|
@ -178,6 +178,7 @@ class CfgClientFunctions
|
|||||||
class secureStorageHandler {};
|
class secureStorageHandler {};
|
||||||
class genderSelection {};
|
class genderSelection {};
|
||||||
class getColorScheme {};
|
class getColorScheme {};
|
||||||
|
class dragControl {};
|
||||||
};
|
};
|
||||||
|
|
||||||
class config {
|
class config {
|
||||||
@ -191,7 +192,15 @@ class CfgClientFunctions
|
|||||||
class dynamicMenuPopulate {};
|
class dynamicMenuPopulate {};
|
||||||
class dynamicMenuCleanup {};
|
class dynamicMenuCleanup {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class dynamicHUD {
|
||||||
|
file = "epoch_code\gui\scripts\dynamicHUD";
|
||||||
|
class dynamicHUD_adjust {};
|
||||||
|
class dynamicHUD_loadSave {};
|
||||||
|
class dynamicHUD_start {};
|
||||||
|
class getHUDCtrl {};
|
||||||
|
};
|
||||||
|
|
||||||
class gui_craft {
|
class gui_craft {
|
||||||
file = "epoch_code\gui\scripts\craftingv2";
|
file = "epoch_code\gui\scripts\craftingv2";
|
||||||
class crafting_animate {};
|
class crafting_animate {};
|
||||||
|
60
Sources/epoch_config/Configs/CfgDynamicHUD.hpp
Normal file
60
Sources/epoch_config/Configs/CfgDynamicHUD.hpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
defaultPos:
|
||||||
|
0 - top left
|
||||||
|
1 - top center
|
||||||
|
2 - top right
|
||||||
|
3 - mid left
|
||||||
|
4 - mid center
|
||||||
|
5 - mid right
|
||||||
|
6 - bottom left
|
||||||
|
7 - bottom center
|
||||||
|
8 - bottom right
|
||||||
|
|
||||||
|
defaultPopulate:
|
||||||
|
0 - right
|
||||||
|
1 - left
|
||||||
|
2 - down
|
||||||
|
3 - up
|
||||||
|
4 - horizontal grow
|
||||||
|
5 - vertical grow
|
||||||
|
|
||||||
|
offSetX: Positive = right, Negative = left
|
||||||
|
offSetY: Positive = down, Negative = up
|
||||||
|
Offsets group of controls, unit measurement is width or height of group. The bigger the group the more it will be offset.
|
||||||
|
Offsets are optional, don't have to be included
|
||||||
|
|
||||||
|
classname:
|
||||||
|
https://community.bistudio.com/wiki/ctrlCreate/classnames
|
||||||
|
|
||||||
|
Obtaining Controls:
|
||||||
|
use epoch_getHUDCtrl function to obtain controls for manipulation
|
||||||
|
_name = Config name of your group
|
||||||
|
_index = each group hosts multiple elements, each element has it's index, starting from 0
|
||||||
|
[_ConfigName, _index] call epoch_getHUDCtrl;
|
||||||
|
["myHUDname", 3] call epoch_getHUDCtrl;
|
||||||
|
*/
|
||||||
|
|
||||||
|
class rmx_dynamicHUD
|
||||||
|
{
|
||||||
|
class topRight //ConfigName matters to be able to use function!
|
||||||
|
{
|
||||||
|
classname = "RscPicture";
|
||||||
|
defaultPos = 2;
|
||||||
|
defaultPopulate = 1;
|
||||||
|
arraySize = 8;
|
||||||
|
width = 4;
|
||||||
|
height = 4;
|
||||||
|
offSetX = 0;
|
||||||
|
offSetY = 0;
|
||||||
|
};
|
||||||
|
class botcenter
|
||||||
|
{
|
||||||
|
classname = "RscPicture";
|
||||||
|
defaultPos = 7;
|
||||||
|
defaultPopulate = 4;
|
||||||
|
arraySize = 9;
|
||||||
|
width = 5;
|
||||||
|
height = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
@ -23,6 +23,13 @@ class CfgEpochConfiguration
|
|||||||
icon = "\x\addons\a3_epoch_code\Data\owner.paa";
|
icon = "\x\addons\a3_epoch_code\Data\owner.paa";
|
||||||
controlGroup = "EpochConfigKeyMap";
|
controlGroup = "EpochConfigKeyMap";
|
||||||
};
|
};
|
||||||
|
class HUD
|
||||||
|
{
|
||||||
|
name = "Customize HUD (WIP)";
|
||||||
|
color[] = {1,1,1,1};
|
||||||
|
icon = "\x\addons\a3_epoch_code\Data\owner.paa";
|
||||||
|
controlGroup = "Epoch_main_config_dynamicHUD";
|
||||||
|
};
|
||||||
class html
|
class html
|
||||||
{
|
{
|
||||||
name = "Changelog";
|
name = "Changelog";
|
||||||
|
@ -57,6 +57,7 @@ disableRandomization[] = {"All"};
|
|||||||
#include "Configs\CfgMissionsTasks.hpp"
|
#include "Configs\CfgMissionsTasks.hpp"
|
||||||
#include "Configs\cfgCrafting.hpp"
|
#include "Configs\cfgCrafting.hpp"
|
||||||
#include "Configs\cfgPricing.hpp"
|
#include "Configs\cfgPricing.hpp"
|
||||||
|
#include "Configs\CfgDynamicHUD.hpp"
|
||||||
|
|
||||||
#include "Configs\CfgEpochClient.hpp"
|
#include "Configs\CfgEpochClient.hpp"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user