50 lines
1.3 KiB
PHP
50 lines
1.3 KiB
PHP
<?php
|
|
|
|
require_once "Tasks/SingleChoiceTask.php";
|
|
|
|
require_once "Tasks/OpenEndedTask.php";
|
|
|
|
require_once "Tasks/NumberConversionTask.php";
|
|
|
|
require_once "Tasks/TruthTableTask.php";
|
|
|
|
require_once "Tasks/VerilogTask.php";
|
|
|
|
class TaskFactory
|
|
{
|
|
static function fromArray(array $a, Game|Test|null &$governor = null): Task|null
|
|
{
|
|
$type = $a["type"] ?? "singlechoice"; // if the type is missing, then it's a single choice task
|
|
switch ($type) {
|
|
case "singlechoice":
|
|
$task = new SingleChoiceTask($a);
|
|
break;
|
|
case "openended":
|
|
$task = new OpenEndedTask($a);
|
|
break;
|
|
case "numberconversion":
|
|
$task = new NumberConversionTask($a);
|
|
break;
|
|
case "truthtable":
|
|
$task = new TruthTableTask($a);
|
|
break;
|
|
case "verilog":
|
|
$task = new VerilogTask($a);
|
|
break;
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
$task->setGovernor($governor);
|
|
return $task;
|
|
}
|
|
|
|
static function constructFromCollection(array $c, Game|Test|null &$governor = null): array
|
|
{
|
|
$chgs = [];
|
|
foreach ($c as $ch) {
|
|
$chgs[] = TaskFactory::fromArray($ch, $governor);
|
|
}
|
|
return $chgs;
|
|
}
|
|
} |