diff options
Diffstat (limited to 'includes/util/rainbow.inc')
-rw-r--r-- | includes/util/rainbow.inc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/includes/util/rainbow.inc b/includes/util/rainbow.inc new file mode 100644 index 0000000..66ac2fc --- /dev/null +++ b/includes/util/rainbow.inc @@ -0,0 +1,56 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc"; +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/bitset.inc"; +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/score.inc"; + +function rainbow($hideCloudburst = false): array { + $members = scoreOrderGlobal(); + + if ($hideCloudburst) { + $members = array_filter($members, function ($i) { + return $i["_system"] === "gdapd"; + }); + } + + $data = []; + + foreach ($members as $member) { + $data[$member["name"]] = [ + "_data" => $member + ]; + + if (isset($member["color"])) { + $data[$member["name"]]["rgb"] = [ + hexdec(substr($member["color"], 0, 2)), + hexdec(substr($member["color"], 2, 2)), + hexdec(substr($member["color"], 4, 2)) + ]; + $data[$member["name"]]["hsl"] = rgbToHsl( + $data[$member["name"]]["rgb"][0], + $data[$member["name"]]["rgb"][1], + $data[$member["name"]]["rgb"][2] + ); + } else { + $data[$member["name"]]["rgb"] = [255, 255, 255]; + $data[$member["name"]]["hsl"] = rgbToHsl(255, 255, 255); + } + } + + return $data; +} + +function getMembersByColor($hideCloudburst = false): array { + $members = rainbow($hideCloudburst); + uasort($members, function ($a, $b) { + return $a['hsl'][0] - $b['hsl'][0]; + }); + + $sorted = []; + foreach ($members as $data) { + $data["_data"]["hue"] = $data["hsl"][0]; + $sorted[] = $data["_data"]; + } + + return $sorted; +}
\ No newline at end of file |