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;
}
}