/*
* This file is part of LeagueLib.
* LeagueLib is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LeagueLib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LeagueLib. If not, see <http://www.gnu.org/licenses/>.
*/
package com.achimala.leaguelib.models;
import com.gvaneyck.rtmp.TypedObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Date;
public class MatchHistoryEntry implements PlayerList {
int _gameId;
private String _gameType;
// TODO: Summoner spells
private boolean _leaver;
private Date _createDate;
private LeagueMatchmakingQueue _queue;
private List<LeagueSummoner> _playerTeam, _enemyTeam;
private Map<Integer, LeagueChampion> _playerChampionSelections;
private Map<MatchHistoryStatType, Integer> _stats;
public MatchHistoryEntry() {
}
public MatchHistoryEntry(TypedObject obj, LeagueSummoner primarySummoner) {
_gameId = obj.getInt("gameId");
_gameType = obj.getString("gameType");
_leaver = obj.getBool("leaver");
_createDate = (Date)obj.get("createDate");
_queue = LeagueMatchmakingQueue.valueOf(obj.getString("queueType"));
_playerTeam = new ArrayList<LeagueSummoner>();
_enemyTeam = new ArrayList<LeagueSummoner>();
_playerChampionSelections = new HashMap<Integer, LeagueChampion>();
_stats = new HashMap<MatchHistoryStatType, Integer>();
// (for some unknown reason, sometimes the "summonerId" key is 0 in the data returned from Riot)
// This is the only reason we have to pass the primary summoner into this constructor
// ...which is pretty dumb
_playerChampionSelections.put(primarySummoner.getId(), LeagueChampion.getChampionWithId(obj.getInt("championId")));
int playerTeamId = obj.getInt("teamId");
// Riot doesn't include this person in the "fellow players" list, which I suppose makes sense
_playerTeam.add(primarySummoner);
for(Object playerObj : obj.getArray("fellowPlayers")) {
TypedObject player = (TypedObject)playerObj;
LeagueSummoner summoner = new LeagueSummoner();
summoner.setId(player.getInt("summonerId"));
_playerChampionSelections.put(summoner.getId(), LeagueChampion.getChampionWithId(player.getInt("championId")));
if(player.getInt("teamId") == playerTeamId)
_playerTeam.add(summoner);
else
_enemyTeam.add(summoner);
}
for(Object statObj : obj.getArray("statistics")) {
TypedObject stat = (TypedObject)statObj;
MatchHistoryStatType type = MatchHistoryStatType.valueOf(stat.getString("statType"));
_stats.put(type, stat.getInt("value"));
}
}
public void setGameId(int id) {
_gameId = id;
}
public void setGameType(String type) {
_gameType = type;
}
public void setIsLeaver(boolean leaver) {
_leaver = leaver;
}
public void setCreationDate(Date date) {
_createDate = date;
}
public void setQueue(LeagueMatchmakingQueue queue) {
_queue = queue;
}
public int getGameId() {
return _gameId;
}
public String getGameType() {
return _gameType;
}
public boolean isLeaver() {
return _leaver;
}
public Date getCreationDate() {
return _createDate;
}
public LeagueMatchmakingQueue getQueue() {
return _queue;
}
public List<LeagueSummoner> getPlayerTeam() {
return _playerTeam;
}
public List<LeagueSummoner> getEnemyTeam() {
return _enemyTeam;
}
public List<LeagueSummoner> getAllPlayers() {
List<LeagueSummoner> players = new ArrayList<LeagueSummoner>(_playerTeam);
players.addAll(_enemyTeam);
return players;
}
public LeagueChampion getChampionSelectionForSummoner(LeagueSummoner summoner) {
return _playerChampionSelections.get(summoner.getId());
}
public int getStat(MatchHistoryStatType type) {
Integer stat = _stats.get(type);
if(stat == null)
return 0;
return stat.intValue();
}
public Map<MatchHistoryStatType, Integer> getAllStats() {
return _stats;
}
}