// Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/

#pragma once

#include "abstract_object.h"

namespace nx {
namespace vms_server_plugins {
namespace analytics {
namespace stub {

const std::string kCarObjectType = "nx.stub.car";
const std::string kTruckObjectType = "nx.stub.truck";
const std::string kVehicleObjectType = "nx.stub.vehicle";

class Vehicle: public AbstractObject
{
    using base_type = AbstractObject;
public:
    Vehicle(const std::string& typeId, Attributes attributes);
    virtual void update() override;
protected:
    void updateDistanceAttributeIfItExists();
};

class Car: public Vehicle
{
public:
    Car();
};

class Truck: public Vehicle
{
public:
    Truck();
};

} // namespace stub
} // namespace analytics
} // namespace vms_server_plugins
} // namespace nx