// $Source: /usr/local/SimSoft/Sfx3D/src/gts/gtsb23.cpp,v $
// $Revision: 1.2 $
// $Author: baum $
// $Date: 2001/11/29 15:18:10 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name: Release-14 $
// State assigned to revision
// $State: Exp $
//
//
// $Log: gtsb23.cpp,v $
// Revision 1.2  2001/11/29 15:18:10  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

/*** Windows headers ***/
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
//#include <winnt.h>
#endif /*WIN32*/

#include "gtstgb.h"
#include "gtsb23.h"

typBTPKettenfoerderer::typBTPKettenfoerderer (const BstVariante *zTGB)
  : Kettengeschwindigkeit (10.0), Laenge (1.0), Kapazitaet (1),
    Sicherheitsabstand (1)
{
  Vec3D l = *(zTGB->PalPositions().Last()) -
            *(zTGB->PalPositions().First());
  Laenge = l.len();
  Kapazitaet = (int)Laenge;
} // typBTPKettenfoerderer

typBTPKettenfoerderer::typBTPKettenfoerderer (const typBTPKettenfoerderer &copy)
{
  Kettengeschwindigkeit = copy.Kettengeschwindigkeit;
  Laenge                = copy.Laenge;
  Kapazitaet            = copy.Kapazitaet;
  Sicherheitsabstand    = copy.Sicherheitsabstand;
} // typBTPKettenfoerderer

typBTPKettenfoerderer::typBTPKettenfoerderer (const typBTPKettenfoerderer *zBTP)
{
  Kettengeschwindigkeit = zBTP->Kettengeschwindigkeit;
  Laenge                = zBTP->Laenge;
  Kapazitaet            = zBTP->Kapazitaet;
  Sicherheitsabstand    = zBTP->Sicherheitsabstand;
} // typBTPKettenfoerderer

typBTPKettenfoerderer::typBTPKettenfoerderer (InputFile& fin)
{
  SFXToken tok;
  tok.nextToken (fin); tok.EndOfLine (fin);  // Zeile überlesen
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  Kettengeschwindigkeit = atof(tok());
  tok.EndOfLine (fin);
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  Laenge = atof(tok());
  tok.EndOfLine (fin);
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  Kapazitaet = atoi(tok());
  tok.EndOfLine (fin);
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  Sicherheitsabstand = atoi(tok());
  tok.EndOfLine (fin);
}; // typBTPKettenfoerderer

void typBTPKettenfoerderer::BTPLesen (InputFile& fin)
{
  SFXToken tok;
  tok.nextToken (fin);  Kettengeschwindigkeit = atof(tok());
  tok.nextToken (fin);  Laenge                = atof(tok());
  tok.nextToken (fin);  Kapazitaet            = atoi(tok());
  tok.nextToken (fin);  Sicherheitsabstand    = atoi(tok());
  tok.EndOfLine (fin);
}  // ENDE BTPLesen

void typBTPKettenfoerderer::BTPSchreiben (ostream& ostrm, typBaustein *zbst, int satznr)
{
  Write (ostrm, "%4d ",   satznr);
  Write (ostrm, "%4d ",   zbst->i_BstNr());
  Write (ostrm, "%4d ",   zbst->i_BstTyp());
  Write (ostrm, "%11.5f ", Kettengeschwindigkeit);
  Write (ostrm, "%11.5f ", Laenge);
  Write (ostrm, "%11d ",   Kapazitaet);
  Write (ostrm, "%11d\n",  Sicherheitsabstand);
}  // ENDE BTPSchreiben

Ustring typBTPKettenfoerderer::getBTPWerte ()
{
  char tmp [512];
  sprintf (tmp, "%9.5f\t%9.5f\t%d\t%d",
           Kettengeschwindigkeit, Laenge, Kapazitaet, Sicherheitsabstand);
  Ustring buf(tmp);
  return buf;
}  // ENDE getBTPWerte

