forked from 0ad/0ad
Matei
7831f3cbe4
Entities will now leave all their auras and cancel all their productions when they change ownership, which will be useful when we have convertible buildings. This was SVN commit r4156.
51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#ifndef __PRODUCTIONQUEUE_H__
|
|
#define __PRODUCTIONQUEUE_H__
|
|
|
|
#include "EntityHandles.h"
|
|
#include "scripting/ScriptableObject.h"
|
|
#include <vector>
|
|
|
|
class CEntity;
|
|
|
|
class CProductionItem : public CJSObject<CProductionItem>
|
|
{
|
|
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<CProductionQueue>
|
|
{
|
|
CEntity* m_owner;
|
|
std::vector<CProductionItem*> 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
|