초기 커밋.

This commit is contained in:
2026-04-01 20:20:09 +09:00
parent c286f362e5
commit fd1a2cba32
172 changed files with 43588 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
namespace GameDataViewer
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// treeView1
//
this.treeView1.Location = new System.Drawing.Point(304, 136);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(563, 658);
this.treeView1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 687);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(286, 107);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(12, 658);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(286, 23);
this.textBox1.TabIndex = 2;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(925, 864);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Controls.Add(this.treeView1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private TreeView treeView1;
private Button button1;
private TextBox textBox1;
}
}

View File

@@ -0,0 +1,107 @@
using System.Diagnostics;
using System.IO;
using System;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using MongoDB.Driver;
using MongoDB.Bson;
namespace GameDataViewer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//public static string MONGODBÁÖ¼Ò = "mongodb://root:veryhardpassword123@211.53.30.8:50003";
public static string MONGODBÁÖ¼Ò = "mongodb://root:veryhardpassword123@211.42.188.8:50003";
private void DisplayTreeView(JToken root, string rootName)
{
treeView1.BeginUpdate();
try
{
treeView1.Nodes.Clear();
var tNode = treeView1.Nodes[treeView1.Nodes.Add(new TreeNode(rootName))];
tNode.Tag = root;
AddNode(root, tNode);
treeView1.ExpandAll();
}
finally
{
treeView1.EndUpdate();
}
}
private bool AddNode(JToken token, TreeNode inTreeNode)
{
if (token == null)
return false;
if (token is JValue)
{
var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(token.ToString()))];
childNode.Tag = token;
}
else if (token is JObject)
{
var obj = (JObject)token;
foreach (var property in obj.Properties())
{
var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(property.Name))];
childNode.Tag = property;
AddNode(property.Value, childNode);
}
}
else if (token is JArray)
{
var array = (JArray)token;
for (int i = 0; i < array.Count; i++)
{
var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(i.ToString()))];
childNode.Tag = array[i];
AddNode(array[i], childNode);
}
}
else
{
Debug.WriteLine(string.Format("{0} not implemented", token.Type)); // JConstructor, JRaw
}
return true;
}
internal MongoClient mDBClient = null;
private void button1_Click(object sender, EventArgs e)
{
mDBClient = new MongoClient(MONGODBÁÖ¼Ò);
var database = mDBClient.GetDatabase("datalol");
var filter = Builders<BsonDocument>.Filter.Eq("RequestGameID", textBox1.Text);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = database.GetCollection<BsonDocument>("stats_update")
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
JToken root = (JToken)documents[0]["eventDocument"].ToString();
DisplayTreeView(root, "root");
}
}
}

View File

@@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.12.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,17 @@
namespace GameDataViewer
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,29 @@
version: '3'
services:
data-shard-1:
container_name: 'data-shard-1'
image: mongo:latest
ports:
- '60001:3306'
cpus : "2"
data-shard-2:
container_name: 'data-shard-2'
image: mongo:latest
ports:
- '60002:3306'
cpus : "2"
data-shard-3:
container_name: 'data-shard-3'
image: mongo:latest
ports:
- '60003:3306'
cpus : "2"
data-config-1:
container_name: 'data-config-1'
image: mongo:latest
ports:
- '60004:3306'
cpus : "2"

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
public class DataRequestManager
{
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,184 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
/// <summary>
/// DB와 MAnager간의 데이터의 정의에 관련된 클래스.
/// </summary
public static class DBDefine
{
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@211.42.188.8:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@211.53.30.8:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@localhost:50003"; //public static string MONGODB주소 = "mongodb://root:veryhardpassword123@203.251.148.27:50002";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@121.131.226.38:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@14.39.226.156:50003";
public static string MONGODB주소 = "mongodb://root:veryhardpassword123@121.131.226.37:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@192.168.200.178:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@211.171.119.9:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@10.100.9.186:50003"
//;
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@211.171.119.9:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@localhost:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@14.39.226.145:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@192.168.0.92:50003";
//public static string MONGODB주소 = "mongodb://root:veryhardpassword123@218.152.33.43:50003"; //사무실
internal static string = "data/ko_KR/champion.json";
internal static string = "data/en_US/runesReforged.json";
public static void (string recvDBAddress)
{
MONGODB주소 = "mongodb://root:veryhardpassword123@"+recvDBAddress+":50003";
}
public enum
{
,
,
,
,
}
public enum
{
[StringValue("밴데이터")]
,
[StringValue("픽데이터")]
,
[StringValue("현재골드량선수")]
,
[StringValue("현재데미지량선수")]
,
[StringValue("경험치레벨")]
,
[StringValue("오브젝트킬")]
,
[StringValue("룬데이터")]
,
[StringValue("골드차이팀")]
,
[StringValue("타워철거전체")]
,
[StringValue("타워골드데이터")]
,
[StringValue("경기종료정보")]
,
[StringValue("팟지")]
,
[StringValue("킬뎃어시")]
,
[StringValue("용리스폰")]
,
//[StringValue("아타칸리스폰")]
//아타칸리스폰,
[StringValue("한타딜량범위")]
,
[StringValue("퀘스트완료여부")]
}
public enum RequestDataType
{
BAN_AND_PICK,
GAME_STATUS,
OBJECT_EVENT,
DRAGON_RESPAWN,
ATAKHAN_RESPAWN,
STRUCT_EVENT,
STRUCT_GOLD_EVENT
}
public enum
{
= 100,
= 200
}
public enum
{
= 1,
= 2,
= 3,
= 4,
= 5
}
public enum
{
= 0,
= 1,
= 2
}
public static string GetStringValue(this Enum value)
{
// Get the type
Type type = value.GetType();
// Get fieldinfo for this type
FieldInfo fieldInfo = type.GetField(value.ToString());
// Get the stringvalue attributes
StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes(
typeof(StringValueAttribute), false) as StringValueAttribute[];
// Return the first if there was a match.
return attribs.Length > 0 ? attribs[0].StringValue : null;
}
public class StringValueAttribute : Attribute
{
#region Properties
/// <summary>
/// Holds the stringvalue for a value in an enum.
/// </summary>
public string StringValue { get; protected set; }
#endregion
#region Constructor
/// <summary>
/// Constructor used to init a StringValue Attribute
/// </summary>
/// <param name="value"></param>
public StringValueAttribute(string value)
{
this.StringValue = value;
}
#endregion
}
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
public interface IDataRequest
{
DataTable (DBDefine. , List<DataTable> );
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
/// <summary>
/// 클라이언트에게 타이머에 관련된 데이터를 콜백으로 드롭하기위한 인터페이스
/// </summary>
public interface IGameTimeEventDrop
{
void (int );
void (string , int _단위_초);
//void 아타칸리스폰정보(string 아타칸종류, int 남은시간_단위_초);
void (string , string , int _단위_초);
void (string , string , int _단위_초, int );
void (DataTable );
void (DataTable );
void (int , int );
void (DataTable );
}
}

View File

@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1923EB44-9E99-4198-8E08-008A98B7D673}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LolDataRequestLib</RootNamespace>
<AssemblyName>LolDataRequestLib</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DnsClient, Version=1.4.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.4.0\lib\net471\DnsClient.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Bson, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Bson.2.12.3\lib\net452\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.2.12.3\lib\net452\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver.Core, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.Core.2.12.3\lib\net452\MongoDB.Driver.Core.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Libmongocrypt, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Libmongocrypt.1.2.1\lib\net452\MongoDB.Libmongocrypt.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.23.0\lib\net45\SharpCompress.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="IGameTimeEventDrop.cs" />
<Compile Include="RequestData\ARequestData.cs" />
<Compile Include="DataManager.cs" />
<Compile Include="Define.cs" />
<Compile Include="IDataRequest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RequestData\AtakhanRequest.cs" />
<Compile Include="RequestData\DragonRequest.cs" />
<Compile Include="RequestData\StructDataRequest.cs" />
<Compile Include="RequestData\ObjectDataRequest.cs" />
<Compile Include="RequestData\GameStatusRequest.cs" />
<Compile Include="RequestData\BanPickRequest.cs" />
<Compile Include="RequestData\StructGoldDataRequest.cs" />
<Compile Include="ResponseData\AResponseData.cs" />
<Compile Include="ResponseData\IResponseData.cs" />
<Compile Include="ResponseData\있는데이터\KDA선수.cs" />
<Compile Include="ResponseData\있는데이터\아타칸데이터.cs" />
<Compile Include="ResponseData\있는데이터\용데이터.cs" />
<Compile Include="ResponseData\없는데이터\한타딜량범위.cs" />
<Compile Include="ResponseData\없는데이터\팟지선수.cs" />
<Compile Include="ResponseData\없는데이터\골드차이팀.cs" />
<Compile Include="ResponseData\없는데이터\경기종료정보.cs" />
<Compile Include="ResponseData\없는데이터\룬데이터.cs" />
<Compile Include="ResponseData\있는데이터\오브젝트킬전체.cs" />
<Compile Include="ResponseData\있는데이터\경험치레벨선수.cs" />
<Compile Include="ResponseData\있는데이터\누적데미지선수.cs" />
<Compile Include="ResponseData\있는데이터\골드획득량선수.cs" />
<Compile Include="ResponseData\있는데이터\퀘스트완료여부.cs" />
<Compile Include="ResponseData\있는데이터\타워골드데이터.cs" />
<Compile Include="ResponseData\있는데이터\타워파괴전체.cs" />
<Compile Include="ResponseData\있는데이터\픽데이터.cs" />
<Compile Include="ResponseData\있는데이터\밴데이터.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Core\Compression\Snappy\lib\win\snappy32.dll" />
<Content Include="Core\Compression\Snappy\lib\win\snappy64.dll" />
<Content Include="Core\Compression\Zstandard\lib\win\libzstd.dll" />
<Content Include="mongocrypt.dll" />
</ItemGroup>
<ItemGroup>
<None Include="libmongocrypt.dylib" />
<None Include="libmongocrypt.so" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets'))" />
<Error Condition="!Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets'))" />
</Target>
<Import Project="..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets" Condition="Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" />
</Project>

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("LolDataRequestLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LolDataRequestLib")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("1923eb44-9e99-4198-8e08-008a98b7d673")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,253 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
/// <summary>
/// 실시간으로 업데이트를 해야하는 데이터들의 추상팩토리클래스.
/// </summary>
internal abstract class ARequestData
{
/// <summary>
/// DB Access 클라이언트.
/// </summary>
protected MongoClient mDBClient = new MongoClient(DBDefine.MONGODB주소);
/// <summary>
/// DB데이터베이스.
/// </summary>
protected IMongoDatabase eventDataBase = null;
/// <summary>
/// 가장 최근에 업데이트했던 데이터의 인덱스.
/// 같은 데이터를 계속 업데이트 하는 것을 막는다.
/// </summary>
protected int mLastDataSequanceIndex = 0;
/// <summary>
/// 데이터를 가져올 DB 컬렉션(테이블) 이름
/// </summary>
protected string mCollectionName = "";
/// <summary>
/// db에서 가져와서 manager에 업데이트하기위해 가공된 BsonValue
/// </summary>
protected BsonValue mUpdatedBsonValue = null;
/// <summary>
/// 인스턴스를 생산하기위해 요청된 데이터타입.
/// </summary>
protected DBDefine.RequestDataType mRequestType = DBDefine.RequestDataType.BAN_AND_PICK;
/// <summary>
/// 팩토리 Create메서드
/// </summary>
/// <param name="recvRequestType"></param>
/// <returns></returns>
internal static ARequestData createRequestFactory(DBDefine.RequestDataType recvRequestType)
{
ARequestData bufInstance = null;
try
{
switch (recvRequestType)
{
case DBDefine.RequestDataType.BAN_AND_PICK:
bufInstance = new BanPickRequest();
bufInstance.mCollectionName = "champ_select";
break;
case DBDefine.RequestDataType.GAME_STATUS:
bufInstance = new GameStatusRequest();
bufInstance.mCollectionName = "stats_update";
break;
case DBDefine.RequestDataType.OBJECT_EVENT:
bufInstance = new ObjectDataRequest();
bufInstance.mCollectionName = "epic_monster_kill";
break;
case DBDefine.RequestDataType.STRUCT_EVENT:
bufInstance = new StructDataRequest();
bufInstance.mCollectionName = "building_destroyed";
break;
case DBDefine.RequestDataType.DRAGON_RESPAWN:
bufInstance = new DragonRequest();
bufInstance.mCollectionName = "queued_dragon_info";
break;
case DBDefine.RequestDataType.ATAKHAN_RESPAWN:
bufInstance = new AtakhanRequest();
bufInstance.mCollectionName = "queued_epic_monster_info";
break;
case DBDefine.RequestDataType.STRUCT_GOLD_EVENT:
bufInstance = new StructGoldDataRequest();
bufInstance.mCollectionName = "building_gold_grant";
break;
}
//조회를 위한 RequestType등록.
bufInstance.mRequestType = recvRequestType;
//데이터베이스(Schema)선택
bufInstance.eventDataBase = bufInstance.mDBClient.GetDatabase("datalol");
//ThreadPool에 업데이트워크를 등록
ThreadPool.QueueUserWorkItem(o => { bufInstance.UpdateWorker(); });
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return bufInstance;
}
/// <summary>
/// 인스턴스의 DB주소를 변경
/// 20210614 현재 사용하지 않는다.
/// Mongodb의 커넥션 인스턴스가 Mariadb와 달라서 비슷하게 접근했다가 Connection이 Disconnect되는 현상이 계속 발생했다.
/// </summary>
internal void resetDBAddress()
{
mDBClient = new MongoClient(DBDefine.MONGODB주소);
}
/// <summary>
/// 업데이트 인덱스를 초기화한다.
/// 20210608 첫용이 업데이트 되지 않는 버그를 수정하면서 추가.
/// </summary>
internal void initIndex()
{
this.mLastDataSequanceIndex = 0;
}
/// <summary>
/// 인스턴스내에 데이터를 업데이트 하는 워커메서드.
/// 해당메서드를 스레드풀에 넣고 반복문을 통해 계속 업데이트한다.
/// </summary>
internal void UpdateWorker()
{
while (DataManager.getInstance().IsupdateWorkersWork)
{
try
{
//DB에서 데이터를 가져온다.
this.requestDataMongoDB();
//조회되는 데이터가 없을경우 테이블을 비운다.
if (mUpdatedBsonValue == null)
{
this.exchangeTable();
}
//조회되는 데이터가 기존 데이터와 INDEX가 같지 않을경우 데이터를 업데이트한다.
else if (mUpdatedBsonValue["sequenceIndex"].ToInt32() != this.mLastDataSequanceIndex)
{
this.exchangeTable();
this.mLastDataSequanceIndex = mUpdatedBsonValue["sequenceIndex"].ToInt32();
}
//조회 후 인터벌 시간동안 슬립.
Thread.Sleep(DataManager.getInstance().);
}
catch (Exception ex)
{
//DataManager.getInstance().mCallback.errorReceivedByWorker(요청데이터, ex.ToString());
//break;
#if(DEBUG)
{
Console.WriteLine(ex.ToString());
}
#endif
}
}
}
/// <summary>
/// DB에서 데이터를 요청하는 메서드.
/// </summary>
protected virtual void requestDataMongoDB()
{
try
{
//var filter = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(new BsonDocument())//.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
if (documents.Count != 0)
{
mUpdatedBsonValue = documents.Last()["eventDocument"];
}
else
{
mUpdatedBsonValue = null;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
void exchangeTable()
{
try
{
Dictionary<int, BsonValue> bufHash = null;
switch (this.mRequestType)
{
case DBDefine.RequestDataType.BAN_AND_PICK:
DataManager.getInstance(). = this.mUpdatedBsonValue;
break;
case DBDefine.RequestDataType.GAME_STATUS:
DataManager.getInstance(). = this.mUpdatedBsonValue;
//DataManager.getInstance().경기시간 = this.mUpdatedBsonValue["gameTime"].ToInt32() / 1000;
//Console.WriteLine("gametime : " + this.mUpdatedBsonValue["gameTime"].ToInt32() / 1000);
break;
case DBDefine.RequestDataType.OBJECT_EVENT:
DataManager.getInstance(). = this.mUpdatedBsonValue;
break;
case DBDefine.RequestDataType.STRUCT_EVENT:
DataManager.getInstance(). = this.mUpdatedBsonValue;
break;
case DBDefine.RequestDataType.DRAGON_RESPAWN:
DataManager.getInstance(). = this.mUpdatedBsonValue;
break;
case DBDefine.RequestDataType.STRUCT_GOLD_EVENT:
DataManager.getInstance(). = this.mUpdatedBsonValue;
break;
//case DBDefine.RequestDataType.ATAKHAN_RESPAWN:
// DataManager.getInstance().아타칸리스폰 = this.mUpdatedBsonValue;
// break;
}
}
catch(Exception ex) { }
}
}
}

View File

@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class AtakhanRequest : ARequestData
{
protected override void requestDataMongoDB()
{
try
{
//var subFilterGameID = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var projection =
MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>
("{'eventDocument.monsterName' : 1, 'eventDocument.sequenceIndex' : 1, 'eventDocument.gameTime' : 1}");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(new BsonDocument()) //.Find(subFilterGameID)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
if (documents.Count == 0)
{
mUpdatedBsonValue = null;
return;
}
BsonDocument rtnValue = new BsonDocument();
foreach (BsonDocument item in documents)
{
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument());
}
rtnValue.Add("sequenceIndex", documents.First()["eventDocument"]["sequenceIndex"].ToInt32());
mUpdatedBsonValue = rtnValue;
}
catch (Exception ex) { }
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class BanPickRequest : ARequestData
{
}
}

View File

@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class DragonRequest : ARequestData
{
protected override void requestDataMongoDB()
{
try
{
//var subFilterGameID = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var projection =
MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>
("{'eventDocument.nextDragonName' : 1, 'eventDocument.sequenceIndex' : 1, 'eventDocument.nextDragonSpawnTime' : 1}");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(new BsonDocument()) //.Find(subFilterGameID)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
if (documents.Count == 0)
{
mUpdatedBsonValue = null;
return;
}
BsonDocument rtnValue = new BsonDocument();
foreach (BsonDocument item in documents)
{
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument());
}
rtnValue.Add("sequenceIndex", documents.First()["eventDocument"]["sequenceIndex"].ToInt32());
mUpdatedBsonValue = rtnValue;
}
catch (Exception ex) { }
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class GameStatusRequest : ARequestData
{
}
}

View File

@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class ObjectDataRequest : ARequestData
{
protected override void requestDataMongoDB()
{
try
{
//var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$gt : " + calculatedTime + " }}");
var subFilterMonsterSort = //Builders<BsonDocument>.Filter.ElemMatch("eventDocument",
Builders<BsonDocument>.Filter.Or(
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "dragon"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "riftHerald"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "baron"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "VoidGrub"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "RuinousAtakhan"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "VoraciousAtakhan"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.monsterType"], "ThornboundAtakhan")
);
//var subFilterGameID = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var filter = Builders<BsonDocument>.Filter.And(subFilterMonsterSort); //var filter = Builders<BsonDocument>.Filter.And(subFilterGameID, subFilterMonsterSort);
//var filter = Builders<BsonDocument>.Filter.And(subFilterGameID);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
if (documents.Count == 0)
{
mUpdatedBsonValue = null;
return;
}
BsonDocument rtnValue = new BsonDocument();
foreach (BsonDocument item in documents)
{
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument());
}
rtnValue.Add("sequenceIndex", documents.First()["eventDocument"]["sequenceIndex"].ToInt32());
mUpdatedBsonValue = rtnValue;
}
catch(Exception ex) { }
}
}
}

View File

@@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class StructDataRequest : ARequestData
{
protected override void requestDataMongoDB()
{
try
{
//var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$gt : " + calculatedTime + " }}");
var subFilterMonsterSort = //Builders<BsonDocument>.Filter.ElemMatch("eventDocument",
Builders<BsonDocument>.Filter.Or(
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.buildingType"], "turret"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.buildingType"], "inhibitor")
);
//var subFilterGameID = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var filter = Builders<BsonDocument>.Filter.And(subFilterMonsterSort); //var filter = Builders<BsonDocument>.Filter.And(subFilterGameID, subFilterMonsterSort);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
/*
var filter = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(
"{'eventDocument.sequenceIndex' : 1,'eventDocument.teamID' : 1, 'eventDocument.gameTime' : 1, 'eventDocument.lane' : 1, 'eventDocument.turretTier' : 1, 'eventDocument.buildingType' : 1}");
List<BsonDocument> documents = this.eventDataBase.GetCollection<BsonDocument>("building_destroyed")
.Find(filter)
.SortBy(x => x["sequenceIndex"])
.Project(subFilter)
.ToList();
*/
if (documents.Count == 0)
{
mUpdatedBsonValue = null;
return;
}
BsonDocument rtnValue = new BsonDocument();
foreach (BsonDocument item in documents)
{
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument());
}
rtnValue.Add("sequenceIndex", documents.Last()["eventDocument"]["sequenceIndex"].ToInt32());
mUpdatedBsonValue = rtnValue;
}
catch(Exception ex) { }
}
}
}

