예제 #1
0
        protected virtual void Perform(SimDescription me, BookData book, bool addToList)
        {
            if (me.ReadBookDataList.ContainsKey(book.ID))
            {
                if (addToList)
                {
                    return;
                }

                me.ReadBookDataList.Remove(book.ID);
            }
            else
            {
                if (!addToList)
                {
                    return;
                }

                ReadBookData readData = new ReadBookData();
                readData.BookID    = book.ID;
                readData.TimesRead = 1;

                me.ReadBookDataList.Add(book.ID, readData);
            }
        }
예제 #2
0
파일: TabletEx.cs 프로젝트: yakoder/NRaas
        public static List <Book> GetBooksInTown(Sim actor, bool justFirst, bool noDuplicates, bool autonomous)
        {
            List <Book> list = new List <Book>();

            if (actor != null)
            {
                foreach (Book b in Sims3.Gameplay.Queries.GetObjects <Book>())
                {
                    // Custom
                    if (autonomous)
                    {
                        if (ReadBookData.HasSimFinishedBook(actor, b.Data.ID))
                        {
                            continue;
                        }
                    }

                    if (!justFirst && noDuplicates)
                    {
                        // Fixed Twallan's mistake => he stored the predicate result in a variable outside the loop, so the first "true" value encountered was making it skip all books
                        if (list.Exists((Book toTest) => toTest.BookId == b.BookId))
                        {
                            continue;
                        }
                    }
                    list.Add(b);
                    if (justFirst)
                    {
                        return(list);
                    }
                }
            }
            return(list);
        }
예제 #3
0
        public List <Book> Get()
        {
            //    string[] myArray = {"book1, book2, book3"};
            //     return myArray;
            IGetAllBooks readObject = new ReadBookData();

            return(readObject.GetAllBooks());
        }
예제 #4
0
파일: BookEx.cs 프로젝트: yakoder/NRaas
        public static float GetInterestInBook(Sim actor, Book book)
        {
            if ((book is BookGeneral) || (book is BookWritten))
            {
                float num  = 0f;
                float num2 = 0f;
                if (book.Data == null)
                {
                    return(num);
                }

                if (ReadBookData.HasSimStartedBook(actor, book.Data.ID, false))
                {
                    num += 10f;
                }

                DateAndTime previousDateAndTime = ReadBookData.WhenSimFinishedBook(actor, book.Data.ID);
                float       num3 = SimClock.ElapsedTime(TimeUnit.Days, previousDateAndTime);
                if (num3 >= 1f)
                {
                    num3 = 1f + Math.Min(num3, 4f);
                    num += num3;
                }

                if (actor.SimDescription.TraitManager.HasAnyPreferredGenres)
                {
                    string genreLocalizedString = null;

                    if (book.Data is BookGeneralData)
                    {
                        genreLocalizedString = (book.Data as BookGeneralData).GenreLocalizedString;
                    }
                    else if (book.Data is BookWrittenData)
                    {
                        genreLocalizedString = (book.Data as BookWrittenData).GenreString;
                    }

                    if (actor.SimDescription.TraitManager.PrefersGenre(genreLocalizedString))
                    {
                        num++;
                    }
                }
                num2 = 0.5f + ((num * 6.25f) * 0.01f);

                if (actor.TraitManager.HasElement(TraitNames.NightOwlTrait) && actor.BuffManager.HasElement(BuffNames.PastBedTime))
                {
                    num2 += TraitTuning.NightOwlFunModifier;
                }
                return(num2);
            }
            else
            {
                return(0f);
            }
        }
예제 #5
0
        public static Book ChooseBook(Sim actor, List <Book> books)
        {
            if (books.Count == 0x0)
            {
                return(null);
            }

            float       minValue = float.MinValue;
            List <Book> list     = new List <Book>();

            foreach (IGameObject obj in books)
            {
                Book book = obj as Book;
                if (book == null)
                {
                    continue;
                }

                if (ReadBookData.HasSimFinishedBook(actor, book.Data.ID))
                {
                    continue;
                }

                float interestInBook = BookEx.GetInterestInBook(actor, book);
                if (interestInBook == 0f)
                {
                    continue;
                }

                if (interestInBook > minValue)
                {
                    list.Clear();
                    list.Add(book);
                    minValue = interestInBook;
                }
                else if (interestInBook == minValue)
                {
                    list.Add(book);
                }
            }

            if (list.Count == 0x0)
            {
                return(null);
            }

            return(list[RandomUtil.GetInt(list.Count - 0x1)]);
        }
예제 #6
0
            public override bool Test(Sim a, Book target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback)
            {
                if (target is SheetMusic)
                {
                    return(false);
                }

                if (isAutonomous)
                {
                    if (ReadBookData.HasSimFinishedBook(a, target.Data.ID))
                    {
                        return(false);
                    }
                }

                return(base.Test(a, target, isAutonomous, ref greyedOutTooltipCallback));
            }