void typBTPKettenfoerderer::setBTPWerte (Ustring str)
{
  sscanf((char*)str.str(), "%f %f %d %d",
           &Kettengeschwindigkeit, &Laenge, &Kapazitaet, &Sicherheitsabstand);
}  // ENDE setBTPWerte

void typBTPKettenfoerderer::setBTPWerte (const typBTPKettenfoerderer *zBTP)
{
  Kettengeschwindigkeit = zBTP->Kettengeschwindigkeit;
  Laenge                = zBTP->Laenge;
  Kapazitaet            = zBTP->Kapazitaet;
  Sicherheitsabstand    = zBTP->Sicherheitsabstand;
}  // ENDE setBTPWerte

typBTPKettenfoerderer::~typBTPKettenfoerderer ()
{ } // ~typBTPKettenfoerderer

typBSTKettenfoerderer::typBSTKettenfoerderer (const typBSTKettenfoerderer &copy, int nr)
                      :typBaustein(copy, nr),
                       typBTPKettenfoerderer(copy),
                       typBSPVariante1(copy)
{
} // typBSTKettenfoerderer

typBSTKettenfoerderer::typBSTKettenfoerderer (BstVariante *zaufTGB, int nr)
                      : typBaustein(zaufTGB, nr),
                        typBTPKettenfoerderer((typBTPKettenfoerderer*)zTGB->BTP ()),
                        typBSPVariante1((typBSPVariante1*)zTGB->BSP ())
{
} // typBSTKettenfoerderer

typBSTKettenfoerderer::typBSTKettenfoerderer (InputFile& fin, int nr, int btyp, int vtyp)
                      :typBaustein (fin, nr, btyp, vtyp),
                       typBTPKettenfoerderer((typBTPKettenfoerderer*)zTGB->BTP ()),
                       typBSPVariante1((typBSPVariante1*)zTGB->BSP ())
{
} // typBSTKettenfoerderer

typBSTKettenfoerderer::~typBSTKettenfoerderer ()
{ } // ~typBSTKettenfoerderer

void typBSTKettenfoerderer::VarianteErsetzen  (BstVariante *zaufTGB)
{
  typBTPKettenfoerderer::setBTPWerte ((typBTPKettenfoerderer*)zaufTGB->BTP());
  typBSPVariante1::setBSPWerte((typBSPVariante1*)zaufTGB->BSP());
  BausteinErsetzen (zaufTGB);
} // ENDE  VarianteErsetzen

Ustring typBSTKettenfoerderer::getBTPWerte ()
{
  return typBTPKettenfoerderer::getBTPWerte();
}  // ENDE getBTPWerte

void typBSTKettenfoerderer::setBTPWerte (Ustring str)
{
  typBTPKettenfoerderer::setBTPWerte (str);
}  // ENDE setBTPWerte

void typBSTKettenfoerderer::setBTPWerte (const typBTPKettenfoerderer *zBTP)
{
  typBSTKettenfoerderer::setBTPWerte (zBTP);
}  // ENDE setBTPWerte

void typBSTKettenfoerderer::BTPLesen (InputFile& fin)
{
  typBTPKettenfoerderer::BTPLesen (fin);
}  // ENDE BSPLesen

void typBSTKettenfoerderer::BTPSchreiben (ostream& ostrm, int satznr)
{
  typBTPKettenfoerderer::BTPSchreiben (ostrm, this, satznr);
}  // ENDE BTPSchreiben

void typBSTKettenfoerderer::BSPLesen (InputFile& fin)
{
  typBSPVariante1::BSPLesen (fin);
}  // ENDE BSPLesen

void typBSTKettenfoerderer::BSPSchreiben (ostream& ostrm, int satznr)
{
  typBSPVariante1::BSPSchreiben (ostrm, this, satznr);
}  // ENDE BSPSchreiben

Ustring typBSTKettenfoerderer::getBSPWerte ()
{
  return typBSPVariante1::getBSPWerte ();
}  // ENDE getBSPWerte

void typBSTKettenfoerderer::setBSPWerte (Ustring str)
{
  typBSPVariante1::setBSPWerte (str);
}  // ENDE setBSPWerte