View File

@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace LolDataRequestLib
{
class StructGoldDataRequest : ARequestData
{
protected override void requestDataMongoDB()
{
try
{
var subFilterMonsterSort =
Builders<BsonDocument>.Filter.Or(
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.source"], "turretPlate"),
Builders<BsonDocument>.Filter.Eq(e => e["eventDocument.source"], "turret")
);
var filter = Builders<BsonDocument>.Filter.And(subFilterMonsterSort);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = eventDataBase.GetCollection<BsonDocument>(this.mCollectionName)
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
if (documents.Count == 0)
{
mUpdatedBsonValue = null;
return;
}
BsonDocument rtnValue = new BsonDocument();
foreach (BsonDocument item in documents)
{
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument());
}
rtnValue.Add("sequenceIndex", documents.Last()["eventDocument"]["sequenceIndex"].ToInt32());
mUpdatedBsonValue = rtnValue;
}
catch (Exception ex) { }
}
}
}

View File

@@ -0,0 +1,33 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal abstract class AResponseData : IResponseData
{
protected MongoClient mDBClient = new MongoClient(DBDefine.MONGODB주소);
protected IMongoDatabase mEventDataBase = null;
public DataTable () {
mEventDataBase = mDBClient.GetDatabase("datalol");
return buildDataForResponse(getDataFromMongo());
}
protected abstract BsonDocument getDataFromMongo();
protected abstract DataTable buildDataForResponse(BsonDocument recvDocument);
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib
{
internal interface IResponseData
{
DataTable ();
}
}

View File

@@ -0,0 +1,68 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
BsonValue bufGameEndData = null;
if (recvDocument != null)
{
bufGameEndData = recvDocument["eventDocument"];
}
DataTable gameEndData = new DataTable();
try
{
gameEndData.TableName = DBDefine...ToString();
gameEndData.Columns.Add("승리팀");
gameEndData.Columns.Add("경기시간");
DataRow bufRow = gameEndData.NewRow();
bufRow["승리팀"] = (DBDefine.)bufGameEndData["winningTeam"].ToInt32();
bufRow["경기시간"] = bufGameEndData["gameTime"].ToInt32() / 1000;
gameEndData.Rows.Add(bufRow);
}
catch(Exception ex) { }
return gameEndData;
}
protected override BsonDocument getDataFromMongo()
{
//var filter = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("game_end")
.Find(new BsonDocument()) //.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
return documents.Last();
}
}
}

View File

@@ -0,0 +1,155 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
List<BsonElement> bufPlayerDataList = null;
if (recvDocument != null)
{
bufPlayerDataList = recvDocument.Elements.ToList();
}
DataTable goldData = new DataTable();
goldData.TableName = DBDefine...ToString();
goldData.Columns.Add("블루팀골드량");
goldData.Columns.Add("레드팀골드량");
goldData.Columns.Add("골드차");
goldData.Columns.Add("골드차블루최대");
goldData.Columns.Add("골드차레드최대");
goldData.Columns.Add("초");
int = 0;
int = 0;
foreach (BsonElement item in bufPlayerDataList)
{
DataRow bufRow = goldData.NewRow();
BsonArray itemValue = item.Value.ToBsonDocument()["teams"].AsBsonArray;
int = 0;
int = 0;
foreach (BsonValue itemTeam in itemValue)
{
if (itemTeam["teamID"].ToInt32() == (int)DBDefine..)
{
= itemTeam["totalGold"].ToInt32();
}
else
{
= itemTeam["totalGold"].ToInt32();
}
}
bufRow["블루팀골드량"] = ;
bufRow["레드팀골드량"] = ;
bufRow["골드차"] = - ;
if ( < ( - ))
{
= ( - );
}
if ( < ( - ))
{
= ( - );
}
bufRow["골드차블루최대"] = ;
bufRow["골드차레드최대"] = * -1;
bufRow["초"] = item.Value["gameTime"].ToInt32() / 1000;
goldData.Rows.Add(bufRow);
}
return goldData;
}
protected override BsonDocument getDataFromMongo()
{
// 필요한 필드만 포함하는 필터 문서를 생성합니다.
var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.playbackID' : 1, 'eventDocument.teams.totalGold' : 1, 'eventDocument.teams.teamID' : 1, 'eventDocument.sequenceIndex' : 1, " +
"'eventDocument.gameTime' : 1, 'eventDocument.parentGameID': 1, 'eventDocument.repeater_timestamp': 1}");
//var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.playbackID' : 1, 'eventDocument.teams.totalGold' : 1, 'eventDocument.teams.teamID' : 1,'eventDocument.sequenceIndex' : 1, 'eventDocument.gameTime' : 1}");
// MongoDB 컬렉션 "stats_update"에서 전체 문서를 가져오고 필요한 필드만 Projection합니다.
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(new BsonDocument())
.Project(subFilter)
.ToList();
//documents = documents.OrderBy(r => r["eventDocument"]["sequenceIndex"].ToInt32()).ToList();
documents = documents.OrderBy(r => DateTime.Parse(r["eventDocument"]["repeater_timestamp"].AsString)).ToList();
BsonDocument rtnValue = new BsonDocument();
// 이전 이벤트의 RequestGameID를 저장할 변수입니다.
string previousRequestGameID = null;
foreach (BsonDocument item in documents)
{
try
{
// 현재 이벤트의 RequestGameID 값을 추출합니다.
string currentRequestGameID = item["eventDocument"]["parentGameID"].ToString();
// 롤백 상황 감지:
// 이전 이벤트의 RequestGameID가 존재하고, 현재 이벤트의 값과 다르다면
// 이는 롤백 후 새로운 게임 데이터가 들어왔음을 의미합니다.
if (previousRequestGameID != null && !currentRequestGameID.Equals(previousRequestGameID))
{
// 현재 이벤트의 gameTime을 롤백 기준으로 설정합니다.
int rollbackThreshold = item["eventDocument"]["gameTime"].ToInt32();
// 지금까지 모아둔 데이터(rtnValue) 중 gameTime이 rollbackThreshold 미만인 이벤트만 유지합니다.
List<BsonElement> filteredElements = rtnValue.ToList()
.Where(d => d.Value["gameTime"].ToInt32() < rollbackThreshold)
.ToList();
rtnValue = new BsonDocument(filteredElements);
}
// 현재 이벤트 정보를 새 BsonDocument로 준비합니다.
BsonDocument bufDocument = new BsonDocument();
bufDocument.Add("gameTime", item["eventDocument"]["gameTime"].ToInt32());
bufDocument.Add("teams", item["eventDocument"]["teams"].AsBsonArray);
bufDocument.Add("playback", item["eventDocument"]["playbackID"].ToString());
bufDocument.Add("parentGameID", item["eventDocument"]["parentGameID"]);
// sequenceIndex 값을 Key로 하여 해당 이벤트를 rtnValue에 추가합니다.
rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), bufDocument);
// 다음 반복을 위해 이전 RequestGameID를 업데이트합니다.
previousRequestGameID = currentRequestGameID;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return rtnValue;
}
}
}

View File

@@ -0,0 +1,133 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
BsonArray bufPlayerDataList = null;
DataTable = new DataTable();
.TableName = DBDefine...ToString();
.Columns.Add("팀");
.Columns.Add("선수이름");
.Columns.Add("챔피언이름");
.Columns.Add("메인룬스타일");
.Columns.Add("메인룬이름");
.Columns.Add("서브룬스타일");
.Columns.Add("서브룬이름");
.Columns.Add("룬1");
.Columns.Add("룬2");
.Columns.Add("룬3");
.Columns.Add("룬4");
.Columns.Add("룬5");
.Columns.Add("룬6");
.Columns.Add("룬7");
.Columns.Add("룬8");
.Columns.Add("룬9");
.Columns.Add("룬10");
.Columns.Add("룬배열");
if (recvDocument == null)
{
return ;
}
bufPlayerDataList = recvDocument["eventDocument"]["participants"].AsBsonArray;
foreach (BsonValue item in bufPlayerDataList)
{
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
bufRow["선수이름"] = item["summonerName"].ToString();
bufRow["챔피언이름"] = item["championName"].ToString();
if (!item.AsBsonDocument.Contains("perks"))
{
continue;
}
int = item["perks"][0]["perkStyle"].ToInt32();
bufRow["메인룬스타일"] = ;
if (DataManager.getInstance().mRuneTable.ContainsKey())
{
bufRow["메인룬이름"] = DataManager.getInstance().mRuneTable[];
}
int = item["perks"][0]["perkSubStyle"].ToInt32();
bufRow["서브룬스타일"] = ;
if (DataManager.getInstance().mRuneTable.ContainsKey())
{
bufRow["서브룬이름"] = DataManager.getInstance().mRuneTable[];
}
bufRow["룬배열"] = item["perks"][0]["perkIds"].ToString();
BsonArray runeArray = item["perks"][0]["perkIds"].AsBsonArray;
if (runeArray.Count != 0)
{
for (int i = 1; i < runeArray.Count + 1; i++)
{
int runeID = runeArray[i - 1].ToInt32();
if (DataManager.getInstance().mRuneTable.ContainsKey(runeID))
{
bufRow["룬" + i] = DataManager.getInstance().mRuneTable[runeID];
}
}
}
.Rows.Add(bufRow);
}
return ;
}
protected override BsonDocument getDataFromMongo()
{
//var filter = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("eventDocument");
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("game_info")
.Find(new BsonDocument()) //.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
if (documents.Count == 0)
{
return null;
}
return documents.Last();
}
}
}

