#ifdef SSQC

#include "plats.h"

class func_train : func_plat
{
    func_train();

    virtual void GuardedConstructor();

    nonvirtual void SUB_CalcMoveDone();
    nonvirtual void SUB_CalcMove(vector tdest, vector tang, float tspeed, void() func);
    nonvirtual void train_find();
    nonvirtual void train_blocked();
    nonvirtual void train_wait();
    nonvirtual void train_next();

    var virtual void() think1;
    var virtual void() blocked;

    vector old_mins;
    vector finaldest;
    vector finalangs;
};

class func_door : func_train
{
    func_door();

    virtual void GuardedConstructor();

    nonvirtual void SetMovedir();
    nonvirtual void door_hit_top();
    nonvirtual void door_hit_bottom();
    nonvirtual void door_go_up();
    nonvirtual void door_go_down();
    nonvirtual void door_activate();
    nonvirtual void door_reset(float r_flags);
};

#endif