public frmEditPowerset(ref IPowerset iSet) { base.Load += this.frmEditPowerset_Load; this.Loading = true; this.InitializeComponent(); this.myPS = new Powerset(iSet); }
public Powerset(IPowerset template) { this.nID = template.nID; this.nArchetype = template.nArchetype; this.DisplayName = template.DisplayName; this.SetType = template.SetType; this.ImageName = template.ImageName; this.FullName = template.FullName; this.SetName = template.SetName; this.Description = template.Description; this.SubName = template.SubName; this.ATClass = template.ATClass; this._powersetGroup = template.GetGroup(); this.GroupName = template.GroupName; this.UIDTrunkSet = template.UIDTrunkSet; this.nIDTrunkSet = template.nIDTrunkSet; this.nIDLinkSecondary = template.nIDLinkSecondary; this.UIDLinkSecondary = template.UIDLinkSecondary; this.Powers = new IPower[template.Powers.Length]; this.Power = new int[template.Power.Length]; Array.Copy((Array)template.Power, (Array)this.Power, this.Power.Length); for (int index = 0; index < this.Powers.Length; ++index) { this.Powers[index] = template.Powers[index]; } this.nIDMutexSets = new int[template.nIDMutexSets.Length]; this.UIDMutexSets = new string[template.UIDMutexSets.Length]; Array.Copy((Array)template.nIDMutexSets, (Array)this.nIDMutexSets, this.nIDMutexSets.Length); Array.Copy((Array)template.UIDMutexSets, (Array)this.UIDMutexSets, this.UIDMutexSets.Length); }
public Powerset(IPowerset template) { nID = template.nID; nArchetype = template.nArchetype; DisplayName = template.DisplayName; SetType = template.SetType; ImageName = template.ImageName; FullName = template.FullName; SetName = template.SetName; Description = template.Description; SubName = template.SubName; ATClass = template.ATClass; _powersetGroup = template.GetGroup(); GroupName = template.GroupName; UIDTrunkSet = template.UIDTrunkSet; nIDTrunkSet = template.nIDTrunkSet; nIDLinkSecondary = template.nIDLinkSecondary; UIDLinkSecondary = template.UIDLinkSecondary; Powers = new IPower[template.Powers.Length]; Power = new int[template.Power.Length]; Array.Copy(template.Power, Power, Power.Length); for (var index = 0; index < Powers.Length; ++index) { Powers[index] = template.Powers[index]; } nIDMutexSets = new int[template.nIDMutexSets.Length]; UIDMutexSets = new string[template.UIDMutexSets.Length]; Array.Copy(template.nIDMutexSets, nIDMutexSets, nIDMutexSets.Length); Array.Copy(template.UIDMutexSets, UIDMutexSets, UIDMutexSets.Length); }
public frmEditPowerset(ref IPowerset iSet) { this.Load += new EventHandler(this.frmEditPowerset_Load); this.Loading = true; this.InitializeComponent(); System.ComponentModel.ComponentResourceManager componentResourceManager = new System.ComponentModel.ComponentResourceManager(typeof(frmEditPowerset)); this.Icon = (System.Drawing.Icon)componentResourceManager.GetObject("$this.Icon"); this.Name = nameof(frmEditPowerset); this.myPS = (IPowerset) new Powerset(iSet); }
public frmEditPowerset(ref IPowerset iSet) { Load += frmEditPowerset_Load; Loading = true; InitializeComponent(); var componentResourceManager = new ComponentResourceManager(typeof(frmEditPowerset)); Icon = Resources.reborn; Name = nameof(frmEditPowerset); myPS = new Powerset(iSet); }
public frmEditPowerset(ref IPowerset iSet) { Load += frmEditPowerset_Load; Loading = true; InitializeComponent(); ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(frmEditPowerset)); Icon = (Icon)componentResourceManager.GetObject("$this.Icon"); Name = nameof(frmEditPowerset); myPS = new Powerset(iSet); }
public static void ChangeSets(clsToonX toon, Character ch, int primaryIndex, int secondaryIndex, int pool0Index, int pool1Index, int pool2Index, int pool3Index, int ancillaryIndex, Func <Archetype, Enums.ePowerSetType, IPowerset[]> getPowerSets, Action enableSecondary) { var at = ch.Archetype; var newPrimaryPowerset = getPowerSets(at, Enums.ePowerSetType.Primary)[primaryIndex]; IPowerset[] ancPowersets = getPowerSets(at, Enums.ePowerSetType.Ancillary); if (toon != null) { IPowerset powerset1 = ch.Powersets[0]; if (powerset1.nID != newPrimaryPowerset.nID) { toon.SwitchSets(newPrimaryPowerset, powerset1); } if (ch.Powersets[0].nIDLinkSecondary > -1) { IPowerset powerset2 = ch.Powersets[1]; IPowerset powerset3 = DatabaseAPI.Database.Powersets[ch.Powersets[0].nIDLinkSecondary]; if (powerset2.nID != powerset3.nID) { toon.SwitchSets(powerset3, powerset2); } } else { enableSecondary(); IPowerset powerset2 = ch.Powersets[1]; IPowerset[] secondaryPowersets = getPowerSets(at, Enums.ePowerSetType.Secondary); IPowerset newPowerset2 = secondaryPowersets[secondaryIndex]; if (powerset2.nID != newPowerset2.nID) { toon.SwitchSets(newPowerset2, powerset2); } } } else { IPowerset[] secondaryPowersets = getPowerSets(at, Enums.ePowerSetType.Secondary); ch.Powersets[0] = newPrimaryPowerset; ch.Powersets[1] = secondaryPowersets[secondaryIndex]; } IPowerset[] poolPowersets = getPowerSets(at, Enums.ePowerSetType.Pool); ch.Powersets[3] = poolPowersets[pool0Index]; ch.Powersets[4] = poolPowersets[pool1Index]; ch.Powersets[5] = poolPowersets[pool2Index]; ch.Powersets[6] = poolPowersets[pool3Index]; if (ancPowersets.Length > 0) { ch.Powersets[7] = ancPowersets[ancillaryIndex]; } ch.Validate(); }
static clsUniversalImport.SetPair FindPower(string iName, int nAT) { IPowerset[] powersetIndexes2 = new IPowerset[2]; clsUniversalImport.SetPair setPair3; if (MidsContext.Character != null) { powersetIndexes2[0] = MidsContext.Character.Powersets[0]; powersetIndexes2[1] = MidsContext.Character.Powersets[1]; clsUniversalImport.SetPair setPair2 = clsUniversalImport.ScanSetArray(iName, powersetIndexes2); if (setPair2.Powerset > -1) { setPair3 = setPair2; return(setPair3); } } int powerByName = DatabaseAPI.GetPowerByName(iName, nAT); if (powerByName < 0) { powerByName = DatabaseAPI.GetPowerByName(iName.Replace("'", ""), nAT); } if (powerByName > -1) { setPair3 = new clsUniversalImport.SetPair(DatabaseAPI.Database.Power[powerByName].PowerSetID, DatabaseAPI.Database.Power[powerByName].PowerSetIndex); } else { powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Ancillary); clsUniversalImport.SetPair setPair2 = clsUniversalImport.ScanSetArray(iName, powersetIndexes2); if (setPair2.Powerset > -1) { setPair3 = setPair2; } else { powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Pool); setPair2 = clsUniversalImport.ScanSetArray(iName, powersetIndexes2); if (setPair2.Powerset > -1) { setPair3 = setPair2; } else { setPair3 = new clsUniversalImport.SetPair(-1, -1); } } } return(setPair3); }
public int CompareTo(object obj) { IPowerset powerset = obj as IPowerset; if (powerset != null) { int num = string.Compare(this.GroupName, powerset.GroupName, StringComparison.OrdinalIgnoreCase); if (num == 0) { num = string.Compare(this.DisplayName, powerset.DisplayName, StringComparison.OrdinalIgnoreCase); } return(num); } throw new ArgumentException("Comparison failed - Passed object was not a Powerset Class!"); }
void lvMutexSets_SelectedIndexChanged(object sender, EventArgs e) { if (!this.Loading && this.cbMutexGroup.SelectedIndex >= 0) { IPowerset ps = this.myPS; ps.UIDMutexSets = new string[this.lvMutexSets.SelectedIndices.Count - 1 + 1]; ps.nIDMutexSets = new int[this.lvMutexSets.SelectedIndices.Count - 1 + 1]; int[] numArray = DatabaseAPI.NidSets(this.cbMutexGroup.SelectedText, Conversions.ToString(-1), Enums.ePowerSetType.None); int num = this.lvMutexSets.SelectedIndices.Count - 1; for (int index = 0; index <= num; index++) { ps.UIDMutexSets[index] = DatabaseAPI.Database.Powersets[numArray[this.lvMutexSets.SelectedIndices[index]]].FullName; ps.nIDMutexSets[index] = DatabaseAPI.NidFromUidPowerset(ps.UIDMutexSets[index]); } } }
void DisplayNameData() { IPowerset ps = this.myPS; this.lblNameFull.Text = this.BuildFullName(); if (ps.GroupName == "" | ps.SetName == "") { this.lblNameUnique.Text = "This name is invalid."; } else if (frmEditPowerset.PowersetFullNameIsUnique(Conversions.ToString(ps.nID), -1)) { this.lblNameUnique.Text = "This name is unique."; } else { this.lblNameUnique.Text = "This name is NOT unique."; } }
void DisplayNameData() { IPowerset ps = myPS; lblNameFull.Text = BuildFullName(); if (ps.GroupName == "" | ps.SetName == "") { lblNameUnique.Text = "This name is invalid."; } else if (PowersetFullNameIsUnique(Convert.ToString(ps.nID))) { lblNameUnique.Text = "This name is unique."; } else { lblNameUnique.Text = "This name is NOT unique."; } }
static bool PowersetFullNameIsUnique(string iFullName, int skipId = -1) { if (!string.IsNullOrEmpty(iFullName)) { int num = DatabaseAPI.Database.Powersets.Length - 1; for (int index = 0; index <= num; index++) { if (index != skipId) { IPowerset powerset = DatabaseAPI.Database.Powersets[index]; if (string.Equals(powerset.FullName, iFullName, StringComparison.OrdinalIgnoreCase)) { return(false); } } } } return(true); }
void lvMutexSets_SelectedIndexChanged(object sender, EventArgs e) { if (Loading || cbMutexGroup.SelectedIndex < 0) { return; } IPowerset ps = myPS; ps.UIDMutexSets = new string[lvMutexSets.SelectedIndices.Count - 1 + 1]; ps.nIDMutexSets = new int[lvMutexSets.SelectedIndices.Count - 1 + 1]; int[] numArray = DatabaseAPI.NidSets(cbMutexGroup.SelectedText, Convert.ToString(-1), Enums.ePowerSetType.None); int num = lvMutexSets.SelectedIndices.Count - 1; for (int index = 0; index <= num; ++index) { ps.UIDMutexSets[index] = DatabaseAPI.Database.Powersets[numArray[lvMutexSets.SelectedIndices[index]]].FullName; ps.nIDMutexSets[index] = DatabaseAPI.NidFromUidPowerset(ps.UIDMutexSets[index]); } }
void btnClose_Click(object sender, EventArgs e) { IPowerset ps = this.myPS; this.lblNameFull.Text = ps.GroupName + "." + ps.SetName; if (ps.GroupName == "" | ps.SetName == "") { int num1 = (int)Interaction.MsgBox(("Powerset name '" + ps.FullName + " is invalid."), MsgBoxStyle.Exclamation, "No Can Do"); } else if (!frmEditPowerset.PowersetFullNameIsUnique(Conversions.ToString(ps.nID), -1)) { int num2 = (int)Interaction.MsgBox(("Powerset name '" + ps.FullName + " already exists, please enter a unique name."), MsgBoxStyle.Exclamation, "No Can Do"); } else { this.myPS.IsModified = true; this.DialogResult = DialogResult.OK; this.Hide(); } }
private static SetPair FindPower(string iName, int nAT) { var sets = new IPowerset[2]; if (MidsContext.Character != null) { sets[0] = MidsContext.Character.Powersets[0]; sets[1] = MidsContext.Character.Powersets[1]; var setPair = ScanSetArray(iName, sets); if (setPair.Powerset > -1) { return(setPair); } } var powerByName = DatabaseAPI.GetPowerIndexByDisplayName(iName, nAT); if (powerByName < 0) { powerByName = DatabaseAPI.GetPowerIndexByDisplayName(iName.Replace("'", ""), nAT); } if (powerByName > -1) { return(new SetPair(DatabaseAPI.Database.Power[powerByName].PowerSetID, DatabaseAPI.Database.Power[powerByName].PowerSetIndex)); } var powersetIndexes1 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Ancillary); var setPair2 = ScanSetArray(iName, powersetIndexes1); if (setPair2.Powerset > -1) { return(setPair2); } var powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Pool); setPair2 = ScanSetArray(iName, powersetIndexes2); return(setPair2.Powerset <= -1 ? new SetPair(-1, -1) : setPair2); }
private static bool MxDReadSaveData(ref byte[] buffer, bool silent) { InherentPowers = new List <PowerEntry>(); DisplayIndex = -1; if (buffer.Length < 1) { MessageBox.Show("Unable to read data - Empty Buffer.", "ReadSaveData Failed"); return(false); } MemoryStream memoryStream; BinaryReader r; try { memoryStream = new MemoryStream(buffer, false); r = new BinaryReader(memoryStream); r.BaseStream.Seek(0L, SeekOrigin.Begin); } catch (Exception ex) { MessageBox.Show("Unable to read data - " + ex.Message, "ReadSaveData Failed"); return(false); } try { var streamIndex = 0; bool magicFound; // try to find magic number, reading 4 bytes at a time, offset by 1 on each failure do { r.BaseStream.Seek(streamIndex, SeekOrigin.Begin); var numArray = r.ReadBytes(4); if (numArray.Length >= 4) { magicFound = true; for (var index = 0; index < MagicNumber.Length; ++index) { if (MagicNumber[index] != numArray[index]) { magicFound = false; } } if (!magicFound) { ++streamIndex; } } else { if (!silent) { MessageBox.Show("Unable to read data - Magic Number not found.", "ReadSaveData Failed"); } r.Close(); memoryStream.Close(); return(false); } } while (!magicFound); var fVersion = r.ReadSingle(); if (fVersion > 2.0) { MessageBox.Show( "File was saved by a newer version of the application. Please obtain the most recent release in order to open this file.", "Unable to Load"); r.Close(); memoryStream.Close(); return(false); } var qualifiedNames = r.ReadBoolean(); var hasSubPower = r.ReadBoolean(); var nIDClass = DatabaseAPI.NidFromUidClass(r.ReadString()); if (nIDClass < 0) { if (!silent) { MessageBox.Show("Unable to read data - Invalid Class UID.", "ReadSaveData Failed"); } r.Close(); memoryStream.Close(); return(false); } var iOrigin = DatabaseAPI.NidFromUidOrigin(r.ReadString(), nIDClass); MidsContext.Character.Reset(DatabaseAPI.Database.Classes[nIDClass], iOrigin); if (fVersion > 1.0) { var align = r.ReadInt32(); MidsContext.Character.Alignment = (Enums.Alignment)align; } MidsContext.Character.Name = r.ReadString(); var powerSetCount = r.ReadInt32(); var expectedArrayLength = new IPowerset[powerSetCount + 1].Length; var names = new List <string>(); for (var index = 0; index < powerSetCount + 1; ++index) { var iName = r.ReadString(); names.Add(iName); } var errors = MidsContext.Character.LoadPowersetsByName(names); foreach (var(i, n) in errors) { MessageBox.Show($"Failed to load powerset by name:{n} at {i}", "Powerset load failure"); } MidsContext.Character.CurrentBuild.LastPower = r.ReadInt32() - 1; var pEntryList = new List <PowerEntry>(); var powerCount = r.ReadInt32(); try { for (var powerIndex = 0; powerIndex <= powerCount; ++powerIndex) { var nId = -1; var name1 = string.Empty; var sidPower1 = -1; if (qualifiedNames) { name1 = r.ReadString(); if (!string.IsNullOrEmpty(name1)) { nId = DatabaseAPI.NidFromUidPower(name1); } } else { sidPower1 = r.ReadInt32(); nId = DatabaseAPI.NidFromStaticIndexPower(sidPower1); } var flag5 = false; PowerEntry powerEntry1; if (powerIndex < MidsContext.Character.CurrentBuild.Powers.Count) { powerEntry1 = MidsContext.Character.CurrentBuild.Powers[powerIndex]; } else { powerEntry1 = new PowerEntry(); flag5 = true; } if ((sidPower1 > -1) | !string.IsNullOrEmpty(name1)) { powerEntry1.Level = r.ReadSByte(); powerEntry1.StatInclude = r.ReadBoolean(); powerEntry1.VariableValue = r.ReadInt32(); if (hasSubPower) { powerEntry1.SubPowers = new PowerSubEntry[r.ReadSByte() + 1]; for (var subPowerIndex = 0; subPowerIndex < powerEntry1.SubPowers.Length; ++subPowerIndex) { var powerSub = new PowerSubEntry(); powerEntry1.SubPowers[subPowerIndex] = powerSub; if (qualifiedNames) { var name2 = r.ReadString(); if (!string.IsNullOrEmpty(name2)) { powerSub.nIDPower = DatabaseAPI.NidFromUidPower(name2); } } else { var sidPower2 = r.ReadInt32(); powerSub.nIDPower = DatabaseAPI.NidFromStaticIndexPower(sidPower2); } if (powerSub.nIDPower > -1) { powerSub.Powerset = DatabaseAPI.Database.Power[powerSub.nIDPower].PowerSetID; powerSub.Power = DatabaseAPI.Database.Power[powerSub.nIDPower].PowerSetIndex; } powerSub.StatInclude = r.ReadBoolean(); if (!((powerSub.nIDPower > -1) & powerSub.StatInclude)) { continue; } var powerEntry2 = new PowerEntry(DatabaseAPI.Database.Power[powerSub.nIDPower]) { StatInclude = true }; MidsContext.Character.CurrentBuild.Powers.Add(powerEntry2); } } } if (nId < 0 && powerIndex < DatabaseAPI.Database.Levels_MainPowers.Length) { powerEntry1.Level = DatabaseAPI.Database.Levels_MainPowers[powerIndex]; } powerEntry1.Slots = new SlotEntry[r.ReadSByte() + 1]; for (var index3 = 0; index3 < powerEntry1.Slots.Length; ++index3) { powerEntry1.Slots[index3] = new SlotEntry { Level = r.ReadSByte(), Enhancement = new I9Slot(), FlippedEnhancement = new I9Slot() }; ReadSlotData(r, ref powerEntry1.Slots[index3].Enhancement, qualifiedNames, fVersion); if (r.ReadBoolean()) { ReadSlotData(r, ref powerEntry1.Slots[index3].FlippedEnhancement, qualifiedNames, fVersion); } } if (powerEntry1.SubPowers.Length > 0) { nId = -1; } if (nId <= -1) { continue; } powerEntry1.NIDPower = nId; powerEntry1.NIDPowerset = DatabaseAPI.Database.Power[nId].PowerSetID; powerEntry1.IDXPower = DatabaseAPI.Database.Power[nId].PowerSetIndex; if (powerEntry1.Level == 0 && powerEntry1.Power.FullSetName == "Pool.Fitness") { if (powerEntry1.NIDPower == 2553) { powerEntry1.NIDPower = 1521; } if (powerEntry1.NIDPower == 2554) { powerEntry1.NIDPower = 1523; } if (powerEntry1.NIDPower == 2555) { powerEntry1.NIDPower = 1522; } if (powerEntry1.NIDPower == 2556) { powerEntry1.NIDPower = 1524; } powerEntry1.NIDPowerset = DatabaseAPI.Database.Power[nId].PowerSetID; powerEntry1.IDXPower = DatabaseAPI.Database.Power[nId].PowerSetIndex; } var ps = powerEntry1.Power?.GetPowerSet(); if (powerIndex < MidsContext.Character.CurrentBuild.Powers.Count) { if (powerEntry1.Power != null && !(!MidsContext.Character.CurrentBuild.Powers[powerIndex].Chosen & (ps != null && ps.nArchetype > -1 || powerEntry1.Power.GroupName == "Pool"))) { flag5 = !MidsContext.Character.CurrentBuild.Powers[powerIndex].Chosen; } else { continue; } } if (flag5) { if (powerEntry1.Power.InherentType != Enums.eGridType.None) { InherentPowers.Add(powerEntry1); } //Console.WriteLine($"{powerEntry1.Power.DisplayName} - {powerEntry1.Power.InherentType}"); //MidsContext.Character.CurrentBuild.Powers.Add(powerEntry1); } else if (powerEntry1.Power != null && (ps != null && ps.nArchetype > -1 || powerEntry1.Power.GroupName == "Pool")) { MidsContext.Character.CurrentBuild.Powers[powerIndex] = powerEntry1; } } var newPowerList = new List <PowerEntry>(); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Class)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Inherent)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Powerset)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Power)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Prestige)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Incarnate)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Accolade)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Pet)); newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Temp)); foreach (var entry in newPowerList) { MidsContext.Character.CurrentBuild.Powers.Add(entry); } } catch (Exception ex) { if (!silent) { MessageBox.Show($"Error reading some power data, will attempt to build character with known data.\r\n{ex.Message}\r\n\r\n{ex.StackTrace}", "ReadSaveData Failed"); } return(false); } MidsContext.Archetype = MidsContext.Character.Archetype; MidsContext.Character.Validate(); MidsContext.Character.Lock(); return(true); } catch (Exception ex) { if (!silent) { MessageBox.Show("Unable to read data - " + ex.Message, "ReadSaveData Failed"); } return(false); } }