View File

@@ -0,0 +1,400 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
private int nullToZero(string value)
{
try
{
return Convert.ToInt32(value);
}
catch(Exception e)
{
return 0;
}
}
private double nullToZeroD(string value)
{
try
{
return Convert.ToDouble(value);
}
catch (Exception e)
{
return 0;
}
}
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
DataTable = new DataTable();
.TableName = DBDefine...ToString();
//선수관련
.Columns.Add("게임시간");
.Columns.Add("누적된분");
.Columns.Add("팀구분");
.Columns.Add("선수아이디");
.Columns.Add("챔피언");
//KDA
.Columns.Add("킬");
.Columns.Add("데스");
.Columns.Add("어시스트");
//데미지관련
.Columns.Add("가한데미지");
.Columns.Add("받은데미지");
.Columns.Add("팀원에게준힐량");
.Columns.Add("팀원의데미지를막아낸실드량");
//분당데미지관련
.Columns.Add("분당가한데미지");
.Columns.Add("분당받은데미지");
.Columns.Add("분당팀원에게준힐량");
.Columns.Add("분당팀원의데미지를막아낸실드량");
///스코어관련
.Columns.Add("크립스코어");
.Columns.Add("경험치");
.Columns.Add("분당크립스코어");
.Columns.Add("비전스코어");
.Columns.Add("설치한와드수");
.Columns.Add("부순와드수");
.Columns.Add("골드획득량");
.Columns.Add("분당골드획득량");
//CC
.Columns.Add("군중제어점수");
.Columns.Add("다른챔피언에CC기를건시간");
//추가
.Columns.Add("킬관여율");
.Columns.Add("골드당데미지");
.Columns.Add("팀내데미지비중");
//2022 데이터 추가 중립크립스코어
.Columns.Add("라인크립스코어");
.Columns.Add("정글크립스코어");
//2022 데이터 추가 현상금
.Columns.Add("현재현상금");
if (m팟지데이터들.Count == 0 || m팀데이터들.Count == 0)
{
return ;
}
Dictionary<int, int> _킬_수 = new Dictionary<int, int>();
Dictionary<int, int> _킬_수 = new Dictionary<int, int>();
foreach (BsonDocument item in m팀데이터들)
{
BsonArray bufTeamArray = item.Values.Last().AsBsonArray;
foreach (BsonValue itemTeam in bufTeamArray)
{
if (itemTeam["teamID"].ToInt32() == (int)DBDefine..)
{
_킬_수.Add(Convert.ToInt32(item.Names.Last()), nullToZero(itemTeam["championsKills"].ToString()));
}
else
{
_킬_수.Add(Convert.ToInt32(item.Names.Last()), nullToZero(itemTeam["championsKills"].ToString()));
}
}
}
Dictionary<int, double> _데미지_합 = new Dictionary<int, double>();
Dictionary<int, double> _데미지_합 = new Dictionary<int, double>();
foreach (BsonDocument item in m팟지데이터들)
{
int gameTime = Convert.ToInt32(item.Names.Last());
double gameTimeMin = Convert.ToDouble(gameTime) / 60.0;
BsonArray bufPlayersData = item.Values.Last().AsBsonArray;
foreach (var itemPlayer in bufPlayersData)
{
DataRow bufRow = .NewRow();
bufRow["게임시간"] = gameTime;
bufRow["누적된분"] = gameTimeMin;
bufRow["팀구분"] = (DBDefine.)itemPlayer["teamID"].ToInt32();
bufRow["선수아이디"] = itemPlayer["playerName"].ToString();
bufRow["챔피언"] = itemPlayer["championName"].ToString();
//스텟이 아닌 선수정보에 있는 것들
bufRow["경험치"] = itemPlayer["XP"].ToInt32();
bufRow["골드획득량"] = itemPlayer["totalGold"].ToInt32();
bufRow["분당골드획득량"] = itemPlayer["totalGold"].ToDouble() / (gameTimeMin);
bufRow["현재현상금"] = itemPlayer["shutdownValue"].ToInt32();
BsonArray bufStats = itemPlayer["stats"].AsBsonArray;
foreach (BsonValue itemStats in bufStats)
{
switch (itemStats["name"].ToString())
{
case "CHAMPIONS_KILLED":
try { bufRow["킬"] = itemStats["value"].ToString(); }
catch (Exception ex) { bufRow["킬"] = "0"; }
break;
case "NUM_DEATHS":
try { bufRow["데스"] = itemStats["value"].ToString(); }
catch (Exception ex) { bufRow["데스"] = "0"; }
break;
case "ASSISTS":
try { bufRow["어시스트"] = itemStats["value"].ToString(); }
catch (Exception ex) { bufRow["어시스트"] = "0"; }
break;
//데미지관련
case "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS":
bufRow["가한데미지"] = itemStats["value"].ToInt32();
bufRow["분당가한데미지"] = itemStats["value"].ToDouble() / (gameTimeMin);
bufRow["골드당데미지"] = itemStats["value"].ToDouble() / itemPlayer["totalGold"].ToDouble();
if ((DBDefine.)itemPlayer["teamID"].ToInt32() == DBDefine..)
{
if (!_데미지_합.ContainsKey(Convert.ToInt32(bufRow["게임시간"])))
{
_데미지_합.Add(Convert.ToInt32(bufRow["게임시간"]), itemStats["value"].ToInt32());
}
else
{
_데미지_합[Convert.ToInt32(bufRow["게임시간"])] += itemStats["value"].ToInt32();
}
}
else
{
if (!_데미지_합.ContainsKey(Convert.ToInt32(bufRow["게임시간"])))
{
_데미지_합.Add(Convert.ToInt32(bufRow["게임시간"]), itemStats["value"].ToInt32());
}
else
{
_데미지_합[Convert.ToInt32(bufRow["게임시간"])] += itemStats["value"].ToInt32();
}
}
break;
case "TOTAL_DAMAGE_TAKEN":
bufRow["받은데미지"] = itemStats["value"].ToInt32();
bufRow["분당받은데미지"] = itemStats["value"].ToDouble() / (gameTimeMin);
break;
case "TOTAL_HEAL_ON_TEAMMATES":
bufRow["팀원에게준힐량"] = itemStats["value"].ToInt32();
bufRow["분당팀원에게준힐량"] = itemStats["value"].ToDouble() / (gameTimeMin);
break;
case "TOTAL_DAMAGE_SHIELDED_ON_TEAMMATES":
bufRow["팀원의데미지를막아낸실드량"] = itemStats["value"].ToInt32();
bufRow["분당팀원의데미지를막아낸실드량"] = itemStats["value"].ToDouble() / (gameTimeMin);
break;
///스코어관련
case "MINIONS_KILLED":
bufRow["라인크립스코어"] = nullToZero(itemStats["value"].ToString());
//bufRow["분당크립스코어수급량"] = itemStats["value"].ToDouble()/(gameTimeMin);
break;
case "NEUTRAL_MINIONS_KILLED":
bufRow["정글크립스코어"] = itemStats["value"].ToInt32();
break;
case "VISION_SCORE":
bufRow["비전스코어"] = itemStats["value"].ToInt32();
break;
case "WARD_PLACED":
bufRow["설치한와드수"] = itemStats["value"].ToString();
break;
case "WARD_KILLED":
bufRow["부순와드수"] = itemStats["value"].ToString();
break;
case "TOTAL_TIME_CROWD_CONTROL_DEALT":
bufRow["군중제어점수"] = itemStats["value"].ToString();
break;
case "TIME_CCING_OTHERS":
bufRow["다른챔피언에CC기를건시간"] = itemStats["value"].ToString();
break;
}
}
//bufRow["크립스코어"] = Convert.ToInt32(bufRow["라인크립스코어"]) + Convert.ToInt32(bufRow["정글크립스코어"]);
//bufRow["분당크립스코어"] = Convert.ToDouble(bufRow["크립스코어"]) / (gameTimeMin);
bufRow["크립스코어"] = nullToZero(bufRow["라인크립스코어"].ToString()) + nullToZero(bufRow["정글크립스코어"].ToString());
bufRow["분당크립스코어"] = nullToZeroD(bufRow["크립스코어"].ToString()) / (gameTimeMin);
.Rows.Add(bufRow);
}
}
foreach (DataRow bufRow in .Rows)
{
if (bufRow["팀구분"].ToString() == "블루")
{
try
{
bufRow["팀내데미지비중"] = Convert.ToDouble(bufRow["가한데미지"]) / _데미지_합[Convert.ToInt32(bufRow["게임시간"])] * 100.0;
}
catch(Exception ex)
{
bufRow["팀내데미지비중"] = "Err";
}
try
{
bufRow["킬관여율"] = (nullToZeroD(bufRow["킬"].ToString()) + nullToZeroD(bufRow["어시스트"].ToString())) / _킬_수[Convert.ToInt32(bufRow["게임시간"])] * 100.0;
}
catch(Exception ex)
{
bufRow["킬관여율"] = "Err";
}
}
else
{
try
{
bufRow["팀내데미지비중"] = Convert.ToDouble(bufRow["가한데미지"]) / _데미지_합[Convert.ToInt32(bufRow["게임시간"])] * 100.0;
}
catch(Exception ex)
{
bufRow["팀내데미지비중"] = "Err";
}
try
{
bufRow["킬관여율"] = (nullToZeroD(bufRow["킬"].ToString()) + nullToZeroD(bufRow["어시스트"].ToString())) / _킬_수[Convert.ToInt32(bufRow["게임시간"])] * 100.0;
}
catch(Exception ex)
{
bufRow["킬관여율"] = "Err";
}
}
}
.Columns.Remove("게임시간");
return ;
}
List<BsonDocument> m팟지데이터들 = new List<BsonDocument>();
List<BsonDocument> m팀데이터들 = new List<BsonDocument>();
protected override BsonDocument getDataFromMongo()
{
//팟지데이터는 5분단위로 누적.
//ex ~5 ~10 ~15 ~20 ~25 ~30... 마지막데이터는 0
//맨 처음 전체데이터로 경기시간을 구한다음 시간으로 나눈다?
if (DataManager.getInstance(). == null)
{
return null;
}
int = DataManager.getInstance().["gameTime"].ToInt32() / 1000;
int = 0;
m팟지데이터들 = new List<BsonDocument>();
m팀데이터들 = new List<BsonDocument>();
while ( - > 0)
{
+= 5 * 60;
BsonDocument rtnValue = new BsonDocument();
//var subfilter1 = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var subFilter2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + * 1000 + " }}");
var filter1 = Builders<BsonDocument>.Filter.And(subFilter2); //var filter1 = Builders<BsonDocument>.Filter.And(subfilter1, subFilter2);
var projectionFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.participants' : 1, 'eventDocument.teams' : 1}");
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(filter1)
.SortByDescending(x => x["sequenceIndex"])
.Limit(1)
.ToList();
///경기의 마지막정보는 경기시간으로 리턴.
if ( > )
{
rtnValue.Add(.ToString(), documents.Last()["eventDocument"]["participants"].AsBsonArray);
}
else
{
rtnValue.Add(.ToString(), documents.Last()["eventDocument"]["participants"].AsBsonArray);
}
m팟지데이터들.Add(rtnValue);
rtnValue = new BsonDocument();
if ( > )
{
rtnValue.Add(.ToString(), documents.Last()["eventDocument"]["teams"].AsBsonArray);
}
else
{
rtnValue.Add(.ToString(), documents.Last()["eventDocument"]["teams"].AsBsonArray);
}
m팀데이터들.Add(rtnValue);
}
//구조를 위해 리턴은 하지만 이 상속클래스는 BsonDocument를 멤버변수 kv페어로 관리한다.
return new BsonDocument();
}
}
}

View File

@@ -0,0 +1,145 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
int = 0;
int = 0;
internal (int , int )
{
= ;
= ;
}
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
DataTable = new DataTable();
.TableName = DBDefine...ToString();
//선수관련
.Columns.Add("팀구분");
.Columns.Add("선수아이디");
.Columns.Add("챔피언");
//데미지관련
.Columns.Add("데미지차이");
.Columns.Add("시작데미지량");
.Columns.Add("종료데미지량");
.Columns.Add("딜량백분율");
if (m시작데이터.Count() == 0 || m종료데이터.Count() == 0)
{
return ;
}
BsonArray = m시작데이터["participants"].AsBsonArray;
foreach (BsonDocument itemPlayer in )
{
DataRow bufRow = .NewRow();
bufRow["팀구분"] = (DBDefine.)itemPlayer["teamID"].ToInt32();
bufRow["선수아이디"] = itemPlayer["playerName"].ToString();
bufRow["챔피언"] = itemPlayer["championName"].ToString();
bufRow["시작데미지량"] = itemPlayer["stats"].AsBsonArray.ToList().Where(v => v["name"] == "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS").ToList()[0]["value"];
.Rows.Add(bufRow);
}
BsonArray = m종료데이터["participants"].AsBsonArray;
foreach (BsonDocument itemPlayer in )
{
DataRow bufPlayerRow = .AsEnumerable().Where(r => r.Field<String>("선수아이디") == itemPlayer["playerName"].ToString()).Last();
bufPlayerRow["종료데미지량"] = itemPlayer["stats"].AsBsonArray.ToList().Where(v => v["name"] == "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS").ToList()[0]["value"];
bufPlayerRow["데미지차이"] = Convert.ToDouble(bufPlayerRow["종료데미지량"]) - Convert.ToDouble(bufPlayerRow["시작데미지량"]);
}
double = Convert.ToDouble(.AsEnumerable().OrderByDescending(r => Convert.ToDouble(r.Field<string>("데미지차이"))).First()["데미지차이"]);
foreach (DataRow item in .Rows)
{
double = Convert.ToDouble(item["데미지차이"]);
if ( != 0)
{
item["딜량백분율"] = / * 100.0;
}
else
{
item["딜량백분율"] = 0.0;
}
}
return ;
}
BsonDocument m시작데이터 = new BsonDocument();
BsonDocument m종료데이터 = new BsonDocument();
protected override BsonDocument getDataFromMongo()
{
//var subfilter1 = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var subFilter2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + * 1000 + " }}");
var filter1 = Builders<BsonDocument>.Filter.And(subFilter2); //var filter1 = Builders<BsonDocument>.Filter.And(subfilter1, subFilter2);
var projectionFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.participants' : 1 , 'eventDocument.gameTime' : 1 }");
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(filter1)
.Project(projectionFilter)
.SortByDescending(x => x["sequenceIndex"])
.Limit(1)
.ToList();
m시작데이터 = documents.Last()["eventDocument"].AsBsonDocument;
subFilter2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + * 1000 + " }}");
filter1 = Builders<BsonDocument>.Filter.And(subFilter2); //filter1 = Builders<BsonDocument>.Filter.And(subfilter1, subFilter2);
List<BsonDocument> documents2 = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(filter1)
.SortByDescending(x => x["sequenceIndex"])
.Project(projectionFilter)
.Limit(1)
.ToList();
m종료데이터 = documents2.Last()["eventDocument"].AsBsonDocument;
//구조를 위해 리턴은 하지만 이 상속클래스는 BsonDocument를 멤버변수 kv페어로 관리한다.
return new BsonDocument();
}
}
}

