초기 커밋.

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,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);
}
}
}
}