Exemplo n.º 1
0
        public void SetUpgradeLevel(Technology tech)
        {
            var upgradeIndex = upgradeDetails.FindIndex(d => d.tech == tech);

            if (upgradeIndex < 0)
            {
                return;
            }

            currentUpgrade = upgradeDetails[upgradeIndex];
            foreach (var detail in upgradeDetails)
            {
                detail.model.SetActive(currentUpgrade.tech == detail.tech);
            }
        }
Exemplo n.º 2
0
    public void ApplyUpgrade(UpgradeDetail tp_upgrade, int upgraded, List <int> s, int UpgradeNumber)
    {
        this.UpgradeNumber = UpgradeNumber;
        this.found         = true;
        this.maxBought     = false;
        if (upgrade)
        {
            this.UpgradeCount      = transform.GetChild(0).GetComponent <Text> ();
            this.UpgradeCount.text = "";
        }
        this.RecIds = new List <int> ();

        appliedUpgrade   = tp_upgrade;
        cost             = appliedUpgrade.StartCost + Mathf.FloorToInt(appliedUpgrade.CostIncrease * upgraded);
        this.Upgraded    = upgraded;
        this.maxUpgrades = this.appliedUpgrade.UpgradeCount;

        GetComponent <Image> ().color = new Color(0.6f, 0.6f, 0.6f, 1.0f);
        if (this.Upgraded > 0)
        {
            this.UpgradeCount.text = this.Upgraded + "/" + this.maxUpgrades;

            if (this.Upgraded == this.maxUpgrades)
            {
                this.maxBought = true;
                this.buyable   = false;
                GetComponent <Image> ().color = new Color(1.0f, 1.0f, 1.0f, 0.6f);
            }
        }

        this.RecIds = s;

        if (RecIds.Count == 1)
        {
            if (RecIds [0] == 0)
            {
                this.unlocked = true;
            }
            else
            {
                GetComponent <Image> ().color = new Color(0.6f, 0.6f, 0.6f, 1.0f);
            }
        }
    }
Exemplo n.º 3
0
    private void ApplyStats(UpgradeDetail d, int value)
    {
        switch (d.Type)
        {
        case 0:
            this.Modifier = base_Modifier + ((float)(d.Value * value) / 100);
            Debug.Log(this.Modifier);
            break;

        case 1:
            this.CritModifier = base_CritModifier + ((float)(d.Value * value) / 100);
            break;

        case 2:
            this.TargetCount = base_TargetCount + d.Value * value;
            break;

        case 3:
            this.SkillUse = base_SkillUse + d.Value * value;
            break;
        }
    }
Exemplo n.º 4
0
        /// <summary>
        /// 查询升级详情
        /// </summary>
        public DTOBackUpgradeDetail SearchUpgradeDetailByInfo([FromBody] DTOGetUpgradeDetail dto)
        {
            DTOBackUpgradeDetail result = new DTOBackUpgradeDetail()
            {
                rows = new List <UpgradeDetail>()
            };

            if (dto.UpgradeInfoID != Guid.Empty)
            {
                Repository <Prc_UpgradeInfoItem> repository = new Repository <Prc_UpgradeInfoItem>(DbContext);

                List <Prc_UpgradeInfoItem> infoItems = repository.Search(a => !a.IsDelete && a.UpgradeInfo.ID == dto.UpgradeInfoID);

                Repository <Prc_UpgradeInfo> repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);
                Prc_UpgradeInfo info = repositoryInfo.Get(a => a.ID == dto.UpgradeInfoID && !a.IsDelete);

                bool centerHeartLost = false;
                if ((DateTime.Now - info.HeartbeatTime).TotalMinutes > 15)
                {
                    centerHeartLost = true;
                }
                List <string> infoItemIds = new List <string>();

                infoItems.ForEach(a =>
                {
                    UpgradeDetail infoItem = new UpgradeDetail()
                    {
                        UpgradeInfoItemID = a.ID,
                        BusinessType      = (int)a.BusinessType,
                        MallName          = a.BusinessName,
                        HeartbeatStatus   = (a.UpgradeStatus == EnumUpgradeStatus.Reserved || a.UpgradeStatus == EnumUpgradeStatus.Upgrading) ? (centerHeartLost ? 1 : a.HeartbeatStatus) : -1,
                        UpgradeStatus     = (int)a.UpgradeStatus
                    };
                    if (a.UpgradeStatus == EnumUpgradeStatus.Reserved || a.UpgradeStatus == EnumUpgradeStatus.Upgrading)
                    {
                        infoItem.TimeConsum = a.StartUpgradeTime.HasValue ? (int)(DateTime.Now - a.StartUpgradeTime.GetValueOrDefault()).TotalMinutes : 0;
                    }
                    else
                    {
                        infoItem.TimeConsum = a.StartUpgradeTime.HasValue && a.EndUpgradeTime.HasValue ? (int)(a.EndUpgradeTime.GetValueOrDefault() - a.StartUpgradeTime.GetValueOrDefault()).TotalMinutes : 0;
                    }
                    infoItemIds.Add(a.ID.ToString());
                    result.rows.Add(infoItem);
                });

                string sqlText = string.Format(@"select * from
                                            (
                                            select *, ROW_NUMBER() over(partition by UpgradeInfoItemID order by OccurTime desc) as rowNum
                                            from Prc_UpgradeMessage where UpgradeInfoItemID in ('{0}')) ranked
                                            where ranked.rowNum <= 1", string.Join("','", infoItemIds));
                List <UpgradeDetail> msgList = repository.SearchBySql <UpgradeDetail>(sqlText);

                result.rows.ForEach(a => {
                    var msg = msgList.Find(m => m.UpgradeInfoItemID == a.UpgradeInfoItemID);
                    if (msg != null)
                    {
                        a.ID            = msg.ID;
                        a.MessageFlag   = msg.MessageFlag;
                        a.Content       = msg.Content;
                        a.OccurTime     = msg.OccurTime;
                        a.MessageType   = msg.MessageType;
                        a.HandleOptions = new List <string>();
                        a.HandleStatus  = msg.HandleStatus;
                        if (!string.IsNullOrWhiteSpace(msg.MessageFlag) && msg.MessageType == (int)EnumMessageType.Question)
                        {
                            if (msg.HandleStatus == 1)
                            {
                                if (QuestionMsgFlag.s_FlagToOperate.ContainsKey(a.MessageFlag))
                                {
                                    QuestionMsgFlag.s_FlagToOperate[a.MessageFlag].ForEach(b =>
                                    {
                                        a.HandleOptions.Add(b.ToString());
                                    });
                                }
                                else
                                {
                                    a.HandleOptions.Add(EnumQuestionResult.ReTry.ToString());
                                    a.HandleOptions.Add(EnumQuestionResult.Stop.ToString());
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(msg.Result))
                                {
                                    if (msg.Result == EnumQuestionResult.Stop.ToString())
                                    {
                                        a.Content += " => 终止";
                                    }
                                    else if (msg.Result == EnumQuestionResult.ReTry.ToString())
                                    {
                                        a.Content += " => 重试";
                                    }
                                    else if (msg.Result == EnumQuestionResult.Ignore.ToString())
                                    {
                                        a.Content += " => 忽略";
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        a.Content = string.Empty;
                    }
                });

                result.rows = result.rows.OrderBy(a => a.BusinessType).ThenBy(a => a.MallName).ToList();
            }
            return(result);
        }