View File

@@ -0,0 +1,83 @@
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 KDA선수 : IResponseData
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
try
{
List<BsonValue> = DataManager.getInstance().["participants"].AsBsonArray.ToList();
.Columns.Add("팀");
//픽리스트테이블.Columns.Add("포지션");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언이름");
.Columns.Add("킬");
.Columns.Add("데스");
.Columns.Add("어시스트");
for (int i = 0; i < .Count(); i++)
{
BsonValue item = [i];
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
bufRow["선수닉네임"] = item["playerName"];
bufRow["챔피언이름"] = item["championName"];
try
{
bufRow["킬"] = item["stats"].AsBsonArray.Where(v => v["name"] == "CHAMPIONS_KILLED").ToList()[0]["value"];
}
catch(Exception ex)
{
bufRow["킬"] = "0";
}
try {
bufRow["데스"] = item["stats"].AsBsonArray.Where(v => v["name"] == "NUM_DEATHS").ToList()[0]["value"];
}
catch(Exception ex)
{
bufRow["데스"] = "0";
}
try
{
bufRow["어시스트"] = item["stats"].AsBsonArray.Where(v => v["name"] == "ASSISTS").ToList()[0]["value"];
}
catch (Exception ex)
{
bufRow["어시스트"] = "0";
}
.Rows.Add(bufRow);
}
}
catch(Exception ex) {
Console.WriteLine(ex.ToString());
}
return ;
}
}
}

View File

@@ -0,0 +1,69 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
try
{
.Columns.Add("팀");
//픽리스트테이블.Columns.Add("포지션");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언이름");
.Columns.Add("레벨");
.Columns.Add("경험치");
.Columns.Add("경험치대비");
.Columns.Add("레벨대비");
.Columns.Add("퀘스트여부");
if (DataManager.getInstance(). == null)
{
return ;
}
List<BsonValue> = DataManager.getInstance().["participants"].AsBsonArray.OrderByDescending(p => p["XP"].ToInt32()).ToList();
double maxXP = (double)[0]["XP"].ToInt32();
for (int i = 0; i < .Count(); i++)
{
BsonValue item = [i];
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
bufRow["선수닉네임"] = item["playerName"];
bufRow["챔피언이름"] = item["championName"];
bufRow["레벨"] = item["level"].ToInt32();
bufRow["경험치"] = item["XP"];
bufRow["경험치대비"] = (item["XP"].ToInt32() / maxXP) * 100;
//bufRow["레벨대비"] = (item["XP"].ToInt32() - 180 - (item["level"].ToInt32() * 180) / 180 + ((item["level"].ToInt32() + 1) * 180)) * 100;
.Rows.Add(bufRow);
}
}
catch(Exception ex) { }
return ;
}
}
}

View File

@@ -0,0 +1,67 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
try
{
.Columns.Add("팀");
//픽리스트테이블.Columns.Add("포지션");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언이름");
.Columns.Add("총골드획득량");
.Columns.Add("보유골드량");
.Columns.Add("대비총골드퍼센트");
.Columns.Add("대비보유골드퍼센트");
if (DataManager.getInstance(). == null)
{
return ;
}
List<BsonValue> = DataManager.getInstance().["participants"].AsBsonArray.OrderByDescending(p => p["totalGold"].ToInt32()).ToList();
double maxGold = (double)[0]["totalGold"].ToInt32();
for (int i = 0; i < .Count(); i++)
{
BsonValue item = [i];
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
bufRow["선수닉네임"] = item["playerName"];
bufRow["챔피언이름"] = item["championName"];
bufRow["총골드획득량"] = item["totalGold"].ToInt32();
bufRow["보유골드량"] = item["currentGold"];
bufRow["대비총골드퍼센트"] = (item["totalGold"].ToInt32() / maxGold) * 100;
bufRow["대비보유골드퍼센트"] = (item["currentGold"].ToInt32() / maxGold) * 100;
.Rows.Add(bufRow);
}
}
catch (Exception ex) { }
return ;
}
}
}

View File

@@ -0,0 +1,74 @@
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
{
public DataTable ()
{
DataTable = new DataTable("누적데미지");
.Columns.Add("팀");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언이름");
.Columns.Add("총가한데미지");
.Columns.Add("대비총데미지퍼센트");
if (DataManager.getInstance(). == null)
{
return ;
}
List<BsonValue> = DataManager.getInstance().["participants"].AsBsonArray.ToList();
for (int i = 0; i < .Count(); i++)
{
BsonValue item = [i];
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
bufRow["선수닉네임"] = item["playerName"];
bufRow["챔피언이름"] = item["championName"];
bufRow["총가한데미지"] = item["stats"].AsBsonArray.Where(v => v["name"] == "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS").ToList()[0]["value"];
.Rows.Add(bufRow);
}
if (.Rows.Count > 0)
{
= .AsEnumerable().OrderByDescending(r => Convert.ToDouble(r.Field<string>("총가한데미지"))).CopyToDataTable();
double maxDamageToChamps = Convert.ToDouble(.Rows[0]["총가한데미지"].ToString());
foreach (DataRow item in .Rows)
{
item["대비총데미지퍼센트"] = Convert.ToDouble(item["총가한데미지"]) / maxDamageToChamps * 100;
}
}
.TableName = DBDefine...ToString();
return ;
}
}
}

View File

@@ -0,0 +1,170 @@
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
{
public DataTable ()
{
List<DataTable> rtnValue = new List<DataTable>();
DataTable = new DataTable(DBDefine...ToString());
rtnValue.Add();
//추가 시작
// 1) 순번 컬럼을 int로 (정렬/비교 안정화)
.Columns.Add("순번", typeof(int));
.Columns.Add("챔피언ID");
.Columns.Add("챔피언이름");
.Columns.Add("팀");
// 여기부터 새로 넣기
var dm = DataManager.getInstance();
if (dm. == null || dm..IsBsonNull || !dm..IsBsonDocument)
{
.TableName = DBDefine...ToString();
return ;
}
var doc = dm..AsBsonDocument;
if (!doc.TryGetValue("bannedChampions", out var banned) || banned == null || banned.IsBsonNull || !banned.IsBsonArray)
{
.TableName = DBDefine...ToString();
return ;
}
//List<BsonValue> 밴데이터 = banned.AsBsonArray.ToList();
List<BsonValue> = dm.["bannedChampions"].AsBsonArray.ToList();
var turns = .Select(x => x["pickTurn"].ToInt32()).ToList();
bool isGlobalTurnFormat = turns.Any(t => t >= 13); // 1~6 + 13~16
bool isDirectSlotFormat = turns.Distinct().Count() == turns.Count // 1~10 같은 직접 슬롯
&& turns.All(t => t >= 1 && t <= 10);
foreach (BsonValue item in )
{
DataRow bufRow = .NewRow();
int pickTurn = item["pickTurn"].ToInt32();
int teamId = item["teamID"].ToInt32();
int slot = 0;
/*
if (isDirectSlotFormat)
{
slot = pickTurn;
}
else if (isGlobalTurnFormat)
{
if (pickTurn >= 1 && pickTurn <= 6) slot = pickTurn;
else if (pickTurn >= 13 && pickTurn <= 16) slot = pickTurn - 6; // 13~16 => 7~10
else slot = 0;
}
else
{
int key = pickTurn + teamId;
if (!dm.밴픽순서테이블.TryGetValue(key, out slot))
slot = 0;
}
*/
//if (slot == 0) slot = 밴리스트테이블.Rows.Count + 1;
//bufRow["순번"] = slot;
bufRow["순번"] = pickTurn;
int selectedChamp = item["championID"].ToInt32();
bufRow["챔피언ID"] = selectedChamp;
bufRow["팀"] = item["teamID"].ToInt32();
if (selectedChamp > 0)
bufRow["챔피언이름"] = dm.mChampionTable[selectedChamp].champNameKOR;
else if (selectedChamp == -1)
bufRow["챔피언이름"] = "선택없음";
.Rows.Add(bufRow);
}
// 여기까지 새로 넣기
// 5) 정렬도 int 기준으로
if (.Rows.Count > 0)
{
= .AsEnumerable()
.OrderBy(r => r.Field<int>("순번"))
.CopyToDataTable();
}
////추가 끝
//밴리스트테이블.Columns.Add("순번");
//밴리스트테이블.Columns.Add("챔피언ID");
//밴리스트테이블.Columns.Add("챔피언이름");
//if (DataManager.getInstance().밴픽데이터 == null)
//{
// return 밴리스트테이블;
//}
//List<BsonValue> 밴데이터 = DataManager.getInstance().밴픽데이터["bannedChampions"].AsBsonArray.ToList();
//foreach (BsonValue item in 밴데이터)
//{
// DataRow bufRow = 밴리스트테이블.NewRow();
// //Console.WriteLine(item["pickTurn"].ToInt32() + item["teamID"].ToInt32());
// if (DataManager.getInstance().isNewBanPick)
// {
// bufRow["순번"] = item["pickTurn"].ToInt32();
// }
// else
// {
// bufRow["순번"] = DataManager.getInstance().밴픽순서테이블[item["pickTurn"].ToInt32() + item["teamID"].ToInt32()];
// }
// int selectedChamp = item["championID"].ToInt32();
// if (selectedChamp > 0 )
// {
// bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp];
// }
// if (selectedChamp == -1)
// {
// bufRow["챔피언이름"] = "선택없음";
// }
// bufRow["챔피언ID"] = selectedChamp;
// 밴리스트테이블.Rows.Add(bufRow);
//}
//if (밴리스트테이블.Rows.Count > 0)
//{
// 밴리스트테이블 = 밴리스트테이블.AsEnumerable().OrderBy(r => Convert.ToInt32(r.Field<string>("순번"))).CopyToDataTable();
//}
.TableName = DBDefine...ToString();
return ;
}
}
}

View File

@@ -0,0 +1,53 @@
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
{
//public DataTable 디비데이터를데이터테이블로만듬()
//{
// DataTable 아타칸리스폰테이블 = new DataTable(DBDefine.요청데이터분류.아타칸리스폰.ToString());
// 아타칸리스폰테이블.Columns.Add("아타칸정보");
// 아타칸리스폰테이블.Columns.Add("리스폰타임");
// if (DataManager.getInstance().아타칸리스폰== null)
// {
// return 아타칸리스폰테이블;
// }
// BsonDocument dd = DataManager.getInstance().아타칸리스폰.DeepClone().AsBsonDocument;
// dd.Remove("sequenceIndex");
// List<BsonElement> bufStructDataList = dd.ToList();
// foreach (BsonElement item in bufStructDataList)
// {
// DataRow bufRow = 아타칸리스폰테이블.NewRow();
// BsonDocument bufValue = item.Value.AsBsonDocument;
// bufRow["아타칸정보"] = bufValue["monsterName"].ToString();
// int 아타칸리스폰타임 = bufValue["sequenceIndex"].ToInt32();
// bufRow["리스폰타임"] = 아타칸리스폰타임;
// if (bufValue["monsterName"].ToString().Contains("Atakhan")) 아타칸리스폰테이블.Rows.Add(bufRow);
// }
// return 아타칸리스폰테이블;
//}
}
}

View File

@@ -0,0 +1,144 @@
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 ;
}
}
}
}

View File

@@ -0,0 +1,55 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
.Columns.Add("용정보");
.Columns.Add("리스폰타임");
if (DataManager.getInstance(). == null)
{
return ;
}
BsonDocument dd = DataManager.getInstance()..DeepClone().AsBsonDocument;
dd.Remove("sequenceIndex");
List<BsonElement> bufStructDataList = dd.ToList();
foreach (BsonElement item in bufStructDataList)
{
DataRow bufRow = .NewRow();
BsonDocument bufValue = item.Value.AsBsonDocument;
bufRow["용정보"] = bufValue["nextDragonName"].ToString();
int = bufValue["nextDragonSpawnTime"].ToInt32();
bufRow["리스폰타임"] = ;
.Rows.Add(bufRow);
}
return ;
}
}
}

View File

@@ -0,0 +1,56 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
try
{
.Columns.Add("팀");
//픽리스트테이블.Columns.Add("포지션");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언이름");
.Columns.Add("퀘스트완료여부");
if (DataManager.getInstance(). == null)
{
return ;
}
List<BsonValue> = DataManager.getInstance().["participants"].AsBsonArray.OrderByDescending(p => p["roleBoundQuestComplete"].ToBoolean()).ToList();
for (int i = 0; i < .Count(); i++)
{
BsonValue item = [i];
DataRow bufRow = .NewRow();
bufRow["팀"] = (DBDefine.)item["teamID"].ToInt32();
bufRow["선수닉네임"] = item["playerName"];
bufRow["챔피언이름"] = item["championName"];
bufRow["퀘스트완료여부"] = item["roleBoundQuestComplete"].ToBoolean();
.Rows.Add(bufRow);
}
}
catch (Exception ex) { }
return ;
}
}
}

View File

@@ -0,0 +1,77 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
.Columns.Add("지급원인");
.Columns.Add("팀");
.Columns.Add("선수");
.Columns.Add("지급골드");
.Columns.Add("타워위치");
.Columns.Add("타워티어");
.Columns.Add("게임시간");
if (DataManager.getInstance(). == null)
{
return ;
}
BsonDocument dd = DataManager.getInstance()..DeepClone().AsBsonDocument;
dd.Remove("sequenceIndex");
List<BsonElement> bufStructDataList = dd.ToList();
//Console.WriteLine("타워파괴전체.cs : 시작");
foreach (BsonElement item in bufStructDataList)
{
DataRow bufRow = .NewRow();
BsonDocument bufValue = item.Value.AsBsonDocument;
//Console.WriteLine("타워파괴전체.cs 정보 : " + bufValue.ToString());
try
{
{
bufRow["지급원인"] = bufValue["source"].ToString();
bufRow["팀"] = bufValue["teamID"].ToString();
bufRow["선수"] = bufValue["recipientId"].ToString();
bufRow["지급골드"] = bufValue["amount"].ToString();
bufRow["타워위치"] = bufValue["lane"].ToString();
bufRow["타워티어"] = bufValue["turretTier"].ToString();
bufRow["게임시간"] = bufValue["gameTime"].ToString();
.Rows.Add(bufRow);
}
}
catch (Exception ex)
{
}
}
return ;
}
}
}

