CSCI 3081 - Drone Delivery System
delivery_system.h
1 #ifndef FACADE_DELIVERY_SYSTEM_H_
2 #define FACADE_DELIVERY_SYSTEM_H_
3 
4 #include "EntityProject/facade/common.h"
5 
6 namespace csci3081 {
7 
9 
14 public:
16  virtual ~IDeliverySystem() {}
18 
22  virtual void RunScript(const picojson::array& script, IEntitySystem* system) const = 0;
24 
32  virtual IEntity* CreateEntity(const picojson::object& val) = 0;
34  virtual void AddFactory(IEntityFactory* factory) = 0;
36  virtual void AddEntity(IEntity* entity) = 0;
38  virtual void SetGraph(const IGraph* graph) = 0;
40 
43  virtual void ScheduleDelivery(IEntity* package, IEntity* dest) = 0;
45  virtual void AddObserver(IEntityObserver* observer) = 0;
47  virtual void RemoveObserver(IEntityObserver* observer) = 0;
49  virtual const std::vector<IEntity*>& GetEntities() const = 0;
51  virtual void Update(float dt) = 0;
56 };
57 
58 }
59 
60 #endif
virtual void AddEntity(IEntity *entity)=0
Adds an entity to an entity vector member. Once added, entities can be affected by the system...
virtual void SetGraph(const IGraph *graph)=0
Adds the graph used for dynamic routing in the delivery system.
The abstract facade of a drone delivery subsystem.
Definition: delivery_system.h:13
An abstract class that represents an entity system that contains entities and updates over time...
Definition: entity_system.h:10
virtual void Update(float dt)=0
Updates the drone system time by dt.
Definition: asubject.cc:3
virtual void AddObserver(IEntityObserver *observer)=0
Add an observer to a specific entity.
Represents a read only graph object.
Definition: graph.h:12
virtual ~IDeliverySystem()
Destructor.
Definition: delivery_system.h:16
virtual const std::vector< IEntity * > & GetEntities() const =0
Returns all the entities that are added to the drone system.
virtual IEntity * CreateEntity(const picojson::object &val)=0
Creates an entity based on a JSON object passed in.
Definition: entity_factory.h:12
virtual void ScheduleDelivery(IEntity *package, IEntity *dest)=0
Schedule a drone delivery for a package to be delivered to a customer.
A movable object in a scene. Entities have position, direction and size.
Definition: entity.h:15
virtual void RemoveObserver(IEntityObserver *observer)=0
Remove an observer from a specific entity.
Observers entity events when they occur.
Definition: entity_observer.h:14
virtual void AddFactory(IEntityFactory *factory)=0
Adds an entity factory to a composite factory for creating new entities.
virtual void RunScript(const picojson::array &script, IEntitySystem *system) const =0
Translates a set of JSON commands into method calls for the drone delivery system.