getConfigEntry('framework_base_path') . 'includes.php'; // Load all game classes require $cfg->getConfigEntry('framework_base_path') . 'classes.php'; // Load file I/O handler require $cfg->getConfigEntry('framework_base_path') . 'file_io.php'; // Load database layer require $cfg->getConfigEntry('framework_base_path') . 'database.php'; // Set default application FrameworkConfiguration::getInstance()->setConfigEntry('default_application', 'shipsimu'); $application = 'shipsimu'; // Load more includes require $cfg->getConfigEntry('root_base_path') . 'application/shipsimu/loader.php'; // Wir tun hier so, als waere schon das Reederei-Objekt generiert und wir wollen // jetzt die Personalliste wiederherstellen $personell = SimulatorPersonell::createSimulatorPersonellByID('SimulatorPersonell@829292aeca3f6bf78c16e25fc4f75c98'); // Personal-Objekt debuggen if (defined('DEBUG_PERSONELL_OBJ')) { DebugMiddleware::getInstance()->output(sprintf("The personal object looks like this:
%s
\n", print_r($personell, true) )); } // Hafen bauen $harbor = Harbor::createHarbor("Hamburger Hafen"); // Name ausgeben DebugMiddleware::getInstance()->output(sprintf("Der %s ist gegründet worden.
\n", $harbor->getHarborName() )); // Hafen-Objekt debuggen if (defined('DEBUG_HARBOR_OBJ')) { DebugMiddleware::getInstance()->output(sprintf("Der %s sieht wie folgt aus:
%s
\n", $harbor->getHarborName(), print_r($harbor, true) )); } // Haendler gruenden $merchant = Merchant::createMerchant("Namenlos", $harbor); // Array mit Einbauten erstellen $einbauten = array( 'parts' => array( // *** Die zu einbauenden Schiffsteile *** 'Motor' => array( // --- Maschinenraum mit Motor --- "Ocean-Power 2000", // Bezeichnung 20000, // Pferdestaerken 6, // Anzahl Nocken 2.5, 2, 3.5 // Abmasse (Breite/Hoehe/Laenge) ), 'Bridge' => array( // --- Kommandobruecke --- 26, 2.5, 15 // Abmasse (Breite/Hoehe/Laenge) ), 'CarDeck' => array( // --- Autodecks --- 'amount' => 8, // Anzahl Autodecks (einige liegen hintereinander im selben Deck!) 'dim' => array( // Abmessung (Breite/Hoehe/Laenge) 6, 3, 16 ) ), 'TruckDeck' => array( // --- Decks fuer LKW/Busse haben vielleicht ein anderes Belueftgungssystem, etc. --- 'amount' => 1, // Anzahl der Decks 'dim' => array( // Abmessung (Breite/Hoehe/Laenge) 8, 5, 195 // Geht durchs gesamte Schiff! ) ), 'TrainDeck' => array( // --- Decks fuer Zuege haben Schienen... --- 'amount' => 1, // Anzahl der Decks 'dim' => array( // Abmessung (Breite/Hoehe/Laenge) 8, 4, 195 // Geht durchs gesamte Schiff! ) ), 'LuxuryCabin' => array( // --- Luxuskabinen --- 'amount' => 20, // Anzahl Luxuskabinen im Schiff 'rooms' => 4, // Raeume: 2 Schlafzimmer, 1 Auffenthaltszimmer, 1 Bad mit Dusche/Toilette/Waschbecken 'bed' => 3, // Anzahl Betten (1 Doppelbett 2 Einzelbetten, Doppel-/Einzelbetten in getrennte Raeume) 'dim' => array( // Abmessung der Luxuskabine (Breite/Hoehe/Laenge) 4, 3, 5 ), ), 'PremierCabin' => array( // --- Mittlere Kabinen --- 'amount' => 40, // Anzahl 'rooms' => 2, // Raeume: Schlafzimmer, Bad mit Toilette/Waschbecken 'bed' => 2, // Anzahl Betten (1 Doppelbett, 1 Einzelbett; gemeinsamer Raum) 'dim' => array( // Abmessungen der Kabine (Breite/Hoehe/Laenge) 4, 2.5, 4 ) ), 'LowCabin' => array( // --- Untere Kabinen (befinden sich in den Unterbauten) --- 'amount' => 90, // Anzahl 'rooms' => 1, // Raeume: Schlafzimmer, Waschbecken 'bed' => 2, // Anzahl Betten (2 Etagenbetten) 'dim' => array( // Abmessungen der Kabine (Breite/Hoehe/Laenge) 3, 2.5, 4 ) ), 'EconomyCabin' => array( // --- Unterste Kabinen (befinden sich tief unten im Schiffsbauch) --- 'amount' => 140, // Anzahl 'rooms' => 1, // Raeume: Schlafzimmer, Waschbecken 'bed' => 1, // Anzahl Betten (1 Etagenbett) 'dim' => array( // Abmessungen der Kabine (Breite/Hoehe/Laenge) 2, 2.5, 2 ) ) ), 'builds' => array( // *** Welche Oberklasse verwendet werden sollen *** 'Motor' => "MaschineRoom", 'Bridge' => "BaseUpperStructure", 'LuxuryCabin' => "BaseCabin", 'PremierCabin' => "BaseCabin", 'LowCabin' => "BaseCabin", 'EconomyCabin' => "BaseCabin", 'CarDeck' => "BaseDeck", 'TrainDeck' => "BaseDeck", 'TruckDeck' => "BaseDeck" ) ); // Preisliste auffuellen foreach ($einbauten['parts'] as $key=>$part) { // Create item array string $item = ''; foreach ($part as $idx=>$itemPart) { if (is_string($itemPart)) { // String found $item .= sprintf("\"%s\", ", $itemPart); } elseif (is_int($itemPart)) { // Integer found $item .= sprintf("%d, ", $itemPart); } elseif (is_float($itemPart)) { // Float found $item .= sprintf("%f, ", $itemPart); } elseif (is_array($itemPart)) { // Sub-array found $item .= "array("; // Go all items through foreach ($itemPart as $idx2=>$subPart) { if (is_int($subPart)) { // Integer again found $item .= sprintf("%d, ", $subPart); } elseif (is_float($subPart)) { // Float found $item .= sprintf("%f, ", $subPart); } else { // Unsupport part found die(sprintf("[Main:] Unsupported sub-array element on pos %d in array %s found: %s", $idx2, $idx, $subPart)); } } // Remove trailing comma $item = substr($item, 0, -2); // Add closing bracket $item .= "), "; } else { // Unsupport part found die(sprintf("[Main:] Unsupported array element on pos %d: %s", $idx, $itemPart)); } } // Remove trailing comma $item = substr($item, 0, -2); // Random price $price = mt_rand(5, 12) * 10000; // Generate command for adding objects to a price list $eval = sprintf("\$merchant->addItemToPriceList(%s::create%s(%s), %d);", $key, $key, $item, $price ); // Debug message if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) DebugMiddleware::getInstance()->output(sprintf("[Main:] Konstruierte PHP-Anweisung:
%s

\n", htmlentities($eval) )); // Run the constructed command eval($eval); } // Haendler-Objekt debuggen if (defined('DEBUG_MERCHANT_OBJ')) { DebugMiddleware::getInstance()->output(sprintf("Der Händler %s sieht wie folgt aus:
%s
\n", $merchant->getMerchantName(), print_r($merchant, true) )); } // Reederei gruenden $shipping = ShippingCompany::createShippingCompany("Hanseatic Travel Company", $harbor); // Firmenschef setzen $shipping->setCompanyFounder(CompanyEmployee::createCompanyEmployee("Roland", "Häder", "M", 1977, 9, 26, true, 2000)); // Dann mal ausgeben... DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s ist von %s %s gegründet worden.
\n", $shipping->getCompanyName(), $shipping->getFounderInstance()->getSurname(), $shipping->getFounderInstance()->getFamily() )); // Die Reederei stellt Personal ein und bedient sich an der $personell-Instanz $shipping->recruitRandomEmployees(10, $personell); // Anzahl Personal ausgeben DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s hat nun %d weitere Mitarbeiter.
\n", $shipping->getCompanyName(), $shipping->getTotalEmployee() )); // Dann die ersten 3 Werften in den Hafen einbauen und Personal zuweisen $shipping->createShipyardInHarbor("Werft 1", $harbor); $shipping->createShipyardInHarbor("Werft 2", $harbor); $shipping->createShipyardInHarbor("Werft 3", $harbor); // In alle Werften sollen Passagierschiffe gebaut werden koennen $shipping->addShipTypeToAllShipyards("PassengerShip"); // Personal auf die Werften verteilen $shipping->distributeAllPersonellOnShipyards(); // Normale Meldung ausgeben DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s beschäftigt nun ihre %d Mitarbeiter in %d Werft(en):
\n", $shipping->getCompanyName(), $shipping->getTotalEmployee(), $shipping->getTotalShipyards() )); // Dann nimmt die Reederei ihren ersten Bauauftrag entgegen. // Sie muss auch sich selber Bauauftraege erteilen! $shipping->addNewWorksContract(WorksContract::createWorksContract("PassengerShip", "M/S Poseidon", $shipping)); // Auftrag-Instanz holen $contract = $shipping->getLastContractInstance(); // Die Reederei hat einen Haendler gewaehlt $shipping->setMerchantInstance($merchant); // Den Bauauftrag mit der Reederei abgleichen, ob sie den Schiffstyp bauen koennen $typeValid = $shipping->validateWorksContractShipType($contract); // Kann gebaut werden? if ($typeValid) { DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s kann Schiffe vom Typ %s bauen.
\n", $shipping->getCompanyName(), $contract->getShipInstance()->getObjectDescription() )); } else { DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s kann keine Schiffe vom Typ %s bauen!
\n", $shipping->getCompanyName(), $contract->getShipInstance()->getObjectDescription() )); exit; } // Dann den Bauauftrag verfeinern foreach ($einbauten['parts'] as $key=>$part) { $contract->addContractDetails($key, $einbauten['builds'][$key], $part); } // Reederei-Objekt ausgeben if (defined('DEBUG_COMPANY_OBJ')) { DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s sieht wie folgt aus:
%s
\n", $shipping->getCompanyName(), print_r($shipping, true) )); } // Clean up a little unset($einbauten); unset($part); unset($eval); unset($item); unset($key); unset($typeValid); // Gesamtwert ausgeben $totalValue = $contract->getTotalPrice(); // Wert ausgeben DebugMiddleware::getInstance()->output(sprintf("Der Bau der %s wird der Reederei %s voraussichtlich %s kosten.
\n", $contract->getShipInstance()->getShipName(), $shipping->getCompanyName(), $contract->formatCurrency($totalValue) )); // Clean up a little unset($totalValue); // Den Bauvertrag unterschreiben (damit wird er in den Bau-Queue aufgenommen) $shipping->signContract($contract, $shipping); // Meldung ausgeben if ($contract->isSigned()) { DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s hat den Bau der %s zugestimmt.
\n", $shipping->getCompanyName(), $contract->getShipInstance()->getShipName() )); } else { DebugMiddleware::getInstance()->output(sprintf("Die Reederei %s hat den Bau der %s abgelehnt.
\n", $shipping->getCompanyName(), $contract->getShipInstance()->getShipName() )); exit; } // Auftrag-Objekt ausgeben if (defined('DEBUG_CONTRACT_OBJ')) { DebugMiddleware::getInstance()->output(sprintf("Der Bauauftrag sieht wie folgt aus:
%s
\n", print_r($contract, true) )); } // Erstmal bis hier hin... //exit(); // Anzahl Betten ermitteln $totalBeds = $contract->getShipInstance()->calcTotalBeds(); // Bettenanzahl ausgeben DebugMiddleware::getInstance()->output(sprintf("Es stehen %d Betten zur Verfügung.", $totalBeds ));