Пример #1
0
        internal DevelopmentTopicInfo(DevelopmentProgress tech, DevelopmentResult investmentResult)
        {
            this.topic    = tech.Topic;
            this.textVars = new Var(DevelopmentTopic.LevelKey, tech.NextLevel).
                            And(DevelopmentTopic.PriorityKey, tech.Priority).Get;

            this.Cost           = tech.Topic.Cost.Evaluate(textVars);
            this.InvestedPoints = tech.InvestedPoints;
            this.Investment     = investmentResult.InvestedPoints;
            this.Level          = tech.Level;
            this.NextLevel      = investmentResult.CompletedCount > 1 ? tech.Level + (int)investmentResult.CompletedCount : tech.NextLevel;
        }
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            IsSucceeded = (int)data.api_create_flag != 0;
            Materials   = Array.AsReadOnly((int[])data.api_material);


            void AddToDatabase(dynamic equipmentData)
            {
                var eq = new EquipmentData();

                eq.LoadFromResponse(apiname, Codeplex.Data.DynamicJson.Parse(equipmentData.ToString()));
                KCDatabase.Instance.Equipments.Add(eq);
            }

            bool isOldAPI = data.api_shizai_flag();

            if (isOldAPI)
            {
                // 旧 API フォーマット (-2019/09/30 12:00)
                Results = Array.AsReadOnly(new[] {
                    IsSucceeded ?
                    new DevelopmentResult(data.api_slot_item) :
                    new DevelopmentResult()
                });

                if (IsSucceeded)
                {
                    AddToDatabase(data.api_slot_item);
                }
            }
            else
            {
                // 新 API フォーマット (2019/09/30 21:00-)
                dynamic[] elems   = data.api_get_items;
                var       results = new DevelopmentResult[elems.Length];

                for (int i = 0; i < elems.Length; i++)
                {
                    results[i] = new DevelopmentResult(elems[i]);

                    if (results[i].IsSucceeded)
                    {
                        AddToDatabase(elems[i]);
                    }
                }

                Results = Array.AsReadOnly(results);
            }

            KCDatabase.Instance.Material.LoadFromResponse(apiname, data.api_material);
        }
Пример #3
0
 public void Progress(DevelopmentResult progressData)
 {
     this.Level         += (int)progressData.CompletedCount;
     this.InvestedPoints = progressData.LeftoverPoints;
 }
 internal DevelopmentReport(DevelopmentResult techProgress)
 {
     this.TechProgress = techProgress;
 }