protected override async void OnCreate (Bundle bundle) { try{ base.OnCreate (bundle); SetContentView (Resource.Layout.LayoutMatchInfo); title=Intent.GetStringExtra("title"); ActionBarTitle.SetTitle (this,Resource.Layout.ActionBarLayout,title,Resources.GetString (Resource.String.nameDota2)); buttonRefresh=FindViewById<Button>(Resource.Id.buttonRefreshActionBar); buttonRefresh.Click+=ButtonRefreshClick; buttonRefresh.Visibility=ViewStates.Invisible; var buttonBack=FindViewById<Button>(Resource.Id.buttonBackActionBar); buttonBack.Click+=ButtonBackClick; //var rl=FindViewById<RelativeLayout>(Resource.Id.rlayout_match_info); //var buttonPickBan = rl.FindViewById<Button> (Resource.Id.button_picks_bans); //var rlTowersViews=FindViewById<RelativeLayout>(Resource.Id.towersState); Button buttonPickBan =FindViewById<Button> (Resource.Id.buttonBattle); buttonPickBan.Click += buttonPickBansClick; Button buttonGameStats = FindViewById<Button> (Resource.Id.buttonGameStats); buttonGameStats.Click += buttomGameStatsClick; pb=FindViewById<ProgressBar> (Resource.Id.progressBar3); pb.Visibility= ViewStates.Visible; APIRequest apiReq = new APIRequest (); int match_id=Convert.ToInt32( Intent.GetStringExtra("match_id")); var url =SettingsApp.ServerAPIAddress+SettingsApp.GameName+"/GetDetailInfo?match_id=" + match_id; var jMatchResponce = await apiReq.GetJsonAsync (url); gameInfo=jMatchResponce.ToString(); var jDetailMatchInfo= JsonConvert.DeserializeObject<JDetailMatchInfo>(gameInfo); var jMatchDetails=JToken.Parse(jDetailMatchInfo.JMatchDetails); matchDetail=JsonConvert.DeserializeObject<MatchInfo>(jMatchDetails.ToString()); dotaMatchInfo=JsonConvert.DeserializeObject<List<DotaMatchInfo>>(jMatchDetails.SelectToken("DetailsMatch").ToString()); List<DetailInfo> listDetail=new List<DetailInfo>(); listDetail.AddRange(dotaMatchInfo); matchDetail.DetailsMatch=listDetail; liveFlag=Intent.GetStringExtra("liveFlag"); cts= new CancellationTokenSource(); cts.Token.ThrowIfCancellationRequested (); dotaMatchInfo_2=new DotaMatchInfo_2(); refreshFlag = true; dotaMatchInfo_2 = await dotaMatchInfo_2.ParseMatchTitle (matchDetail); //Title match await RefreshData(cts.Token); }catch(Exception e) { Console.WriteLine (e.Data); Console.WriteLine (e.Message); } cts = null; pb.Visibility= ViewStates.Gone; buttonRefresh.Visibility = ViewStates.Visible; }
public async Task<DotaMatchInfo_2> ParseMatchTitle(MatchInfo matchInfo) { var dotaMatchInfo_2 = new DotaMatchInfo_2 (); TeamDb teamDb = new TeamDb (); var radiantWin=matchInfo.Winner; var radiantTeam= await teamDb.GetTeam(matchInfo.Team1Id,"DOTA2"); var direTeam= await teamDb.GetTeam(matchInfo.Team2Id,"DOTA2"); var dotaMatchInfo = matchInfo.DetailsMatch.Cast<DotaMatchInfo>().ToList(); var duration=TimeSpan.FromSeconds(dotaMatchInfo[0].Duration); var id=matchInfo.MatchId; PicksBansOld radiantPB=new PicksBansOld(); //var listPicksBans=radiantPB.ConvertJRecentToPickBan(jMatch.SelectToken("picks_bans")); var radTower=dotaMatchInfo[0].TowerStatusRadiant; var direTower = dotaMatchInfo[0].TowerStatusDire; var radBarr=dotaMatchInfo[0].BarracksStatusRadiant; var direBarr=dotaMatchInfo[0].BarracksStatusDire; var startTime=matchInfo.StartTime; var players=dotaMatchInfo[0].Players; var allRadGold = 0; var allDireGold = 0; var allRadXp = 0; var allDireXp = 0; var radiantScore=0; var direScore=0; var playersUp=new PlayerStatsUpdate_2(); for (int i = 0; i < players.Count (); i++) { var player=players[i]; var lvl =(int) player.Level; var deaths = (int)player.Death; var networth = (int)player.Net_worth; if(i<5) { direScore+=deaths; allRadGold += networth; allRadXp += GetXpLevel (lvl); } else { radiantScore+=deaths; allDireGold +=networth; allDireXp += GetXpLevel (lvl); } } dotaMatchInfo_2=new DotaMatchInfo_2(){ Team1Win=radiantWin, Team1=radiantTeam, Team2=direTeam, Duration=duration, Team1Score=radiantScore, Team2Score=direScore, MatchId=id, TowerStatusRadiant=radTower, TowerStatusDire=direTower, BarracksStatusRadiant=radBarr, BarracksStatusDire=direBarr, StartTime=startTime, RadiantPicks=dotaMatchInfo[0].RadiantPicks, DirePicks=dotaMatchInfo[0].DirePicks, RadiantGold = allRadGold, DireGold = allDireGold, RadiantXp = allRadXp, DireXp = allDireXp }; return dotaMatchInfo_2; }
async Task OnRefresh (CancellationToken token){ APIRequest ApiReq = new APIRequest (); refreshFlag = true; titleFlag = false; token.ThrowIfCancellationRequested (); var url =SettingsApp.ServerAPIAddress+SettingsApp.GameName+"/GetDetailInfo?match_id="+matchDetail.MatchId; var jMatchResponce = await ApiReq.GetJsonAsync (url); var jDetailMatchInfo= JsonConvert.DeserializeObject<JDetailMatchInfo>(jMatchResponce.ToString()); var jMatchDetails=JToken.Parse(jDetailMatchInfo.JMatchDetails); matchDetail=JsonConvert.DeserializeObject<MatchInfo>(jMatchDetails.ToString()); dotaMatchInfo=JsonConvert.DeserializeObject<List<DotaMatchInfo>>(jMatchDetails.SelectToken("DetailsMatch").ToString()); List<DetailInfo> listDetail=new List<DetailInfo>(); listDetail.AddRange(dotaMatchInfo); matchDetail.DetailsMatch=listDetail; dotaMatchInfo_2 = await dotaMatchInfo_2.ParseMatchTitle (matchDetail); await RefreshData (token); Toast.MakeText (this, Resources.GetString(Resource.String.updated), ToastLength.Short).Show (); refreshFlag = false; }