using System;
using System.Collections.Generic;
using System.Drawing;
using NetMFAPatcher.MMFParser.Data;
using NetMFAPatcher.Utils;

namespace NetMFAPatcher.MMFParser.MFALoaders
{
    public class Frame : DataLoader
    {
        public string Name = "ERROR";
        public int SizeX;
        public int SizeY;
        public Color Background;
        public int MaxObjects;

        public Frame(ByteIO reader) : base(reader)
        {
        }


        public override void Print()
        {
            throw new NotImplementedException();
        }

        public override void Read()
        {
            var handle = Reader.ReadInt32();
            Name = Helper.AutoReadUnicode(Reader);
            Console.WriteLine(Name);
            SizeX = Reader.ReadInt32();
            SizeY = Reader.ReadInt32();
            var background = Reader.ReadColor();
            var flags = Reader.ReadInt32();
            MaxObjects = Reader.ReadInt32();
            var password = Helper.AutoReadUnicode(Reader);
            Reader.Skip(4);
            var lastViewedX = Reader.ReadInt32();
            var lastViewedY = Reader.ReadInt32();

            var paletteNum = Reader.ReadInt32();
            List<Color> palette = new List<Color>();
            for (int i = 0; i < paletteNum; i++)
            {
                palette.Add(Reader.ReadColor());
            }
            var stampHandle = Reader.ReadInt32();
            var activeLayer = Reader.ReadInt32();
            var layersCunt = Reader.ReadInt32();
            var layers = new List<Layer>();
            for (int i = 0; i < layersCunt; i++)
            {
                var layer = new Layer(Reader);
                layer.Read();
                layers.Add(layer);

            }
            //fadein

            //fadeout
            Reader.Skip(2);
            var frameitems = new List<FrameItem>();
            var frameitemsCount = Reader.ReadInt32();
           
            for (int i = 0; i < frameitemsCount; i++)
            {
                var frameitem = new FrameItem(Reader);
                frameitem.Read();
                frameitems.Add(frameitem);
                Console.WriteLine("Frameitem:"+frameitem.Name);
                //break;

            }
            



            //ПРОЧИТАЙ ЭТО
            //вжух и весь код для фрейма готов
            //блин не сработало
            //я задолбался, завтра доделаю
            //короче я из будущего, тут надо с циклами аккуратно работать, надо создавать переменную для размера
            //тип var frameCount = reader.ReadInt32();
            //for(int i=0;i<frameCount;i++), иначе смещения уплывут и будет жопа жопная


            


        }

        public void Write(ByteWriter Writer)
        {
            
        }
    }
    
    


}