Пример #1
0
 protected virtual void OnCurrencyChanged(float amountBefore, CurrencyDecorator decorator)
 {
     if (decorator.currency == currency)
     {
         currencyUIElement.Repaint(decorator);
     }
 }
Пример #2
0
        private double VisitImpl(Inquiry inq, Func <string, string> gen)
        {
            var            val = 0D;
            IFundFormatter fmt = new BaseFundFormatter();

            if (!double.IsNaN(inq.Ratio))
            {
                fmt = new RatioDecorator(fmt, inq.Ratio);
            }

            var o =
                $"[{(inq.IsLeftExtended ? "" : m_Rng.StartDate.AsDate())}~{m_Rng.EndDate.AsDate()}] {(inq.General ? "G" : "")}";
            var query = ParsingF.GroupedQuery(
                $"{gen(o)}`{(inq.ByCurrency ? "C" : "")}{(inq.ByTitle ? "t" : "")}{(inq.BySubTitle ? "s" : "")}{(inq.ByContent ? "c" : "")}{(inq.ByRemark ? "r" : "")}{(inq.ByCurrency || inq.ByTitle || inq.BySubTitle || inq.ByContent || inq.ByRemark ? "" : "v")}{(!inq.ByCurrency ? "X" : "")}");
            var gq = m_Accountant.SelectVoucherDetailsGrouped(query);

            if (inq.ByCurrency)
            {
                foreach (var grp in gq.Items.Cast <ISubtotalCurrency>())
                {
                    var curr = grp.Currency;
                    // ReSharper disable once PossibleInvalidOperationException
                    var ratio = m_Accountant.From(m_Rng.EndDate.Value, curr)
                                * m_Accountant.To(m_Rng.EndDate.Value, m_BaseCurrency);

                    var theFmt = new CurrencyDecorator(fmt, curr, ratio);

                    val += theFmt.GetFund(grp.Fund);

                    m_Sb.Append(
                        new SubtotalVisitor(Composite.Merge(m_Path, inq.Name), theFmt, inq.HideContent)
                        .PresentSubtotal(grp, query.Subtotal, m_Serializer));
                }
            }
            else
            {
                val += fmt.GetFund(gq.Fund);

                m_Sb.Append(
                    new SubtotalVisitor(Composite.Merge(m_Path, inq.Name), fmt, inq.HideContent)
                    .PresentSubtotal(gq, query.Subtotal, m_Serializer));
            }

            return(val);
        }
        public static void CurrencyDecorator(string name, CurrencyDecorator currencyDecorator)
        {
            EditorGUILayout.BeginHorizontal();

            if (currencyDecorator.amount > 0f && currencyDecorator.currency == null)
            {
                GUI.color = Color.red;
            }
            ObjectPickerUtility.RenderObjectPickerForType <CurrencyDefinition>(string.Empty, currencyDecorator.currency, (val) =>
            {
                currencyDecorator.currency = val;
            });

            GUI.color = Color.white;
            var prevLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 60;
            currencyDecorator.amount    = EditorGUILayout.FloatField("Amount", currencyDecorator.amount);
            EditorGUIUtility.labelWidth = prevLabelWidth;

            EditorGUILayout.EndHorizontal();
        }
Пример #4
0
        public void Repaint(CurrencyDecorator amount)
        {
            // TODO: Maybe add fractions conversion to lower values, as done in main system (1.12 silver is 1 silver and 12 copper).

            foreach (var currencyUI in currencies)
            {
                if (currencyUI.currency == null)
                {
                    Debug.LogWarning("Empty currencyUIElement in group ", currencyUI.transform);
                    continue;
                }

                if (currencyUI.currency == amount.currency)
                {
                    currencyUI.currencyUIElement.Repaint(amount);
                }
                else
                {
                    currencyUI.currencyUIElement.Reset();
                }
            }
        }
Пример #5
0
 public CurrencyDecoratorMessage(CurrencyDecorator <double> dec)
 {
     amount       = (float)dec.amount;
     currencyGuid = dec.currency?.ID ?? Guid.Empty;
 }