#ifndef INCLUDED_PRODUCTIONQUEUE #define INCLUDED_PRODUCTIONQUEUE #include "EntityHandles.h" #include "scripting/ScriptableObject.h" #include class CEntity; class CProductionItem : public CJSObject { public: int m_type; CStrW m_name; float m_totalTime; // how long this production takes float m_elapsedTime; // how long we've been working on this production CProductionItem( int type, const CStrW& name, float totalTime ); ~CProductionItem(); void Update( size_t timestep ); bool IsComplete(); float GetProgress(); jsval JSI_GetProgress( JSContext* cx ); static void ScriptingInit(); }; class CProductionQueue : public CJSObject { CEntity* m_owner; std::vector m_items; public: CProductionQueue( CEntity* owner ); ~CProductionQueue(); void AddItem( int type, const CStrW& name, float totalTime ); void Update( size_t timestep ); void CancelAll(); jsval JSI_GetLength( JSContext* cx ); jsval JSI_Get( JSContext* cx, uintN argc, jsval* argv ); bool JSI_Cancel( JSContext* cx, uintN argc, jsval* argv ); static void ScriptingInit(); }; #endif