Completed
Push — work-fleets ( 33857b...22a48f )
by SuperNova.WS
05:55
created

MissionFactory::build()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 6
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 9
rs 9.6666
1
<?php
2
3
namespace Mission;
4
5
use \Fleet;
6
use \ExceptionFleetInvalid;
7
8
/**
9
 * User: Gorlum
10
 * Date: 23.07.2016
11
 * Time: 14:35
12
 */
13
class MissionFactory {
14
  public static $missions = array(
15
    // MT_NONE,
16
    MT_EXPLORE   => 'Explore',
17
    MT_COLONIZE  => 'Colonize',
18
    MT_RECYCLE   => 'Recycle',
19
    MT_RELOCATE  => 'Relocate',
20
    MT_TRANSPORT => 'Transport',
21
    MT_HOLD      => 'Hold',
22
    MT_MISSILE   => 'Missile',
23
    MT_SPY       => 'Spy',
24
    MT_ATTACK    => 'Attack',
25
    MT_ACS       => 'Acs',
26
    MT_DESTROY   => 'Destroy',
27
  );
28
29
  /**
30
   * @param int   $missionType
31
   * @param Fleet $fleet
32
   *
33
   * @return Mission
34
   * @throws ExceptionFleetInvalid
35
   */
36
  public static function build($missionType, $fleet) {
37
    if (!empty(self::$missions[$missionType]) && class_exists($className = __NAMESPACE__ . '\\' . self::$missions[$missionType])) {
38
      $result = new $className($fleet);
39
    } else {
40
      throw new ExceptionFleetInvalid("Mission type {$missionType} unknown", FLIGHT_MISSION_UNKNOWN);
41
    }
42
43
    return $result;
44
  }
45
46
}
47