forked from SteamWar/SteamWar
Merge pull request 'Add QOL to EventCommand and EventRescheduleCommand' (#4) from QOLEventCommand into main
Reviewed-on: https://steamwar.de/devlabs/SteamWar/SteamWar/pulls/4 Reviewed-by: Lixfel <lixfel@steamwar.de>
This commit is contained in:
@@ -19,19 +19,22 @@
|
||||
|
||||
package de.steamwar.velocitycore.commands;
|
||||
|
||||
import de.steamwar.velocitycore.EventStarter;
|
||||
import de.steamwar.persistent.Subserver;
|
||||
import de.steamwar.velocitycore.SubserverSystem;
|
||||
import de.steamwar.command.PreviousArguments;
|
||||
import de.steamwar.command.SWCommand;
|
||||
import de.steamwar.command.TypeMapper;
|
||||
import de.steamwar.command.TypeValidator;
|
||||
import de.steamwar.messages.Chatter;
|
||||
import de.steamwar.messages.PlayerChatter;
|
||||
import de.steamwar.persistent.Subserver;
|
||||
import de.steamwar.sql.*;
|
||||
import de.steamwar.velocitycore.EventStarter;
|
||||
import de.steamwar.velocitycore.SubserverSystem;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Instant;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class EventCommand extends SWCommand {
|
||||
@@ -114,4 +117,39 @@ public class EventCommand extends SWCommand {
|
||||
SubserverSystem.sendPlayer(eventArena, sender.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
protected static TypeMapper<Team> eventTeam(Function<EventFight, List<Integer>> teamMapper) {
|
||||
return new TypeMapper<>() {
|
||||
@Override
|
||||
public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||
if ("PUB".equalsIgnoreCase(s) || "public".equalsIgnoreCase(s)) {
|
||||
return Team.get(0);
|
||||
}
|
||||
return Team.get(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||
Set<String> teams = new HashSet<>();
|
||||
Event currentEvent = Event.get();
|
||||
for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) {
|
||||
if (fight.hasFinished()) continue;
|
||||
teamMapper.apply(fight).forEach(integer -> {
|
||||
Team team = Team.get(integer);
|
||||
teams.add(team.getTeamName());
|
||||
teams.add(team.getTeamKuerzel());
|
||||
});
|
||||
}
|
||||
return teams;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ClassMapper(value = Team.class, local = true)
|
||||
public TypeMapper<Team> eventTeams() {
|
||||
return eventTeam(eventFight -> {
|
||||
if (eventFight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) return Collections.emptyList();
|
||||
return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed());
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
package de.steamwar.velocitycore.commands;
|
||||
|
||||
import de.steamwar.command.SWCommand;
|
||||
import de.steamwar.command.TypeMapper;
|
||||
import de.steamwar.messages.Chatter;
|
||||
import de.steamwar.sql.Event;
|
||||
import de.steamwar.sql.EventFight;
|
||||
@@ -38,7 +39,7 @@ public class EventRescheduleCommand extends SWCommand {
|
||||
}
|
||||
|
||||
@Register
|
||||
public void reschedule(Chatter sender, Team teamBlue, Team teamRed) {
|
||||
public void reschedule(Chatter sender, @Mapper("BLUE_TEAM") Team teamBlue, @Mapper("RED_TEAM") Team teamRed) {
|
||||
Event event = Event.get();
|
||||
if(event == null){
|
||||
sender.system("EVENTRESCHEDULE_UNKNOWN_TEAM");
|
||||
@@ -63,4 +64,14 @@ public class EventRescheduleCommand extends SWCommand {
|
||||
|
||||
sender.system("EVENTRESCHEDULE_NO_FIGHT");
|
||||
}
|
||||
|
||||
@Mapper(value = "BLUE_TEAM", local = true)
|
||||
public TypeMapper<Team> eventBlueTeams() {
|
||||
return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamBlue()));
|
||||
}
|
||||
|
||||
@Mapper(value = "RED_TEAM", local = true)
|
||||
public TypeMapper<Team> eventRedTeams() {
|
||||
return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamRed()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user