mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 21:56:50 -04:00
Show ranking changes on audience and announcer displays.
This commit is contained in:
@@ -194,11 +194,17 @@ func (arena *Arena) generateScorePostedMessage() interface{} {
|
||||
}
|
||||
}
|
||||
|
||||
rankings := make(map[int]game.Ranking, len(arena.SavedRankings))
|
||||
for _, ranking := range arena.SavedRankings {
|
||||
rankings[ranking.TeamId] = ranking
|
||||
}
|
||||
|
||||
return &struct {
|
||||
MatchType string
|
||||
Match *model.Match
|
||||
RedScoreSummary *game.ScoreSummary
|
||||
BlueScoreSummary *game.ScoreSummary
|
||||
Rankings map[int]game.Ranking
|
||||
RedFouls []game.Foul
|
||||
BlueFouls []game.Foul
|
||||
RulesViolated map[int]*game.Rule
|
||||
@@ -207,7 +213,7 @@ func (arena *Arena) generateScorePostedMessage() interface{} {
|
||||
SeriesStatus string
|
||||
SeriesLeader string
|
||||
}{arena.SavedMatch.CapitalizedType(), arena.SavedMatch, arena.SavedMatchResult.RedScoreSummary(true),
|
||||
arena.SavedMatchResult.BlueScoreSummary(true), arena.SavedMatchResult.RedScore.Fouls,
|
||||
arena.SavedMatchResult.BlueScoreSummary(true), rankings, arena.SavedMatchResult.RedScore.Fouls,
|
||||
arena.SavedMatchResult.BlueScore.Fouls,
|
||||
getRulesViolated(arena.SavedMatchResult.RedScore.Fouls, arena.SavedMatchResult.BlueScore.Fouls),
|
||||
arena.SavedMatchResult.RedCards, arena.SavedMatchResult.BlueCards, seriesStatus, seriesLeader}
|
||||
|
||||
@@ -206,7 +206,7 @@ html {
|
||||
}
|
||||
#finalScore {
|
||||
position: fixed;
|
||||
width: 950px;
|
||||
width: 1200px;
|
||||
height: 550px;
|
||||
top: 65px;
|
||||
bottom: 0;
|
||||
@@ -241,6 +241,7 @@ html {
|
||||
float: left;
|
||||
width: 50%;
|
||||
height: 9%;
|
||||
overflow: hidden;
|
||||
line-height: 50px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
@@ -250,6 +251,11 @@ html {
|
||||
.final-teams span {
|
||||
margin: 0 10px;
|
||||
}
|
||||
.final-teams span sup {
|
||||
margin-left: 3px;
|
||||
font-size: 18px;
|
||||
vertical-align: super;
|
||||
}
|
||||
.final-avatar {
|
||||
height: 35px;
|
||||
position: relative;
|
||||
|
||||
@@ -57,11 +57,20 @@ var handleScorePosted = function(data) {
|
||||
Object.assign(foul, data.RulesViolated[foul.RuleId]);
|
||||
});
|
||||
|
||||
var redRankings = {};
|
||||
redRankings[data.Match.Red1] = getRankingText(data.Match.Red1, data.Rankings);
|
||||
redRankings[data.Match.Red2] = getRankingText(data.Match.Red2, data.Rankings);
|
||||
redRankings[data.Match.Red3] = getRankingText(data.Match.Red3, data.Rankings);
|
||||
var blueRankings = {};
|
||||
blueRankings[data.Match.Blue1] = getRankingText(data.Match.Blue1, data.Rankings);
|
||||
blueRankings[data.Match.Blue2] = getRankingText(data.Match.Blue2, data.Rankings);
|
||||
blueRankings[data.Match.Blue3] = getRankingText(data.Match.Blue3, data.Rankings);
|
||||
|
||||
$("#scoreMatchName").text(data.MatchType + " Match " + data.Match.DisplayName);
|
||||
$("#redScoreDetails").html(matchResultTemplate({score: data.RedScoreSummary, fouls: data.RedFouls,
|
||||
rulesViolated: data.RulesViolated, cards: data.RedCards}));
|
||||
rulesViolated: data.RulesViolated, cards: data.RedCards, rankings: redRankings}));
|
||||
$("#blueScoreDetails").html(matchResultTemplate({score: data.BlueScoreSummary, fouls: data.BlueFouls,
|
||||
rulesViolated: data.RulesViolated, cards: data.BlueCards}));
|
||||
rulesViolated: data.RulesViolated, cards: data.BlueCards, rankings: blueRankings}));
|
||||
$("#matchResult").modal("show");
|
||||
|
||||
// Activate tooltips above the foul listings.
|
||||
@@ -76,6 +85,25 @@ var formatTeam = function(team) {
|
||||
return team;
|
||||
};
|
||||
|
||||
// Returns the string to be displayed to indicate change in rank.
|
||||
var getRankingText = function(teamId, rankings) {
|
||||
var ranking = rankings[teamId];
|
||||
if (ranking === null || ranking.Rank === 0) {
|
||||
return "";
|
||||
}
|
||||
var arrow = "";
|
||||
if (ranking.Rank > ranking.PreviousRank && ranking.PreviousRank > 0) {
|
||||
arrow = "⬇";
|
||||
} else if (ranking.Rank < ranking.PreviousRank) {
|
||||
arrow = "⬆";
|
||||
}
|
||||
var previousRank = "";
|
||||
if (ranking.PreviousRank > 0) {
|
||||
previousRank = " (was " + ranking.PreviousRank + ")";
|
||||
}
|
||||
return ranking.Rank + arrow + previousRank;
|
||||
};
|
||||
|
||||
$(function() {
|
||||
// Set up the websocket back to the server.
|
||||
websocket = new CheesyWebsocket("/displays/announcer/websocket", {
|
||||
|
||||
@@ -96,9 +96,9 @@ var handleRealtimeScore = function(data) {
|
||||
// Handles a websocket message to populate the final score data.
|
||||
var handleScorePosted = function(data) {
|
||||
$("#" + redSide + "FinalScore").text(data.RedScoreSummary.Score);
|
||||
$("#" + redSide + "FinalTeam1").text(data.Match.Red1);
|
||||
$("#" + redSide + "FinalTeam2").text(data.Match.Red2);
|
||||
$("#" + redSide + "FinalTeam3").text(data.Match.Red3);
|
||||
$("#" + redSide + "FinalTeam1").html(data.Match.Red1 + "" + getRankingText(data.Match.Red1, data.Rankings));
|
||||
$("#" + redSide + "FinalTeam2").html(data.Match.Red2 + "" + getRankingText(data.Match.Red2, data.Rankings));
|
||||
$("#" + redSide + "FinalTeam3").html(data.Match.Red3 + "" + getRankingText(data.Match.Red3, data.Rankings));
|
||||
$("#" + redSide + "FinalTeam1Avatar").attr("src", getAvatarUrl(data.Match.Red1));
|
||||
$("#" + redSide + "FinalTeam2Avatar").attr("src", getAvatarUrl(data.Match.Red2));
|
||||
$("#" + redSide + "FinalTeam3Avatar").attr("src", getAvatarUrl(data.Match.Red3));
|
||||
@@ -112,9 +112,9 @@ var handleScorePosted = function(data) {
|
||||
$("#" + redSide + "FinalEndgameRankingPoint").html(data.RedScoreSummary.EndgameRankingPoint ? "✔" : "✘");
|
||||
$("#" + redSide + "FinalEndgameRankingPoint").attr("data-checked", data.RedScoreSummary.EndgameRankingPoint);
|
||||
$("#" + blueSide + "FinalScore").text(data.BlueScoreSummary.Score);
|
||||
$("#" + blueSide + "FinalTeam1").text(data.Match.Blue1);
|
||||
$("#" + blueSide + "FinalTeam2").text(data.Match.Blue2);
|
||||
$("#" + blueSide + "FinalTeam3").text(data.Match.Blue3);
|
||||
$("#" + blueSide + "FinalTeam1").html(data.Match.Blue1 + "" + getRankingText(data.Match.Blue1, data.Rankings));
|
||||
$("#" + blueSide + "FinalTeam2").html(data.Match.Blue2 + "" + getRankingText(data.Match.Blue2, data.Rankings));
|
||||
$("#" + blueSide + "FinalTeam3").html(data.Match.Blue3 + "" + getRankingText(data.Match.Blue3, data.Rankings));
|
||||
$("#" + blueSide + "FinalTeam1Avatar").attr("src", getAvatarUrl(data.Match.Blue1));
|
||||
$("#" + blueSide + "FinalTeam2Avatar").attr("src", getAvatarUrl(data.Match.Blue2));
|
||||
$("#" + blueSide + "FinalTeam3Avatar").attr("src", getAvatarUrl(data.Match.Blue3));
|
||||
@@ -486,6 +486,21 @@ var setPowerCellText = function(element, scoreSummary, stage) {
|
||||
element.css("opacity", opacity);
|
||||
};
|
||||
|
||||
// Returns the string to be displayed next to the team number on the final score screen, to indicate change in rank.
|
||||
var getRankingText = function(teamId, rankings) {
|
||||
var ranking = rankings[teamId];
|
||||
if (ranking === null || ranking.Rank === 0) {
|
||||
return "";
|
||||
}
|
||||
var arrow = "";
|
||||
if (ranking.Rank > ranking.PreviousRank && ranking.PreviousRank > 0) {
|
||||
arrow = "⬇";
|
||||
} else if (ranking.Rank < ranking.PreviousRank) {
|
||||
arrow = "⬆";
|
||||
}
|
||||
return "<sup>" + ranking.Rank + arrow + "</sup>";
|
||||
};
|
||||
|
||||
$(function() {
|
||||
// Read the configuration for this display from the URL query string.
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
@@ -112,6 +112,15 @@
|
||||
</div>
|
||||
{{"{{/if}}"}}
|
||||
{{"{{/eachMapEntry}}"}}
|
||||
<h4>Rankings</h4>
|
||||
{{"{{#eachMapEntry rankings}}"}}
|
||||
{{"{{#if this.value}}"}}
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-lg-offset-1">Team {{"{{this.key}}"}}</div>
|
||||
<div class="col-lg-7">{{"{{{this.value}}}"}}</div>
|
||||
</div>
|
||||
{{"{{/if}}"}}
|
||||
{{"{{/eachMapEntry}}"}}
|
||||
</script>
|
||||
{{end}}
|
||||
{{define "head"}}
|
||||
|
||||
Reference in New Issue
Block a user