forked from SteamWar/SteamWar
Add even more Advancements
This commit is contained in:
@@ -148,19 +148,19 @@ class EventFight(id: EntityID<Int>) : IntEntity(id), Comparable<EventFight> {
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getHighestPlacement(fighter: SteamwarUser) =
|
||||
fun countPlacement(fighter: SteamwarUser, placement: Int) =
|
||||
useDb {
|
||||
exec(
|
||||
"SELECT MIN(TT.Placement) AS Placement FROM FightPlayer INNER JOIN Fight F on FightPlayer.FightID = F.FightID INNER JOIN EventFight EF on F.FightID = EF.Fight INNER JOIN TeamTeilnahme TT on TT.EventID = EF.EventID WHERE UserID = ?",
|
||||
args = listOf(IntegerColumnType() to fighter.id.value)
|
||||
"SELECT COUNT(*) AS PlacementCount FROM FightPlayer INNER JOIN Fight F on FightPlayer.FightID = F.FightID INNER JOIN EventFight EF on F.FightID = EF.Fight INNER JOIN TeamTeilnahme TT on TT.EventID = EF.EventID WHERE UserID = ? AND Placement = ?",
|
||||
args = listOf(IntegerColumnType() to fighter.id.value, IntegerColumnType() to placement)
|
||||
) {
|
||||
if (it.next()) {
|
||||
it.getInt("Placement")
|
||||
it.getInt("PlacementCount")
|
||||
} else {
|
||||
Int.MAX_VALUE
|
||||
0
|
||||
}
|
||||
}
|
||||
?: Int.MAX_VALUE
|
||||
?: 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -173,56 +173,33 @@ public class Advancements {
|
||||
return (int) (fights / Math.max(eventFightCount / 100.0, 1));
|
||||
}
|
||||
);
|
||||
// playtime.add(previous);
|
||||
// TODO: Implement per Type counter!
|
||||
|
||||
if (i == 0) {
|
||||
Advancement third = new Advancement(
|
||||
"steamwar:advancements/event_placement_3",
|
||||
placementsCounts(previous, 9f, 1, "gold_block", Advancement.Display.FrameType.CHALLENGE);
|
||||
placementsCounts(previous, 10f, 2, "iron_block", Advancement.Display.FrameType.GOAL);
|
||||
placementsCounts(previous, 11f, 3, "copper_block", Advancement.Display.FrameType.TASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void placementsCounts(Advancement previous, float yCoord, int placement, String item, Advancement.Display.FrameType frameType) {
|
||||
for (int placementCount = 1; placementCount <= 10; placementCount++) {
|
||||
int finalPlacementCount = placementCount;
|
||||
previous = new Advancement(
|
||||
"steamwar:advancements/event_placement_" + placement + "_" + placementCount,
|
||||
Optional.of(previous),
|
||||
new Advancement.Display(
|
||||
Component.text("3. Place in Event"),
|
||||
Component.text(placementCount + "x " + placement + ". Place in Event"),
|
||||
Component.text(""),
|
||||
"copper_block",
|
||||
Advancement.Display.FrameType.TASK,
|
||||
2f,
|
||||
9.5f
|
||||
),
|
||||
Advancement.HidePolicy.PREVIOUS_UNFINISHED,
|
||||
1,
|
||||
user -> EventFight.getHighestPlacement(user) <= 3 ? 1 : 0
|
||||
);
|
||||
Advancement first = new Advancement(
|
||||
"steamwar:advancements/event_placement_1",
|
||||
Optional.of(third),
|
||||
new Advancement.Display(
|
||||
Component.text("1. Place in Event"),
|
||||
Component.text(""),
|
||||
"gold_block",
|
||||
Advancement.Display.FrameType.CHALLENGE,
|
||||
3f,
|
||||
9f
|
||||
item,
|
||||
frameType,
|
||||
2f + (placementCount - 1f),
|
||||
yCoord
|
||||
),
|
||||
Advancement.HidePolicy.WITH_PREVIOUS,
|
||||
1,
|
||||
user -> EventFight.getHighestPlacement(user) == 1 ? 1 : 0
|
||||
user -> EventFight.countPlacement(user, placement) >= finalPlacementCount ? 1 : 0
|
||||
);
|
||||
new Advancement(
|
||||
"steamwar:advancements/event_placement_2",
|
||||
Optional.of(first),
|
||||
new Advancement.Display(
|
||||
Component.text("2. Place in Event"),
|
||||
Component.text(""),
|
||||
"iron_block",
|
||||
Advancement.Display.FrameType.GOAL,
|
||||
4f,
|
||||
9.25f
|
||||
),
|
||||
Advancement.HidePolicy.WITH_PREVIOUS,
|
||||
1,
|
||||
user -> EventFight.getHighestPlacement(user) <= 2 ? 1 : 0
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,9 +231,6 @@ public class Advancements {
|
||||
}
|
||||
|
||||
static {
|
||||
// WarGear
|
||||
// MiniWarGear
|
||||
// WarShip
|
||||
Advancement previous = ROOT;
|
||||
int[] acceptedCounts = new int[]{1, 5, 10, 15, 25, 50, 100, 150, 200, 250, 500, 750, 1000};
|
||||
for (int i = 0; i < acceptedCounts.length; i++) {
|
||||
|
||||
Reference in New Issue
Block a user