Wilem82 Posted October 6, 2016 Share Posted October 6, 2016 Ввиду ограничения связанного с использованием массивов описанного в http://www.koreanrandom.com/forum/topic/34680-config-override/?do=findComment&comment=354370, приводящему к затиранию непричастных к нужным изменениям данных, есть предложение заместо массивов использовать объекты. Пример: было "textFields": [ { "name": "vehicle name", ... }, { "name": "player name", ... } ] стало "textFields": { "vehicleName": { ... }, "playerName": { ... } } что позволит в пользовательском написать: "textFields": { "vehicleName": { "shadow": { ... } } } на случай если всего лишь надо подкорректировать shadow в названии танка по-умолчанию. Мне видится это и правильнее и проще, чем пытаться придумать алгоритм слияния массивов или синтаксис для изменения массива по индексу, например: "textFields[0]": { "shadow": { ... } } Т.к. при перестановке элементов внутри массива в системной конфигурации, пользовательские изменения вдруг начнут менять не то, что предполагалось. Кроме того, появятся ошибки типа index out of bounds, плюс это не очень интуитивно понятно и т.д. При этом если есть задача очистить системный textFields от всех полей (что бы тут же добавить только нужные пользователю), можно ввести что-нибудь на подобии "$ref", например "$ref": { "path": "" } что будет означать "не надо производить слияние с уже существующими полями объекта из системных настроек". Ну то есть пустое значение path это такое магическое значение. @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted October 6, 2016 Share Posted October 6, 2016 Основная проблема в этом подходе - это придумывать названия. Хотя, вроде это вполне решаемо. Я подумаю, если получится сделать поддержку одновременно и массивов, и объектов, то будет смысл сделать. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Wilem82 Posted October 7, 2016 Author Share Posted October 7, 2016 (edited) Основная проблема в этом подходе - это придумывать названия. Хотя, вроде это вполне решаемо. Я подумаю, если получится сделать поддержку одновременно и массивов, и объектов, то будет смысл сделать. А можно на эту же тему как-нибудь сделать, что бы нестандартные топовые элементы (обычно "def", "defaultItem") имели глобальную видимость? Например, что бы из пользовательского конфига сослаться на def.enemySpottedMarker в default/playersPanel.xc из другого файла (myconfig/playersPanel.xc в общем-то). Edited October 7, 2016 by Wilem82 @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted October 7, 2016 Share Posted October 7, 2016 А можно на эту же тему как-нибудь сделать, что бы нестандартные топовые элементы (обычно "def", "defaultItem") имели глобальную видимость? Например, что бы из пользовательского конфига сослаться на def.enemySpottedMarker в default/playersPanel.xc из другого файла. поддержу. имхо "отключение" def от основного конфига не имеет практического значения. в тех же *temlates лишние пару десятков строк кода (три-четыре "пробных" поля) разве могут оказать сильное влияние на память и скорость? а польза очевидна: в первую очередь именно сокращением пользовательского кода до минимума значимых параметров с загрузкой всего остального из "вшитого" дефолта, тем более, что миникарта, к примеру, уже вшита в дефолт целиком, вместе с templates, насколько мне удалось понять... @ Quote Link to comment Short link Share on other sites More sharing options...
demon2597 Posted October 7, 2016 Share Posted October 7, 2016 (edited) сокращением пользовательского кода до минимума значимых параметров с загрузкой всего остального из "вшитого" дефолта актуально только для конфига, который не выкладывается в общий доступ, в противном случае имхо лучше полный вариант, чтобы можно было ответить на вопрос "а где включить то-то и сё-то". ну это я так, в качестве отступления от темы:) Edited October 7, 2016 by demon2597 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.