2828import io .github .jwdeveloper .tiktok .exceptions .TikTokLiveException ;
2929import io .github .jwdeveloper .tiktok .messages .enums .LinkMicBattleStatus ;
3030import io .github .jwdeveloper .tiktok .messages .webcast .WebcastLinkMicBattle ;
31- import lombok .*;
32-
33- import java .util .*;
31+ import lombok .Getter ;
3432
3533/**
3634 * Triggered every time a battle starts & ends
@@ -44,23 +42,22 @@ public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent
4442 true if battle is finished otherwise false
4543 */
4644 private final boolean finished ;
47- private final List < Team > teams ;
45+ private final Team team1 , team2 ;
4846
4947 public TikTokLinkMicBattleEvent (WebcastLinkMicBattle msg ) {
5048 super (msg .getCommon ());
5149 battleId = msg .getId ();
5250 finished = msg .getBattleStatus () == LinkMicBattleStatus .BATTLE_FINISHED ;
53- teams = new ArrayList <>();
5451 if (msg .getHostTeamCount () == 2 ) { // 1v1 battle
55- teams . add ( new Team1v1 (msg .getHostTeam (0 ), msg ) );
56- teams . add ( new Team1v1 (msg .getHostTeam (1 ), msg ) );
52+ team1 = new Team1v1 (msg .getHostTeam (0 ), msg );
53+ team2 = new Team1v1 (msg .getHostTeam (1 ), msg );
5754 } else { // 2v2 battle
5855 if (isFinished ()) {
59- teams . add ( new Team2v2 (msg .getHostData2V2List ().stream ().filter (data -> data .getTeamNumber () == 1 ).findFirst ().orElse (null ), msg ) );
60- teams . add ( new Team2v2 (msg .getHostData2V2List ().stream ().filter (data -> data .getTeamNumber () == 2 ).findFirst ().orElse (null ), msg ) );
56+ team1 = new Team2v2 (msg .getHostData2V2List ().stream ().filter (data -> data .getTeamNumber () == 1 ).findFirst ().orElse (null ), msg );
57+ team2 = new Team2v2 (msg .getHostData2V2List ().stream ().filter (data -> data .getTeamNumber () == 2 ).findFirst ().orElse (null ), msg );
6158 } else {
62- teams . add ( new Team2v2 (msg .getHostTeam (0 ), msg .getHostTeam (1 ), msg ) );
63- teams . add ( new Team2v2 (msg .getHostTeam (2 ), msg .getHostTeam (3 ), msg ) );
59+ team1 = new Team2v2 (msg .getHostTeam (0 ), msg .getHostTeam (1 ), msg );
60+ team2 = new Team2v2 (msg .getHostTeam (2 ), msg .getHostTeam (3 ), msg );
6461 }
6562 }
6663
@@ -70,29 +67,38 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) {
7067 // - msg.getHostTeamCount() always is 2 for 1v1 or 4 for 2v2
7168 }
7269
70+ /**
71+ * @param battleHostName name of host to search
72+ * @return Team1v1 instance containing name of host or null if no team found */
7373 public Team1v1 get1v1Team (String battleHostName ) {
7474 if (!is1v1 ())
7575 throw new TikTokLiveException ("Teams are not instance of 1v1 battle!" );
76- return teams .stream ().filter (team -> team .getAs1v1Team ().getHost ().getName ().equals (battleHostName )).findFirst ().map (Team ::getAs1v1Team ).orElse (null );
76+ if (team1 .getAs1v1Team ().getHost ().getName ().equals (battleHostName ))
77+ return team1 .getAs1v1Team ();
78+ if (team2 .getAs1v1Team ().getHost ().getName ().equals (battleHostName ))
79+ return team2 .getAs1v1Team ();
80+ return null ;
7781 }
7882
7983 public Team2v2 get2v2Team (String battleHostName ) {
8084 if (!is2v2 ())
8185 throw new TikTokLiveException ("Teams are not instance of 2v2 battle!" );
82- return teams .stream ().filter (team ->
83- team .getAs2v2Team ().getHosts ().stream ().anyMatch (user ->
84- user .getName ().equals (battleHostName ))).findFirst ().map (Team ::getAs2v2Team ).orElse (null );
86+ if (team1 .getAs2v2Team ().getHosts ().stream ().anyMatch (user -> user .getName ().equals (battleHostName )))
87+ return team1 .getAs2v2Team ();
88+ if (team2 .getAs2v2Team ().getHosts ().stream ().anyMatch (user -> user .getName ().equals (battleHostName )))
89+ return team2 .getAs2v2Team ();
90+ return null ;
8591 }
8692
8793 public boolean is1v1 () {
88- return teams . get ( 0 ) instanceof Team1v1 ;
94+ return team1 . is1v1Team () || team2 . is1v1Team () ;
8995 }
9096
9197 public boolean is2v2 () {
92- return teams . get ( 0 ) instanceof Team2v2 ;
98+ return team1 . is2v2Team () || team2 . is2v2Team () ;
9399 }
94100
95101 public boolean isTie () {
96- return isFinished () && teams . get ( 0 ). getTotalPoints () == teams . get ( 1 ) .getTotalPoints ();
102+ return isFinished () && team1 . getTotalPoints () == team2 .getTotalPoints ();
97103 }
98104}
0 commit comments