Jump to content
Korean Random

Шансы на победу в окне боевого интерфейса


wotunion

Спасибо за ответы, завершено  

27 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts

 

 

Но работы не так мало. Если sirmax одобрит идею попробую начать

 

если бы я ещё и помочь мог...
+100500

обращайтесь если что, вдруг сумеем помочь :))

Link to comment
Short link
Share on other sites

вы не могли показать настройки для этого скрина 

только вечером с домашнего компа

'UPD'

post-10271-0-54232100-1459705456_thumb.png
"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 by goodman
  • Upvote 1
Link to comment
Short link
Share on other sites

Если sirmax одобрит идею попробую начать

Виждеты не трогай, там все переделывать надо, закопаешься.

extraFields в _root с макросами - было бы супер. Потом можно будет добавить макросов с парамеирами танка и т.д. - это уже легко будет сделать.

Link to comment
Short link
Share on other sites

Виждеты не трогай, там все переделывать надо, закопаешься.

extraFields в _root с макросами - было бы супер. Потом можно будет добавить макросов с парамеирами танка и т.д. - это уже легко будет сделать.

В Widgets точно не буду лезть

Один вопрос по JsonX: разные xc с одинаковым объектом-заголовком и следующим уникальным объектом смерджатся или нет?

И еще попробую идею попроще парсинга ExtraFields, в том виде, в котором они в PlayersPanel

Edited by wotunion
Link to comment
Short link
Share on other sites

В Widgets точно не буду лезть

Один вопрос по JsonX: разные xc с одинаковым объектом-заголовком и следующим уникальным объектом смерджатся или нет?

И еще попробую идею попроще парсинга ExtraFields

Лучше идеи сначала обсудить тут, а то может реализация оказаться не подходящей.

Про JSONX не понял, покажи на примере.

Link to comment
Short link
Share on other sites

Лучше идеи сначала обсудить тут, а то может реализация оказаться не подходящей.

Про 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 by wotunion
Link to comment
Short link
Share on other sites

Парсер трогать нельзя.

Насчет "смержится ли" - сделай пример, когда будешь за компом, в таком виде не понятно.


Также для каждого виджета сделать натраиваемое указание об обновлении в зависимости от события в бою уничтожение техники, изменение хп(тут, конечно, страдает производительность), или же настроить виджет статичным

По идее, надо разрешать динамические макросы. Если будет влиять на производительность, можно будет подумать над оптимизацией.

Edited by sirmax
Link to comment
Short link
Share on other sites

Парсер трогать нельзя.

Я не собираюсь трогать оригинальный, буду парсить своим, написанным

Вообще оригинальный код не трогаю в принципе, только дополняю не в ущерб любой оригинальной функциональности

 

 

 

Насчет "смержится ли" - сделай пример, когда будешь за компом, в таком виде не понятно.

 

Это не принципиальный вопрос, попробую когда лоадер виджетов буду делать

 

 

По идее, надо разрешать динамические макросы. Если будет влиять на производительность, можно будет подумать над оптимизацией.

Хм. Так все равно же придется обновлять место, куда прочиталось его значение, что == повторному чтению статического макроса. Или значения, отдаваемые макросом, кэшируются? 

Edited by wotunion
Link to comment
Short link
Share on other sites

Я не собираюсь трогать оригинальный, буду парсить своим, написанным

Это не важно, свой парсер нарушает целостность проекта, усложняет поддержку и т.д., поэтому в общем проекте это не катит.

Ты сначала напиши, что хочешь сделать, может это и не понадобится.

Хм. Так все равно же придется обновлять место, куда прочиталось его значение, что == повторному чтению статического макроса. Или значения, отдаваемые макросом, кэшируются? 

Тут смысл в том, что статические макросы не нужно обновлять - один раз в начале получил значение, и оно не меняется по ходу боя. Динамические макросы надо обновлять, и тут уже надо смотреть события, когда они обновляются, и как это влияет на производительность.

Edited by sirmax
Link to comment
Short link
Share on other sites

Это не важно, свой парсер нарушает целостность проекта, усложняет поддержку и т.д., поэтому в общем проекте это не катит. Ты сначала напиши, что хочешь сделать, может это и не понадобится.

 

 

Сделаю демо, покажу, пушить не буду. 

Понемногу буду выкладывать прогресс

 

Подключение виджетов

 

@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 by wotunion
Link to comment
Short link
Share on other sites

Все равно не понял. 

Самое близкое - это то, как сделаны текстовые поля в миникарте. Тут надо сделать так же:

 

{
  ...
  "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

И не надо называть это "виджетами" - у тебя это простые текстовые поля, а виджет - это более широкий функционал. Виджет - это самостоятельный контрол, такой как миникарта, полоса захвата, дебаг панель и т.д.

 

название тестовое, меняется в любой момент

 

Мне уже страшно. Ты уверен, что понимаешь задачу, и можешь ее сделать?

 

 

 

Задачу то  понимаю, но не изучил до конца реализацию обработки строки, содержащую макрос

 

Вот, например,

 

"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 by wotunion
Link to comment
Short link
Share on other sites

Задачу то  понимаю, но не изучил до конца реализацию обработки строки, содержащую макрос

Вот, например,

"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

Обычно для подстановки значений макросов используется функция 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 by wotunion
Link to comment
Short link
Share on other sites

Еще один вопрос, делать все настройки текстовых полей  в одном файле, как в minimapLabelsTemplates.xc, или каждое поле в своем .xc?

Первый вроде как компактнее и удобнее для редактирования, зато второй мобильнее

Мне не принципиально, это надо в теме по дефолтному конфигу будет спросить. Я бы делал в одном файле.

Link to comment
Short link
Share on other sites

 

 

Мне не принципиально, это надо в теме по дефолтному конфигу будет спросить. Я бы делал в одном файле.
 

 

Utils.createStyleSheet можно использовать (в PlayersPanel используется, на миникарте - нет) ? 

Link to comment
Short link
Share on other sites

Utils.createStyleSheet можно использовать (в PlayersPanel используется, на миникарте - нет) ? 

Можно, хотя я не помню, почему в миникарте я без него сделал. Миникарта делалась позже ушей, так что если там не используется, я по какой-то причине от этого отказался. Скорей всего из-за того, что в значениях могут использоваться макросы, поэтому более эффективно менять их отдельно, чем переделывать весь стиль.

Link to comment
Short link
Share on other sites

 

 

Можно, хотя я не помню, почему в миникарте я без него сделал. Миникарта делалась позже ушей, так что если там не используется, я по какой-то причине от этого отказался. Скорей всего из-за того, что в значениях могут использоваться макросы, поэтому более эффективно менять их отдельно, чем переделывать весь стиль.
 

Ок, уже для каждого текстового поля реализовано создание отдельного стайлшита через Utils

 

Весь код будет в одном классе + 1 строчка в BattleMain.as для инициализации,

 

ну и для апдейта во время боя можно по строчке в ивенты кинуть и сделать, допустим, настройку для поля типа Updateable true|false и UpdateOnEvent = '...'. полезно будет для хп панели или для шансов на победу. но это позже

Link to comment
Short link
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...