+++ /dev/null
-<?php
-/**
- * A shipyard construction class which can be used for constructing all kinds of
- * ships.
- *
- * @author Roland Haeder <webmaster@shipsimu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.shipsimu.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 <http://www.gnu.org/licenses/>.
- */
-class Shipyard extends BaseConstruction {
- // Werft-Name
- private $shipyardName = "Namenlose Werft";
-
- // Arbeiter-Liste
- private $staffList = null;
-
- // Queue-Liste fuer zu bauende Schiffe
- private $queueList = null;
-
- // Aktuell im Bau befindliches Schiff
- private $currShipInConst = null;
-
- // Liste konstruierbarer Schiffstypen
- private $shipTypeList = null;
-
- // Zugewiesener Hafen
- private $harborInstance = null;
-
- // Zugewiesene Reederei
- private $shippingCompany = null;
-
- // Constructor
- protected function __construct () {
- // Call parent constructor
- parent::__construct(__CLASS__);
-
- // Staff-Liste/Schiffstyp-Liste erzeugen
- $this->createStaffList();
- $this->createShipTypeList();
- }
-
- // Create a shipyard and notify it about it's owner
- public static final function createShipyardNotify (Harbor $harborInstance, $shipyardName, ShippingCompany $companyInstance) {
- // Werft-Instanz holen
- $shipyardInstance = self::createShipyard($harborInstance, $shipyardName);
-
- // Reederei der Werft zuweisen
- $shipyardInstance->setCompanyInstance($companyInstance);
-
- // Die Reederei ueber ihre Werft informieren
- $companyInstance->addNewShipyard($shipyardInstance);
-
- // Instanz zurueckgeben
- return $shipyardInstance;
- }
-
- // Create a shipyard, first we need to create a harbor
- public static final function createShipyard (Harbor $harborInstance, $shipyardName) {
- // Instanz temporaer holen
- $shipyardInstance = new Shipyard();
-
- // Debug message
- if ((defined('DEBUG_SHIPYARD')) || (defined('DEBUG_ALL'))) $shipyardInstance->debugOutput(sprintf("[%s:%d] Eine Werft mit dem Namen <strong>%s</strong> wird im Hafen <strong>%s</strong> konstruiert.",
- __CLASS__,
- __LINE__,
- $shipyardName,
- $harborInstance->getHarborName()
- ));
-
- // Werft-Name setzen
- $shipyardInstance->setShipyardName($shipyardName);
-
- // Hafen-Instanz setzen
- $shipyardInstance->setHarborInstance($harborInstance);
-
- // Abmasse setzen in Meter
- $shipyardInstance->setWidth(30);
- $shipyardInstance->setHeight(30);
- $shipyardInstance->setLength(100);
-
- // Clean up a little
- $shipyardInstance->removeDraught();
-
- // Debug-Meldung
- if ((defined('DEBUG_SHIPYARD')) || (defined('DEBUG_ALL'))) $shipyardInstance->debugOutput(sprintf("[%s:%d] Die Werft <strong>%s</strong> wurde gebaut.",
- __CLASS__,
- __LINE__,
- $shipyardName
- ));
-
- // Instanz zurueckliefern
- return $shipyardInstance;
- }
-
- // Create staff list
- private function createStaffList () {
- $this->staffList = new FrameworkArrayObject("FakedStaffList");
- }
-
- // Create ship type list
- private function createShipTypeList () {
- $this->shipTypeList = new FrameworkArrayObject("FakedShipTypeList");
- }
-
- // Setter-Methode fuer Werft-Name
- public final function setShipyardName ($shipyardName) {
- $this->shipyardName = (string) $shipyardName;
- }
-
- // Getter-Methode fuer Werft-Name
- public final function getShipyardName () {
- return $this->shipyardName;
- }
-
- // Setter-Methode fuer Hafen-Instanz
- public final function setHarborInstance (Harbor $harborInstance) {
- $this->harborInstance = $harborInstance;
- }
-
- // Getter-Methode fuer Hafen-Instanz
- public final function getHarborInstance () {
- return $this->harborInstance;
- }
-
- // Setter fuer Reederei-Instanz
- public final function setCompanyInstance (ShippingCompany $companyInstance) {
- $this->shippingCompany = $companyInstance;
- }
-
- // Getter fuer Reederei-Instanz
- public final function getCompanyInstance () {
- return $this->shippingCompany;
- }
-
- // Add new personell
- public function addNewPersonell ($personell) {
- // Add to list
- $this->staffList->append($personell);
- }
-
- // Add a new ship type to our list
- public function addNewConstructableShipType ($shipType) {
- // This must be a string!
- $shipType = (string) $shipType;
-
- // Debug message
- if ((defined('DEBUG_SHIPYARD')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Die Werft <strong>%s</strong> kann bald Schiffe vom Typ <strong>%s</strong> bauen.",
- __CLASS__,
- __LINE__,
- $this->getShipyardName(),
- $shipType
- ));
-
- // Add to list
- $this->shipTypeList->append($shipType);
- }
-
- // Is the specified ship type in our list?
- public function isShipTypeConstructable ($shipType) {
- // First we can't build this ship
- $result = false;
-
- // This must be a string!
- $shipType = (string) $shipType;
-
- // Debug message
- if ((defined('DEBUG_SHIPYARD')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Die Werft <strong>%s</strong> prüft, ob Schiffe vom Typ <strong>%s</strong> baubar sind.",
- __CLASS__,
- __LINE__,
- $this->getShipyardName(),
- $shipType
- ));
-
- // Iterate through all types
- for ($idx = $this->shipTypeList->getIterator(); $idx->valid(); $idx->next()) {
- // Get current ship type
- $type = (string) $idx->current();
-
- // Is both the same?
- $result = ($type == $shipType);
-
- // Type is found?
- if ($result) break; // Then abort the search!
- }
-
- // Debug message
- if ((defined('DEBUG_SHIPYARD')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Die Werft <strong>%s</strong> hat die Suche nach dem Schiffstyp <strong>%s</strong> abgeschlossen.",
- __CLASS__,
- __LINE__,
- $this->getShipyardName(),
- $shipType
- ));
-
- // Return result
- return $result;
- }
-}
-
-// [EOF]
-?>