예제 #7
0
            public override void PopulatePieMenuPicker(ref InteractionInstanceParameters parameters, out List <ObjectPicker.TabInfo> listObjs, out List <ObjectPicker.HeaderInfo> headers, out int NumSelectableRows)
            {
                NumSelectableRows = 0x1;

                headers  = null;
                listObjs = null;

                try
                {
                    IGameObject target = parameters.Target;
                    headers  = new List <ObjectPicker.HeaderInfo>();
                    listObjs = new List <ObjectPicker.TabInfo>();
                    headers.Add(new ObjectPicker.HeaderInfo("Ui/Caption/ObjectPicker:Title", "Ui/Tooltip/ObjectPicker:Name", 0xfa));
                    List <ObjectPicker.RowInfo> rowInfo = new List <ObjectPicker.RowInfo>();
                    foreach (BookToddler book in Inventories.QuickDuoFind <BookToddler, Book>(parameters.Target.Inventory))
                    {
                        if (ReadBookData.HasSimFinishedBook(Toddler, book.Data.ID))
                        {
                            continue;
                        }

                        List <ObjectPicker.ColumnInfo> columnInfo = new List <ObjectPicker.ColumnInfo>();
                        ThumbnailKey thumbnail = new ThumbnailKey(new ResourceKey((ulong)ResourceUtils.XorFoldHashString32("book_standard"), 0x1661233, 0x1), ThumbnailSize.Medium, ResourceUtils.HashString32(book.Data.GeometryState), ResourceUtils.HashString32(book.Data.MaterialState));
                        columnInfo.Add(new ObjectPicker.ThumbAndTextColumn(thumbnail, book.Data.Title));
                        ObjectPicker.RowInfo info = new ObjectPicker.RowInfo(book, columnInfo);
                        rowInfo.Add(info);
                    }

                    // Custom code
                    if (rowInfo.Count == 0)
                    {
                        listObjs = null;
                    }
                    else
                    {
                        ObjectPicker.TabInfo item = new ObjectPicker.TabInfo("Coupon", Common.LocalizeEAString("Ui/Caption/ObjectPicker:ToddlerBooks"), rowInfo);
                        listObjs.Add(item);
                    }
                }
                catch (Exception e)
                {
                    Common.Exception(parameters.Actor, parameters.Target, e);
                }
            }
예제 #8
0
            public override void AddInteractions(InteractionObjectPair iop, Sim actor, BookToddler target, List <InteractionObjectPair> results)
            {
                if (Test(actor))
                {
                    foreach (Sim sim in actor.LotCurrent.GetSims())
                    {
                        if (!sim.SimDescription.Toddler)
                        {
                            continue;
                        }

                        if (ReadBookData.HasSimFinishedBook(sim, target.Data.ID))
                        {
                            continue;
                        }

                        results.Add(new InteractionObjectPair(new BookToddler_ReadWithMenu.SubDefinition(sim), target));
                    }
                }
            }
예제 #9
0
            public override void AddInteractions(InteractionObjectPair iop, Sim actor, Bookshelf target, List <InteractionObjectPair> results)
            {
                if (actor.SimDescription.TeenOrAbove && (target.Inventory.AmountIn <BookToddler>() != 0x0))
                {
                    List <Sim> list = new List <Sim>();
                    foreach (Sim sim in actor.LotCurrent.GetSims())
                    {
                        if (sim.SimDescription.Toddler)
                        {
                            bool found = false;
                            foreach (BookToddler book in Inventories.QuickDuoFind <BookToddler, Book>(target.Inventory))
                            {
                                if (!ReadBookData.HasSimFinishedBook(sim, book.Data.ID))
                                {
                                    found = true;
                                }
                            }

                            if (found)
                            {
                                list.Add(sim);
                            }
                        }
                    }
                    if (list.Count != 0x0)
                    {
                        if (list.Count == 0x1)
                        {
                            results.Add(new InteractionObjectPair(new Definition(list[0x0], Bookshelf_ReadToToddler.LocalizeString("ReadWith", new object[] { list[0x0] }), new string[0x0]), target));
                        }
                        else
                        {
                            foreach (Sim sim2 in list)
                            {
                                results.Add(new InteractionObjectPair(new Definition(sim2, sim2.SimDescription.FirstName, new string[] { Common.LocalizeEAString("Gameplay/Objects/BookToddler:ReadWithMenuText") }), target));
                            }
                        }
                    }
                }
            }
예제 #10
0
        public Book Get(int id)
        {
            IGetBook readObject = new ReadBookData();

            return(readObject.GetBook(id));
        }
예제 #11
0
        public List <Book> Get()
        {
            IGetAllBooks readObject = new ReadBookData();

            return(readObject.GetAllBooks());
        }
예제 #12
0
        protected virtual void Perform(SimDescription me, BookData book, bool addToList)
        {
            if (me.ReadBookDataList.ContainsKey(book.ID))
            {
                if (addToList) return;

                me.ReadBookDataList.Remove(book.ID);
            }
            else
            {
                if (!addToList) return;

                ReadBookData readData = new ReadBookData();
                readData.BookID = book.ID;
                readData.TimesRead = 1;

                me.ReadBookDataList.Add(book.ID, readData);
            }
        }