From 6e85b8e63cd18d45a0498c2df9b5118d749f324f Mon Sep 17 00:00:00 2001 From: Pugzy Date: Sat, 7 Oct 2023 18:25:04 +0100 Subject: [PATCH] Store and save team colors for posted matches --- .../api/definitions/BoltTournamentTeam.java | 15 ++++++++++++ .../rip/bolt/ingame/api/definitions/Team.java | 18 ++++++++++++-- .../bolt/ingame/managers/MatchManager.java | 1 + .../rip/bolt/ingame/pugs/ManagedTeam.java | 9 +++++-- .../rip/bolt/ingame/utils/PGMMapUtils.java | 24 +++++++++++++++++++ 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 src/main/java/rip/bolt/ingame/api/definitions/BoltTournamentTeam.java diff --git a/src/main/java/rip/bolt/ingame/api/definitions/BoltTournamentTeam.java b/src/main/java/rip/bolt/ingame/api/definitions/BoltTournamentTeam.java new file mode 100644 index 0000000..68ae826 --- /dev/null +++ b/src/main/java/rip/bolt/ingame/api/definitions/BoltTournamentTeam.java @@ -0,0 +1,15 @@ +package rip.bolt.ingame.api.definitions; + +import dev.pgm.events.EventsPlugin; +import dev.pgm.events.team.TournamentTeam; +import javax.annotation.Nullable; +import tc.oc.pgm.teams.Team; + +public interface BoltTournamentTeam extends TournamentTeam { + + Integer getTeamId(); + + default @Nullable Team getPgmTeam() { + return EventsPlugin.get().getTeamManager().fromTournamentTeam(this).orElse(null); + } +} diff --git a/src/main/java/rip/bolt/ingame/api/definitions/Team.java b/src/main/java/rip/bolt/ingame/api/definitions/Team.java index bd15942..22738f9 100644 --- a/src/main/java/rip/bolt/ingame/api/definitions/Team.java +++ b/src/main/java/rip/bolt/ingame/api/definitions/Team.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import dev.pgm.events.team.TournamentPlayer; -import dev.pgm.events.team.TournamentTeam; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -14,11 +13,12 @@ /** A team for a bolt match, has the id & name, as well as the involved participants */ @JsonIgnoreProperties(ignoreUnknown = true) -public class Team implements TournamentTeam { +public class Team implements BoltTournamentTeam { private Integer id; private String name; private String mmr; + private String color; private Double score; @@ -56,6 +56,14 @@ public void setMmr(String mmr) { this.mmr = mmr; } + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + public Double getScore() { return score; } @@ -99,6 +107,12 @@ public String toString() { .collect(Collectors.joining(", ")); } + @Override + @JsonIgnore + public Integer getTeamId() { + return id; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/rip/bolt/ingame/managers/MatchManager.java b/src/main/java/rip/bolt/ingame/managers/MatchManager.java index 34b7920..1b25e27 100644 --- a/src/main/java/rip/bolt/ingame/managers/MatchManager.java +++ b/src/main/java/rip/bolt/ingame/managers/MatchManager.java @@ -274,6 +274,7 @@ private BoltMatch transition( break; case ENDED: statsManager.handleMatchUpdate(boltMatch, match); + PGMMapUtils.setTeamColors(boltMatch); boltMatch.setEndedAt(transitionAt); Collection winners = match.getWinners(); if (winners.size() == 1) { diff --git a/src/main/java/rip/bolt/ingame/pugs/ManagedTeam.java b/src/main/java/rip/bolt/ingame/pugs/ManagedTeam.java index e588d54..60d47f4 100644 --- a/src/main/java/rip/bolt/ingame/pugs/ManagedTeam.java +++ b/src/main/java/rip/bolt/ingame/pugs/ManagedTeam.java @@ -1,12 +1,12 @@ package rip.bolt.ingame.pugs; -import dev.pgm.events.team.TournamentTeam; import java.util.List; +import rip.bolt.ingame.api.definitions.BoltTournamentTeam; import rip.bolt.ingame.api.definitions.Team; import rip.bolt.ingame.api.definitions.pug.PugPlayer; import rip.bolt.ingame.api.definitions.pug.PugTeam; -public class ManagedTeam implements TournamentTeam { +public class ManagedTeam implements BoltTournamentTeam { private final String pugTeamId; private PugTeam pugTeam; @@ -60,4 +60,9 @@ public String getName() { public List getPlayers() { return pugTeam.getPlayers(); } + + @Override + public Integer getTeamId() { + return boltTeam.getTeamId(); + } } diff --git a/src/main/java/rip/bolt/ingame/utils/PGMMapUtils.java b/src/main/java/rip/bolt/ingame/utils/PGMMapUtils.java index 73047c6..5a40a2e 100644 --- a/src/main/java/rip/bolt/ingame/utils/PGMMapUtils.java +++ b/src/main/java/rip/bolt/ingame/utils/PGMMapUtils.java @@ -1,8 +1,13 @@ package rip.bolt.ingame.utils; +import dev.pgm.events.EventsPlugin; +import java.util.Map; +import java.util.stream.Collectors; import rip.bolt.ingame.api.definitions.BoltMatch; import rip.bolt.ingame.api.definitions.BoltPGMMap; +import rip.bolt.ingame.api.definitions.BoltTournamentTeam; import tc.oc.pgm.api.match.Match; +import tc.oc.pgm.teams.Team; public class PGMMapUtils { @@ -15,4 +20,23 @@ public static BoltPGMMap getBoltPGMMap(BoltMatch boltMatch, Match match) { return new BoltPGMMap(pgmMapName); } + + public static void setTeamColors(BoltMatch boltMatch) { + Map pgmTeams = + EventsPlugin.get().getTeamManager().teams().stream() + .map(tournamentTeam -> (BoltTournamentTeam) tournamentTeam) + .collect( + Collectors.toMap(BoltTournamentTeam::getTeamId, BoltTournamentTeam::getPgmTeam)); + + boltMatch + .getTeams() + .forEach( + team -> { + Team pgmTeam = pgmTeams.get(team.getTeamId()); + if (pgmTeam != null) { + team.setColor( + "#" + String.format("%06X", 0xFFFFFF & pgmTeam.getFullColor().asRGB())); + } + }); + } }