X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=application%2Fship-simu%2Fmain%2Fships%2Fclass_BaseShip.php;h=bdebb6862d79fdb085ace13b79418d0db890d9d2;hp=689374045f8117111e9f6ecffa494f00aee6ee45;hb=ec23e72b16433ac136817f3ea78697fb70236e4a;hpb=a76d51b4096b47436e269156547f02713d95af5b diff --git a/application/ship-simu/main/ships/class_BaseShip.php b/application/ship-simu/main/ships/class_BaseShip.php index 6893740..bdebb68 100644 --- a/application/ship-simu/main/ships/class_BaseShip.php +++ b/application/ship-simu/main/ships/class_BaseShip.php @@ -1,4 +1,26 @@ + * @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 BaseShip extends BaseSimulator { // Name des Shipes private $shipName = "Unbekanntes Schiff"; @@ -16,48 +38,27 @@ class BaseShip extends BaseSimulator { private $structures = null; // Namenloses Ship generieren - private function __construct($class) { + protected function __construct($className) { // Call parent constructor - parent::constructor($class); + parent::__construct($className); - // Beim Schiff angelangt - if (((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) - $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.
\n", - __CLASS__, - __LINE__ - )); - - // Bezeichnung setzen - $this->setPartDescr("Schiff"); - - // Array-Objekt generieren + // Prepare array object for all structures $this->createStructuresArray(); - // Instanz entfernen + // Clean-up a little $this->removePartInstance(); - $this->removeNumberFormaters(); - } - - /** - * Calls the private constructor - * - * @param $class The class' name - * @return void - */ - public function constructor ($class) { - $this->__construct($class); } // Array-Objekt anlegen private function createStructuresArray () { - $this->structures = new FrameworkArrayObject(); + $this->structures = new FrameworkArrayObject("FakedShipStructures"); } // Schiffsteil generieren (kann alles sein) // buildInstance = Das was in das Schiffsteil evtl. eingebaut werden soll (null = kein besonderes Teil einbauen!) // partClass = Das zu konstruierende Schiffsteil public function createShipPart (ConstructableShipPart $buildInstance, $partClass) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s erhält ein neues Schiffsteil (%s).
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s erhält ein neues Schiffsteil (%s).", __CLASS__, __LINE__, $this->getShipName(), @@ -65,31 +66,19 @@ class BaseShip extends BaseSimulator { )); // Ist die gewuenschte Klasse vorhanden? - if (class_exists($partClass)) { - // Befehl zusammenbauen - $eval = sprintf("\$partInstance = %s::create%s();", - $partClass, $partClass - ); - - // Debug-Meldung ausgeben - if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruierte PHP-Anweisung:
%s

\n", - __CLASS__, - __LINE__, - htmlentities($eval) - )); - - // ... und ausfuehren - eval($eval); - } else { + if (!class_exists($partClass)) { // Nicht vorhanden, dann Ausnahme werfen! - throw new ClassNotFoundException($partClass, 0); - } + throw new ClassNotFoundException($partClass, self::EXCEPTION_CLASS_NOT_FOUND); + } // END - if + + // Get an instance back from our object factory + $partInstance = ObjectFactory::createObjectByName($partClass); // Das Einbauen versuchen... try { $partInstance->addShipPartToShip($this, $buildInstance); } catch (MotorShipMismatchException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keinen Motor erhalten! Grund: %s
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s hat keinen Motor erhalten! Grund: %s", __CLASS__, __LINE__, $this->getShipName(), @@ -97,7 +86,7 @@ class BaseShip extends BaseSimulator { )); return false; } catch (RoomShipMismatchException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keinen Maschinenraum erhalten! Grund: %s
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s hat keinen Maschinenraum erhalten! Grund: %s", __CLASS__, __LINE__, $this->getShipName(), @@ -106,7 +95,7 @@ class BaseShip extends BaseSimulator { return false; } catch (StructureShipMismatchException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keine Aufbauten erhalten! Grund: %s
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s hat keine Aufbauten erhalten! Grund: %s", __CLASS__, __LINE__, $this->getShipName(), @@ -114,7 +103,7 @@ class BaseShip extends BaseSimulator { )); return false; } catch (CabinShipMismatchException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keine Kabine erhalten! Grund: %s
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s hat keine Kabine erhalten! Grund: %s", __CLASS__, __LINE__, $this->getShipName(), @@ -122,40 +111,18 @@ class BaseShip extends BaseSimulator { )); return false; } catch (DeckShipMismatchException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat kein Deck erhalten! Grund: %s
\n", + if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Das Schiff %s hat kein Deck erhalten! Grund: %s", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; - } catch (ExceptionNotChangedException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Eine Exception wurde nicht geändert. Details: %s
\n", - __CLASS__, - __LINE__, - $e->getMessage() - )); - return false; - } catch (ExceptionNotFoundException $e) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Eine Exception wurde nicht gefunden. Details: %s
\n", - __CLASS__, - __LINE__, - $e->getMessage() - )); - return false; } // Instanz im Aufbauten-Array vermerken $this->structures->append($partInstance); - // Debug-Meldung ausgeben - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat das Schiffsteil %s eingebaut bekommen.
\n", - __CLASS__, - __LINE__, - $this->getShipName(), - $partInstance->getPartDescr() - )); - // Alles klar! return true; } @@ -167,69 +134,31 @@ class BaseShip extends BaseSimulator { // STUB: Getter-Methode Anzahl Betten public function calcTotalBeds () { - $this->getDebugInstance()->output("[%s:%d] Stub! Anzahl Betten erreicht.
\n"); - return 0; + $this->partialStub("Please implement this stub in your ship!"); } // Setter-Methode fuer Schiffsnamen public final function setShipName ($shipName) { - // Cast the string - $shipName = (string) $shipName; - - // Debug message - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das neue Schiff vom Typ %s wird auf den Namen %s getauft.
\n", - __CLASS__, - __LINE__, - $this->__toString(), - $shipName - )); - - // Set ship name - $this->shipName = $shipName; + $this->shipName = (string) $shipName; } // Getter-Methode fuer Schiffsnamen public final function getShipName () { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s ist auf den Namen %s getauft worden.
\n", - __CLASS__, - __LINE__, - $this->__toString(), - $this->shipName - )); return $this->shipName; } // Setter-Methode fuer Tiefgang public final function setDraught ($draught) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s mit dem Namen %s hat einen Tiefgang von %sm.
\n", - __CLASS__, - __LINE__, - $this->__toString(), - $this->shipName, - $draught - )); $this->draught = (int) $draught; } // Getter-Methode fuer Tiefgang public final function getDraught() { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Tiefgang des Schiffes %s wurde angefordert.
\n", - __CLASS__, - __LINE__, - $this->shipName - )); return $this->draught; } // Setter-Methode fuer Anzahl Anker public final function setNumAnchor ($numAnchor) { - if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s mit dem Namen %s hat %s Anker.
\n", - __CLASS__, - __LINE__, - $this->__toString(), - $this->shipName, - $numAnchor - )); $this->numAnchor = (int) $numAnchor; } }