View File

@@ -0,0 +1,89 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
.Columns.Add("타워부서진팀");
.Columns.Add("경기시간(초)");
.Columns.Add("파괴된라인");
.Columns.Add("터렛티어");
.Columns.Add("타워종류");
.Columns.Add("타워위치");
.Columns.Add("넥서스타워");
if (DataManager.getInstance(). == null)
{
return ;
}
BsonDocument dd = DataManager.getInstance()..DeepClone().AsBsonDocument;
dd.Remove("sequenceIndex");
List<BsonElement> bufStructDataList = dd.ToList();
//Console.WriteLine("타워파괴전체.cs : 시작");
foreach (BsonElement item in bufStructDataList)
{
DataRow bufRow = .NewRow();
BsonDocument bufValue = item.Value.AsBsonDocument;
//Console.WriteLine("타워파괴전체.cs 정보 : " + bufValue.ToString());
//turretTier
try
{
bufRow["타워부서진팀"] = (DBDefine.)(bufValue["teamID"].ToInt32());
bufRow["경기시간(초)"] = (bufValue["gameTime"].ToInt32()) / 1000;
if (bufValue.AsBsonDocument.Contains("lane"))
{
bufRow["파괴된라인"] = bufValue["lane"].ToString();
if (bufValue.AsBsonDocument.Contains("turretTier"))
{
bufRow["터렛티어"] = bufValue["turretTier"].ToString();
}
if (bufValue.AsBsonDocument.Contains("nexusTurretName"))
{
bufRow["넥서스타워"] = bufValue["nexusTurretName"].ToString();
bufRow["타워위치"] = bufValue["position"].ToString();
}
bufRow["타워종류"] = bufValue["buildingType"].ToString();
.Rows.Add(bufRow);
}
}
catch (Exception ex)
{
}
}
return ;
}
}
}

View File

@@ -0,0 +1,101 @@
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
{
public DataTable ()
{
DataTable = new DataTable(DBDefine...ToString());
.Columns.Add("팀");
//픽리스트테이블.Columns.Add("포지션");
.Columns.Add("선수닉네임");
.Columns.Add("챔피언ID");
.Columns.Add("챔피언이름");
.Columns.Add("픽상태");
.Columns.Add("선택스킨ID");
.Columns.Add("순번", typeof(int));
if (DataManager.getInstance(). == null)
{
return ;
}
List<BsonValue> = DataManager.getInstance().["teamOne"].AsBsonArray.ToList();
foreach (BsonValue item in )
{
DataRow bufRow = .NewRow();
bufRow["팀"] = DBDefine..;
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 + 1;
bufRow["선수닉네임"] = item["summonerName"];
int selectedChamp = item["championID"].ToInt32();
if (selectedChamp != 0)
{
bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp].champNameKOR;
}
bufRow["챔피언ID"] = selectedChamp;
bufRow["픽상태"] = (DBDefine.)item["pickMode"].ToInt32();
bufRow["선택스킨ID"] = item["championID"];
bufRow["순번"] = item["pickTurn"].ToInt32();
.Rows.Add(bufRow);
}
List<BsonValue> = DataManager.getInstance().["teamTwo"].AsBsonArray.ToList();
foreach (BsonValue item in )
{
DataRow bufRow = .NewRow();
bufRow["팀"] = DBDefine..;
//bufRow["포지션"] = (DBDefine.라인구분)item["participantID"].AsInt32 - 4;
bufRow["선수닉네임"] = item["summonerName"];
int selectedChamp = item["championID"].ToInt32();
if (selectedChamp != 0)
{
bufRow["챔피언이름"] = DataManager.getInstance().mChampionTable[selectedChamp].champNameKOR;
}
bufRow["챔피언ID"] = selectedChamp;
bufRow["픽상태"] = (DBDefine.)item["pickMode"].ToInt32();
bufRow["선택스킨ID"] = item["championID"];
bufRow["순번"] = item["pickTurn"].ToInt32();
.Rows.Add(bufRow);
}
if (DataManager.getInstance().isNewBanPick)
{
if (.Rows.Count > 0)
{
= .AsEnumerable()
.OrderBy(r => r.Field<string>("팀") == DBDefine...ToString() ? 0 : 1) // 블루 팀 우선
.ThenBy(r => r.Field<int>("순번")) // 같은 팀 내에서는 순번 오름차순
.CopyToDataTable();
}
}
return ;
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DnsClient" version="1.4.0" targetFramework="net472" />
<package id="MongoDB.Bson" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver.Core" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Libmongocrypt" version="1.2.1" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
<package id="SharpCompress" version="0.23.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
</packages>

View File

@@ -0,0 +1,55 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33110.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "updateServer", "updateServer\updateServer.csproj", "{A0EBC173-C85F-41D6-BD9A-088EFA361113}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LolDataRequestLib", "LolDataRequestLib\LolDataRequestLib.csproj", "{1923EB44-9E99-4198-8E08-008A98B7D673}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "requestTestForm", "requestTestForm\requestTestForm.csproj", "{0E32DA7E-5B02-40C7-8F86-883271051CFF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lolDataSimulation", "lolDataSimulation\lolDataSimulation.csproj", "{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RiotKeyChecker", "RiotKeyChecker\RiotKeyChecker.csproj", "{9F357491-14FD-46B6-B824-14300E297954}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameDataViewer", "GameDataViewer\GameDataViewer.csproj", "{F8DFAC61-94B0-49B2-835E-F8C7D67BBECB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A0EBC173-C85F-41D6-BD9A-088EFA361113}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A0EBC173-C85F-41D6-BD9A-088EFA361113}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A0EBC173-C85F-41D6-BD9A-088EFA361113}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A0EBC173-C85F-41D6-BD9A-088EFA361113}.Release|Any CPU.Build.0 = Release|Any CPU
{1923EB44-9E99-4198-8E08-008A98B7D673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1923EB44-9E99-4198-8E08-008A98B7D673}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1923EB44-9E99-4198-8E08-008A98B7D673}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1923EB44-9E99-4198-8E08-008A98B7D673}.Release|Any CPU.Build.0 = Release|Any CPU
{0E32DA7E-5B02-40C7-8F86-883271051CFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E32DA7E-5B02-40C7-8F86-883271051CFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E32DA7E-5B02-40C7-8F86-883271051CFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E32DA7E-5B02-40C7-8F86-883271051CFF}.Release|Any CPU.Build.0 = Release|Any CPU
{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}.Release|Any CPU.Build.0 = Release|Any CPU
{9F357491-14FD-46B6-B824-14300E297954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F357491-14FD-46B6-B824-14300E297954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F357491-14FD-46B6-B824-14300E297954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F357491-14FD-46B6-B824-14300E297954}.Release|Any CPU.Build.0 = Release|Any CPU
{F8DFAC61-94B0-49B2-835E-F8C7D67BBECB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8DFAC61-94B0-49B2-835E-F8C7D67BBECB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8DFAC61-94B0-49B2-835E-F8C7D67BBECB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8DFAC61-94B0-49B2-835E-F8C7D67BBECB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {96FC4E3B-3E74-4127-864B-9702FDA2938E}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,95 @@
namespace RiotKeyChecker
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(482, 41);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(212, 91);
this.button1.TabIndex = 0;
this.button1.Text = "데이터 요청";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(104, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(590, 23);
this.textBox1.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(11, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(87, 15);
this.label1.TabIndex = 2;
this.label1.Text = "라이엇 키 입력";
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.ItemHeight = 15;
this.listBox1.Location = new System.Drawing.Point(12, 141);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(682, 289);
this.listBox1.TabIndex = 3;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(707, 450);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Riot Key Checker";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Button button1;
private TextBox textBox1;
private Label label1;
private ListBox listBox1;
}
}

View File

@@ -0,0 +1,139 @@
using System.Text.Json.Nodes;
using System.Text.Json;
using System.Net;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
namespace RiotKeyChecker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
GameListUpdateWorker(true);
}
internal const string _게임리스트_REQUEST_URL = "https://raw-stats-api.ewp.gg/livestatsRaw/v1/";
internal Dictionary<string, string> GameListUpdateWorker(bool isTest)
{
//string bufRequestURL = DEFINE.라이엇_게임리스트_REQUEST_URL + (isTest ? "platformGames" : "esportsGames") + "?state=in_progress";;
string bufRequestURL = _게임리스트_REQUEST_URL + (isTest ? "platformGames" : "esportsGames") + "?state=in_progress"; ;
//string bufRequestURL = DEFINE.라이엇_게임리스트_REQUEST_URL + "esportsGames" + "?state=finished"; ;
string result = null;
///20210809 SSL접속문제로 인해 서버인증기능을 끈 부분을 추가한다 이거 이래도 되나?
//ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
///가져온 URL에 맞춰 리퀘스트를 만든다.
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(bufRequestURL);
req.Method = "GET";
WebHeaderCollection hd = new WebHeaderCollection();
hd.Add("x-api-key:" + textBox1.Text);
req.Headers = hd;
WebResponse rsp = null;
try
{
rsp = req.GetResponse();
///가져온 데이터를 문자열화 하고, Bson형태로 파싱해서 리턴한다.
using (var reader = new StreamReader(rsp.GetResponseStream()))
{
result = reader.ReadToEnd();
}
}
catch (WebException ex)
{
MessageBox.Show(ex.ToString());
return null;
}
IEnumerable<BsonValue> bufGameList = null;
List<string> updateRoomList = new List<string>();
Dictionary<String, string> rtnValue = new Dictionary<string, string>();
///가져온 데이터가 null이 아니라면 데이터를 Game단위(Document)로 짤라서 Enumarable화 하고, 아니면 빈 결과를 리턴한다.
if (result != null)
{
bufGameList = BsonSerializer.Deserialize<BsonArray>(result).Select(p => p.AsBsonDocument);
}
else
{
}
//가져온 데이터에서 방제와 플랫폼게임ID를 파싱해서 KV페어로 만든다.
foreach (BsonValue item in bufGameList)
{
string bufString = "";
///20210615테스트할부분 방을 새로만든부분이 있을경우 Document 순서에서 나중에 들어오므로 과거에 들어왔던 데이터를 버린다.
///혹시 모르니 안버린다.
//if (rtnValue.ContainsValue(item["gameName"].ToString()))
//{
// rtnValue.Remove(rtnValue.FirstOrDefault(x => x.Value == item["gameName"].ToString()).Key);
//}
if (isTest)
{
rtnValue.Add(item["platformGameId"].ToString(), item["gameName"].ToString());
bufString = item["platformGameId"].ToString() + "_" + item["gameName"].ToString();
updateRoomList.Add(bufString);
}
else
{
BsonDocument itemDocument = item.AsBsonDocument["platformGames"].AsBsonArray.Last().ToBsonDocument();
rtnValue.Add(itemDocument["platformGameId"].ToString(), itemDocument["gameName"].ToString());
bufString = itemDocument["platformGameId"].ToString() + "_" + itemDocument["gameName"].ToString();
updateRoomList.Add(bufString);
}
#if (DEBUG)
{
Console.WriteLine(bufString);
}
#endif
}
///완성된 방 정보를 UI에 업데이트한다.
///
this.Invoke(new MethodInvoker(() => {
foreach (string item in updateRoomList)
{
listBox1.Items.Add(item);
}
}));
return rtnValue;
}
}
}

View File

@@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,17 @@
namespace RiotKeyChecker
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Bson" Version="2.12.3" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,12 @@
version: '3.4'
services:
mongodb:
image: mongo:latest
restart: always
container_name: mongodb-lck-cl
ports:
- "50003:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: veryhardpassword123

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lolDataSimulation
{
static class Program
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SimulationForm());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("lolDataSimulation")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("lolDataSimulation")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("4485ca9d-7fc7-4258-a90d-1eff38d73b3e")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lolDataSimulation.Properties
{
/// <summary>
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
/// </summary>
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
// ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lolDataSimulation.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lolDataSimulation.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,181 @@
namespace lolDataSimulation
{
partial class SimulationForm
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.btnBanPickNect = new System.Windows.Forms.Button();
this.btnClear = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.numericUpDown2 = new System.Windows.Forms.NumericUpDown();
this.btnClearGameData = new System.Windows.Forms.Button();
this.btnSyncGameData = new System.Windows.Forms.Button();
this.btnAutoplayStart = new System.Windows.Forms.Button();
this.btnAutoplayEnd = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit();
this.SuspendLayout();
//
// btnBanPickNect
//
this.btnBanPickNect.Location = new System.Drawing.Point(321, 57);
this.btnBanPickNect.Name = "btnBanPickNect";
this.btnBanPickNect.Size = new System.Drawing.Size(223, 133);
this.btnBanPickNect.TabIndex = 0;
this.btnBanPickNect.Text = "밴픽다음단계";
this.btnBanPickNect.UseVisualStyleBackColor = true;
this.btnBanPickNect.Click += new System.EventHandler(this.btnBanPickNect_Click);
//
// btnClear
//
this.btnClear.Location = new System.Drawing.Point(12, 57);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(303, 135);
this.btnClear.TabIndex = 1;
this.btnClear.Text = "밴픽초기화";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.button2_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(12, 30);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(303, 21);
this.textBox1.TabIndex = 2;
this.textBox1.Text = "LOLTMNT03_219847";
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(321, 30);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(223, 21);
this.textBox2.TabIndex = 3;
this.textBox2.Text = "-1000";
//
// numericUpDown1
//
this.numericUpDown1.Font = new System.Drawing.Font("굴림", 30F);
this.numericUpDown1.Location = new System.Drawing.Point(12, 235);
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(120, 53);
this.numericUpDown1.TabIndex = 4;
//
// numericUpDown2
//
this.numericUpDown2.Font = new System.Drawing.Font("굴림", 30F);
this.numericUpDown2.Location = new System.Drawing.Point(138, 235);
this.numericUpDown2.Maximum = new decimal(new int[] {
59,
0,
0,
0});
this.numericUpDown2.Name = "numericUpDown2";
this.numericUpDown2.Size = new System.Drawing.Size(120, 53);
this.numericUpDown2.TabIndex = 4;
this.numericUpDown2.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged);
//
// btnClearGameData
//
this.btnClearGameData.Location = new System.Drawing.Point(12, 294);
this.btnClearGameData.Name = "btnClearGameData";
this.btnClearGameData.Size = new System.Drawing.Size(165, 82);
this.btnClearGameData.TabIndex = 5;
this.btnClearGameData.Text = "초기화";
this.btnClearGameData.UseVisualStyleBackColor = true;
this.btnClearGameData.Click += new System.EventHandler(this.btnClearGameData_Click);
//
// btnSyncGameData
//
this.btnSyncGameData.Location = new System.Drawing.Point(183, 294);
this.btnSyncGameData.Name = "btnSyncGameData";
this.btnSyncGameData.Size = new System.Drawing.Size(165, 82);
this.btnSyncGameData.TabIndex = 5;
this.btnSyncGameData.Text = "동기화";
this.btnSyncGameData.UseVisualStyleBackColor = true;
this.btnSyncGameData.Click += new System.EventHandler(this.btnSyncGameData_Click);
//
// btnAutoplayStart
//
this.btnAutoplayStart.Location = new System.Drawing.Point(354, 294);
this.btnAutoplayStart.Name = "btnAutoplayStart";
this.btnAutoplayStart.Size = new System.Drawing.Size(165, 82);
this.btnAutoplayStart.TabIndex = 5;
this.btnAutoplayStart.Text = "오토플레이시작";
this.btnAutoplayStart.UseVisualStyleBackColor = true;
this.btnAutoplayStart.Click += new System.EventHandler(this.button3_Click);
//
// btnAutoplayEnd
//
this.btnAutoplayEnd.Location = new System.Drawing.Point(525, 294);
this.btnAutoplayEnd.Name = "btnAutoplayEnd";
this.btnAutoplayEnd.Size = new System.Drawing.Size(165, 82);
this.btnAutoplayEnd.TabIndex = 5;
this.btnAutoplayEnd.Text = "오토플레이끝";
this.btnAutoplayEnd.UseVisualStyleBackColor = true;
this.btnAutoplayEnd.Click += new System.EventHandler(this.btnAutoplayEnd_Click);
//
// SimulationForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.btnAutoplayEnd);
this.Controls.Add(this.btnAutoplayStart);
this.Controls.Add(this.btnSyncGameData);
this.Controls.Add(this.btnClearGameData);
this.Controls.Add(this.numericUpDown2);
this.Controls.Add(this.numericUpDown1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.btnClear);
this.Controls.Add(this.btnBanPickNect);
this.Name = "SimulationForm";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btnBanPickNect;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.NumericUpDown numericUpDown1;
private System.Windows.Forms.NumericUpDown numericUpDown2;
private System.Windows.Forms.Button btnClearGameData;
private System.Windows.Forms.Button btnSyncGameData;
private System.Windows.Forms.Button btnAutoplayStart;
private System.Windows.Forms.Button btnAutoplayEnd;
}
}

