Skip to content

Instantly share code, notes, and snippets.

@skidvis
Created June 6, 2020 20:47
Show Gist options
  • Save skidvis/f65a0cf1732fe770b13a36d002493204 to your computer and use it in GitHub Desktop.
Save skidvis/f65a0cf1732fe770b13a36d002493204 to your computer and use it in GitHub Desktop.
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SixLabors.ImageSharp.Drawing.Processing;
using System.Globalization;
namespace SharkBot.Commands
{
public class VoqCommands : BaseCommandModule
{
[Command("voq")]
public async Task Voq(CommandContext ctx)
{
Font font = SystemFonts.CreateFont("Arial", 25);
var baddies = new List<string>() {"bat", "boar", "dino", "dragon", "ghost", "giant", "liz", "mimic", "shroom", "slime", "snake"};
var toons = new List<string>(){"bowman", "mage", "paladin", "warrior", "warrior2", "wiz"};
var playerName = ctx.Member.Username;
var rnd = new Random();
var opponentName = baddies[rnd.Next(baddies.Count)];
var toonName = toons[rnd.Next(toons.Count)];
var background = Image.Load($"images/voq/sets/{rnd.Next(1,24)}.png");
var badge = Image.Load($"images/voq/badges/badge.png");
bool playerHasWon = rnd.Next(2) == 1;
var earnedXp = playerHasWon ? 2 : 1;
var playerStatus = playerHasWon ? "win" : "lose";
var opponentStatus = playerHasWon ? "lose" : "win";
var fighters = $"{playerName} VS {opponentName}";
var xpText = $"LVL 1 - XP +{earnedXp}";
var imgPlayer = Image.Load($"images/voq/toons/{toonName}-{playerStatus}.png");
var imgOpponent = Image.Load($"images/voq/bad/{opponentName}-{opponentStatus}.png");
var leftPosition= new Point(x:10, y:(background.Height/2 - imgOpponent.Height/2));
var rightPosition= new Point(x:(background.Width - (imgPlayer.Width + 10)), y:(background.Height/2 - imgPlayer.Height/2));
var badgePosition = new Point(x: (background.Width / 2 - badge.Width / 2), y: (background.Height - (badge.Height + 5)));
var textPosition = new Point(x: badgePosition.X+10, badgePosition.Y+10);
var clone = background.Clone(ipc =>
{
ipc.DrawImage(imgOpponent, leftPosition, 1);
ipc.DrawImage(imgPlayer, rightPosition, 1);
ipc.RotateFlip(RotateMode.None, FlipMode.Horizontal);
ipc.DrawImage(badge, badgePosition, 1);
ipc.DrawText($"{fighters}\n{xpText}\n{playerName} {playerStatus}s", font, Color.Black, textPosition);
});
var outputFile = $"images/fights/voq.png";
clone.Save(outputFile);
await ctx.Channel.SendFileAsync(outputFile);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment