2
2
3
3
namespace DauntlessBuilder ;
4
4
5
+ use Atomicptr \Functional \Lst ;
5
6
use Atomicptr \Functional \Result ;
6
7
use Sqids \Sqids ;
7
8
@@ -12,19 +13,26 @@ final class Build
12
13
13
14
private static ?Sqids $ sqids = null ;
14
15
15
- public int $ version = static ::CURRENT_BUILD_VERSION ;
16
+ public int $ version = self ::CURRENT_BUILD_VERSION ;
16
17
public int $ flags = 0 ;
17
- public BuildWeapon $ weapon1 = BuildWeapon:: empty () ;
18
- public BuildWeapon $ weapon2 = BuildWeapon:: empty () ;
19
- public BuildArmourPiece $ head = BuildArmourPiece:: empty (ArmourType:: HEAD ) ;
20
- public BuildArmourPiece $ torso = BuildArmourPiece:: empty (ArmourType:: TORSO ) ;
21
- public BuildArmourPiece $ arms = BuildArmourPiece:: empty (ArmourType:: ARMS ) ;
22
- public BuildArmourPiece $ legs = BuildArmourPiece:: empty (ArmourType:: LEGS ) ;
23
- public BuildLanternCore $ lanternCore = BuildLanternCore:: empty () ;
18
+ public ? BuildWeapon $ weapon1 = null ;
19
+ public ? BuildWeapon $ weapon2 = null ;
20
+ public ? BuildArmourPiece $ head = null ;
21
+ public ? BuildArmourPiece $ torso = null ;
22
+ public ? BuildArmourPiece $ arms = null ;
23
+ public ? BuildArmourPiece $ legs = null ;
24
+ public ? BuildLanternCore $ lanternCore = null ;
24
25
public int $ checksum = 0 ;
25
26
26
27
private function __construct ()
27
28
{
29
+ $ this ->weapon1 ??= BuildWeapon::empty ();
30
+ $ this ->weapon2 ??= BuildWeapon::empty ();
31
+ $ this ->head ??= BuildArmourPiece::empty (ArmourType::HEAD );
32
+ $ this ->torso ??= BuildArmourPiece::empty (ArmourType::TORSO );
33
+ $ this ->arms ??= BuildArmourPiece::empty (ArmourType::ARMS );
34
+ $ this ->legs ??= BuildArmourPiece::empty (ArmourType::LEGS );
35
+ $ this ->lanternCore ??= BuildLanternCore::empty ();
28
36
}
29
37
30
38
public function serialize (): Result
@@ -76,6 +84,11 @@ public static function empty(): static
76
84
77
85
public static function fromId (string $ buildId ): Result
78
86
{
87
+ // we also want to support urls ig
88
+ if (str_starts_with ($ buildId , "http " )) {
89
+ $ buildId = Lst::last (explode ("/ " , $ buildId ));
90
+ }
91
+
79
92
$ data = static ::sqids ()->decode ($ buildId );
80
93
81
94
$ supposedLength = BuildFields::Checksum->value + 1 ;
0 commit comments