AddMsg()

FUNKTION:
     void AddMsg(string msg, int next);

DEFINIERT IN:
     /std/transport.c

ARGUMENTE:
     msg
          Die auszugebende Meldung.
     next
          Zeit bis zur naechsten Fahrplanstation.

BESCHREIBUNG:
     Dem Fahrplan wird die Ausgabe einer Meldung an den Transporter
     hinzugefuegt. Diese Meldung koennte zum Beispiel das Nahen der
     naechsten Haltestelle ankuendigen o.ae. Nach Ausgabe der Meldung
     vergehen next Sekunden, bis die naechste Station angefahren wird.

     Um das Umbrechen der Meldung (normalerweise auf 78 Zeichen pro Zeile)
     muss sich der Aufrufer selber kuemmern.

RUeCKGABEWERT:
     keiner

BEISPIELE:

     AddMsg("In der Ferne taucht eine kleine Inseln auf.\n", 10);
     AddMsg("Das Schiff steuert einen kleinen Steg an.\n");
     AddRoute(...);

     Nach der Ankuendigung der Insel vergehen 10 Sekunden, bis die naechste
     Meldung ausgegeben wird. Da bei der zweiten Meldung keine Zeit
     angegeben war, legt das Schiff direkt nach der Ausgabe der Meldung an.

SIEHE AUCH:
     AddRoute(), AddFun(), /std/transport.c

----------------------------------------------------------------------------
25.01.2015, Zesstra