View File

@@ -0,0 +1,324 @@
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lolDataSimulation
{
/// <summary>
/// 시뮬레이션으로 게임데이터를 만들기위한 프로그램
///
/// 좀 쓰다 버릴줄알고 발로짰다. 이렇게 많이 쓸줄 알았으면 여기에 목숨을 걸어야했는데..
///
/// </summary>
public partial class SimulationForm : Form
{
public SimulationForm()
{
InitializeComponent();
updateTimer.Tick += timeup;
}
private void button2_Click(object sender, EventArgs e)
{
var mEventDataBaseTarget = mDBClient.GetDatabase("datalol");
mEventDataBaseTarget.GetCollection<BsonDocument>("champ_select").DeleteMany("{ RequestGameID : '" + textBox1.Text + "' }");
textBox2.Text = (-1000).ToString();
}
private void btnBanPickNect_Click(object sender, EventArgs e)
{
banPickNext();
}
//MongoClient mDBClient = new MongoClient("mongodb://root:veryhardpassword123@203.251.148.27:50002");
MongoClient mDBClient = new MongoClient("mongodb://root:veryhardpassword123@211.42.188.8:50003");
//MongoClient mDBClient = new MongoClient("mongodb://root:veryhardpassword123@localhost:60001");
void banPickNext()
{
var mEventDataBaseSeed = mDBClient.GetDatabase("data_lol_test_seed");
var filter = Builders<BsonDocument>.Filter.And(
Builders<BsonDocument>.Filter.Eq("RequestGameID", textBox1.Text),
Builders<BsonDocument>.Filter.Eq("sequenceIndex", Convert.ToInt32(textBox2.Text))
);
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("RequestGameID")
.Include("sequenceIndex")
.Include("eventDocument");
List<BsonDocument> documents = mEventDataBaseSeed.GetCollection<BsonDocument>("champ_select")
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
if (documents.Count == 0)
{
MessageBox.Show("업데이트할 데이터가 없습니다.");
return;
}
var mEventDataBaseTarget = mDBClient.GetDatabase("datalol");
mEventDataBaseTarget.GetCollection<BsonDocument>("champ_select").InsertOne(documents.Last());
textBox2.Text = (Convert.ToInt32(textBox2.Text) + 1).ToString();
}
Timer updateTimer = new Timer();
private void button3_Click(object sender, EventArgs e)
{
updateTimer.Interval = 1000;
updateTimer.Start();
}
void timeup(object o, EventArgs e)
{
if (Convert.ToInt32(numericUpDown2.Value) == 59)
{
numericUpDown1.Value += 1;
numericUpDown2.Value = 0;
}
else
{
numericUpDown2.Value += 1;
}
}
string[] bufUpdateCollectionsName = { "stats_update", "epic_monster_kill", "building_destroyed", "turret_plate_destroyed", "queued_dragon_info" };
void liveDataUpdateWork()
{
var mEventDataBaseSeed = mDBClient.GetDatabase("data_lol_test_seed");
var mEventDataBaseTarget = mDBClient.GetDatabase("datalol");
int calculatedTime = 0;
calculatedTime += Convert.ToInt32(numericUpDown1.Value) * 60 * 1000;
calculatedTime += Convert.ToInt32(numericUpDown2.Value) * 1000;
Dictionary<string, List<WriteModel<BsonValue>>> bufDataTable = new Dictionary<string, List<WriteModel<BsonValue>>>();
var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + calculatedTime + " }}");
var filter = Builders<BsonDocument>.Filter.And(
Builders<BsonDocument>.Filter.Eq("RequestGameID", textBox1.Text),
subFilter
);
foreach (string item in bufUpdateCollectionsName)
{
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("RequestGameID")
.Include("sequenceIndex")
.Include("eventDocument");
List<BsonDocument> documents = mEventDataBaseSeed.GetCollection<BsonDocument>(item)
.Find(filter)
.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.Limit(1)
.ToList();
if (documents.Count == 0)
{
continue;
}
BsonDocument bufUpdateValue = documents[0].AsBsonDocument;
string bufStatus = bufUpdateValue["eventDocument"]["rfc461Schema"].ToString();
var gameFilter = Builders<BsonValue>.Filter.Eq(x => x["RequestGameID"], textBox1.Text);
var sequanceFilter = Builders<BsonValue>.Filter.Eq(x => x["sequenceIndex"], documents[0]["sequenceIndex"]);
var Parentfilter = Builders<BsonValue>.Filter.And(gameFilter, sequanceFilter);
UpdateOneModel<BsonValue> updateRaw = new UpdateOneModel<BsonValue>(
Parentfilter,
Builders<BsonValue>.Update.Set(x => x["eventDocument"], bufUpdateValue["eventDocument"])
)
{ IsUpsert = true };
if (!bufDataTable.ContainsKey(bufStatus))
{
bufDataTable.Add(bufStatus, new List<WriteModel<BsonValue>>());
}
if (item == "stats_update")
{
Console.WriteLine(bufUpdateValue["eventDocument"]["gameTime"].ToString());
}
bufDataTable[bufStatus].Add(updateRaw);
}
foreach (var item in bufDataTable)
{
mEventDataBaseTarget.GetCollection<BsonValue>(item.Key)
.BulkWriteAsync(item.Value);
}
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
liveDataUpdateWork();
}
private void btnClearGameData_Click(object sender, EventArgs e)
{
var mEventDataBaseTarget = mDBClient.GetDatabase("datalol");
foreach (string item in bufUpdateCollectionsName)
{
mEventDataBaseTarget.GetCollection<BsonValue>(item)
.DeleteMany(x => true);
}
}
private void btnAutoplayEnd_Click(object sender, EventArgs e)
{
updateTimer.Stop();
}
private void btnSyncGameData_Click(object sender, EventArgs e)
{
var mEventDataBaseTarget = mDBClient.GetDatabase("datalol");
var mEventDataBaseSeed = mDBClient.GetDatabase("data_lol_test_seed");
int calculatedTime = 0;
calculatedTime += Convert.ToInt32(numericUpDown1.Value) * 60 * 1000;
calculatedTime += Convert.ToInt32(numericUpDown2.Value) * 1000;
Dictionary<string, List<WriteModel<BsonValue>>> bufDataTable = new Dictionary<string, List<WriteModel<BsonValue>>>();
var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + calculatedTime + " }}");
var filter = Builders<BsonDocument>.Filter.And(
Builders<BsonDocument>.Filter.Eq("RequestGameID", textBox1.Text),
subFilter
);
foreach (string item in bufUpdateCollectionsName)
{
var projection = Builders<BsonDocument>.Projection
.Exclude("_id")
.Include("RequestGameID")
.Include("sequenceIndex")
.Include("eventDocument");
List<BsonDocument> documents = mEventDataBaseSeed.GetCollection<BsonDocument>(item)
.Find(filter)
//.SortByDescending(x => x["sequenceIndex"])
.Project(projection)
.ToList();
if (documents.Count == 0)
{
continue;
}
//BsonDocument bufUpdateValue = documents[0].AsBsonDocument;
foreach (BsonDocument itemd in documents)
{
string bufStatus = itemd["eventDocument"]["rfc461Schema"].ToString();
var gameFilter = Builders<BsonValue>.Filter.Eq(x => x["RequestGameID"], textBox1.Text);
var sequanceFilter = Builders<BsonValue>.Filter.Eq(x => x["sequenceIndex"], itemd["sequenceIndex"]);
var Parentfilter = Builders<BsonValue>.Filter.And(gameFilter, sequanceFilter);
UpdateOneModel<BsonValue> updateRaw = new UpdateOneModel<BsonValue>(
Parentfilter,
Builders<BsonValue>.Update.Set(x => x["eventDocument"], itemd["eventDocument"])
)
{ IsUpsert = true };
if (!bufDataTable.ContainsKey(bufStatus))
{
bufDataTable.Add(bufStatus, new List<WriteModel<BsonValue>>());
}
if (item == "stats_update")
{
Console.WriteLine(itemd["eventDocument"]["gameTime"].ToString());
}
bufDataTable[bufStatus].Add(updateRaw);
}
}
foreach (var item in bufDataTable)
{
mEventDataBaseTarget.GetCollection<BsonValue>(item.Key)
.BulkWriteAsync(item.Value);
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4485CA9D-7FC7-4258-A90D-1EFF38D73B3E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>lolDataSimulation</RootNamespace>
<AssemblyName>lolDataSimulation</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DnsClient, Version=1.4.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.4.0\lib\net471\DnsClient.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Bson, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Bson.2.12.3\lib\net452\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.2.12.3\lib\net452\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver.Core, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.Core.2.12.3\lib\net452\MongoDB.Driver.Core.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Libmongocrypt, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Libmongocrypt.1.2.1\lib\net452\MongoDB.Libmongocrypt.dll</HintPath>
</Reference>
<Reference Include="SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.23.0\lib\net45\SharpCompress.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="SimulationForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SimulationForm.Designer.cs">
<DependentUpon>SimulationForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="SimulationForm.resx">
<DependentUpon>SimulationForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="libmongocrypt.dylib" />
<None Include="libmongocrypt.so" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Core\Compression\Snappy\lib\win\snappy32.dll" />
<Content Include="Core\Compression\Snappy\lib\win\snappy64.dll" />
<Content Include="Core\Compression\Zstandard\lib\win\libzstd.dll" />
<Content Include="mongocrypt.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets'))" />
<Error Condition="!Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets'))" />
</Target>
<Import Project="..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets" Condition="Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" />
</Project>

Binary file not shown.

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DnsClient" version="1.4.0" targetFramework="net472" />
<package id="MongoDB.Bson" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver.Core" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Libmongocrypt" version="1.2.1" targetFramework="net472" />
<package id="SharpCompress" version="0.23.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
</packages>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace requestTestForm
{
class RequestManager
{
}
}

View File

@@ -0,0 +1,520 @@
namespace requestTestForm
{
partial class Form1
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.dataGridView2 = new System.Windows.Forms.DataGridView();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.grid룬 = new System.Windows.Forms.DataGridView();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.grid오브젝트킬 = new System.Windows.Forms.DataGridView();
this.tabPage5 = new System.Windows.Forms.TabPage();
this.grid골드획득선수 = new System.Windows.Forms.DataGridView();
this.tabPage6 = new System.Windows.Forms.TabPage();
this.grid경험치레벨 = new System.Windows.Forms.DataGridView();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.grid누적데미지 = new System.Windows.Forms.DataGridView();
this.tabPage8 = new System.Windows.Forms.TabPage();
this.grid골드차 = new System.Windows.Forms.DataGridView();
this.tabPage9 = new System.Windows.Forms.TabPage();
this.grid타워 = new System.Windows.Forms.DataGridView();
this.tabPage10 = new System.Windows.Forms.TabPage();
this.grid용 = new System.Windows.Forms.DataGridView();
this.textBox1 = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox3 = new System.Windows.Forms.TextBox();
this.textBox4 = new System.Windows.Forms.TextBox();
this.textBox5 = new System.Windows.Forms.TextBox();
this.textBox6 = new System.Windows.Forms.TextBox();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.btn한타딜량시작 = new System.Windows.Forms.Button();
this.btn한타딜량종료 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.tabPage3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid룬)).BeginInit();
this.tabPage4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid오브젝트킬)).BeginInit();
this.tabPage5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid골드획득선수)).BeginInit();
this.tabPage6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid경험치레벨)).BeginInit();
this.tabPage7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid누적데미지)).BeginInit();
this.tabPage8.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid골드차)).BeginInit();
this.tabPage9.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid타워)).BeginInit();
this.tabPage10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grid용)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(1067, 531);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(191, 73);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// dataGridView1
//
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Location = new System.Drawing.Point(6, 6);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(966, 554);
this.dataGridView1.TabIndex = 1;
//
// dataGridView2
//
this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView2.Location = new System.Drawing.Point(6, 6);
this.dataGridView2.Name = "dataGridView2";
this.dataGridView2.RowTemplate.Height = 23;
this.dataGridView2.Size = new System.Drawing.Size(966, 554);
this.dataGridView2.TabIndex = 1;
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage3);
this.tabControl1.Controls.Add(this.tabPage4);
this.tabControl1.Controls.Add(this.tabPage5);
this.tabControl1.Controls.Add(this.tabPage6);
this.tabControl1.Controls.Add(this.tabPage7);
this.tabControl1.Controls.Add(this.tabPage8);
this.tabControl1.Controls.Add(this.tabPage9);
this.tabControl1.Controls.Add(this.tabPage10);
this.tabControl1.Location = new System.Drawing.Point(12, 12);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(986, 592);
this.tabControl1.TabIndex = 2;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.dataGridView1);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(978, 566);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "밴 데이터";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.dataGridView2);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(978, 566);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "픽 데이터";
this.tabPage2.UseVisualStyleBackColor = true;
//
// tabPage3
//
this.tabPage3.Controls.Add(this.grid룬);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
this.tabPage3.Size = new System.Drawing.Size(978, 566);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "룬 데이터";
this.tabPage3.UseVisualStyleBackColor = true;
//
// grid룬
//
this.grid룬.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid룬.Location = new System.Drawing.Point(6, 6);
this.grid룬.Name = "grid룬";
this.grid룬.RowTemplate.Height = 23;
this.grid룬.Size = new System.Drawing.Size(966, 554);
this.grid룬.TabIndex = 2;
//
// tabPage4
//
this.tabPage4.Controls.Add(this.grid오브젝트킬);
this.tabPage4.Location = new System.Drawing.Point(4, 22);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
this.tabPage4.Size = new System.Drawing.Size(978, 566);
this.tabPage4.TabIndex = 3;
this.tabPage4.Text = "맵 오브젝트 누적";
this.tabPage4.UseVisualStyleBackColor = true;
//
// grid오브젝트킬
//
this.grid오브젝트킬.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid오브젝트킬.Location = new System.Drawing.Point(14, 16);
this.grid오브젝트킬.Name = "grid오브젝트킬";
this.grid오브젝트킬.RowTemplate.Height = 23;
this.grid오브젝트킬.Size = new System.Drawing.Size(951, 534);
this.grid오브젝트킬.TabIndex = 5;
//
// tabPage5
//
this.tabPage5.Controls.Add(this.grid골드획득선수);
this.tabPage5.Location = new System.Drawing.Point(4, 22);
this.tabPage5.Name = "tabPage5";
this.tabPage5.Padding = new System.Windows.Forms.Padding(3);
this.tabPage5.Size = new System.Drawing.Size(978, 566);
this.tabPage5.TabIndex = 4;
this.tabPage5.Text = "누적골드";
this.tabPage5.UseVisualStyleBackColor = true;
//
// grid골드획득선수
//
this.grid골드획득선수.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid골드획득선수.Location = new System.Drawing.Point(18, 31);
this.grid골드획득선수.Name = "grid골드획득선수";
this.grid골드획득선수.RowTemplate.Height = 23;
this.grid골드획득선수.Size = new System.Drawing.Size(938, 529);
this.grid골드획득선수.TabIndex = 0;
//
// tabPage6
//
this.tabPage6.Controls.Add(this.grid경험치레벨);
this.tabPage6.Location = new System.Drawing.Point(4, 22);
this.tabPage6.Name = "tabPage6";
this.tabPage6.Size = new System.Drawing.Size(978, 566);
this.tabPage6.TabIndex = 5;
this.tabPage6.Text = "경험치량";
this.tabPage6.UseVisualStyleBackColor = true;
//
// grid경험치레벨
//
this.grid경험치레벨.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid경험치레벨.Location = new System.Drawing.Point(13, 14);
this.grid경험치레벨.Name = "grid경험치레벨";
this.grid경험치레벨.RowTemplate.Height = 23;
this.grid경험치레벨.Size = new System.Drawing.Size(951, 534);
this.grid경험치레벨.TabIndex = 4;
//
// tabPage7
//
this.tabPage7.Controls.Add(this.grid누적데미지);
this.tabPage7.Location = new System.Drawing.Point(4, 22);
this.tabPage7.Name = "tabPage7";
this.tabPage7.Size = new System.Drawing.Size(978, 566);
this.tabPage7.TabIndex = 6;
this.tabPage7.Text = "누적데미지";
this.tabPage7.UseVisualStyleBackColor = true;
//
// grid누적데미지
//
this.grid누적데미지.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid누적데미지.Location = new System.Drawing.Point(3, 3);
this.grid누적데미지.Name = "grid누적데미지";
this.grid누적데미지.RowTemplate.Height = 23;
this.grid누적데미지.Size = new System.Drawing.Size(951, 534);
this.grid누적데미지.TabIndex = 3;
//
// tabPage8
//
this.tabPage8.Controls.Add(this.grid골드차);
this.tabPage8.Location = new System.Drawing.Point(4, 22);
this.tabPage8.Name = "tabPage8";
this.tabPage8.Padding = new System.Windows.Forms.Padding(3);
this.tabPage8.Size = new System.Drawing.Size(978, 566);
this.tabPage8.TabIndex = 7;
this.tabPage8.Text = "골드차그래프용";
this.tabPage8.UseVisualStyleBackColor = true;
//
// grid골드차
//
this.grid골드차.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid골드차.Location = new System.Drawing.Point(14, 16);
this.grid골드차.Name = "grid골드차";
this.grid골드차.RowTemplate.Height = 23;
this.grid골드차.Size = new System.Drawing.Size(951, 534);
this.grid골드차.TabIndex = 4;
//
// tabPage9
//
this.tabPage9.Controls.Add(this.grid타워);
this.tabPage9.Location = new System.Drawing.Point(4, 22);
this.tabPage9.Name = "tabPage9";
this.tabPage9.Padding = new System.Windows.Forms.Padding(3);
this.tabPage9.Size = new System.Drawing.Size(978, 566);
this.tabPage9.TabIndex = 8;
this.tabPage9.Text = "타워철거정보";
this.tabPage9.UseVisualStyleBackColor = true;
//
// grid타워
//
this.grid타워.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid타워.Location = new System.Drawing.Point(14, 16);
this.grid타워.Name = "grid타워";
this.grid타워.RowTemplate.Height = 23;
this.grid타워.Size = new System.Drawing.Size(951, 534);
this.grid타워.TabIndex = 5;
//
// tabPage10
//
this.tabPage10.Controls.Add(this.grid용);
this.tabPage10.Location = new System.Drawing.Point(4, 22);
this.tabPage10.Name = "tabPage10";
this.tabPage10.Padding = new System.Windows.Forms.Padding(3);
this.tabPage10.Size = new System.Drawing.Size(978, 566);
this.tabPage10.TabIndex = 9;
this.tabPage10.Text = "용리스폰";
this.tabPage10.UseVisualStyleBackColor = true;
//
// grid용
//
this.grid용.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.grid용.Location = new System.Drawing.Point(14, 16);
this.grid용.Name = "grid용";
this.grid용.RowTemplate.Height = 23;
this.grid용.Size = new System.Drawing.Size(951, 534);
this.grid용.TabIndex = 6;
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(1004, 414);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(254, 21);
this.textBox1.TabIndex = 3;
this.textBox1.Text = "ESPORTSTMNT06_1721053";
//
// button2
//
this.button2.Location = new System.Drawing.Point(1004, 283);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(243, 40);
this.button2.TabIndex = 4;
this.button2.Text = "서버연결";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(1000, 256);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(254, 21);
this.textBox2.TabIndex = 3;
this.textBox2.Text = "127.0.0.1";
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(1000, 229);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(254, 21);
this.textBox3.TabIndex = 3;
this.textBox3.Text = "106032946468743415|game1";
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(1000, 202);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(254, 21);
this.textBox4.TabIndex = 3;
this.textBox4.Text = "서버의답변";
//
// textBox5
//
this.textBox5.Location = new System.Drawing.Point(1000, 175);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(254, 21);
this.textBox5.TabIndex = 3;
this.textBox5.Text = "가져온방제";
//
// textBox6
//
this.textBox6.Location = new System.Drawing.Point(1004, 34);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(254, 21);
this.textBox6.TabIndex = 3;
this.textBox6.Text = "0";
//
// button3
//
this.button3.Location = new System.Drawing.Point(1004, 61);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(115, 56);
this.button3.TabIndex = 5;
this.button3.Text = "시계시작";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(1143, 61);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(115, 55);
this.button4.TabIndex = 5;
this.button4.Text = "시계멈춤";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.Location = new System.Drawing.Point(1067, 122);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(115, 46);
this.button5.TabIndex = 5;
this.button5.Text = "시계시간변경";
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button6
//
this.button6.Location = new System.Drawing.Point(1005, 344);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(241, 43);
this.button6.TabIndex = 6;
this.button6.Text = "디비변경";
this.button6.UseVisualStyleBackColor = true;
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// btn한타딜량시작
//
this.btn한타딜량시작.Location = new System.Drawing.Point(1006, 444);
this.btn한타딜량시작.Name = "btn한타딜량시작";
this.btn한타딜량시작.Size = new System.Drawing.Size(122, 61);
this.btn한타딜량시작.TabIndex = 7;
this.btn한타딜량시작.Text = "한타딜량시작";
this.btn한타딜량시작.UseVisualStyleBackColor = true;
this.btn한타딜량시작.Click += new System.EventHandler(this.btn한타딜량시작_Click);
//
// btn한타딜량종료
//
this.btn한타딜량종료.Location = new System.Drawing.Point(1136, 444);
this.btn한타딜량종료.Name = "btn한타딜량종료";
this.btn한타딜량종료.Size = new System.Drawing.Size(122, 61);
this.btn한타딜량종료.TabIndex = 7;
this.btn한타딜량종료.Text = "한타딜량종료";
this.btn한타딜량종료.UseVisualStyleBackColor = true;
this.btn한타딜량종료.Click += new System.EventHandler(this.btn한타딜량종료_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1270, 616);
this.Controls.Add(this.btn한타딜량종료);
this.Controls.Add(this.btn한타딜량시작);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.textBox5);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox6);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.tabPage3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid룬)).EndInit();
this.tabPage4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid오브젝트킬)).EndInit();
this.tabPage5.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid골드획득선수)).EndInit();
this.tabPage6.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid경험치레벨)).EndInit();
this.tabPage7.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid누적데미지)).EndInit();
this.tabPage8.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid골드차)).EndInit();
this.tabPage9.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid타워)).EndInit();
this.tabPage10.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.grid용)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridView dataGridView2;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TabPage tabPage4;
private System.Windows.Forms.TabPage tabPage5;
private System.Windows.Forms.TabPage tabPage6;
private System.Windows.Forms.DataGridView grid골드획득선수;
private System.Windows.Forms.TabPage tabPage7;
private System.Windows.Forms.DataGridView grid누적데미지;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.DataGridView grid경험치레벨;
private System.Windows.Forms.DataGridView grid오브젝트킬;
private System.Windows.Forms.DataGridView grid룬;
private System.Windows.Forms.TabPage tabPage8;
private System.Windows.Forms.DataGridView grid골드차;
private System.Windows.Forms.TabPage tabPage9;
private System.Windows.Forms.DataGridView grid타워;
private System.Windows.Forms.TabPage tabPage10;
private System.Windows.Forms.DataGridView grid용;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button btn한타딜량시작;
private System.Windows.Forms.Button btn한타딜량종료;
}
}

