* @version 0.0.0 * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ class BaseCabinStructure extends BaseStructure { // --- Besondere Eigenschaften dazufuegen: --- // Anzahl der Kabinen im Schiff private $numCabin = 0; // Anzahl Raeume pro Kabine (kann auch nur 1 sein) private $numRooms = 0; // Anzahl Betten, verallgemeinert private $numBeds = 0; // Konstruktor protected function __construct ($class) { // Call parent constructor parent::__construct($class); // Set description $this->setObjectDescription("Kabinenstruktur"); } // Kabine hinzufuegen public function addShipPartToShip (ConstructableShip $shipInstance, ConstructableShipPart $cabinInstance) { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Die Kabine %s wird für das Schiff %s konstruiert.
\n", __CLASS__, __LINE__, $cabinInstance->getObjectDescription(), $shipInstance->getShipName() )); // Eltern-Methode aufrufen parent::addShipPartToShip ($shipInstance, $cabinInstance); // Restlichen Daten ebenfalls $this->setNumCabin($cabinInstance->numCabin); $this->setNumRooms($cabinInstance->numRooms); $this->setNumBeds($cabinInstance->numBeds); // Unnoetige Attribute entfernen $cabinInstance->removeNumCabin(); $cabinInstance->removeNumRooms(); $cabinInstance->removeNumBeds(); // Instanz setzen $this->setDeckInstance($cabinInstance); // Einbaut-Meldung ausgeben if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Die Kabine %s wurde in das Schiff eingebaut.
\n", __CLASS__, __LINE__, $cabinInstance->getObjectDescription(), $shipInstance->getShipName() )); } // Wrapper fuer setDeckInstance->setPartInstance public final function setDeckInstance ($deck) { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Wrapper setDeckInstance->setPartInstance erreicht.
\n", __CLASS__, __LINE__ )); parent::setPartInstance($deck); } // Getter-Methode fuer Anzahl Betten public final function getNumBeds () { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %d Betten angefordert.
\n", __CLASS__, __LINE__, $this->numBeds )); return $this->numBeds; } // Getter-Methode fuer Anzahl Kabinen public final function getNumCabin () { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %d Kabine(n) angefordert.
\n", __CLASS__, __LINE__, $this->numCabin )); return $this->numCabin; } // Setter-Methode fuer Anzahl Betten public final function setNumBeds ($numBeds) { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %d Betten gesetzt.
\n", __CLASS__, __LINE__, $numBeds )); $this->numBeds = $numBeds; } // Setter-Methode fuer Anzahl Raeume public final function setNumRooms ($numRooms) { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %d Raum/Räume gesetzt.
\n", __CLASS__, __LINE__, $numRooms )); $this->numRooms = $numRooms; } // Setter-Methode fuer Anzahl Kabinen public final function setNumCabin ($numCabin) { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] %d Kabine(n) gesetzt.
\n", __CLASS__, __LINE__, $numCabin )); $this->numCabin = $numCabin; } // Loesch-Methode fuer Anzahl Betten public final function removeNumBeds() { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Anzahl Betten gelöscht.
\n", __CLASS__, __LINE__ )); unset($this->numBeds); } // Loesch-Methode fuer Anzahl Kabinen public final function removeNumCabin() { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Anzahl Kabinen gelöscht.
\n", __CLASS__, __LINE__ )); unset($this->numCabin); } // Loesch-Methode fuer Anzahl Raeume public final function removeNumRooms() { if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Anzahl Räume gelöscht.
\n", __CLASS__, __LINE__ )); unset($this->numRooms); } // Bettenanzahl pro Kabine berechnen public function calcTotalBedsByCabin () { // Dann Bettenanzahl holen und aufaddieren $beds = $this->getNumBeds(); $num = $this->getNumCabin(); $cabinBeds = $beds * $num; if ((defined('DEBUG_STRUCTURE')) || (defined('DEBUG_ALL'))) { // Get new instance $cabType = "Kabine ohne Namen"; $cab = $this->getPartInstance(); if (!is_null($cab)) { // Kabinenbeschreibung holen $cabType = $cab->__toString(); } // Debug-Meldung ausgeben $this->getDebugInstance()->output(sprintf("[%s:%d] Es exisitieren %d Kabinen vom Typ %s zu je %d Betten. Das sind %d Betten.
\n", __CLASS__, __LINE__, $num, $cabType, $beds, $cabinBeds )); } return $cabinBeds; } } // [EOF] ?>