2525import io .github .jwdeveloper .tiktok .annotations .*;
2626import io .github .jwdeveloper .tiktok .data .events .common .TikTokHeaderEvent ;
2727import io .github .jwdeveloper .tiktok .data .models .battles .*;
28+ import io .github .jwdeveloper .tiktok .exceptions .TikTokLiveException ;
2829import io .github .jwdeveloper .tiktok .messages .enums .LinkMicBattleStatus ;
2930import io .github .jwdeveloper .tiktok .messages .webcast .WebcastLinkMicBattle ;
30- import lombok .*;
31-
32- import java .util .*;
31+ import lombok .Getter ;
3332
3433/**
3534 * Triggered every time a battle starts & ends
@@ -43,23 +42,22 @@ public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent
4342 true if battle is finished otherwise false
4443 */
4544 private final boolean finished ;
46- private final List < Team > teams ;
45+ private final Team team1 , team2 ;
4746
4847 public TikTokLinkMicBattleEvent (WebcastLinkMicBattle msg ) {
4948 super (msg .getCommon ());
5049 battleId = msg .getId ();
5150 finished = msg .getBattleStatus () == LinkMicBattleStatus .BATTLE_FINISHED ;
52- teams = new ArrayList <>();
5351 if (msg .getHostTeamCount () == 2 ) { // 1v1 battle
54- teams . add ( new Team1v1 (msg .getHostTeam (0 ), msg ) );
55- teams . add ( new Team1v1 (msg .getHostTeam (1 ), msg ) );
52+ team1 = new Team1v1 (msg .getHostTeam (0 ), msg );
53+ team2 = new Team1v1 (msg .getHostTeam (1 ), msg );
5654 } else { // 2v2 battle
5755 if (isFinished ()) {
58- teams . add ( new Team2v2 (msg .getHostData2V2List ().stream ().filter (data -> data .getTeamNumber () == 1 ).findFirst ().orElse (null ), msg ) );
59- 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 );
6058 } else {
61- teams . add ( new Team2v2 (msg .getHostTeam (0 ), msg .getHostTeam (1 ), msg ) );
62- 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 );
6361 }
6462 }
6563
@@ -69,15 +67,38 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) {
6967 // - msg.getHostTeamCount() always is 2 for 1v1 or 4 for 2v2
7068 }
7169
70+ /**
71+ * @param battleHostName name of host to search
72+ * @return Team1v1 instance containing name of host or null if no team found */
73+ public Team1v1 get1v1Team (String battleHostName ) {
74+ if (!is1v1 ())
75+ throw new TikTokLiveException ("Teams are not instance of 1v1 battle!" );
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 ;
81+ }
82+
83+ public Team2v2 get2v2Team (String battleHostName ) {
84+ if (!is2v2 ())
85+ throw new TikTokLiveException ("Teams are not instance of 2v2 battle!" );
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 ;
91+ }
92+
7293 public boolean is1v1 () {
73- return teams . get ( 0 ) instanceof Team1v1 ;
94+ return team1 . is1v1Team () || team2 . is1v1Team () ;
7495 }
7596
7697 public boolean is2v2 () {
77- return teams . get ( 0 ) instanceof Team2v2 ;
98+ return team1 . is2v2Team () || team2 . is2v2Team () ;
7899 }
79100
80101 public boolean isTie () {
81- return isFinished () && teams . get ( 0 ). getTotalPoints () == teams . get ( 1 ) .getTotalPoints ();
102+ return isFinished () && team1 . getTotalPoints () == team2 .getTotalPoints ();
82103 }
83104}
0 commit comments