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); } }
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); } } }
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; } }
/// <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); }