========================== Introduction to IFPObjects ========================== The base class for all saveable objects in IntFicPy is `IFPObject <../api/ifp_object.html#intficpy.ifp_object.IFPObject>`_ The direct descendents of IFPObject (as of January 2020) are: - AbstractScore (the score tracker for a game) - Achievement - Daemon (timers and scheduled/recurring events) - DaemonManager (the system that tracks active Daemons in a game) - Ending - HintNode (A collection of Hints) - HintSystem (the system that tracks hints for a game) - PhysicalEntity (base class of Thing and Room) - RoomGroup - SaleItem - Topic - TravelConnector The game (`IFPGame <../api/ifp_game.html#intficpy.ifp_game.IFPGame>`_ instance) keeps track of every IFPObject associated with it by way of its "ifp_objects" attribute - a dictionary of IFPObjects each with a unique index. All IFPObjects need to be instantiated with a game object, so that they can be registered. The "ifp_objects" dictionary is used to gather and organize the objects for serializing/saving. Multiple IFPObjects can be stored under the same index, but the save/load system will treat any such objects as identical or interchangable. This is sometimes useful for identical items generated during play.