### Proposed AngelScript API Class Hierarchy * Entity * Group * Player * Thing * Program * Action * Security ### Sample (very incomplete) functions on classes #### Entity This would encompass ContainerPropertyEntity and above on the C++ side. * Get property * Get contents * Can have properties? * Can have contents? * Get Owner * Get type * Get display name (not supported by all types, would return blank as needed) * ... #### Group This would encompass Groups and Capabilities, * Is capability? * Add member * Remove member * Get members * ... #### Player This would encompass Players and Guests, * Is guest? * Set password * ... #### Thing This would encompass Things, Puppets, and Vehicles. * Is puppet? * Is vehicle? * Get vehicle interior DB ID * ... #### Program This would encompass Programs only. * Get source code * Set source code * ... #### Action This would encompass Exits and Commands. * Is command? * Is exit? * Get destinations (with shortcuts to getting the first, or a random one) * Get arrival message * Set success message * ... #### Security Represents a Security object. The user cannot create this; they have to get it from an Entity so that the object is put in the right 'mode' (application or Entity security settings). * Add admin * Set flag * ... #### Narrative While the sample above has far less classes on the AngelScript side than on the C++ side, which should make it easier to work with, it could get a little clunky if more C++ classes are added. Still, I'm in favor of simplifying because that could hide any reorganization on the backend. Plus, constantly casting would get annoying; most would use Entity for all but specialized activities. ### Free Function Namespaces * DatabaseOps * Deals with getting or creating Entities * Anything else related to the database not covered by the classes above. * ... * InputOutputOps * Handles sending out text/data * Get user input * ... * MovementOps * Anything to do with 'moving' an Entity around in the game. * Includes inventory operations. * ... * SystemOps * Anything at a system/site level. * Who is online * Active processes * Kill a process * ...