View File

@@ -0,0 +1,171 @@
using LolDataRequestLib;
using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace requestTestForm
{
public partial class Form1 : Form, IGameTimeEventDrop
{
public Form1()
{
InitializeComponent();
}
public void errorReceivedByWorker(DBDefine. , string )
{
throw new NotImplementedException();
}
Timer mTimer = new Timer();
private void button1_Click(object sender, EventArgs e)
{
DataManager.getInstance().setCallback(this);
DataManager.getInstance().IsupdateWorkersWork = true; ;
DataManager.getInstance().mPlatformGameID = textBox1.Text;
mTimer.Interval = 1000;
mTimer.Tick += dataTick;
mTimer.Start();
}
void dataTick(object d, EventArgs e)
{
dataGridView1.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
//20210531이렇게 할 수도 있습니다.
//dataGridView1.DataSource = DataManager.getInstance().라이브데이터요청(DBDefine.요청데이터분류.밴데이터).Tables[DBDefine.요청데이터분류.밴데이터.GetStringValue()];
dataGridView2.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
grid골드획득선수.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
grid누적데미지.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
grid경험치레벨.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
grid룬.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
////미완성
grid오브젝트킬.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
grid골드차.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
//grid타워.DataSource = DataManager.getInstance().라이브데이터요청(DBDefine.요청데이터분류.타워철거전체).Tables[0];
////grid용.DataSource = DataManager.getInstance().한타딜량요청(1, 200).Tables[0];
//grid용.DataSource = DataManager.getInstance().라이브데이터요청(DBDefine.요청데이터분류.용리스폰).Tables[0];
////20210611 플레이어오브더게임부분
grid용.DataSource = DataManager.getInstance().(DBDefine..).Tables[0];
////20210611 한타딜량 시간범위 부분
/// 시작초가 0으로 오면 null을 리턴
//grid용.DataSource = DataManager.getInstance().한타딜량요청(1, 200).Tables[0];
///20210531 경기종료데이터는 이렇게 하나씩 따시면 됩니다.
///킬뎃어시, 타워철거전체, 오브젝트킬
DataSet = DataManager.getInstance().(DBDefine..);
//grid타워.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.경기종료정보.GetStringValue()];
//grid타워.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.킬뎃어시.GetStringValue()];
//grid타워.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.타워철거전체.GetStringValue()];
//grid용.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.오브젝트킬.GetStringValue()];
//grid타워.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.밴데이터.GetStringValue()];
//grid타워.DataSource = 가져온데이터셋.Tables[DBDefine.요청데이터분류.골드차이팀.GetStringValue()];
}
private void button2_Click(object sender, EventArgs e)
{
//Console.WriteLine(DataManager.getInstance().requestServerForUpdate(textBox2.Text, textBox3.Text).ToString());
textBox4.Text = DataManager.getInstance().requestServerForUpdate(textBox2.Text, textBox3.Text, true).ToString();
textBox5.Text = DataManager.getInstance().mPlatformGameID;
}
public void (string , int _단위_초)
{
Console.WriteLine( + "----" + _단위_초);
}
public void (string , string , int _단위_초)
{
Console.WriteLine( + "++++" + + "++++" + _단위_초);
}
public void (DataTable )
{
Console.WriteLine("억제기터짐" + .Rows.Count);
}
public void (int )
{
this.Invoke(new MethodInvoker(() => { textBox6.Text = ( / 60).ToString() + " : " + ( % 60); }));
}
private void button3_Click(object sender, EventArgs e)
{
DataManager.getInstance().setCallback(this);
DataManager.getInstance().timerStart();
}
private void button4_Click(object sender, EventArgs e)
{
DataManager.getInstance().timerStop();
}
private void button5_Click(object sender, EventArgs e)
{
DataManager.getInstance().setGameTime(Convert.ToInt32(textBox6.Text));
}
public void (string , string , int _단위_초, int )
{
////20210611 파워플레이부분
Console.WriteLine( + "_" + + "_" + _단위_초 + "_" + );
}
private void button6_Click(object sender, EventArgs e)
{
DataManager.getInstance().resetDBAddress(textBox6.Text);
}
public void (DataTable )
{
////20210611 한타딜량부분
Console.WriteLine("한타딜량" + .Rows.Count);
this.Invoke(new MethodInvoker(() => { grid용.DataSource = ; }));
}
private void btn한타딜량시작_Click(object sender, EventArgs e)
{
DataManager.getInstance().();
}
private void btn한타딜량종료_Click(object sender, EventArgs e)
{
DataManager.getInstance().();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace requestTestForm
{
static class Program
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("requestTestForm")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("requestTestForm")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("0e32da7e-5b02-40c7-8f86-883271051cff")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
// 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace requestTestForm.Properties
{
/// <summary>
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
/// </summary>
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
// ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("requestTestForm.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace requestTestForm.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DnsClient" version="1.4.0" targetFramework="net472" />
<package id="MongoDB.Bson" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Driver.Core" version="2.12.3" targetFramework="net472" />
<package id="MongoDB.Libmongocrypt" version="1.2.1" targetFramework="net472" />
<package id="SharpCompress" version="0.23.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
</packages>

View File

@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0E32DA7E-5B02-40C7-8F86-883271051CFF}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>requestTestForm</RootNamespace>
<AssemblyName>requestTestForm</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DnsClient, Version=1.4.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.4.0\lib\net471\DnsClient.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Bson, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Bson.2.12.3\lib\net452\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.2.12.3\lib\net452\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver.Core, Version=2.12.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.Core.2.12.3\lib\net452\MongoDB.Driver.Core.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Libmongocrypt, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Libmongocrypt.1.2.1\lib\net452\MongoDB.Libmongocrypt.dll</HintPath>
</Reference>
<Reference Include="SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.23.0\lib\net45\SharpCompress.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="libmongocrypt.dylib" />
<None Include="libmongocrypt.so" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Core\Compression\Snappy\lib\win\snappy32.dll" />
<Content Include="Core\Compression\Snappy\lib\win\snappy64.dll" />
<Content Include="Core\Compression\Zstandard\lib\win\libzstd.dll" />
<Content Include="mongocrypt.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LolDataRequestLib\LolDataRequestLib.csproj">
<Project>{1923eb44-9e99-4198-8e08-008a98b7d673}</Project>
<Name>LolDataRequestLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.2.1\build\MongoDB.Libmongocrypt.targets'))" />
<Error Condition="!Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets'))" />
</Target>
<Import Project="..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets" Condition="Exists('..\packages\MongoDB.Driver.Core.2.12.3\build\MongoDB.Driver.Core.targets')" />
</Project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace updateServer
{
internal class DEFINE
{
//VSPN접근키
internal const string RIOT_API_KEY = "x-api-key:N1TFxzzmYk5E5sByoRNsi5ovhf2EjaCw7wx49wh2";
//WDG접근키
//internal const string RIOT_API_KEY = "x-api-key:oYiHmI77ur7tFl3joHh0z8onOVDnfiys3pezolAv";
//internal const string RIOT_API_KEY = "x-api-key:cqW7ayuV2o10P0g4F7HlXa9DALZRfAME4Pv1UjcN";
internal const string _이벤트행데이터_REQUEST_URL = "https://raw-stats-api.ewp.gg/livestatsRaw/v1/platformGames/";
//internal const string 라이엇_게임리스트_REQUEST_URL = "https://raw-stats-api.ewp.gg/livestatsRaw/v1/platformGames?state=";
internal const string _게임리스트_REQUEST_URL = "https://raw-stats-api.ewp.gg/livestatsRaw/v1/";
//internal const string 몽고DB_접속정보 = "mongodb://root:veryhardpassword123@211.53.30.8:50003";
internal const string DB_접속정보 = "mongodb://root:veryhardpassword123@127.0.0.1:50003";
//internal const string 몽고DB_접속정보 = "mongodb://root:veryhardpassword123@211.42.188.8:50003";
//internal const string 몽고DB_접속정보 = "mongodb://root:veryhardpassword123@203.251.148.27:50002";
internal const int ms = 1000;
}
}

View File

@@ -0,0 +1,270 @@
namespace updateServer
{
partial class Form1
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.lstBoxUpdateGameList = new System.Windows.Forms.ListBox();
this.txbGameID = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txbPlatformID = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.lbServerStatus = new System.Windows.Forms.Label();
this.listBox1 = new System.Windows.Forms.ListBox();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.btnExport = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// button1
//
this.button1.Font = new System.Drawing.Font("굴림", 20F);
this.button1.Location = new System.Drawing.Point(260, 99);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(262, 58);
this.button1.TabIndex = 0;
this.button1.Text = "서버 켜기";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("굴림", 15F);
this.label5.Location = new System.Drawing.Point(38, 177);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(206, 20);
this.label5.TabIndex = 2;
this.label5.Text = "최근 요청받은 게임 ID";
//
// button2
//
this.button2.Font = new System.Drawing.Font("굴림", 20F);
this.button2.Location = new System.Drawing.Point(260, 266);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(262, 123);
this.button2.TabIndex = 6;
this.button2.Text = "플랫폼 아이디 업데이트 진행";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// lstBoxUpdateGameList
//
this.lstBoxUpdateGameList.FormattingEnabled = true;
this.lstBoxUpdateGameList.ItemHeight = 12;
this.lstBoxUpdateGameList.Location = new System.Drawing.Point(54, 33);
this.lstBoxUpdateGameList.Name = "lstBoxUpdateGameList";
this.lstBoxUpdateGameList.Size = new System.Drawing.Size(180, 124);
this.lstBoxUpdateGameList.TabIndex = 4;
//
// txbGameID
//
this.txbGameID.Font = new System.Drawing.Font("굴림", 15F);
this.txbGameID.Location = new System.Drawing.Point(250, 174);
this.txbGameID.Name = "txbGameID";
this.txbGameID.Size = new System.Drawing.Size(272, 30);
this.txbGameID.TabIndex = 7;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("굴림", 15F);
this.label1.Location = new System.Drawing.Point(25, 217);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(219, 20);
this.label1.TabIndex = 2;
this.label1.Text = "최근가져오는 플랫폼 ID";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("굴림", 15F);
this.label2.Location = new System.Drawing.Point(12, 9);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(236, 20);
this.label2.TabIndex = 2;
this.label2.Text = "업데이트중인 경기리스트";
//
// txbPlatformID
//
this.txbPlatformID.Font = new System.Drawing.Font("굴림", 15F);
this.txbPlatformID.Location = new System.Drawing.Point(250, 214);
this.txbPlatformID.Name = "txbPlatformID";
this.txbPlatformID.Size = new System.Drawing.Size(272, 30);
this.txbPlatformID.TabIndex = 7;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("굴림", 15F);
this.label3.Location = new System.Drawing.Point(330, 9);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(89, 20);
this.label3.TabIndex = 2;
this.label3.Text = "서버상태";
//
// lbServerStatus
//
this.lbServerStatus.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.lbServerStatus.Font = new System.Drawing.Font("굴림", 20F);
this.lbServerStatus.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.lbServerStatus.Location = new System.Drawing.Point(269, 33);
this.lbServerStatus.Name = "lbServerStatus";
this.lbServerStatus.Size = new System.Drawing.Size(244, 51);
this.lbServerStatus.TabIndex = 8;
this.lbServerStatus.Text = "STOP";
this.lbServerStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.ItemHeight = 12;
this.listBox1.Location = new System.Drawing.Point(542, 56);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(428, 316);
this.listBox1.TabIndex = 4;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
//
// button3
//
this.button3.Location = new System.Drawing.Point(756, 12);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(214, 38);
this.button3.TabIndex = 9;
this.button3.Text = "진행중인 경기목록 가져오기";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(542, 12);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(208, 38);
this.button4.TabIndex = 9;
this.button4.Text = "테스트경기 목록 가져오기";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.Location = new System.Drawing.Point(12, 326);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(65, 46);
this.button5.TabIndex = 10;
this.button5.Text = "과거자료방리스트업데이트";
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// btnExport
//
this.btnExport.Location = new System.Drawing.Point(120, 266);
this.btnExport.Name = "btnExport";
this.btnExport.Size = new System.Drawing.Size(117, 54);
this.btnExport.TabIndex = 11;
this.btnExport.Text = "데이터백업";
this.btnExport.UseVisualStyleBackColor = true;
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
//
// button6
//
this.button6.Location = new System.Drawing.Point(85, 326);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(152, 45);
this.button6.TabIndex = 12;
this.button6.Text = "데이터초기화";
this.button6.UseVisualStyleBackColor = true;
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// label4
//
this.label4.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.label4.Font = new System.Drawing.Font("굴림", 20F);
this.label4.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.label4.Location = new System.Drawing.Point(12, 266);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(102, 51);
this.label4.TabIndex = 8;
this.label4.Text = "0/0";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(982, 401);
this.Controls.Add(this.button6);
this.Controls.Add(this.btnExport);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.label4);
this.Controls.Add(this.lbServerStatus);
this.Controls.Add(this.txbPlatformID);
this.Controls.Add(this.txbGameID);
this.Controls.Add(this.button2);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.lstBoxUpdateGameList);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.label5);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "LCK CL 업데이트서버 250525 - WDG";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
public System.Windows.Forms.Button button1;
public System.Windows.Forms.ListBox lstBoxUpdateGameList;
public System.Windows.Forms.TextBox txbGameID;
public System.Windows.Forms.TextBox txbPlatformID;
public System.Windows.Forms.Label lbServerStatus;
public System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button btnExport;
private System.Windows.Forms.Button button6;
public System.Windows.Forms.Label label4;
}
}

