protected void UpdateContent() { SimPe.PackedFiles.Wrapper.ExtSDesc selectedSim = this.SelectedSim; string house = selectedSim == null ? "" : selectedSim.HouseholdName; this.cbhousehold.Items.Clear(); this.cbhousehold.Items.Add(SimPe.Localization.GetString("[All Households]")); if (pkg == null) { cbhousehold.SelectedIndex = 0; return; } string chouse; List <string> names = new List <string>((string[])FileTable.ProviderRegistry.SimDescriptionProvider.GetHouseholdNames(out chouse).ToArray(typeof(String))); this.cbhousehold.Items.AddRange(names.ToArray()); int index = names.IndexOf(house); if (index < 0) { index = names.IndexOf(chouse); } cbhousehold.SelectedIndex = index + 1; this.SelectedSim = selectedSim; }
void DeleteRelations(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.SIM_DESCRIPTION_FILE); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { if (pfd.Instance == inst) { continue; } ArrayList list = new ArrayList(); SimPe.PackedFiles.Wrapper.ExtSDesc sdsc = new SimPe.PackedFiles.Wrapper.ExtSDesc(); sdsc.ProcessData(pfd, pkg); foreach (uint i in sdsc.Relations.SimInstances) { if (i != inst) { list.Add((ushort)i); } } if (list.Count < sdsc.Relations.SimInstances.Length) { sdsc.Relations.SimInstances = new ushort[list.Count]; list.CopyTo(sdsc.Relations.SimInstances); sdsc.SynchronizeUserData(); } } }
public void ExecuteEventHandler(object sender, SimPe.Events.ResourceEventArgs e) { if (!RealChangeEnabledStateEventHandler(null, e)) { System.Windows.Forms.MessageBox.Show(SimPe.Localization.GetString("This is not an appropriate context in which to use this tool"), this.ToString()); return; } SimPe.PackedFiles.Wrapper.ExtSDesc victim = new SimPe.PackedFiles.Wrapper.ExtSDesc(); victim.ProcessData(e.Items[0].Resource); if (Message.Show("Are you sure you want to remove \"" + victim.SimName + " " + victim.SimFamilyName + "\" from your Neighborhood? You can not undo this, so make sure you have created a Backup!\n\nDelete the Sim?", "Warning", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No) { return; } uint inst = victim.FileDescriptor.Instance; uint guid = victim.SimId; DeleteSRels(inst, guid, victim.Package, victim); DeleteRelations(inst, guid, victim.Package, victim); DeleteRes(0xEBFEE33F, inst, guid, victim.Package, victim); //DNA DeleteRes(0xCD95548E, inst, guid, victim.Package, victim); //want & fear DeleteFamilyTies(inst, guid, victim.Package, victim); DeleteMemories(inst, guid, victim.Package, victim); DeleteFamMembers(inst, guid, victim.Package, victim); DeleteCharacterFile(inst, guid, victim.Package, victim); victim.FileDescriptor.MarkForDelete = true; }
protected SimPe.PackedFiles.Wrapper.ExtSDesc GetDescriptionByInstance(uint inst) { SimPe.PackedFiles.Wrapper.ExtSDesc ret = (SimPe.PackedFiles.Wrapper.ExtSDesc)FileTable.ProviderRegistry.SimDescriptionProvider.FindSim((ushort)inst); return(ret); #if UNREACHABLE if (ret == null) { if (Package == null) { return(null); } if (this.FileDescriptor == null) { return(null); } SimPe.Interfaces.Files.IPackedFileDescriptor pfd = Package.FindFile(Data.MetaData.SIM_DESCRIPTION_FILE, 0, FileDescriptor.Group, inst); if (pfd == null) { return(null); } ret = new SimPe.PackedFiles.Wrapper.ExtSDesc(); ret.ProcessData(pfd, Package); } return(ret); #endif }
AddSimToPoolEventArgs DoAddSimToPool(SimPe.PackedFiles.Wrapper.ExtSDesc sdsc, string name, string household, System.Drawing.Image img) { AddSimToPoolEventArgs e = new AddSimToPoolEventArgs(sdsc, name, household, img, 0); OnAddSimToPool(e); if (AddSimToPool != null) { AddSimToPool(this, e); } return(e); }
internal AddSimToPoolEventArgs(SimPe.PackedFiles.Wrapper.ExtSDesc sdsc, string name, string household, System.Drawing.Image img, int groupindex) { this.sdsc = sdsc; this.name = name; this.img = img; this.household = household; this.grpid = groupindex; cancel = false; }
protected void AddImage(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc) { if (sdesc.Image != null) { if ((sdesc.Unlinked != 0x00) || (!sdesc.AvailableCharacterData) || sdesc.IsNPC) { Image img = (Image)sdesc.Image.Clone(); System.Drawing.Graphics g = Graphics.FromImage(img); g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; Pen pen = new Pen(Data.MetaData.SpecialSimColor, 3); g.FillRectangle(pen.Brush, 0, 0, img.Width, img.Height); int pos = 2; if (sdesc.Unlinked != 0x00) { g.FillRectangle(new SolidBrush(Data.MetaData.UnlinkedSim), pos, 2, 25, 25); pos += 28; } if (!sdesc.AvailableCharacterData) { g.FillRectangle(new SolidBrush(Data.MetaData.InactiveSim), pos, 2, 25, 25); pos += 28; } if (sdesc.IsNPC) { g.FillRectangle(new SolidBrush(Data.MetaData.NPCSim), pos, 2, 25, 25); pos += 28; } this.ilist.Images.Add(img); this.iListSmall.Images.Add(ImageLoader.Preview(img, iListSmall.ImageSize)); } else { this.ilist.Images.Add(sdesc.Image); this.iListSmall.Images.Add(ImageLoader.Preview(sdesc.Image, iListSmall.ImageSize)); } } else { //this.ilist.Images.Add(new Bitmap(this.GetType().Assembly.GetManifestResourceStream("SimPe.Plugin.Network.png"))); //this.iListSmall.Images.Add(ImageLoader.Preview(new Bitmap(this.GetType().Assembly.GetManifestResourceStream("SimPe.Plugin.Network.png")), iListSmall.ImageSize)); this.ilist.Images.Add(new Bitmap(sdesc.GetType().Assembly.GetManifestResourceStream("SimPe.PackedFiles.Wrapper.noone.png"))); this.iListSmall.Images.Add(ImageLoader.Preview(new Bitmap(sdesc.GetType().Assembly.GetManifestResourceStream("SimPe.PackedFiles.Wrapper.noone.png")), iListSmall.ImageSize)); } }
protected Image UpdateIcon(SimPe.PackedFiles.Wrapper.ExtSDesc sdsc) { if (sim != null && sdsc != null) { Image img = SimListView.BuildSimPreviewImage(sdsc, GetBackgroundColor(sdsc)); bool hr = sim.HasRelationWith(sdsc); if (hr) { MakeRelationIcon(img); } return(img); } return(null); }
public SteepValley.Windows.Forms.XPListViewItem Add(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc, Image imgbig) { SteepValley.Windows.Forms.XPListViewItem lvi = new SteepValley.Windows.Forms.XPListViewItem(); try { this.LargeImageList.Images.Add(imgbig); lvi.ImageIndex = LargeImageList.Images.Count - 1; } catch (Exception ex) { Console.WriteLine(ex); } lvi.Text = " " + sdesc.SimName + " " + sdesc.SimFamilyName; if (this.Columns.Count > 1) { lvi.SubItems.Add(" " + Columns[1].Text + ": " + sdesc.HouseholdName); } if (this.Columns.Count > 2) { lvi.SubItems.Add(" " + Columns[2].Text + ": 0x" + Helper.HexString(sdesc.SimId)); } if (this.Columns.Count > 3) { lvi.SubItems.Add(" " + Columns[3].Text + ": 0x" + Helper.HexString((ushort)sdesc.FileDescriptor.Instance)); } if (this.Columns.Count > 4) { if (sdesc.University.OnCampus == 0x1) { lvi.SubItems.Add(" " + Columns[4].Text + ": " + Localization.Manager.GetString("YoungAdult")); } else { lvi.SubItems.Add(" " + Columns[4].Text + ": " + new Data.LocalizedLifeSections(sdesc.CharacterDescription.LifeSection).ToString()); } } this.Items.Add(lvi); return(lvi); }
protected void FillList() { this.Cursor = Cursors.WaitCursor; WaitingScreen.Wait(); ilist.Images.Clear(); this.iListSmall.Images.Clear(); lv.BeginUpdate(); lv.Items.Clear(); Interfaces.Files.IPackedFileDescriptor[] pfds = package.FindFiles(Data.MetaData.SIM_DESCRIPTION_FILE); try { foreach (Interfaces.Files.IPackedFileDescriptor spfd in pfds) { Application.DoEvents(); PackedFiles.Wrapper.ExtSDesc sdesc = new SimPe.PackedFiles.Wrapper.ExtSDesc(); sdesc.ProcessData(spfd, package); bool doAdd = false; doAdd |= (this.cbNpc.Checked && realIsNPC(sdesc)); doAdd |= (this.cbTownie.Checked && realIsTownie(sdesc)); doAdd |= (this.ckbPlayable.Checked && realIsPlayable(sdesc)); doAdd |= (this.ckbUnEditable.Checked && realIsUneditable(sdesc)); //WaitingScreen.UpdateImage(ImageLoader.Preview(sdesc.Image, new Size(64, 64))); if (doAdd) { AddSim(sdesc); } } sorter.Sorting = lv.Sorting; lv.Sort(); } finally { lv.EndUpdate(); WaitingScreen.Stop(this); this.Cursor = Cursors.Default; } }
void DeleteFamilyTies(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x8C870743); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.FamilyTies ft = new SimPe.PackedFiles.Wrapper.FamilyTies(null); ft.ProcessData(pfd, pkg); ArrayList sims = new ArrayList(); foreach (SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim fts in ft.Sims) { if (fts.Instance != inst) { sims.Add(fts); ArrayList items = new ArrayList(); foreach (SimPe.PackedFiles.Wrapper.Supporting.FamilyTieItem fti in fts.Ties) { if (fti.Instance != inst) { items.Add(fti); } } fts.Ties = new SimPe.PackedFiles.Wrapper.Supporting.FamilyTieItem[items.Count]; items.CopyTo(fts.Ties); } } SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim[] fsims = new SimPe.PackedFiles.Wrapper.Supporting.FamilyTieSim[sims.Count]; sims.CopyTo(fsims); ft.Sims = fsims; ft.SynchronizeUserData(); } }
public SteepValley.Windows.Forms.XPListViewItem Add(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc, Color bgcol) { Image imgbig = BuildSimPreviewImage(bgcol, sdesc.Image, sdesc.SimId); return(Add(sdesc, imgbig)); }
public Image GetSimIcon(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc, Color bgcol) { return(BuildSimPreviewImage(bgcol, sdesc.Image, sdesc.SimId)); }
public SteepValley.Windows.Forms.XPListViewItem Add(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc) { return(Add(sdesc, SimPe.PackedFiles.Wrapper.SimPoolControl.GetImagePanelColor(sdesc))); }
void DeleteCharacterFile(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { //do not delete for NPCs if (victim.IsNPC) { return; } if (System.IO.File.Exists(victim.CharacterFileName)) { if (Message.Show("SimPE can now delete the Character File \"" + victim.CharacterFileName + "\" from your System. \n\nShould SimPE delete this File?", "Question", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No) { return; } try { SimPe.Packages.StreamItem si = SimPe.Packages.StreamFactory.UseStream(victim.CharacterFileName, System.IO.FileAccess.Read); si.Close(); System.IO.File.Delete(victim.CharacterFileName); /*FileTable.ProviderRegistry.SimNameProvider.BaseFolder = null; * FileTable.ProviderRegistry.SimNameProvider.BaseFolder = System.IO.Path.GetDirectoryName(pkg.SaveFileName);*/ } catch (Exception ex) { Helper.ExceptionMessage(ex); } } }
protected void AddSim(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc) { //if (!sdesc.HasImage) return; AddImage(sdesc); ListViewItem lvi = new ListViewItem(); lvi.Text = sdesc.SimName + " " + sdesc.SimFamilyName; lvi.ImageIndex = ilist.Images.Count - 1; lvi.Tag = sdesc; lvi.SubItems.Add(sdesc.HouseholdName); if (sdesc.University.OnCampus == 0x1) { lvi.SubItems.Add(Localization.Manager.GetString("YoungAdult")); } else { lvi.SubItems.Add(new Data.LocalizedLifeSections(sdesc.CharacterDescription.LifeSection).ToString()); } string kind = ""; if (realIsNPC(sdesc)) { kind = "NPC"; } else if (realIsTownie(sdesc)) { kind = "Townie"; } else if (realIsPlayable(sdesc)) { kind = "Playable"; } else if (realIsUneditable(sdesc)) { kind = "Uneditable"; } lvi.SubItems.Add(kind); if (sdesc.University.OnCampus == 0x1) { lvi.SubItems.Add(Localization.Manager.GetString("yes")); } else { lvi.SubItems.Add(Localization.Manager.GetString("no")); } lvi.SubItems.Add("0x" + Helper.HexString(sdesc.FileDescriptor.Instance)); string avl = ""; if (!sdesc.AvailableCharacterData) { avl += "no Character File"; } if (sdesc.Unlinked != 0x00) { if (avl != "") { avl += ", "; } avl += "Unlinked"; } if (avl == "") { avl = "OK"; } lvi.SubItems.Add(avl); lvi.SubItems.Add("0x" + Helper.HexString(sdesc.SimId)); if (System.IO.File.Exists(sdesc.CharacterFileName)) { System.IO.Stream s = System.IO.File.OpenRead(sdesc.CharacterFileName); double sz = s.Length / 1024.0; s.Close(); s.Dispose(); s = null; lvi.SubItems.Add(System.IO.Path.GetFileNameWithoutExtension(sdesc.CharacterFileName)); lvi.SubItems.Add(sz.ToString("N2") + "kb"); } else { lvi.SubItems.Add("---"); lvi.SubItems.Add("---"); } //toolTip1.SetToolTip(lvi, sdesc.CharacterFileName); lv.Items.Add(lvi); }
void DeleteFamMembers(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x46414D49); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.PackedFiles.Wrapper.Fami f = new SimPe.PackedFiles.Wrapper.Fami(null); f.ProcessData(pfd, pkg); ArrayList list = new ArrayList(); foreach (uint i in f.Members) { if (i != guid) { list.Add(i); } } f.Members = new uint[list.Count]; list.CopyTo(f.Members); f.SynchronizeUserData(); } }
void DeleteMemories(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(0x4E474248); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { SimPe.Plugin.Ngbh n = new Ngbh(null); n.ProcessData(pfd, pkg); SimPe.Plugin.Collections.NgbhSlots slots = new SimPe.Plugin.Collections.NgbhSlots(n, Data.NeighborhoodSlots.Sims); foreach (NgbhSlot s in n.Sims) { if (s.SlotID != inst) { slots.Add(s); SimPe.Plugin.Collections.NgbhItems list = new SimPe.Plugin.Collections.NgbhItems(s); foreach (NgbhItem i in s.ItemsA) { if (i.SimID != guid && i.SimInstance != inst && i.OwnerInstance != inst) { list.Add(i); } } s.ItemsA = list; list = new SimPe.Plugin.Collections.NgbhItems(s); foreach (NgbhItem i in s.ItemsB) { if (i.SimID != guid && i.SimInstance != inst && i.OwnerInstance != inst) { list.Add(i); } } s.ItemsB = list; } } n.Sims = slots; n.SynchronizeUserData(); } }
protected virtual System.Drawing.Color GetBackgroundColor(SimPe.PackedFiles.Wrapper.ExtSDesc sdsc) { return(GetImagePanelColor(sdsc)); }
void DeleteRes(uint type, uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(type); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { if (pfd.Instance == inst) { pfd.MarkForDelete = true; } } }
void DeleteSRels(uint inst, uint guid, SimPe.Interfaces.Files.IPackageFile pkg, SimPe.PackedFiles.Wrapper.ExtSDesc victim) { SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = pkg.FindFiles(Data.MetaData.RELATION_FILE); foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds) { uint up = (pfd.Instance & 0xFFFF0000) >> 16; uint low = (pfd.Instance & 0x0000FFFFF); if (up == inst || low == inst) { pfd.MarkForDelete = true; } } }
void UpdateSimList(string household) { SimPe.PackedFiles.Wrapper.ExtSDesc selectedSim = this.SelectedSim; if (household != null && selectedSim != null && selectedSim.HouseholdName != household) { selectedSim = null; } gp.BeginUpdate(); gp.Clear(); lastsel = null; Hashtable ht = FileTable.ProviderRegistry.SimDescriptionProvider.SimInstance; Wait.SubStart(ht.Count); int ct = 0; System.Collections.SortedList map = new System.Collections.SortedList(); foreach (SimPe.PackedFiles.Wrapper.ExtSDesc sdsc in ht.Values) { if (household != null) { if (household != sdsc.HouseholdName) { continue; } } string name = sdsc.SimName + " " + sdsc.SimFamilyName; System.Drawing.Image simimg = gp.GetSimIcon(sdsc, GetBackgroundColor(sdsc)); AddSimToPoolEventArgs ret = DoAddSimToPool(sdsc, name, household, simimg); if (!ret.Cancel) { SteepValley.Windows.Forms.XPListViewItem eip = gp.Add(sdsc, simimg); eip.Tag = sdsc; eip.GroupIndex = ret.GroupIndex; if (map.ContainsKey(name)) { name += " (" + sdsc.FileDescriptor.Instance.ToString() + ")"; } map[name] = eip; Wait.Message = eip.Text; } Wait.Progress = ct++; } SetViewMode(); if (gp.Items.Count > 0) { if (selectedSim != null) { SelectedSim = selectedSim; } else { gp.Items[0].Selected = true; } try { if (SelectedSimChanged != null) { SelectedSimChanged(this, ((SimPe.PackedFiles.Wrapper.ExtSDesc)gp.Items[0].Tag).Image, (Wrapper.SDesc)((SimPe.PackedFiles.Wrapper.ExtSDesc)gp.Items[0].Tag)); } } catch (Exception ex) { Console.WriteLine(ex); } } gp.EndUpdate(); Wait.SubStop(); }