Kapany3uk Posted April 4, 2016 Share Posted April 4, 2016 Но работы не так мало. Если sirmax одобрит идею попробую начать если бы я ещё и помочь мог... +100500обращайтесь если что, вдруг сумеем помочь :)) Link to comment Short link Share on other sites More sharing options...
goodman Posted April 4, 2016 Share Posted April 4, 2016 (edited) вы не могли показать настройки для этого скрина только вечером с домашнего компа 'UPD' "totalHP":{"enabled":true,"y":34,"x":2} "WinChancesOnBattleInterface":{ "DisableStatic":true, "position":{"halign":"center","x":0,"y":50,"width":50,"height":15}, "font":{"name":"GF","size":10,"align":"center"} }, "elements":[ {"debugPanel":{"_x":"WIDTH/2-180","_y":35,"ping":{"_x":60},"fps":{"_x":30}}}, {"$delay":1000,"battleTimer":{"main":{"_x":"WIDTH/2+55","_y":29}}} ] *настройки дебаг панели применимы только с моим конфигом т.к. в архиве поставляется модифицированная DebugPanel.swf Edited April 4, 2016 by goodman 1 @ Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 4, 2016 Share Posted April 4, 2016 Если sirmax одобрит идею попробую начатьВиждеты не трогай, там все переделывать надо, закопаешься.extraFields в _root с макросами - было бы супер. Потом можно будет добавить макросов с парамеирами танка и т.д. - это уже легко будет сделать. Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 4, 2016 Author Share Posted April 4, 2016 (edited) Виждеты не трогай, там все переделывать надо, закопаешься. extraFields в _root с макросами - было бы супер. Потом можно будет добавить макросов с парамеирами танка и т.д. - это уже легко будет сделать. В Widgets точно не буду лезтьОдин вопрос по JsonX: разные xc с одинаковым объектом-заголовком и следующим уникальным объектом смерджатся или нет? И еще попробую идею попроще парсинга ExtraFields, в том виде, в котором они в PlayersPanel Edited April 4, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 4, 2016 Share Posted April 4, 2016 В Widgets точно не буду лезть Один вопрос по JsonX: разные xc с одинаковым объектом-заголовком и следующим уникальным объектом смерджатся или нет? И еще попробую идею попроще парсинга ExtraFields Лучше идеи сначала обсудить тут, а то может реализация оказаться не подходящей. Про JSONX не понял, покажи на примере. Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 4, 2016 Author Share Posted April 4, 2016 (edited) Лучше идеи сначала обсудить тут, а то может реализация оказаться не подходящей. Про JSONX не понял, покажи на примере. В общем то же самое, movieclip to _root, textfield to _root Со всеми настройками, чистый мультилайн html с подстановкой доступных макросов Только хочу парсер свой, ну и может формат не точно будет соответствовать существующему для Extrafields, можно расширить настройки для дочернего movieclip По JSONX Имеем @xvm Подключаем виджет "widget": $..test.xcwidget..widget Подключаем второй виджет: "widget": $...test2.xcwidget..widget В виджетах, test { widget:{ ... "Qwerty": { ... Test2 {widget:{ "Asdfghj": { ... Смерджится ли в widget { Qwerty{ Asdfghj{ Сори за формат, с телефона пишу Также для каждого виджета сделать натраиваемое указание об обновлении в зависимости от события в бою уничтожение техники, изменение хп(тут, конечно, страдает производительность), или же настроить виджет статичным Edited April 4, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 4, 2016 Share Posted April 4, 2016 (edited) Парсер трогать нельзя. Насчет "смержится ли" - сделай пример, когда будешь за компом, в таком виде не понятно. Также для каждого виджета сделать натраиваемое указание об обновлении в зависимости от события в бою уничтожение техники, изменение хп(тут, конечно, страдает производительность), или же настроить виджет статичным По идее, надо разрешать динамические макросы. Если будет влиять на производительность, можно будет подумать над оптимизацией. Edited April 4, 2016 by sirmax Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 4, 2016 Author Share Posted April 4, 2016 (edited) Парсер трогать нельзя. Я не собираюсь трогать оригинальный, буду парсить своим, написанным Вообще оригинальный код не трогаю в принципе, только дополняю не в ущерб любой оригинальной функциональности Насчет "смержится ли" - сделай пример, когда будешь за компом, в таком виде не понятно. Это не принципиальный вопрос, попробую когда лоадер виджетов буду делать По идее, надо разрешать динамические макросы. Если будет влиять на производительность, можно будет подумать над оптимизацией. Хм. Так все равно же придется обновлять место, куда прочиталось его значение, что == повторному чтению статического макроса. Или значения, отдаваемые макросом, кэшируются? Edited April 4, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 4, 2016 Share Posted April 4, 2016 (edited) Я не собираюсь трогать оригинальный, буду парсить своим, написанным Это не важно, свой парсер нарушает целостность проекта, усложняет поддержку и т.д., поэтому в общем проекте это не катит. Ты сначала напиши, что хочешь сделать, может это и не понадобится. Хм. Так все равно же придется обновлять место, куда прочиталось его значение, что == повторному чтению статического макроса. Или значения, отдаваемые макросом, кэшируются? Тут смысл в том, что статические макросы не нужно обновлять - один раз в начале получил значение, и оно не меняется по ходу боя. Динамические макросы надо обновлять, и тут уже надо смотреть события, когда они обновляются, и как это влияет на производительность. Edited April 4, 2016 by sirmax Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 5, 2016 Author Share Posted April 5, 2016 (edited) Это не важно, свой парсер нарушает целостность проекта, усложняет поддержку и т.д., поэтому в общем проекте это не катит. Ты сначала напиши, что хочешь сделать, может это и не понадобится. Сделаю демо, покажу, пушить не буду. Понемногу буду выкладывать прогресс Подключение виджетов @xvm.xc // XC Widgets // XC Виджеты "widget_1": ${"widget_test.xcwidget":"widget"}, "widget_2": ${"widget_test2.xcwidget":"widget"} Нумерация должна соблюдаться, названия файлов произвольные @sirmax, Пока я далеко не залез: Является ли принципиальным точное соответствие формату ExtraFields, пример которого есть в PlayersPanel.xc "leftPanel": { "x": 0, // from left side of screen "y": 65, "width": 350, "height": 25, // "format": [ // // simple format (just a text) // "{{nick}}", // "<img src='xvm://res/img/panel-bg-l-{{alive|dead}}.png' width='318' height='28'>", // // extended format // { "x": 20, "y": 10, "borderColor": "0xFFFFFF", "format": "{{nick}}" }, // { "x": 200, "src": "xvm://res/contour/{{vehiclename}}.png" } // ] Как парсить не трогая оригинальный код, ведь рендерится это все в PlayersPanel.PlayerListItemRenderer. А здесь нужно кучу операций по обработке массива, потому что число элементов массива произвольное, и если их писать, будет повтор. Ведь не настраивается же, например, hitlog с помощью таких экстраполей. Вижу простую реализацию задачи, если отойти от формата с массивом и прописыванием каждого отдельно атрибута текстового поля, movieclip в настройках виджета и, соответсвенно, присваиванием экземпляру класса виджета, а в html, в частности, само оформленное на вкус и цвет содержание виджета с подстановкой макросов - здесь парсинга не нужно вообще практически, останется только стринг реплейс на значение, отдаваемое макросом. Edited April 4, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 5, 2016 Share Posted April 5, 2016 Все равно не понял. Самое близкое - это то, как сделаны текстовые поля в миникарте. Тут надо сделать так же: { ... "formats": [ ${ "minimapLabelsTemplates.xc":"def.vehicleSpotted" }, ${ "minimapLabelsTemplates.xc":"def.nickSpotted" }, ${ "minimapLabelsTemplates.xc":"def.vtypeLost" }, ${ "minimapLabelsTemplates.xc":"def.vehicleLost" }, ${ "minimapLabelsTemplates.xc":"def.nickLost" }, ${ "minimapLabelsTemplates.xc":"def.vtypeDead" } ] } // Definitions // Шаблоны "def": { // Fields default format // Формат поля по умолчанию "defaultItem": { "enabled": true, "shadow": { "distance": 0, "angle": 45, "color": "0x000000", "alpha": 80, "blur": 2, "strength": 4 }, "alpha": 100, "x": 0, "y": 0, "width": 100, "height": 40, "align": "left", "valign": "top", "antiAliasType": "normal", "bgColor": null, "borderColor": null }, // Vehicle type, visible // Тип техники, видимый "vtypeSpotted": { "$ref": { "path":"def.defaultItem" }, "format": "<font size='13' color='{{.minimap.labelsData.colors.dot.{{sys-color-key}}}}'>{{.minimap.labelsData.vtype.{{vtype-key}}}}</font>", "align": "center", "valign": "center" }, ... И не надо называть это "виджетами" - у тебя это простые текстовые поля, а виджет - это более широкий функционал. Виджет - это самостоятельный контрол, такой как миникарта, полоса захвата, дебаг панель и т.д. стринг реплейс Мне уже страшно. Ты уверен, что понимаешь задачу, и можешь ее сделать? Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 5, 2016 Author Share Posted April 5, 2016 (edited) И не надо называть это "виджетами" - у тебя это простые текстовые поля, а виджет - это более широкий функционал. Виджет - это самостоятельный контрол, такой как миникарта, полоса захвата, дебаг панель и т.д. название тестовое, меняется в любой момент Мне уже страшно. Ты уверен, что понимаешь задачу, и можешь ее сделать? Задачу то понимаю, но не изучил до конца реализацию обработки строки, содержащую макрос Вот, например, "format": "<font size='8' color='{{.minimap.labelsData.colors.txt.{{sys-color-key}}}}'><i>{{vehicle}}</i></font>", Возврат этой же строки (Config....format) с подстановленными значениями возможен методами класса com.xvm.Macros(Macros.as)? или получать значения макросов нужно через Macros.GetGlobalValue Edited April 5, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 5, 2016 Share Posted April 5, 2016 Задачу то понимаю, но не изучил до конца реализацию обработки строки, содержащую макрос Вот, например, "format": "<font size='8' color='{{.minimap.labelsData.colors.txt.{{sys-color-key}}}}'><i>{{vehicle}}</i></font>", Возврат этой же строки (Config....format) с подстановленными значениями возможен методами класса com.xvm.Macros(Macros.as)? или получать значения макросов нужно через Macros.GetGlobalValue Обычно для подстановки значений макросов используется функция Macros.Format(), но у тебя частный случай только с глобальными макросами, поэтому более подходящий метод - Macros.FormatGlobalStringValue(), который не требует имени игрока. Хотя тут могут быть нюансы в реализации, например, может потребоваться объект "options" с дополнительными данными, или имя текущего игрока, чтобы по нему получить информацию о танке и т.д. Это все по ходу будет видно. Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 5, 2016 Author Share Posted April 5, 2016 (edited) Обычно для подстановки значений макросов используется функция Macros.Format(), но у тебя частный случай только с глобальными макросами, поэтому более подходящий метод - Macros.FormatGlobalStringValue(), который не требует имени игрока. Хотя тут могут быть нюансы в реализации, например, может потребоваться объект "options" с дополнительными данными, или имя текущего игрока, чтобы по нему получить информацию о танке и т.д. Это все по ходу будет видно. Хорошо, спасибо Тогда я беру за основу конфигурацию поля как в метках на миникарте В первом демо, когда сделаю, представлю самый простой вариант типа "format": "<font size='8'>{{battletier}}</font>без дополнительных данных, чтобы Вы посмотрели общую реализацию @sirmax, Еще один вопрос, делать все настройки текстовых полей в одном файле, как в minimapLabelsTemplates.xc, или каждое поле в своем .xc? "labels": { "enabled": true, // Format set // Набор форматов "formats": [ ${ "battleLabels.xc":"def.test" }, ${ "battleLabels.xc":"def.test2" }, ] или "labels": { "enabled": true, // Format set // Набор форматов "formats": [ ${ "test.xc":"def.test" }, ${ "test2.xc":"def.test2" }, ] Первый вроде как компактнее и удобнее для редактирования, зато второй мобильнее Edited April 5, 2016 by wotunion Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 5, 2016 Share Posted April 5, 2016 Еще один вопрос, делать все настройки текстовых полей в одном файле, как в minimapLabelsTemplates.xc, или каждое поле в своем .xc? Первый вроде как компактнее и удобнее для редактирования, зато второй мобильнее Мне не принципиально, это надо в теме по дефолтному конфигу будет спросить. Я бы делал в одном файле. Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 5, 2016 Author Share Posted April 5, 2016 Мне не принципиально, это надо в теме по дефолтному конфигу будет спросить. Я бы делал в одном файле. Utils.createStyleSheet можно использовать (в PlayersPanel используется, на миникарте - нет) ? Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 5, 2016 Share Posted April 5, 2016 Utils.createStyleSheet можно использовать (в PlayersPanel используется, на миникарте - нет) ? Можно, хотя я не помню, почему в миникарте я без него сделал. Миникарта делалась позже ушей, так что если там не используется, я по какой-то причине от этого отказался. Скорей всего из-за того, что в значениях могут использоваться макросы, поэтому более эффективно менять их отдельно, чем переделывать весь стиль. Link to comment Short link Share on other sites More sharing options...
wotunion Posted April 5, 2016 Author Share Posted April 5, 2016 Можно, хотя я не помню, почему в миникарте я без него сделал. Миникарта делалась позже ушей, так что если там не используется, я по какой-то причине от этого отказался. Скорей всего из-за того, что в значениях могут использоваться макросы, поэтому более эффективно менять их отдельно, чем переделывать весь стиль. Ок, уже для каждого текстового поля реализовано создание отдельного стайлшита через Utils Весь код будет в одном классе + 1 строчка в BattleMain.as для инициализации, ну и для апдейта во время боя можно по строчке в ивенты кинуть и сделать, допустим, настройку для поля типа Updateable true|false и UpdateOnEvent = '...'. полезно будет для хп панели или для шансов на победу. но это позже Link to comment Short link Share on other sites More sharing options...
sirmax Posted April 5, 2016 Share Posted April 5, 2016 ок Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 6, 2016 Share Posted April 6, 2016 (edited) @wotunion, нужно чтобы поле с шансами скрывалось при нажатии на Tab. Edited April 6, 2016 by Kotyarko_O Link to comment Short link Share on other sites More sharing options...
Recommended Posts