public void SetTalent(int garrTalentID, TalentTreeItemAbilityButton sameTierButton) { this.m_garrTalentID = garrTalentID; this.m_sameTierButton = sameTierButton; if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID)) { this.m_talent = PersistentTalentData.talentDictionary[garrTalentID]; } this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID); Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID); if (sprite == null) { this.m_missingIconText.gameObject.SetActive(true); this.m_missingIconText.text = string.Concat(string.Empty, this.m_garrTalentRec.IconFileDataID); } else { this.m_missingIconText.gameObject.SetActive(false); this.m_abilityIcon.sprite = sprite; } Material material = new Material(this.m_grayscaleShader); this.m_abilityIcon.material = material; this.m_abilityIcon.material.SetFloat("_GrayscaleAmount", 1f); }
private int GetMaxTroops(int garrClassSpecID) { GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID); int followerClassLimit = 0; if (record != null) { followerClassLimit = (int)record.FollowerClassLimit; } foreach (WrapperGarrisonTalent value in PersistentTalentData.talentDictionary.Values) { if ((value.Flags & 1) == 0) { continue; } GarrTalentRec garrTalentRec = StaticDB.garrTalentDB.GetRecord(value.GarrTalentID); if (garrTalentRec == null) { continue; } foreach (GarrAbilityEffectRec garrAbilityEffectRec in from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)garrTalentRec.GarrAbilityID) where (rec.AbilityAction != 34 ? false : (ulong)rec.ActionRecordID == (long)garrClassSpecID) select rec) { followerClassLimit += (int)garrAbilityEffectRec.ActionValueFlat; } } return(followerClassLimit); }
private int GetMaxTroops(int garrClassSpecID) { GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID); int num = 0; if (record != null) { num = (int)record.FollowerClassLimit; } foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values) { if ((wrapperGarrisonTalent.Flags & 1) != 0) { GarrTalentRec record2 = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID); if (record2 != null) { foreach (GarrAbilityEffectRec garrAbilityEffectRec in from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)record2.GarrAbilityID) where rec.AbilityAction == 34 && rec.ActionRecordID == garrClassSpecID select rec) { num += (int)garrAbilityEffectRec.ActionValueFlat; } } } } return(num); }
public void SetTalent(int garrTalentID) { this.m_garrTalentID = garrTalentID; this.m_talent = null; if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID)) { this.m_talent = (JamGarrisonTalent)PersistentTalentData.talentDictionary.get_Item(garrTalentID); } this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID); Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID); if (sprite != null) { this.m_missingIconText.get_gameObject().SetActive(false); this.m_abilityIcon.set_sprite(sprite); } else { this.m_missingIconText.get_gameObject().SetActive(true); this.m_missingIconText.set_text(string.Empty + this.m_garrTalentRec.IconFileDataID); } Material material = new Material(this.m_grayscaleShader); this.m_abilityIcon.set_material(material); this.m_abilityIcon.get_material().SetFloat("_GrayscaleAmount", 1f); }
public static float GetMissionDurationTalentMultiplier() { float num = 1f; foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values) { if ((wrapperGarrisonTalent.Flags & 1) != 0) { GarrTalentRec record = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID); if (record != null) { if (record.GarrAbilityID > 0u) { foreach (GarrAbilityEffectRec garrAbilityEffectRec in from rec in StaticDB.garrAbilityEffectDB.GetRecordsByParentID((int)record.GarrAbilityID) where rec.AbilityAction == 17 select rec) { num *= garrAbilityEffectRec.ActionValueFlat; } } } } } return(num); }
public void SetTalent(GarrTalentRec garrTalentRec) { TalentTreeItemAbilityButton talentTreeItemAbilityButton; if (garrTalentRec.UiOrder == 0) { talentTreeItemAbilityButton = this.m_talentButtonLeft; } else { talentTreeItemAbilityButton = this.m_talentButtonRight; } talentTreeItemAbilityButton.SetTalent(garrTalentRec.ID); this.m_talentButtonSolo.SetTalent(garrTalentRec.ID); }
public void SetTalent(GarrTalentRec garrTalentRec) { TalentTreeItemAbilityButton mTalentButtonRight = null; TalentTreeItemAbilityButton mTalentButtonLeft = null; if (garrTalentRec.UiOrder != 0) { mTalentButtonRight = this.m_talentButtonRight; mTalentButtonLeft = this.m_talentButtonLeft; } else { mTalentButtonRight = this.m_talentButtonLeft; mTalentButtonLeft = this.m_talentButtonRight; } mTalentButtonRight.SetTalent(garrTalentRec.ID, mTalentButtonLeft); this.m_talentButtonSolo.SetTalent(garrTalentRec.ID, null); }
public void SetTalent(GarrTalentRec garrTalentRec) { TalentTreeItemAbilityButton talentTreeItemAbilityButton; TalentTreeItemAbilityButton sameTierButton; if ((int)garrTalentRec.UiOrder == 0) { talentTreeItemAbilityButton = this.m_talentButtonLeft; sameTierButton = this.m_talentButtonRight; } else { talentTreeItemAbilityButton = this.m_talentButtonRight; sameTierButton = this.m_talentButtonLeft; } talentTreeItemAbilityButton.SetTalent(garrTalentRec.ID, sameTierButton); this.m_talentButtonSolo.SetTalent(garrTalentRec.ID, null); }
private int GetMaxTroops(int garrClassSpecID) { GarrClassSpecRec record = StaticDB.garrClassSpecDB.GetRecord(garrClassSpecID); int maxTroops = 0; if (record != null) { maxTroops = (int)record.FollowerClassLimit; } IEnumerator enumerator = PersistentTalentData.talentDictionary.Values.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; JamGarrisonTalent jamGarrisonTalent = (JamGarrisonTalent)obj; if ((jamGarrisonTalent.Flags & 1) != 0) { GarrTalentRec record2 = StaticDB.garrTalentDB.GetRecord(jamGarrisonTalent.GarrTalentID); if (record2 != null) { StaticDB.garrAbilityEffectDB.EnumRecordsByParentID((int)record2.GarrAbilityID, delegate(GarrAbilityEffectRec effectRec) { if (effectRec.AbilityAction == 34u && (ulong)effectRec.ActionRecordID == (ulong)((long)garrClassSpecID)) { maxTroops += (int)effectRec.ActionValueFlat; } return(true); }); } } } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } return(maxTroops); }
public static float GetMissionDurationTalentMultiplier() { float multiplier = 1f; IEnumerator enumerator = PersistentTalentData.talentDictionary.Values.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; JamGarrisonTalent jamGarrisonTalent = (JamGarrisonTalent)obj; if ((jamGarrisonTalent.Flags & 1) != 0) { GarrTalentRec record = StaticDB.garrTalentDB.GetRecord(jamGarrisonTalent.GarrTalentID); if (record != null) { if (record.GarrAbilityID > 0u) { StaticDB.garrAbilityEffectDB.EnumRecordsByParentID((int)record.GarrAbilityID, delegate(GarrAbilityEffectRec garrAbilityEffectRec) { if (garrAbilityEffectRec.AbilityAction == 17u) { multiplier *= garrAbilityEffectRec.ActionValueFlat; } return(true); }); } } } } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } return(multiplier); }
public void HandleCanResearchGarrisonTalentResult(int garrTalentID, int result, string whyCantResearch) { if (this.m_garrTalentID != garrTalentID) { return; } if (PersistentTalentData.talentDictionary.ContainsKey(garrTalentID)) { this.m_talent = PersistentTalentData.talentDictionary[garrTalentID]; } this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(garrTalentID); this.m_canResearch = false; if (result != 0) { this.m_whyCantResearch = whyCantResearch; } else { this.m_canResearch = true; } }
public void SetTalent(TalentTreeItemAbilityButton abilityButton) { this.m_abilityButton = abilityButton; this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(abilityButton.GetTalentID()); this.m_talentName.text = this.m_garrTalentRec.Name; this.m_talentDescription.text = WowTextParser.parser.Parse(this.m_garrTalentRec.Description, 0); if (MobileDeviceLocale.GetLanguageCode().StartsWith("ru", StringComparison.OrdinalIgnoreCase) && (this.m_garrTalentRec.ID == 548 || this.m_garrTalentRec.ID == 552)) { try { Regex regex = new Regex("(?<quantity>\\d+)\\s+4(?<singular>[\\p{L}\\d\\s]+):(?<plural1>[\\p{L}\\d\\s]+):(?<plural2>[\\p{L}\\d\\s]+);"); if (regex.Match(this.m_talentDescription.text).Success) { try { this.m_talentDescription.text = regex.Replace(this.m_talentDescription.text, (Match m) => { int num = int.Parse(m.Groups["quantity"].Value); int russianPluralIndex = GeneralHelpers.GetRussianPluralIndex(num); if (russianPluralIndex == 0) { return(string.Concat(num, " ", m.Groups["singular"].Value)); } if (russianPluralIndex == 1) { return(string.Concat(num, " ", m.Groups["plural1"].Value)); } return(string.Concat(num, " ", m.Groups["plural2"].Value)); }); } catch (Exception exception) { Debug.LogException(exception); } } } catch (Exception exception1) { Debug.LogException(exception1); } } this.m_talentDescription.supportRichText = WowTextParser.parser.IsRichText(); Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID); if (sprite != null) { this.m_abilityIcon.sprite = sprite; } this.m_researchTimeAndCostSection.SetActive(true); int num1 = (!abilityButton.CanRespec() ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost); this.m_resourceCostText.text = string.Concat((GarrisonStatus.WarResources() >= num1 ? "<color=#ffffffff>" : "<color=#FF0000FF>"), (!abilityButton.CanRespec() ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost), "</color>"); Sprite sprite1 = GeneralHelpers.LoadCurrencyIcon((int)this.m_garrTalentRec.ResearchCostCurrencyTypesID); if (sprite1 != null) { this.m_resourceIcon.sprite = sprite1; } bool flag = (!abilityButton.IsResearching() ? false : abilityButton.IsRespec()); bool flag1 = false; TalentTreeItemAbilityButton sameTierButton = abilityButton.GetSameTierButton(); if (sameTierButton != null && (sameTierButton.IsOwned() || sameTierButton.IsResearching() && sameTierButton.IsRespec())) { flag1 = true; } TimeSpan timeSpan = TimeSpan.FromSeconds((double)((abilityButton.CanRespec() || flag || flag1 ? this.m_garrTalentRec.RespecDurationSecs : this.m_garrTalentRec.ResearchDurationSecs))); this.m_researchDurationText.text = timeSpan.GetDurationString(false); this.m_yourResourcesDisplayObj.SetActive(false); if (abilityButton.CanResearch() || abilityButton.CanRespec()) { this.m_availableForResearchSection.SetActive(true); this.m_unavailableForResearchSection.SetActive(false); this.m_researchOrRespecText.text = (!abilityButton.CanRespec() ? StaticDB.GetString("RESEARCH", null) : StaticDB.GetString("RESPEC", null)); this.m_yourResourcesDisplayObj.SetActive(true); } else { this.m_availableForResearchSection.SetActive(false); this.m_unavailableForResearchSection.SetActive(true); if (this.m_abilityButton.IsOwned()) { this.m_yourResourcesDisplayObj.SetActive(false); this.m_statusText.text = string.Concat("<color=#ffffffff>", StaticDB.GetString("TALENT_OWNED", null), "</color>"); this.m_researchTimeAndCostSection.SetActive(false); } else if (this.m_abilityButton.IsResearching()) { TimeSpan timeSpan1 = (!abilityButton.IsRespec() ? this.m_abilityButton.GetRemainingResearchTime() : this.m_abilityButton.GetRemainingRespecTime()); this.m_statusText.text = string.Concat(new string[] { "<color=#FFC600FF>", StaticDB.GetString("TIME_LEFT", null), "</color> <color=#ffffffff>", timeSpan1.GetDurationString(false), "</color>" }); } else if (GarrisonStatus.WarResources() < num1) { this.m_yourResourcesDisplayObj.SetActive(true); this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("NEED_MORE_RESOURCES", null), "</color>"); } else if (!this.m_talentTreePanel.AnyTalentIsResearching()) { string whyCantResearch = this.m_abilityButton.GetWhyCantResearch(); if (whyCantResearch == null || !(whyCantResearch != string.Empty)) { this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("MUST_RESEARCH_PREVIOUS_TIER", null), "</color>"); } else { this.m_statusText.text = string.Concat("<color=#FF0000FF>", whyCantResearch, "</color>"); } } else { this.m_statusText.text = string.Concat("<color=#FF0000FF>", StaticDB.GetString("ALREADY_RESEARCHING", null), "</color>"); } } }
public void SetTalent(TalentTreeItemAbilityButton abilityButton) { this.m_abilityButton = abilityButton; this.m_garrTalentRec = StaticDB.garrTalentDB.GetRecord(abilityButton.GetTalentID()); this.m_talentName.set_text(this.m_garrTalentRec.Name); this.m_talentDescription.set_text(WowTextParser.parser.Parse(this.m_garrTalentRec.Description, 0)); this.m_talentDescription.set_supportRichText(WowTextParser.parser.IsRichText()); Sprite sprite = GeneralHelpers.LoadIconAsset(AssetBundleType.Icons, this.m_garrTalentRec.IconFileDataID); if (sprite != null) { this.m_abilityIcon.set_sprite(sprite); } this.m_researchTimeAndCostSection.SetActive(false); int num = (!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost; this.m_resourceCostText.set_text(((GarrisonStatus.Resources() >= num) ? "<color=#ffffffff>" : "<color=#FF0000FF>") + ((!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchCost : this.m_garrTalentRec.RespecCost) + "</color>"); Sprite sprite2 = GeneralHelpers.LoadCurrencyIcon((int)this.m_garrTalentRec.ResearchCostCurrencyTypesID); if (sprite2 != null) { this.m_resourceIcon.set_sprite(sprite2); } Duration duration = new Duration((!abilityButton.CanRespec()) ? this.m_garrTalentRec.ResearchDurationSecs : this.m_garrTalentRec.RespecDurationSecs, false); this.m_researchDurationText.set_text(duration.DurationString); this.m_yourResourcesDisplayObj.SetActive(false); if (abilityButton.CanResearch() || abilityButton.CanRespec()) { this.m_availableForResearchSection.SetActive(true); this.m_unavailableForResearchSection.SetActive(false); this.m_researchOrRespecText.set_text((!abilityButton.CanRespec()) ? StaticDB.GetString("RESEARCH", null) : StaticDB.GetString("RESPEC", null)); this.m_yourResourcesDisplayObj.SetActive(true); this.m_researchTimeAndCostSection.SetActive(true); } else { this.m_availableForResearchSection.SetActive(false); this.m_unavailableForResearchSection.SetActive(true); if (this.m_abilityButton.IsOwned()) { this.m_yourResourcesDisplayObj.SetActive(false); this.m_statusText.set_text("<color=#ffffffff>" + StaticDB.GetString("TALENT_OWNED", null) + "</color>"); } else if (this.m_abilityButton.IsResearching()) { Duration duration2 = new Duration((!abilityButton.IsRespec()) ? ((int)this.m_abilityButton.GetRemainingResearchTime()) : ((int)this.m_abilityButton.GetRemainingRespecTime()), false); this.m_statusText.set_text(string.Concat(new string[] { "<color=#FFC600FF>", StaticDB.GetString("TIME_LEFT", null), "</color> <color=#ffffffff>", duration2.DurationString, "</color>" })); } else if (GarrisonStatus.Resources() < num) { this.m_researchTimeAndCostSection.SetActive(true); this.m_yourResourcesDisplayObj.SetActive(true); this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("NEED_MORE_RESOURCES", null) + "</color>"); } else if (this.m_talentTreePanel.AnyTalentIsResearching()) { this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("ALREADY_RESEARCHING", null) + "</color>"); } else { string whyCantResearch = this.m_abilityButton.GetWhyCantResearch(); if (whyCantResearch != null && whyCantResearch != string.Empty) { this.m_statusText.set_text("<color=#FF0000FF>" + whyCantResearch + "</color>"); } else { this.m_statusText.set_text("<color=#FF0000FF>" + StaticDB.GetString("MUST_RESEARCH_PREVIOUS_TIER", null) + "</color>"); } } } }
public void ScheduleNotifications() { this.ClearPendingNotifications(); if (!Main.instance.m_enableNotifications) { return; } List <NotificationData> list = new List <NotificationData>(); ICollection <WrapperGarrisonMission> values = PersistentMissionData.missionDictionary.Values; foreach (WrapperGarrisonMission wrapperGarrisonMission in values) { GarrMissionRec record = StaticDB.garrMissionDB.GetRecord(wrapperGarrisonMission.MissionRecID); if (record != null && (GARR_FOLLOWER_TYPE)record.GarrFollowerTypeID == GarrisonStatus.GarrisonFollowerType) { if (wrapperGarrisonMission.MissionState == 1) { if ((record.Flags & 16u) == 0u) { TimeSpan t = GarrisonStatus.CurrentTime() - wrapperGarrisonMission.StartTime; TimeSpan timeRemaining = wrapperGarrisonMission.MissionDuration - t; list.Add(new NotificationData { notificationText = record.Name, timeRemaining = timeRemaining, notificationType = NotificationType.missionCompete }); } } } } foreach (WrapperCharacterShipment wrapperCharacterShipment in PersistentShipmentData.shipmentDictionary.Values) { CharShipmentRec record2 = StaticDB.charShipmentDB.GetRecord(wrapperCharacterShipment.ShipmentRecID); if (record2 == null) { Debug.LogError("Invalid Shipment ID: " + wrapperCharacterShipment.ShipmentRecID); } else { string notificationText = "Invalid"; if (record2.GarrFollowerID > 0) { GarrFollowerRec record3 = StaticDB.garrFollowerDB.GetRecord((int)record2.GarrFollowerID); if (record3 == null) { Debug.LogError("Invalid Follower ID: " + record2.GarrFollowerID); continue; } int num = (GarrisonStatus.Faction() != PVP_FACTION.HORDE) ? record3.AllianceCreatureID : record3.HordeCreatureID; CreatureRec record4 = StaticDB.creatureDB.GetRecord(num); if (record4 == null) { Debug.LogError("Invalid Creature ID: " + num); continue; } notificationText = record4.Name; } if (record2.DummyItemID > 0) { ItemRec record5 = StaticDB.itemDB.GetRecord(record2.DummyItemID); if (record5 == null) { Debug.LogError("Invalid Item ID: " + record2.DummyItemID); continue; } notificationText = record5.Display; } TimeSpan t2 = GarrisonStatus.CurrentTime() - wrapperCharacterShipment.CreationTime; TimeSpan timeRemaining2 = wrapperCharacterShipment.ShipmentDuration - t2; list.Add(new NotificationData { notificationText = notificationText, timeRemaining = timeRemaining2, notificationType = NotificationType.workOrderReady }); } } foreach (WrapperGarrisonTalent wrapperGarrisonTalent in PersistentTalentData.talentDictionary.Values) { if ((wrapperGarrisonTalent.Flags & 1) == 0) { if (!(wrapperGarrisonTalent.StartTime <= DateTime.UtcNow)) { GarrTalentRec record6 = StaticDB.garrTalentDB.GetRecord(wrapperGarrisonTalent.GarrTalentID); if (record6 != null) { TimeSpan timeRemaining3 = TimeSpan.Zero; if ((wrapperGarrisonTalent.Flags & 2) == 0) { timeRemaining3 = TimeSpan.FromSeconds((double)record6.ResearchDurationSecs) - (GarrisonStatus.CurrentTime() - wrapperGarrisonTalent.StartTime); } else { timeRemaining3 = TimeSpan.FromSeconds((double)record6.RespecDurationSecs) - (GarrisonStatus.CurrentTime() - wrapperGarrisonTalent.StartTime); } list.Add(new NotificationData { notificationText = record6.Name, timeRemaining = timeRemaining3, notificationType = NotificationType.talentReady }); } } } } int num2 = 0; foreach (NotificationData notificationData in from n in list orderby n.timeRemaining select n) { if (notificationData.notificationType == NotificationType.missionCompete) { LocalNotifications.ScheduleMissionCompleteNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds)); } if (notificationData.notificationType == NotificationType.workOrderReady) { LocalNotifications.ScheduleWorkOrderReadyNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds)); } if (notificationData.notificationType == NotificationType.talentReady) { LocalNotifications.ScheduleTalentResearchCompleteNotification(notificationData.notificationText, ++num2, Convert.ToInt64(notificationData.timeRemaining.TotalSeconds)); } Debug.Log(string.Concat(new object[] { "Scheduling Notification for [", notificationData.notificationType, "] ", notificationData.notificationText, " (", num2, ") in ", notificationData.timeRemaining.TotalSeconds, " seconds" })); } }