summaryrefslogtreecommitdiff
path: root/includes/util/rainbow.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/util/rainbow.inc')
-rw-r--r--includes/util/rainbow.inc56
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