Jump to content
Korean Random
Sign in to follow this  
EvgenKo423

Создание (почти) собственного динамического цвета

Recommended Posts

Для отображения в "ушах" есть макрос {{frags}}. Я хочу покрасить количество фрагов в определённый цвет в зависимости от текущего значения (в бою). Поскольку для текущего количество фрагов динамический цвет не определён, я сам добавил в colors.xc соответствующую секцию, но в бою цвет не меняется!!

Поэтому возникает вопрос: XVM что просто читает из конфига значения цветов для определённых параметров, а другие не подгружает?? Даже если параметр, по которому определять цвет, существует в самом моде??  о_______О

 

"Добавленная секция"

"frags": [
    { "value": 3,   "color": "0xFFFFFF" },
    { "value": 6,   "color": ${"def.colorRating.normal"   } },
    { "value": 8,   "color": ${"def.colorRating.good"     } },
    { "value": 10,  "color": ${"def.colorRating.very_good"} },
    { "value": 15,  "color": ${"def.colorRating.unique"   } }
]

"Использование цвета"

"fragsFormatLeft": "<font face='$FieldFont' size='13' color='{{c:frags}}' alpha='{{alive?#FF|#80}}'>{{frags}}</font>"
Edited by EvgenKo423

Share this post


Link to post

Short link
Share on other sites

А ничего, как бы, что для такого параметра подстановка просто не запрограммирована в моде ?


Пруф ниже

Edited by Metallist95

Share this post


Link to post

Short link
Share on other sites

Поэтому возникает вопрос: XVM что просто читает из конфига значения цветов для определённых параметров, а другие не подгружает?? Даже если параметр, по которому определять цвет, существует в самом моде??  

Потому что не сделано. (с) КО

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

А ничего, как бы, что для такого параметра подстановка просто не запрограммирована в моде ?

А ничего, как бы, что для универсальности все параметры из конфига должны тупо читаться в словарь, а потом из словаря colors должны браться значения цвета по ключу, стоящему после "c:"?? И только при отсутствии ключа изменений происходить не должно.

Вы че там, на каждый параметр строку кода дописываете??

 

Потому что не сделано. (с) КО

Жаль...

Edited by EvgenKo423

Share this post


Link to post

Short link
Share on other sites
А ничего, как бы, что для универсальности все параметры из конфига должны тупо читаться в словарь, а потом из словаря colors должны браться значения цвета по ключу, стоящему после "c:"?? И только при отсутствии ключа изменений происходить не должно. Вы че там, на каждый параметр строку кода дописываете??

Возьми и реализуй, умник. Или только языком трепать мастер?

Edited by Jove мне как сестра!
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

А ничего, как бы, что для универсальности все параметры из конфига должны тупо читаться в словарь, а потом из словаря colors должны браться значения цвета по ключу, стоящему после "c:"?? И только при отсутствии ключа изменений происходить не должно.

Вы че там, на каждый параметр строку кода дописываете??

Тогда в таком случае бери исходный код и допиливай универсальность, трепло
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Пожалуйста:

1. Убрать из файла /src/xvm-as2/src/com/xvm/Macros.as все строки, использующие GraphicsUtil.GetDynamicColorValue

2. В файле /src/xvm-as2/src/com/xvm/GraphicsUtil.as заменить функцию GetDynamicColorValue на подобную следующей:

Функция

    public static function FillDynamicColorValues(pdata:Object):Object
    {
        var cfg_root: Object = Config.config.colors;

        for(var param:String in cfg_root) {
            var value: Number = pdata[param];
            if (value == null || isNaN(value))
                continue;

            var cname = "c:" + param;
            if (pdata[cname] != null)
                continue;

            var cfg: Array = cfg_root[param];
            var cfg_len: Number = cfg.length;

            for (var i:Number = 0; i < cfg_len; ++i) {
                var cvalue: Number = cfg[i].value;
                var color: Number = Utils.toInt(cfg[i].color, 0xFFFFFF);
                if (value < cvalue)
                    pdata[cname] = "#" + Strings.padLeft(color.toString(16), 6, "0");
            }
        }

        return pdata;
    }

3. В файл /src/xvm-as2/src/com/xvm/Macros.as добавить функцию, подобную следующей:

Функция

    public static function RegisterDynamicColorValues(playerName:String)
    {
        if (!Config.config)
            return;

        var pname:String = Utils.GetPlayerName(playerName);
        dict[pname] = GraphicsUtil.FillDynamicColorValues(dict[pname]);
    }

4. После вызова имеющихся функций Macros.Register* (где бы они там не вызывались...) вызвать Macros.RegisterDynamicColorValues

5. PROFIT!!!

 

Ради одного PR создавать аккаунт на BitBucket-е не буду...

Edited by EvgenKo423
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

 

Ради одного PR создавать аккаунт на BitBucket-е не буду
Можете и не один, раз умеете. Насколько я знаю, команда XVM всегда рада добровольцам. Тем более, это не обязаловка. Можете и раз в месяц коммитить, уже что-то :)
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Да я обычно поиграю в танки пару месяцев, а потом долго на них смотреть не могу :)

Сейчас учёба начинается, у меня времени становится мало...

Share this post


Link to post

Short link
Share on other sites

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

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...