summaryrefslogtreecommitdiff
path: root/includes/score.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/score.inc')
-rw-r--r--includes/score.inc123
1 files changed, 77 insertions, 46 deletions
diff --git a/includes/score.inc b/includes/score.inc
index 991c132..57c7a75 100644
--- a/includes/score.inc
+++ b/includes/score.inc
@@ -1,59 +1,45 @@
<?php
-function calculateScore($metadata, $name) {
- $scoreFictive = $metadata["fictive"] ? 200 : 0;
- $scoreLittle = $metadata["little"] === 2 ? 100 : ($metadata["little"] === 1 ? 50 : ($metadata["little"] === 3 ? 75 : 0));
- $scoreNotTalking = $metadata["not_talking"] ? -200 : 0;
- $scoreMedian = $metadata["median"] !== false ? -50 : 0;
- $scoreProtector = $metadata["protector"] ? 1000 : 0;
- $scoreSharedMemory = $metadata["shared_memory"] === 0 ? 200 : ($metadata["shared_memory"] === 1 ? 50 : 0);
- $scoreSpecies = (in_array("pegasus", $metadata["species"]) ? 100 : 0) + (in_array("unicorn", $metadata["species"]) ? 75 : 0) + (in_array("earth", $metadata["species"]) ? 50 : 0) + (in_array("alicorn", $metadata["species"]) ? 150 : 0) + (in_array("batpony", $metadata["species"]) ? 125 : 0) + (in_array("crystal", $metadata["species"]) ? 125 : 0);
- $scoreName = strlen($name) * 5;
- $relations = (count($metadata["marefriends"]) * ($metadata["little"] ? 1 : 2)) + count($metadata["sisters"]);
- $scoreRelations = $relations * 50;
-
- $scoreLeader = $metadata["leader"] ? 10000 : 0;
- $scorePersecutor = $metadata["persecutor"] ? -10000 : 0;
-
- $scoreAdd = 0;
- if ($name === "Cloudy Dreams") $scoreAdd += 250;
- if ($name === "Princess Celestia") $scoreAdd += 250;
- if ($name === "Scootaloo") $scoreAdd -= 235;
-
- $score = $scoreLeader + $scorePersecutor + $scoreFictive + $scoreLittle + $scoreNotTalking + $scoreProtector + $scoreSharedMemory + $scoreRelations + $scoreSpecies + $scoreName + $scoreMedian + $scoreAdd;
-
- return [
- "leader" => $scoreLeader,
- "fictive" => $scoreFictive,
- "little" => $scoreLittle,
- "median" => $scoreMedian,
- "not_talking" => $scoreNotTalking,
- "name" => $scoreName,
- "protector" => $scoreProtector,
- "shared_memory" => $scoreSharedMemory,
- "relations" => $scoreRelations,
- "species" => $scoreSpecies,
- "persecutor" => $scorePersecutor,
- "additional" => $scoreAdd,
- "total" => $score
- ];
-}
-
-function scoreOrder($members, $system) {
+function scoreOrder($members, $system, $useDominant = false) {
$ordered = [];
foreach ($members as $member) {
if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && $member["name"] !== "new" && !str_starts_with($member["name"], "smol") && !str_ends_with($member["name"], "-travelling") && file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json")) {
+ if (isset($member["color"])) {
+ if ($useDominant) {
+ $rgb = [
+ hexdec(substr($member["dominant_color"] ?? $member["color"], 0, 2)),
+ hexdec(substr($member["dominant_color"] ?? $member["color"], 2, 2)),
+ hexdec(substr($member["dominant_color"] ?? $member["color"], 4, 2))
+ ];
+ } else {
+ $rgb = [
+ hexdec(substr($member["color"], 0, 2)),
+ hexdec(substr($member["color"], 2, 2)),
+ hexdec(substr($member["color"], 4, 2))
+ ];
+ }
+
+ $hsl = rgbToHsl(
+ $rgb[0],
+ $rgb[1],
+ $rgb[2]
+ );
+ } else {
+ $rgb = [255, 255, 255];
+ $hsl = rgbToHsl(255, 255, 255);
+ }
+
$systemID = $member["system"] ?? $system;
$member["_system"] = $member["system"] = $systemID;
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true));
- $member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true)), $member["display_name"] ?? $member["name"]);
+ $member["_score"] = $hsl[0];
$ordered[] = $member;
}
}
uasort($ordered, function($a, $b) {
- return $b["_score"]["total"] - $a["_score"]["total"];
+ return $a["_score"] - $b["_score"];
});
return $ordered;
@@ -66,20 +52,50 @@ function scoreOrderGlobal() {
$ordered = [];
foreach (json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd/members.json"), true) as $member) {
if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && $member["name"] !== "new" && !str_starts_with($member["name"], "smol") && !str_ends_with($member["name"], "-travelling") && file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json")) {
+ if (isset($member["color"])) {
+ $rgb = [
+ hexdec(substr($member["color"], 0, 2)),
+ hexdec(substr($member["color"], 2, 2)),
+ hexdec(substr($member["color"], 4, 2))
+ ];
+ $hsl = rgbToHsl(
+ $rgb[0],
+ $rgb[1],
+ $rgb[2]
+ );
+ } else {
+ $rgb = [255, 255, 255];
+ $hsl = rgbToHsl(255, 255, 255);
+ }
+ $member["_score"] = $hsl[0];
$member["_system"] = "gdapd";
$member["system"] = "gdapd";
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true));
- $member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true)), $member["display_name"] ?? $member["name"]);
$ordered[] = $member;
}
}
foreach (json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/ynmuc/members.json"), true) as $member) {
if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && $member["name"] !== "new" && !str_starts_with($member["name"], "smol") && !str_ends_with($member["name"], "-travelling") && file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json")) {
+ if (isset($member["color"])) {
+ $rgb = [
+ hexdec(substr($member["color"], 0, 2)),
+ hexdec(substr($member["color"], 2, 2)),
+ hexdec(substr($member["color"], 4, 2))
+ ];
+ $hsl = rgbToHsl(
+ $rgb[0],
+ $rgb[1],
+ $rgb[2]
+ );
+ } else {
+ $rgb = [255, 255, 255];
+ $hsl = rgbToHsl(255, 255, 255);
+ }
+ $member["_score"] = $hsl[0];
$member["_system"] = "ynmuc";
$member["system"] = "ynmuc";
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true));
- $member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true)), $member["display_name"] ?? $member["name"]);
$ordered[] = $member;
}
}
@@ -88,17 +104,32 @@ function scoreOrderGlobal() {
$app = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/app.json"), true);
foreach (json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/other/members.json"), true) as $member) {
if ($member["name"] !== "unknown" && $member["name"] !== "fusion" && $member["name"] !== "new" && !str_starts_with($member["name"], "smol") && !str_ends_with($member["name"], "-travelling") && file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json")) {
+ if (isset($member["color"])) {
+ $rgb = [
+ hexdec(substr($member["color"], 0, 2)),
+ hexdec(substr($member["color"], 2, 2)),
+ hexdec(substr($member["color"], 4, 2))
+ ];
+ $hsl = rgbToHsl(
+ $rgb[0],
+ $rgb[1],
+ $rgb[2]
+ );
+ } else {
+ $rgb = [255, 255, 255];
+ $hsl = rgbToHsl(255, 255, 255);
+ }
+ $member["_score"] = $hsl[0];
$member["_system"] = $app["other"]["id"];
$member["system"] = $app["other"]["id"];
$member["_metadata"] = parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true));
- $member["_score"] = calculateScore(parseMetadata(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/$member[id].json"), true)), $member["display_name"] ?? $member["name"]);
$ordered[] = $member;
}
}
}
uasort($ordered, function($a, $b) {
- return $b["_score"]["total"] - $a["_score"]["total"];
+ return $a["_score"] - $b["_score"];
});
return array_values($ordered);