rip doesn't require a mention, finished ~lolchamp

This commit is contained in:
Master Kwoth 2016-02-23 10:42:42 +01:00
parent 19b4e7d401
commit 755f70cc11
2 changed files with 44 additions and 14 deletions

View File

@ -88,11 +88,11 @@ namespace NadekoBot.Commands {
if (matchupDataIE == null) if (matchupDataIE == null)
return; return;
var matchupData = matchupDataIE.OrderBy(m => m.StatScore).ToArray(); var matchupData = matchupDataIE.OrderBy(m => m.StatScore).ToArray();
//matchupData.OrderBy(mm => mm.WinRate);
var countered = new[] { matchupData[0].Name, matchupData[1].Name, matchupData[2].Name }; var countered = new[] { matchupData[0].Name, matchupData[1].Name, matchupData[2].Name };
var counters = new[] { matchupData[matchupData.Length - 1].Name, matchupData[matchupData.Length - 2].Name, matchupData[matchupData.Length - 3].Name }; var counters = new[] { matchupData[matchupData.Length - 1].Name, matchupData[matchupData.Length - 2].Name, matchupData[matchupData.Length - 3].Name };
//get runes data
var runeDatas = JArray.Parse(await Classes.SearchHelper.GetResponseAsync($"http://api.champion.gg/champion/{name}/runes/mostPopular?api_key={NadekoBot.creds.LOLAPIKey}")); var runeDatas = JArray.Parse(await Classes.SearchHelper.GetResponseAsync($"http://api.champion.gg/champion/{name}/runes/mostPopular?api_key={NadekoBot.creds.LOLAPIKey}"));
JToken runeData = null; JToken runeData = null;
for (int i = 0; i < runeDatas.Count; i++) { for (int i = 0; i < runeDatas.Count; i++) {
@ -106,23 +106,56 @@ namespace NadekoBot.Commands {
var runesJArray = runeData["runes"] as JArray; var runesJArray = runeData["runes"] as JArray;
var runes = string.Join("\n", runesJArray.OrderBy(jt => int.Parse(jt["number"].ToString())).Select(jt => jt["number"].ToString() + "x" + jt["name"])); var runes = string.Join("\n", runesJArray.OrderBy(jt => int.Parse(jt["number"].ToString())).Select(jt => jt["number"].ToString() + "x" + jt["name"]));
//get skill order data<API_KEY>
var skillDatas = JArray.Parse(await Classes.SearchHelper.GetResponseAsync($"http://api.champion.gg/champion/{name}/skills/mostPopular?api_key={NadekoBot.creds.LOLAPIKey}"));
JToken skillData = null;
for (int i = 0; i < skillDatas.Count; i++) {
if (skillDatas[i]["role"].ToString() == role) {
skillData = skillDatas[i];
}
}
if (skillData == null)
return;
var orderArr = (skillData["order"] as JArray);
//todo save this for at least 1 hour //todo save this for at least 1 hour
Image img = Image.FromFile("data/lol/bg.png"); Image img = Image.FromFile("data/lol/bg.png");
using (Graphics g = Graphics.FromImage(img)) { using (Graphics g = Graphics.FromImage(img)) {
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
int statsFontSize = 15; int statsFontSize = 15;
int margin = 5; int margin = 5;
int imageSize = 75; int imageSize = 75;
var normalFont = new Font("Times New Roman", 9, FontStyle.Regular); var normalFont = new Font("Monaco", 8, FontStyle.Regular);
var smallFont = new Font("Times New Roman", 8, FontStyle.Regular); var smallFont = new Font("Monaco", 7, FontStyle.Regular);
//draw champ image //draw champ image
g.DrawImage(Image.FromFile($"data/lol/champions/{name}.png"), new Rectangle(margin, margin, imageSize, imageSize)); g.DrawImage(Image.FromFile($"data/lol/champions/{name}.png"), new Rectangle(margin, margin, imageSize, imageSize));
//draw champ name //draw champ name
g.DrawString($"{data["title"]}", new Font("Times New Roman", 25, FontStyle.Regular), Brushes.WhiteSmoke, margin + imageSize + margin, margin); g.DrawString($"{data["title"]}", new Font("Times New Roman", 25, FontStyle.Regular), Brushes.WhiteSmoke, margin + imageSize + margin, margin);
//draw champ surname //draw champ surname
//todo //todo
//draw roles //draw skill order
float orderFormula = 120 / orderArr.Count;
float orderVerticalSpacing = 10;
for (int i = 0; i < orderArr.Count; i++) {
float orderX = margin + margin + imageSize + orderFormula * i + i;
float orderY = margin + 35;
string spellName = orderArr[i].ToString().ToLowerInvariant();
if (spellName == "w")
orderY += orderVerticalSpacing;
else if (spellName == "e")
orderY += orderVerticalSpacing * 2;
else if (spellName == "r")
orderY += orderVerticalSpacing * 3;
g.DrawString(spellName.ToUpperInvariant(), new Font("Monaco", 7), Brushes.LimeGreen, orderX, orderY);
}
//draw roles
g.DrawString("Roles: " + string.Join(", ", roles), normalFont, Brushes.WhiteSmoke, margin, margin + imageSize + margin); g.DrawString("Roles: " + string.Join(", ", roles), normalFont, Brushes.WhiteSmoke, margin, margin + imageSize + margin);
//draw average stats //draw average stats
g.DrawString( g.DrawString(
$@" Average Stats $@" Average Stats
@ -162,18 +195,13 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
var inverse_i = 5 - i; var inverse_i = 5 - i;
var j = inverse_i % 3 + 1; var j = inverse_i % 3 + 1;
var k = inverse_i / 3; var k = inverse_i / 3;
Console.WriteLine(k);
g.DrawImage(Image.FromFile("data/lol/items/" + items[i] + ".png"), g.DrawImage(Image.FromFile("data/lol/items/" + items[i] + ".png"),
new Rectangle(img.Width - (j * (smallImgSize + margin) + margin), 92 + k * (smallImgSize + margin), new Rectangle(img.Width - (j * (smallImgSize + margin) + margin), 92 + k * (smallImgSize + margin),
smallImgSize, smallImgSize,
smallImgSize)); smallImgSize));
} }
/*
*/
} }
await e.Channel.SendFile(data["title"] + "_stats.png", img.ToStream()); await e.Channel.SendFile(data["title"] + "_stats.png", img.ToStream(System.Drawing.Imaging.ImageFormat.Png));
} }
catch (Exception ex) { catch (Exception ex) {
await e.Channel.SendMessage("💢 Failed retreiving data for that champion."); await e.Channel.SendMessage("💢 Failed retreiving data for that champion.");

View File

@ -256,12 +256,14 @@ namespace NadekoBot.Modules {
cgb.CreateCommand("rip") cgb.CreateCommand("rip")
.Description("Shows a grave image of someone with a start year\n**Usage**: @NadekoBot rip @Someone 2000") .Description("Shows a grave image of someone with a start year\n**Usage**: @NadekoBot rip @Someone 2000")
.Parameter("user", ParameterType.Optional) .Parameter("user", ParameterType.Required)
.Parameter("year", ParameterType.Optional) .Parameter("year", ParameterType.Optional)
.Do(async e => { .Do(async e => {
if (string.IsNullOrWhiteSpace(e.GetArg("user")))
return;
var usr = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault(); var usr = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault();
string text = ""; string text = "";
text = usr?.Name; text = usr?.Name ?? e.GetArg("user");
await e.Channel.SendFile("ripzor_m8.png", RipName(text, e.GetArg("year") == "" ? null : e.GetArg("year"))); await e.Channel.SendFile("ripzor_m8.png", RipName(text, e.GetArg("year") == "" ? null : e.GetArg("year")));
}); });
if (!NadekoBot.creds.DontJoinServers) { if (!NadekoBot.creds.DontJoinServers) {