145 lines
5.0 KiB
C#
145 lines
5.0 KiB
C#
using MongoDB.Bson;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LolDataRequestLib.ResponseData
|
|
{
|
|
class 오브젝트킬전체 : IResponseData
|
|
{
|
|
|
|
internal 오브젝트킬전체(bool recvIsPostGameData)
|
|
{
|
|
this.isPostGame = recvIsPostGameData;
|
|
}
|
|
|
|
bool isPostGame = false;
|
|
|
|
|
|
public DataTable 디비데이터를데이터테이블로만듬()
|
|
{
|
|
|
|
DataTable 오브젝트테이블 = new DataTable("오브젝트리스트");
|
|
|
|
|
|
오브젝트테이블.Columns.Add("오브젝트타입");
|
|
오브젝트테이블.Columns.Add("드래곤종류");
|
|
오브젝트테이블.Columns.Add("잡은팀");
|
|
오브젝트테이블.Columns.Add("킬시간");
|
|
오브젝트테이블.Columns.Add("킬분");
|
|
오브젝트테이블.Columns.Add("킬초");
|
|
//오브젝트테이블.Columns.Add("리젠분");
|
|
//오브젝트테이블.Columns.Add("리젠초");
|
|
|
|
|
|
if (DataManager.getInstance().오브젝트데이터 != null)
|
|
{
|
|
|
|
BsonDocument dd = DataManager.getInstance().오브젝트데이터.DeepClone().AsBsonDocument;
|
|
|
|
dd.Remove("sequenceIndex");
|
|
|
|
List<BsonElement> 오브젝트데이터들 = dd.ToList().OrderBy(e => e.Value.AsBsonDocument["gameTime"].ToInt32()).ToList();
|
|
|
|
|
|
bool is크로노 = false;
|
|
int Index크로노 = 0;
|
|
int nowSequenceIndex = 0;
|
|
//크로노브레이크를 대비해야 sequenceIndex 가 역변하는 순간이 존재하는지 확인하는 절차
|
|
for (int i = 0; i < 오브젝트데이터들.Count(); i++)
|
|
{
|
|
BsonValue item = 오브젝트데이터들[i].ToBsonDocument().AsBsonValue;
|
|
int sequenceIndex = item["Value"]["sequenceIndex"].ToInt32();
|
|
|
|
if (sequenceIndex > nowSequenceIndex) nowSequenceIndex = sequenceIndex;
|
|
else
|
|
{
|
|
is크로노 = true;
|
|
nowSequenceIndex = sequenceIndex;
|
|
Index크로노 = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 오브젝트데이터들.Count(); i++)
|
|
{
|
|
|
|
BsonValue item = 오브젝트데이터들[i].ToBsonDocument().AsBsonValue;
|
|
int sequenceIndex = item["Value"]["sequenceIndex"].ToInt32();
|
|
DataRow bufRow = 오브젝트테이블.NewRow();
|
|
|
|
|
|
if (is크로노)
|
|
{
|
|
if (sequenceIndex >= nowSequenceIndex)
|
|
{
|
|
if (i < Index크로노)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
if (item["Value"]["killerTeamID"].ToInt32() == 300)
|
|
{
|
|
continue;
|
|
}
|
|
bufRow["잡은팀"] = (DBDefine.팀구분)item["Value"]["killerTeamID"].ToInt32();
|
|
|
|
bufRow["오브젝트타입"] = item["Value"]["monsterType"].ToString();
|
|
|
|
int 킬시간베이직 = item["Value"]["gameTime"].ToInt32();
|
|
|
|
|
|
|
|
int 분 = 킬시간베이직 / 1000 / 60;
|
|
int 초 = 킬시간베이직 / 1000 - (분 * 60);
|
|
|
|
bufRow["킬시간"] = 킬시간베이직;
|
|
bufRow["킬분"] = 분;
|
|
bufRow["킬초"] = 초;
|
|
|
|
if (item["Value"]["monsterType"].AsString == "dragon")
|
|
{
|
|
|
|
//20210615 용이 상단에 딜레이보다 미리 들어가는 현상이 보여서 처리
|
|
if (킬시간베이직 > DataManager.getInstance().경기시간 * 1000 && !isPostGame)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
bufRow["드래곤종류"] = item["Value"]["dragonType"];
|
|
|
|
}
|
|
|
|
오브젝트테이블.Rows.Add(bufRow);
|
|
}
|
|
|
|
}
|
|
|
|
if (오브젝트테이블.Rows.Count > 0)
|
|
{
|
|
DataTable 오브젝트킬결과테이블 = 오브젝트테이블.AsEnumerable().OrderBy(r => Convert.ToInt32(r.Field<string>("킬시간"))).CopyToDataTable();
|
|
|
|
오브젝트킬결과테이블.TableName = DBDefine.요청데이터분류.오브젝트킬.ToString();
|
|
|
|
return 오브젝트킬결과테이블;
|
|
|
|
}
|
|
else
|
|
{
|
|
오브젝트테이블.TableName = DBDefine.요청데이터분류.오브젝트킬.ToString();
|
|
return 오브젝트테이블;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|