コード例 #1
0
        public Dictionary <string, List <StoreItem> > ItemDictionaryBooks()
        {
            Dictionary <string, List <StoreItem> > books = Bookstore.sItemDictionary;

            //Add written books into the shopping list
            List <Sim>      sList = new List <Sim>(Sims3.Gameplay.Queries.GetObjects <Sim>());
            BookWrittenData data3 = null;

            foreach (Sim s in sList)
            {
                if (s.SimDescription != null && s.SimDescription.ChildOrAbove && s.SkillManager != null)
                {
                    Writing element = s.SkillManager.GetElement(SkillNames.Writing) as Writing;

                    if ((element != null) && (element.WrittenBookDataList.Count > 0))
                    {
                        BookGeneralStoreItem item = null;
                        foreach (WrittenBookData data in element.WrittenBookDataList.Values)
                        {
                            //Check has the book already been added
                            object o = books["General"].Find(delegate(StoreItem i) { return(i.Name.Equals(data.Title)); });

                            if (o == null)
                            {
                                data3        = new BookWrittenData(data, false);
                                data3.Author = s.SimDescription.FullName;

                                ThumbnailKey thumb = new ThumbnailKey(new ResourceKey((ulong)ResourceUtils.XorFoldHashString32("book_standard"), 0x1661233, 1), ThumbnailSize.Medium, ResourceUtils.HashString32("default"), ResourceUtils.HashString32(data.MaterialState));

                                item = new BookGeneralStoreItem(data.Title, (float)data.Value, data3, thumb, ("BookGeneral_" + data.Title.Replace(" ", string.Empty)), new CreateObjectCallback(CreateWrittenBookCallback), new ProcessObjectCallback(ProcessWrittenBookCallback), null, new List <WorldType> {
                                    WorldType.Undefined, WorldType.Base, WorldType.Downtown
                                }, data3.Author, data.Title, data.NumPages, BookData.GetGenreLocalizedString(data.Genre));

                                if (books.ContainsKey("General"))
                                {
                                    books["General"].Add(item);
                                    books["All"].Add(item);
                                }
                            }
                        }
                    }
                }
            }
            return(books);
        }
コード例 #2
0
ファイル: WrittenWord.cs プロジェクト: Robobeurre/NRaas
        public void OnWorldLoadFinished()
        {
            Dictionary<BookWrittenData, bool> existing = new Dictionary<BookWrittenData, bool>();

            foreach (BookWritten book in Sims3.Gameplay.Queries.GetObjects<BookWritten>())
            {
                BookWrittenData bookData = book.Data as BookWrittenData;
                if (bookData == null) continue;

                existing[bookData] = true;
            }

            List<string> remove = new List<string>();

            foreach (SimDescription sim in SimListing.GetResidents(true).Values)
            {
                if (sim.SkillManager == null) continue;

                Writing skill = sim.SkillManager.GetSkill<Writing>(SkillNames.Writing);
                if (skill == null) continue;

                if (skill.WrittenBookDataList == null) continue;

                foreach (WrittenBookData book in skill.WrittenBookDataList.Values)
                {
                    book.Author = sim.FullName;

                    string id = book.Title + book.Author;

                    BookWrittenData bookData;
                    if (!BookData.BookWrittenDataList.TryGetValue(id, out bookData))
                    {
                        // Constructor auto-adds to dictionary
                        bookData = new BookWrittenData(book, true);
                    }

                    existing[bookData] = true;
                }
            }

            RemoveWrittenData("General");
            RemoveWrittenData("All");

            List<StoreItem> general = null, all = null;
            Bookstore.mItemDictionary.TryGetValue("General", out general);
            Bookstore.mItemDictionary.TryGetValue("All", out all);

            List<WorldType> worldTypes = new List<WorldType>();
            worldTypes.Add(GameUtils.GetCurrentWorldType());

            Writing stateSkill = new Writing();

            foreach (KeyValuePair<string,BookWrittenData> pair in BookData.BookWrittenDataList)
            {
                BookWrittenData data = pair.Value;

                if (!existing.ContainsKey(pair.Value))
                {
                    remove.Add(pair.Key);
                    continue;
                }
                else if ((string.IsNullOrEmpty(data.Title)) || (string.IsNullOrEmpty(data.Author)))
                {
                    remove.Add(pair.Key);
                    continue;
                }

                string geoState, materialState;
                stateSkill.GetGeoAndMaterialStates(data.Genre, out geoState, out materialState);

                if (string.IsNullOrEmpty(data.GeometryState))
                {
                    data.GeometryState = geoState;
                }

                if (string.IsNullOrEmpty(data.MaterialState))
                {
                    data.MaterialState = materialState;
                }

                ThumbnailKey thumb = new ThumbnailKey(new ResourceKey((ulong)ResourceUtils.XorFoldHashString32("book_standard"), 0x1661233, 0x1), ThumbnailSize.Medium, ResourceUtils.HashString32(data.GeometryState), ResourceUtils.HashString32(data.MaterialState));

                BookGeneralStoreItem item = new BookGeneralStoreItem(data.Title + " - " + data.Author, (float)data.Value, data, thumb, data.GenerateUIStoreItemID(), new CreateObjectCallback(CreateBookWrittenCallback), new ProcessObjectCallback(ProcessBookWrittenCallback), data.AllowedWorlds, worldTypes, data.Author, data.Title, data.Length, data.GenreString);

                general.Add(item);
                all.Add(item);
            }

            foreach (string id in remove)
            {
                BookData.BookWrittenDataList.Remove(id);

                BooterLogger.AddTrace("Removed: " + id);
            }
        }
