(no commit message)
[shipsimu.git] / application / ship-simu / main / constructions / harbors / class_Harbor.php
1 <?php
2
3 // Die Hafen-Klasse
4 class Harbor extends BaseConstruction {
5         // Namen des Hafens (z.B. Hamburger Hafen)
6         private $harborName = "Unbekannter Hafen";
7
8         // Schiffsliste aller gebauten Schiffe
9         private $constructedShips = null;
10
11         // Liegeplatz-Liste
12         private $berthList = null;
13
14         // List of all assigned shipyards
15         private $shipyardList = null;
16
17         // Constructor
18         private function __construct () {
19                 // Eltern-Konstruktor aufrufen
20                 parent::constructor(__CLASS__);
21
22                 // Debug message
23                 if (((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output("[Harbor:] Konstruktor erreicht.<br />\n");
24
25                 // Beschreibung setzen
26                 $this->setPartDescr("Hafen");
27
28                 // Unique-ID erzeugen
29                 $this->createUniqueID();
30
31                 // Clean up a little
32                 $this->removeSystemArray();
33                 $this->removePartInstance();
34         }
35
36         // Creates a harbor
37         public static function createHarbor ($harborName) {
38                 // Hafen-Instanz holen
39                 $harborInstance = new Harbor();
40
41                 // Debug message
42                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $harborInstance->getDebugInstance()->output(sprintf("[Harbor:] Der Hafen <strong>%s</strong> wird konstruiert.<br />\n", $harborName));
43
44                 // Hafenname setzen
45                 $harborInstance->setHarborName($harborName);
46
47                 // Werftliste initialisieren
48                 $harborInstance->createshipyardList();
49
50                 // Debug-Meldung ausgeben
51                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $harborInstance->getDebugInstance()->output(sprintf("[Harbor:] Der Hafen <strong>%s</strong> ist jetzt fertig gebaut.<br />\n", $harborName));
52
53                 // Instanz zurueckliefern
54                 return $harborInstance;
55         }
56
57         // Werft-Liste generieren
58         public function createshipyardList () {
59                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Harbor:] Werft-Liste wird f&uuml;r den Hafen <strong>%s</strong> erstellt.<br />\n",
60                         $this->getHarborName()
61                 ));
62                 $this->shipyardList = new FrameworkArrayObject();
63         }
64
65         // Setter fuer Hafennamen
66         public function setHarborName ($harborName) {
67                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Harbor:] Der Hafen heisst jetzt <strong>%s</strong>.<br />\n", $harborName));
68                 $this->harborName = (string) $harborName;
69         }
70
71         // Getter fuer Hafennamen
72         public function getHarborName () {
73                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Harbor:] Hafenname <strong>%s</strong> wurde angefordert.<br />\n", $this->harborName));
74                 return $this->harborName;
75         }
76
77         // Werft in den Hafen einbauen und Werft->Reederei zuweisen
78         public function addNewShipyardNotify ($shipyardName, ShippingCompany $companyInstance) {
79                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Harbor:] Die Werft <strong>%s</strong> wird im Hafen <strong>%s</strong> gebaut.<br />\n",
80                         $shipyardName, $this->getHarborName()
81                 ));
82
83                 // Werft generieren und in die Werftliste aufnehmen
84                 $this->shipyardList->append(Shipyard::createShipyardNotify($this, $shipyardName, $companyInstance));
85         }
86
87         // Werft in den Hafen einbauen ohne Zuweisung einer Reederei (gehoert der "Stadt" dann)
88         public function addNewShipyard ($shipyardName) {
89                 if ((defined('DEBUG_HARBOR')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[Harbor:] Die Werft <strong>%s</strong> wird im Hafen <strong>%s</strong> gebaut.<br />\n",
90                         $shipyardName, $this->getHarborName()
91                 ));
92
93                 // Werft generieren und in die Werftliste aufnehmen
94                 $this->shipyardList->append(Shipyard::createShipyard($this, $shipyardName));
95         }
96
97         /**
98          * Stub!
99          */
100         public function saveObjectToDatabase () {
101                 $this->getDebugInstance()->output(sprintf("[%s:] Stub <strong>%s</strong> erreicht.",
102                         $this->__toString(),
103                         __FUNCTION__
104                 ));
105         }
106
107         /**
108          * Limits this object with an ObjectLimits instance
109          */
110         public function limitObject (ObjectLimits $limitInstance) {
111                 ApplicationEntryPoint::app_die("".__METHOD__." reached! Stub!");
112         }
113 }
114
115 // [EOF]
116 ?>