Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
            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;
            }
Ejemplo n.º 7
0
        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));
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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;
            }
        }
Ejemplo n.º 11
0
        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();
            }
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
 public Image GetSimIcon(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc, Color bgcol)
 {
     return(BuildSimPreviewImage(bgcol, sdesc.Image, sdesc.SimId));
 }
Ejemplo n.º 14
0
 public SteepValley.Windows.Forms.XPListViewItem Add(SimPe.PackedFiles.Wrapper.ExtSDesc sdesc)
 {
     return(Add(sdesc, SimPe.PackedFiles.Wrapper.SimPoolControl.GetImagePanelColor(sdesc)));
 }
Ejemplo n.º 15
0
        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);
                }
            }
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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();
            }
        }
Ejemplo n.º 18
0
        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();
            }
        }
Ejemplo n.º 19
0
 protected virtual System.Drawing.Color GetBackgroundColor(SimPe.PackedFiles.Wrapper.ExtSDesc sdsc)
 {
     return(GetImagePanelColor(sdsc));
 }
Ejemplo n.º 20
0
 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;
         }
     }
 }
Ejemplo n.º 21
0
        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;
                }
            }
        }
Ejemplo n.º 22
0
        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();
        }