using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenTK;

namespace FirstPlugin
{
    public class MarioCostumeEditor
    {
        public static Matrix4 SetTransform(string fileName)
        {
            Vector3 position;
            Vector3 scale;
            Vector3 rotation;

            if (fileName.Contains("Mario") && fileName.Contains("Face"))
            {
                Console.WriteLine("Positioning Face Mesh.....");
                position = new Vector3(0, 97.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Head"))
            {
                Console.WriteLine("Positioning Head Mesh.....");
                position = new Vector3(0, 97.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("HandL"))
            {
                Console.WriteLine("Positioning Face Mesh.....");
                position = new Vector3(48.877f, 82.551f, -3.3f);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 90f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("HandR"))
            {
                Console.WriteLine("Positioning HandR Mesh.....");
                position = new Vector3(-48.877f, 82.551f, -3.3f);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, -90f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Eye"))
            {
                Console.WriteLine("Positioning Eye Mesh.....");
                position = new Vector3(0, 97.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Hair"))
            {
                Console.WriteLine("Positioning Hair Mesh.....");
                position = new Vector3(0, 97.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Skirt"))
            {
                Console.WriteLine("Positioning Skirt Mesh.....");
                position = new Vector3(0, 56.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Tail"))
            {
                Console.WriteLine("Positioning Tail Mesh.....");
                position = new Vector3(0, 56.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Shell"))
            {
                Console.WriteLine("Positioning Tail Mesh.....");
                position = new Vector3(0, 75.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("aHakama"))
            {
                Console.WriteLine("Positioning Hakama Mesh.....");
                position = new Vector3(0, 61.0f, -3.0f);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("Under"))
            {
                Console.WriteLine("Positioning Under Mesh.....");
                position = new Vector3(0, 56.0f, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("PonchoPoncho"))
            {
                Console.WriteLine("Positioning Poncho Mesh.....");
                position = new Vector3(0, 60.5f, -4.0f);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0f, 0);
            }
            else if (fileName.Contains("Mario") && fileName.Contains("PonchoGuitar"))
            {
                Console.WriteLine("Positioning Guitar Mesh.....");
                position = new Vector3(48.877f, 0, -12.3f);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 90f, 0);
            }
            else
            {
                position = new Vector3(0, 0, 0);
                scale = new Vector3(1, 1, 1);
                rotation = new Vector3(0, 0, 0);
            }

            Matrix4 positionMat = Matrix4.CreateTranslation(position);
            Matrix4 rotXMat = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(rotation.X));
            Matrix4 rotYMat = Matrix4.CreateRotationY(MathHelper.DegreesToRadians(rotation.Y));
            Matrix4 rotZMat = Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(rotation.Z));
            Matrix4 scaleMat = Matrix4.CreateScale(scale);
            return scaleMat * (rotXMat * rotYMat * rotZMat) * positionMat;
        }
    }
}
