Skip to content

Commit

Permalink
Replay show game time (#3233)
Browse files Browse the repository at this point in the history
* new double icon for real-time and game-time and adding theme in both replays + showing both times in replay-card

* Fixed test, changed 2 so they test so they up to date. Slightly changed column width
  • Loading branch information
sulikdan committed Aug 17, 2024
1 parent 5a15ded commit 817f67b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,7 @@ protected void onInitialize() {
.map(quality -> !Double.isNaN(quality) ? i18n.get("percentage", Math.round(quality * 100)) : i18n.get("gameQuality.undefined"))
.when(showing));
ratingLabel.textProperty().bind(entity.map(Replay::averageRating).map(i18n::number).orElse("-").when(showing));
tickDurationLabel.visibleProperty()
.bind(tickDurationLabel.textProperty().isNotEmpty().and(realTimeDurationLabel.visibleProperty().not()));
tickDurationLabel.visibleProperty().bind(tickDurationLabel.textProperty().isNotEmpty());
tickDurationLabel.textProperty().bind(entity.map(Replay::replayTicks)
.map(ticks -> Duration.ofMillis(ticks * 100))
.map(timeService::shortDuration)
Expand Down
10 changes: 9 additions & 1 deletion src/main/resources/theme/icons.css
Original file line number Diff line number Diff line change
Expand Up @@ -357,4 +357,12 @@

.react-icon {
-fx-shape: "M30.688 13.313l-0.063 0.125h0.063v2.563c0 0.375-0.063 0.688-0.188 1l-4.063 9.375c-0.375 0.938-1.313 1.625-2.438 1.625h-12c-1.438 0-2.688-1.25-2.688-2.688v-13.313c0-0.75 0.313-1.375 0.813-1.875l8.75-8.813 1.438 1.438c0.375 0.375 0.563 0.813 0.563 1.375v0.438l-1.313 6.125h8.438c1.438 0 2.688 1.188 2.688 2.625zM1.313 28v-16h5.375v16h-5.375z";
}
}

.world-duration-icon {
-fx-shape: "m144.8143 121.6803c-71.8005 0-130 58.1994-130 130 0 71.8005 58.1995 130 130 130 71.8006 0 130-58.1995 130-130 0-71.8006-58.1994-130-130-130zm225.1602 0c-8.9746 0-16.25 7.2754-16.25 16.25v16.25h32.5v16.5566c-54.5385 4.1483-97.5 49.7165-97.5 105.3184 0 58.3349 47.2901 105.625 105.625 105.625 58.3349 0 105.625-47.2901 105.625-105.625 0-55.6013-42.9615-101.1695-97.5-105.3184v-16.5566h32.5v-16.25c0-8.9746-7.2749-16.25-16.25-16.25zm-225.1524 16.25c17.875 0 34.7842 4.1277 49.8399 11.4727-1.0563.8856-2.0797 1.8196-3.0547 2.8027-9.2056 9.2056-14.2754 21.4503-14.2754 34.4746 0 13.0244 5.0698 25.2609 14.2754 34.4746 9.2544 9.2544 21.6364 14.2832 34.4414 14.2832.8043 0 1.6077-.016 2.4121-.0566 3.51 13.1544 9.8395 47.394-2.1367 94.5352-.1137.4469-.1784.8855-.2109 1.3242-20.6456 21.0925-49.4313 34.1895-81.2813 34.1895h-.0176c-15.9819 0-31.1998-3.3064-44.9961-9.2539l59.1992-66.6016c1.3244-1.4869 2.0547-3.4039 2.0547-5.3945v-24.375c0-4.485-3.64-8.125-8.125-8.125-28.6893 0-58.9533-29.8266-59.2539-30.1191-1.5275-1.5275-3.593-2.3809-5.7461-2.3809h-32.5c-4.485 0-8.125 3.64-8.125 8.125v48.75c0 3.0794 1.7398 5.8906 4.4941 7.2637l28.0059 14.0078v47.7012c-29.4693-20.5562-48.75-54.6971-48.75-93.3477 0-17.4444 3.9331-33.9706 10.9531-48.75h29.6719c2.1531 0 4.2267-.8534 5.7461-2.3809l32.5-32.5c1.5275-1.5275 2.3789-3.591 2.3789-5.7441v-19.6543c10.3025-3.0631 21.2063-4.7207 32.5-4.7207zm246.9492 56.9199-5.5039 79.7324c-.4723 6.6752 3.1633 9.5976 8.082 9.5976 4.9187 0 8.5568-2.9225 8.084-9.5976l-5.5039-79.7324c20.7355.6429 40.1363 9.0157 54.873 23.752 15.3461 15.3461 23.7969 35.7508 23.7969 57.4531 0 21.7024-8.4508 42.1071-23.7969 57.4531-15.3466 15.3461-35.7502 23.7969-57.4531 23.7969-21.7029 0-42.1051-8.4508-57.4512-23.7969-15.3461-15.3461-23.7988-35.7507-23.7988-57.4531 0-21.7023 8.4527-42.1071 23.7988-57.4531 14.7367-14.7362 34.1376-23.1096 54.873-23.752z";
}

.game-duration-icon {
-fx-shape: "m383.0234 122.6191c-8.7244 0-15.7969 7.0725-15.7969 15.7969v15.7969h31.5938v16.0977c-53.0183 4.0327-94.7832 48.3288-94.7832 102.3809 0 56.7089 45.9728 102.6816 102.6816 102.6816 56.7089 0 102.6816-45.9728 102.6816-102.6816 0-54.0515-41.7649-98.3477-94.7832-102.3809v-16.0977h31.5938v-15.7969c0-8.7244-7.072-15.7969-15.7969-15.7969zm-380.4043 1.3945v178.5469h285.6758v-178.5469zm17.8535 17.8535h249.9668v142.8379h-249.9668zm383.7383 51.8828-5.3496 77.5098c-.4591 6.4891 3.0759 9.3301 7.8574 9.3301 4.7816 0 8.317-2.841 7.8574-9.3301l-5.3496-77.5098c20.1575.625 39.0178 8.7644 53.3438 23.0898 14.9183 14.9183 23.1348 34.7541 23.1348 55.8516 0 21.0974-8.2164 40.9332-23.1348 55.8516-14.9188 14.9183-34.7536 23.1348-55.8516 23.1348-21.0979 0-40.9332-8.2164-55.8516-23.1348-14.9183-14.9183-23.1328-34.7541-23.1328-55.8516 0-21.0974 8.2145-40.9332 23.1328-55.8516 14.3259-14.3254 33.1862-22.4654 53.3438-23.0898zm-303.3906 126.6641-8.9277 35.7109-17.8555 17.8535h142.8379l-17.8535-17.8535-8.9277-35.7109z";
}
18 changes: 8 additions & 10 deletions src/main/resources/theme/vault/replay/replay_card.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<GridPane xmlns:fx="http://javafx.com/fxml/1" fx:id="replayTileRoot" hgap="20.0" prefWidth="512" prefHeight="300"
<GridPane xmlns:fx="http://javafx.com/fxml/1" fx:id="replayTileRoot" hgap="20.0" prefWidth="550" prefHeight="300"
onMouseClicked="#onShowReplayDetail" styleClass="card, pointable, hoverable" vgap="10.0"
xmlns="http://javafx.com/javafx/8.0.141" fx:controller="com.faforever.client.replay.ReplayCardController">
<columnConstraints>
Expand Down Expand Up @@ -61,16 +61,9 @@
<Region styleClass="icon, mods-icon"/>
</graphic>
</Label>
<Label fx:id="tickDurationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;" GridPane.columnIndex="0"
GridPane.rowIndex="8">
<Label fx:id="tickDurationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;" GridPane.columnIndex="0" GridPane.rowIndex="8">
<graphic>
<Region styleClass="icon, duration-icon"/>
</graphic>
</Label>
<Label fx:id="realTimeDurationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;" GridPane.columnIndex="0"
GridPane.rowIndex="8">
<graphic>
<Region styleClass="icon, duration-icon"/>
<Region styleClass="icon, game-duration-icon" minWidth="30"/>
</graphic>
</Label>
<Label fx:id="playerCountLabel" graphicTextGap="10.0" text="&lt;PlayerCount&gt;" GridPane.columnIndex="1"
Expand All @@ -91,6 +84,11 @@
<Region styleClass="icon, balance-icon"/>
</graphic>
</Label>
<Label fx:id="realTimeDurationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;" GridPane.columnIndex="1" GridPane.rowIndex="8">
<graphic>
<Region styleClass="icon, world-duration-icon" minWidth="30"/>
</graphic>
</Label>


<HBox spacing="10.0" alignment="BOTTOM_RIGHT" GridPane.halignment="RIGHT" GridPane.valignment="BOTTOM"
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/theme/vault/replay/replay_detail.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@
<Label fx:id="durationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;"
GridPane.columnIndex="3" GridPane.rowIndex="2">
<graphic>
<Region styleClass="icon,duration-icon"/>
<Region styleClass="icon,world-duration-icon" minWidth="30"/>
</graphic>
</Label>
<Label fx:id="replayDurationLabel" graphicTextGap="10.0" text="&lt;Duration&gt;"
GridPane.columnIndex="3" GridPane.rowIndex="3">
<graphic>
<Region styleClass="icon,duration-icon"/>
<Region styleClass="icon,game-duration-icon" minWidth="30"/>
</graphic>
</Label>
<Label fx:id="playerCountLabel" graphicTextGap="10.0" text="&lt;PlayerCount&gt;"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,8 @@ public void setReplayOnline() {
assertTrue(instance.replayTileRoot.isVisible());
assertTrue(instance.timeLabel.isVisible());
assertTrue(instance.modLabel.isVisible());
assertFalse(instance.tickDurationLabel.isVisible());
assertFalse(instance.tickDurationLabel.isManaged());
assertTrue(instance.tickDurationLabel.isVisible());
assertTrue(instance.tickDurationLabel.isManaged());
assertTrue(instance.realTimeDurationLabel.isVisible());
assertTrue(instance.realTimeDurationLabel.isManaged());
assertTrue(instance.playerCountLabel.isVisible());
Expand Down Expand Up @@ -181,8 +181,8 @@ public void setReplayLocal() throws Exception {
assertTrue(instance.replayTileRoot.isVisible());
assertTrue(instance.timeLabel.isVisible());
assertTrue(instance.modLabel.isVisible());
assertFalse(instance.tickDurationLabel.isVisible());
assertFalse(instance.tickDurationLabel.isManaged());
assertTrue(instance.tickDurationLabel.isVisible());
assertTrue(instance.tickDurationLabel.isManaged());
assertTrue(instance.realTimeDurationLabel.isVisible());
assertTrue(instance.realTimeDurationLabel.isManaged());
assertTrue(instance.playerCountLabel.isVisible());
Expand Down Expand Up @@ -216,24 +216,23 @@ public void setReplayNoEndTime() {
}

@Test
public void tickTimeNotDisplayedWhenRealTimeIs() {
public void tickTimeDisplayedWhenDefinedTogetherWithRealTime(){
Replay onlineReplay = Instancio.of(Replay.class).set(field(Replay::replayTicks), 1000).create();
runOnFxThreadAndWait(() -> instance.setEntity(onlineReplay));

assertTrue(instance.realTimeDurationLabel.isVisible());
assertFalse(instance.tickDurationLabel.isVisible());
assertTrue(instance.tickDurationLabel.isVisible());
}

@Test
public void tickTimeDisplayedWhenRealTimeIsNot() {
public void tickTimeNotDisplayWhenNotDefined() {
Replay onlineReplay = Instancio.of(Replay.class)
.ignore(field(Replay::endTime))
.set(field(Replay::replayTicks), 1000)
.set(field(Replay::replayTicks), null)
.create();
runOnFxThreadAndWait(() -> instance.setEntity(onlineReplay));

assertFalse(instance.realTimeDurationLabel.isVisible());
assertTrue(instance.tickDurationLabel.isVisible());
assertFalse(instance.tickDurationLabel.isVisible());
}

@Test
Expand Down Expand Up @@ -288,4 +287,4 @@ public void deleteButtonClicked() {

verify(notificationService).addNotification(any());
}
}
}

0 comments on commit 817f67b

Please sign in to comment.