コード例 #3
0
ファイル: WrittenWord.cs プロジェクト: yakoder/NRaas
        public void OnWorldLoadFinished()
        {
            Dictionary <BookWrittenData, bool> existing = new Dictionary <BookWrittenData, bool>();

            foreach (BookWritten book in Sims3.Gameplay.Queries.GetObjects <BookWritten>())
            {
                BookWrittenData bookData = book.Data as BookWrittenData;
                if (bookData == null)
                {
                    continue;
                }

                existing[bookData] = true;
            }

            List <string> remove = new List <string>();

            foreach (SimDescription sim in SimListing.GetResidents(true).Values)
            {
                if (sim.SkillManager == null)
                {
                    continue;
                }

                Writing skill = sim.SkillManager.GetSkill <Writing>(SkillNames.Writing);
                if (skill == null)
                {
                    continue;
                }

                if (skill.WrittenBookDataList == null)
                {
                    continue;
                }

                foreach (WrittenBookData book in skill.WrittenBookDataList.Values)
                {
                    book.Author = sim.FullName;

                    string id = book.Title + book.Author;

                    BookWrittenData bookData;
                    if (!BookData.BookWrittenDataList.TryGetValue(id, out bookData))
                    {
                        // Constructor auto-adds to dictionary
                        bookData = new BookWrittenData(book, true);
                    }

                    existing[bookData] = true;
                }
            }

            RemoveWrittenData("General");
            RemoveWrittenData("All");

            List <StoreItem> general = null, all = null;

            Bookstore.mItemDictionary.TryGetValue("General", out general);
            Bookstore.mItemDictionary.TryGetValue("All", out all);

            List <WorldType> worldTypes = new List <WorldType>();

            worldTypes.Add(GameUtils.GetCurrentWorldType());

            Writing stateSkill = new Writing();

            foreach (KeyValuePair <string, BookWrittenData> pair in BookData.BookWrittenDataList)
            {
                BookWrittenData data = pair.Value;

                if (!existing.ContainsKey(pair.Value))
                {
                    remove.Add(pair.Key);
                    continue;
                }
                else if ((string.IsNullOrEmpty(data.Title)) || (string.IsNullOrEmpty(data.Author)))
                {
                    remove.Add(pair.Key);
                    continue;
                }

                string geoState, materialState;
                stateSkill.GetGeoAndMaterialStates(data.Genre, out geoState, out materialState);

                if (string.IsNullOrEmpty(data.GeometryState))
                {
                    data.GeometryState = geoState;
                }

                if (string.IsNullOrEmpty(data.MaterialState))
                {
                    data.MaterialState = materialState;
                }

                ThumbnailKey thumb = new ThumbnailKey(new ResourceKey((ulong)ResourceUtils.XorFoldHashString32("book_standard"), 0x1661233, 0x1), ThumbnailSize.Medium, ResourceUtils.HashString32(data.GeometryState), ResourceUtils.HashString32(data.MaterialState));

                BookGeneralStoreItem item = new BookGeneralStoreItem(data.Title + " - " + data.Author, (float)data.Value, data, thumb, data.GenerateUIStoreItemID(), new CreateObjectCallback(CreateBookWrittenCallback), new ProcessObjectCallback(ProcessBookWrittenCallback), data.AllowedWorlds, worldTypes, data.Author, data.Title, data.Length, data.GenreString);

                general.Add(item);
                all.Add(item);
            }

            foreach (string id in remove)
            {
                BookData.BookWrittenDataList.Remove(id);

                BooterLogger.AddTrace("Removed: " + id);
            }
        }