push v1 map config tool

pageup/down toggle modes
space selects target
delete remove target from data set
ctrl+c fills clipboard with config data
This commit is contained in:
[VB]AWOL 2015-06-16 12:20:23 -05:00
parent daaa4a321a
commit 176a19c33c

View File

@ -0,0 +1,163 @@
/*
Made for A3 Epoch Mod
EpochMod.com
by Aaron Clark - [VB]AWOL
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
http://creativecommons.org/licenses/by-sa/4.0/
*/
player allowDamage false;
player enableFatigue false;
Epoch_selectedIndex = 0;
EP_modes = ["Rocks","ATM","Water","Trash","Trees","Bushes","Wrecks"];
EP_selectedMode = EP_modes select Epoch_selectedIndex;
EP_modeColors = [[0,0,0,1],[0,0.5,0.9,1],[0,0,1,1],[1,0,0,1],[0,1,0,1],[0.5,0.5,0,1],[1,0.5,0.5,1],[1,1,1,1]];
EP_modesCount = (count EP_modes)-1;
EPOCH_dbg_saveMapConfig = {
_br = toString [13,10];
_config_str = "class " + worldName + " {" + _br;
_array = [];
{
_config_str = _config_str + format[' %1[] = {%2',_x,_br];
_printData = missionNamespace getVariable [_x,[]];
_countArray = (count _printData) - 1;
{
_config_str = _config_str + format[' "%1"%2', _x, if (_forEachIndex isEqualTo _countArray) then {_br} else {("," + _br)}];
} forEach _printData;
_config_str = _config_str + " };" + _br;
} forEach EP_modes;
_config_str = _config_str + "};" + _br;
_config_str
};
EPOCH_KeyDownCustom = {
_dikCode = _this select 1;
_shift = _this select 2;
_ctrl = _this select 3;
_alt = _this select 4;
_handled = false;
switch (_dikCode) do {
case 0x2E: {
if (_ctrl) then {
hint "Saved to clipboard";
copyToClipboard call EPOCH_dbg_saveMapConfig;
};
};
case 0xC9 : {
Epoch_selectedIndex = ((Epoch_selectedIndex + 1) min EP_modesCount) max 0;
EP_selectedMode = EP_modes select Epoch_selectedIndex;
hint EP_selectedMode;
_handled = true;
};
case 0xD1 : {
Epoch_selectedIndex = ((Epoch_selectedIndex - 1) min EP_modesCount) max 0;
EP_selectedMode = EP_modes select Epoch_selectedIndex;
hint EP_selectedMode;
_handled = true;
};
case 0xD3: {
_handled = true;
_currentPos = screenToWorld [0.5,0.5];
if !(surfaceIsWater _currentPos) then {
_currentPos = ATLtoASL _currentPos;
};
EP_objects = lineIntersectsObjs[eyePos player, _currentPos, player, objNull, true, 2];
{
if (typeOf _x == "") then {
_objStr = str _x;
_findStart = _objStr find ": ";
if (_findStart != -1) then {
_p3dName = _objStr select [_findStart+2,999];
EPOCH_ALL = EPOCH_ALL - [_p3dName];
{
_varDataDel = missionNamespace getVariable [_x,[]];
if (_p3dName in _varDataDel) exitWith {
_varDataDel = _varDataDel - [_p3dName];
missionNamespace setVariable [_x,_varDataDel];
};
} forEach EP_modes;
};
};
} forEach EP_objects;
};
case 0x39 : {
_handled = true;
_currentPos = screenToWorld [0.5,0.5];
if !(surfaceIsWater _currentPos) then {
_currentPos = ATLtoASL _currentPos;
};
EP_objects = lineIntersectsObjs[eyePos player, _currentPos, player, objNull, true, 2];
_varData = missionNamespace getVariable [EP_selectedMode, []];
_allData = missionNamespace getVariable ["EPOCH_ALL", []];
{
_objStr = str _x;
_findStart = _objStr find ": ";
if (_findStart != -1) then {
_p3dName = _objStr select [_findStart+2,999];
if !(_p3dName in _allData) then {
if !(_p3dName in _varData) then {
_allData pushBack _p3dName;
_varData pushBack _p3dName;
};
};
};
} forEach EP_objects;
missionNamespace setVariable [EP_selectedMode, _varData];
missionNamespace setVariable ["EPOCH_ALL", _allData];
};
};
_handled
};
[] spawn {
(findDisplay 46) displayRemoveAllEventHandlers "KeyDown";
(findDisplay 46) displayAddEventHandler["KeyDown",{_this call EPOCH_KeyDownCustom}];
};
onEachFrame {
_all = nearestObjects [player, [], 20];
{
if (typeOf _x == "") then {
_objStr = str _x;
_findStart = _objStr find ": ";
if (_findStart != -1) then {
_p3dName = _objStr select [_findStart+2,999];
_color = [1,1,1,1];
{
if (_p3dName in (missionNamespace getVariable [_x,[]])) exitWith {
_color = EP_modeColors select _foreachindex;
};
} forEach EP_modes;
drawIcon3D ["\x\addons\a3_epoch_code\Data\Member.paa", _color, getPos _x, 1, 1, 45, _p3dName, 1, 0.04, "PuristaMedium"];
};
};
} forEach _all;
_lineColor = EP_modeColors select Epoch_selectedIndex;
drawLine3D [ASLtoATL eyePos player, screenToWorld [0.5,0.5], _lineColor];
};