#pragma once class CTrain : public TObject { HANDLE h_thread; DWORD m_tid; CNetwork* Network; DWORD Embark(int peopleOn); DWORD Disembark(int peopleOff); DWORD OnArrival(CStation*); void OnDeparting(CStation*); protected: static DWORD __stdcall Execute(CTrain*); DWORD Run(); public: CTrain(CNetwork*,TTrainID,int, CStation* Station); virtual ~CTrain(); CStation* Arriving; double Distance; int Capacity; int Passengers; TTrainID Number; CStation* Departing; size_t Location; int Delay; size_t GetLocation() { return Departing->Location + Location; } void Create(); void Stop(); void Start(); void Exit(); BOOL AtStation(); static int GetRandom(int RangeMin=0, int RangeMax=100); };