View File

@@ -0,0 +1,247 @@
using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace updateServer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
NetManager manager = new NetManager();
manager.start();
UpdateManager.getInstance().init();
///ESPORTSTMNT06_1730991크로노
//UpdateManager.getInstance().startUpdateEventRaw("ESPORTSTMNT02_1921265", false);
//UpdateManager.getInstance().GameListUpdateWorker(true);
}
private void button2_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().startUpdateEventRaw(txbPlatformID.Text, false);
}
private void button3_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().GameListUpdateWorker(false);
}
private void button4_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().GameListUpdateWorker(true);
//UpdateManager.getInstance().startUpdateEventRaw("ESPORTSTMNT06_1721059", false);
//UpdateManager.getInstance().finishGameListUpdateWorker();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count < 1) return;
string[] selectedItem = listBox1.SelectedItems[0].ToString().Split('_');
txbGameID.Text = selectedItem.Last();
txbPlatformID.Text = selectedItem[0] + "_" + selectedItem[1];
UpdateManager.getInstance().GameKey = txbGameID.Text;
UpdateManager.getInstance().GameName = txbPlatformID.Text;
}
public void removeWorkerList()
{
/*
List<string> items = new List<string>();
foreach (string s in UpdateManager.getInstance().mUpdateWorkerTable.Keys)
items.Add(s);
foreach (string s in items)
{
MessageBox.Show("!!" + s);
UpdateManager.getInstance().mUpdateWorkerTable.Remove(s);
}
*/
}
public void updateWorkerList()
{
this.Invoke(new MethodInvoker(() => {
lstBoxUpdateGameList.Items.Clear();
foreach (string item in UpdateManager.getInstance().mUpdateWorkerTable.Keys)
{
lstBoxUpdateGameList.Items.Add(item);
}
}));
}
public void Msg()
{
//MessageBox.Show("!!");
}
public void updateGameRoomList(List<string> recvData)
{
this.Invoke(new MethodInvoker(() => {
listBox1.Items.Clear();
foreach (string item in recvData)
{
listBox1.Items.Add(item);
}
}));
}
private void button5_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().finishGameListUpdateWorker();
}
async void exportDB()
{
string basicfileName = DateTime.Now.Date.ToString("yyyyMMdd"); // initialize to the output file
MongoClient dd = new MongoClient(DEFINE.DB_접속정보);
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
int endedTask = 0;
this.Invoke(new MethodInvoker(() => label4.Text = endedTask + "/" + collectionNames.Count().ToString()));
DirectoryInfo di = new DirectoryInfo(@"c:\lol_db_backup\" + basicfileName);
if (!di.Exists)
{
di.Create();
}
foreach (string item in collectionNames)
{
IMongoCollection<BsonDocument> collection = dd.GetDatabase("datalol").GetCollection<BsonDocument>(item); // initialize to the collection to read from
using (var streamWriter = new StreamWriter(@"c:\lol_db_backup\" + basicfileName + @"\" + item + ".json"))
{
await collection.Find(new BsonDocument())
.ForEachAsync(async (document) =>
{
using (var stringWriter = new StringWriter())
using (var jsonWriter = new JsonWriter(stringWriter))
{
var context = MongoDB.Bson.Serialization.BsonSerializationContext.CreateRoot(jsonWriter);
collection.DocumentSerializer.Serialize(context, document);
var line = stringWriter.ToString();
await streamWriter.WriteLineAsync(line);
}
}
);
endedTask += 1;
this.Invoke(new MethodInvoker(() => label4.Text = endedTask + "/" + collectionNames.Count().ToString()));
}
}
}
async void importDB()
{
//MongoClient dd = new MongoClient(DEFINE.몽고DB_접속정보);
MongoClient dd = new MongoClient("mongodb://root:veryhardpassword123@211.42.188.8:50003");
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
//List<string> collectionNames = new List<string>();
//collectionNames.Remove("building_destroyed");
//collectionNames.Add("game_end");
//collectionNames.Add("game_info");
string basicfileName = DateTime.Now.Date.ToString("yyyyMMdd");
foreach (var item in collectionNames)
{
//IMongoCollection<BsonDocument> collection = dd.GetDatabase("data_lol_test_seed").GetCollection<BsonDocument>(item);
IMongoCollection<BsonDocument> collection = dd.GetDatabase("datalol").GetCollection<BsonDocument>(item);
using (var streamReader = new StreamReader(@"c:\lol_db_backup\" + basicfileName + @"\" + item + ".json"))
{
string line;
while ((line = await streamReader.ReadLineAsync()) != null)
{
using (var jsonReader = new JsonReader(line))
{
var context = BsonDeserializationContext.CreateRoot(jsonReader);
var document = collection.DocumentSerializer.Deserialize(context);
await collection.InsertOneAsync(document);
}
}
}
}
}
async void clearDB()
{
MongoClient dd = new MongoClient(DEFINE.DB_접속정보);
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
string basicfileName = DateTime.Now.Date.ToShortDateString();
var mEventDataBaseTarget = dd.GetDatabase("datalol");
foreach (string item in collectionNames)
{
await mEventDataBaseTarget.GetCollection<BsonValue>(item)
.DeleteManyAsync(x => true);
}
UpdateManager.getInstance().mUpdateWorkerTable.Clear();
updateWorkerList();
}
private void btnExport_Click(object sender, EventArgs e)
{
exportDB();
//importDB();
}
private void button6_Click(object sender, EventArgs e)
{
clearDB();
}
}
}

Some files were not shown because too many files have changed in this diff Show More