mirror of
https://github.com/openlegends/asset-php.git
synced 2025-02-08 04:54:15 +00:00
initial commit
This commit is contained in:
parent
821da1bcdf
commit
95dfa23b2e
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/vendor/
|
17
composer.json
Normal file
17
composer.json
Normal file
@ -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": {}
|
||||||
|
}
|
142
src/Config.php
Normal file
142
src/Config.php
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
14
src/Test/Cards/name-1.json
Normal file
14
src/Test/Cards/name-1.json
Normal file
@ -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
|
||||||
|
}
|
15
src/Test/Cards/name-2.json
Normal file
15
src/Test/Cards/name-2.json
Normal file
@ -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
|
||||||
|
}
|
14
src/Test/Cards/name-3.json
Normal file
14
src/Test/Cards/name-3.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"attributes":
|
||||||
|
[
|
||||||
|
"attribute 2"
|
||||||
|
],
|
||||||
|
"type":"type 2",
|
||||||
|
"title":"title 3",
|
||||||
|
"description":"description 3",
|
||||||
|
"cost":2,
|
||||||
|
"attack":2,
|
||||||
|
"health":2,
|
||||||
|
"craft":2,
|
||||||
|
"extract":2
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user