openlegends
9 months ago
6 changed files with 203 additions and 0 deletions
@ -0,0 +1,17 @@ |
|||||||
|
{ |
||||||
|
"name": "openlegends/asset", |
||||||
|
"description": "Game Assets for OpenLegends", |
||||||
|
"type": "library", |
||||||
|
"license": "MIT", |
||||||
|
"autoload": { |
||||||
|
"psr-4": { |
||||||
|
"OpenLegends\\Asset\\": "src/" |
||||||
|
} |
||||||
|
}, |
||||||
|
"authors": [ |
||||||
|
{ |
||||||
|
"name": "OpenLegends" |
||||||
|
} |
||||||
|
], |
||||||
|
"require": {} |
||||||
|
} |
@ -0,0 +1,142 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace OpenLegends\Asset; |
||||||
|
|
||||||
|
class Config |
||||||
|
{ |
||||||
|
private string $_asset; |
||||||
|
|
||||||
|
public function __construct(string $asset) |
||||||
|
{ |
||||||
|
if (is_dir(__DIR__ . DIRECTORY_SEPARATOR . $asset)) |
||||||
|
{ |
||||||
|
$this->_asset = $asset; |
||||||
|
} |
||||||
|
|
||||||
|
else |
||||||
|
{ |
||||||
|
throw new Exception(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public function getCards( |
||||||
|
?string $folder = 'Cards', |
||||||
|
?array $type = null, |
||||||
|
?array $attributes = null, |
||||||
|
?array $title = null, |
||||||
|
?array $description = null, |
||||||
|
?array $cost = null, |
||||||
|
?array $attack = null, |
||||||
|
?array $health = null, |
||||||
|
?array $craft = null, |
||||||
|
?array $extract = null |
||||||
|
): array |
||||||
|
{ |
||||||
|
$cards = []; |
||||||
|
|
||||||
|
foreach ( |
||||||
|
$this->_getConfigs( |
||||||
|
__DIR__ . DIRECTORY_SEPARATOR . $this->_asset . DIRECTORY_SEPARATOR . $folder |
||||||
|
) as $config) |
||||||
|
{ |
||||||
|
if ($type && !in_array($config->type, $type)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($attributes && !in_array($config->attributes, $attributes)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($title && !in_array($config->title, $title)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($description && !in_array($config->description, $description)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($cost && !in_array($config->cost, $cost)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($attack && !in_array($config->attack, $attack)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($health && !in_array($config->health, $health)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($craft && !in_array($config->craft, $craft)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if ($extract && !in_array($config->extract, $extract)) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
$cards[] = json_decode( |
||||||
|
$config |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
return $cards; |
||||||
|
} |
||||||
|
|
||||||
|
private function _getConfigs( |
||||||
|
string $location |
||||||
|
): array |
||||||
|
{ |
||||||
|
$configs = []; |
||||||
|
|
||||||
|
if (!is_dir($location) || !is_readable($location)) |
||||||
|
{ |
||||||
|
throw new Exception(); |
||||||
|
} |
||||||
|
|
||||||
|
foreach (scandir($location) as $filename) |
||||||
|
{ |
||||||
|
if (!str_ends_with($filename, '.json')) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
$configs[] = $this->_getConfig( |
||||||
|
$filename |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
return $configs; |
||||||
|
} |
||||||
|
|
||||||
|
private function _getConfig( |
||||||
|
string $location |
||||||
|
): object |
||||||
|
{ |
||||||
|
if (!is_file($location) || !is_readable($location)) |
||||||
|
{ |
||||||
|
throw new Exception(); |
||||||
|
} |
||||||
|
|
||||||
|
if (!$json = file_get_contents($location)) |
||||||
|
{ |
||||||
|
throw new Exception(); |
||||||
|
} |
||||||
|
|
||||||
|
if (!$config = json_decode($json)) |
||||||
|
{ |
||||||
|
throw new Exception(); |
||||||
|
} |
||||||
|
|
||||||
|
return $config; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"attributes": |
||||||
|
[ |
||||||
|
"attribute 1" |
||||||
|
], |
||||||
|
"type":"type 1", |
||||||
|
"title":"title 1", |
||||||
|
"description":"description 1", |
||||||
|
"cost":1, |
||||||
|
"attack":1, |
||||||
|
"health":1, |
||||||
|
"craft":1, |
||||||
|
"extract":1 |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
{ |
||||||
|
"attributes": |
||||||
|
[ |
||||||
|
"attribute 1", |
||||||
|
"attribute 2" |
||||||
|
], |
||||||
|
"type":"type 2", |
||||||
|
"title":"title 2", |
||||||
|
"description":"description 2", |
||||||
|
"cost":1, |
||||||
|
"attack":1, |
||||||
|
"health":1, |
||||||
|
"craft":1, |
||||||
|
"extract":1 |
||||||
|
} |
Loading…
Reference in new issue